MongoDB отслеживать, какой пользователь меняет манде - PullRequest
0 голосов
/ 28 мая 2019

Мы используем микросервисную архитектуру с несколькими системами, имеющими доступ к общим коллекциям в MongoDB (да, сомнительный дизайн, но мы находимся в процессе выхода из этого.)

Мыпытаясь найти способ отследить, какие изменения в оплоге были сделаны тем, какой «пользователь» / служба (каждая микросервис использует разные учетные данные) фактически внесла это изменение.Если мы обнаружим какие-либо недопустимые изменения в нашей БД, это позволит очень легко выяснить, в какой системе происходит сбой.

Любые идеи?

Единственные, которые я придумала до сих пор, всегда будутЯ должен изменить код на стороне клиента, чего я хотел бы избежать.

1 Ответ

0 голосов
/ 28 мая 2019

Если вы можете поддерживать столбец editors таким образом, чтобы каждая операция имела { $addToSet: { editors: { by: userId, at: new Date() } } }, то соответствующие записи оплога будут содержать эту информацию, которую вы можете перепроверить в своем списке контроля доступа.

Примечание. Возможно, вам придется изменить вставки на upserts или учесть другой случай: .insert({ ..., editors: [{ by: userId, at: new Date() }] })

...