Функциональные возможности Sharding/Replication от Mongodb должны иметь встроенный эффективный метод, но я не вижу записи doc о том, как можно получить доступ к этому для целей сравнения.
Репликация основана на idempotent operation log (oplog) и не требует вычисления контрольных сумм по коллекциям. В руководстве MongoDB подробно рассматриваются replication synchronization, включая начальную синхронизацию и текущее поведение репликации.
внутреннийdbHash
command используемый sharding для расчета контрольной суммы md5 всех коллекций в базе данных. Он предназначен для проверки согласованности коллекций в базируемых конфигурациях кластерных кластеров, но может использоваться для вычисления сумм md5 для любой базы данных.
ПРИМЕЧАНИЕ: команда dbHash
явно не является частью стабильной клиентской стороне API, поэтому реализация/API может быть изменена без предварительного уведомления между MongoDB высвобождает.
Поскольку эта команда выполняет итерацию всех документов во всех коллекциях для выбранной базы данных, вы должны проявлять осторожность при работе в больших базах данных или в производственной базе данных (особенно если ваш набор данных больше, чем ОЗУ). Чтение большого количества документов может привести к временному поиску полезных данных/индексов из вашего рабочего набора в памяти.
Вывод команды будет выглядеть примерно следующим образом:
> db.runCommand('dbHash')
{
"numCollections": 2,
"host": "nibbler.local",
"collections": {
"foo1": "adf5db735ce0ac74c35a561675614676",
"foo2": "adf5db735ce0ac74c35a561675614676",
"foo3": "26e01a5da467064790a61108170a3b5c"
},
"md5": "f8f53a3cde773a61f5b4ccf4c3d99e07",
"timeMillis": 0,
"fromCache": [ ],
"ok": 1
}
В этом примере foo1
и foo2
коллекции имеют одинаковые md5 суммы, в то время как foo3
различен.
a) Включает ли это объекты ObjectIds или только фактические данные? б) Какая часть в репликации (с использованием Oplog) или осколки (маршрутизация монго на основе ключа осколка) потребует сравнения коллекций? – xeraa
. В моем конкретном случае использования расширенные изменения кода для нескольких модулей синтаксического анализа, которые я бы хотел проверить, будут производить те же коллекции, что и модули в основной ветке, когда они запускаются через набор данных. – user3467349