2015-12-11 7 views
0

У меня есть база данных mongo, которую я должен обновлять ежедневно (удалять ненужные документы и добавлять новые). БД не оштукатурен.переименовать коллекцию и обновить коллекцию

Я беру данные из внешнего мастера данных, с которым работать не так просто.

Есть 2 варианта: 1. reingest всей БД (не столь большой) в коллекцию темп, а затем переименовать его в старое название коллекции (с DropTarget установлен верно) 2. делать тяжелую работу самостоятельно, удалить старый запрашивает и выясняет из мастера данных, какие новые документы являются релевантными, и вставляет их в БД.

. . .

Вариант 1 является, очевидно, пресным, но каково влияние? Я занимаюсь этим обслуживанием в поздний час, но я не хочу, чтобы пользователи получали ошибки при запросе БД во время процесса переименования.

Является ли использование переименования для перезаписи коллекции стандартным способом сделать это, или я злоупотребляю API? :)

ответ

0

В соответствии с documentationrenameCollection блокирует всю активность базы данных на весь период действия операции. Если ваши пользователи установили достаточно большой тайм-аут, они не будут напрямую затронуты этой операцией переименования, однако, поскольку набор данных может измениться под их ногами, могут быть побочные эффекты. Например, переименование коллекции может привести к недействительности открытых курсоров, которые прерывают запросы, которые в настоящее время возвращают данные.

Что касается переименования коллекций в производстве, лично я бы избегал этого, когда это возможно, во-первых, из-за проблемы с курсором выше, но что более важно, поскольку неполная операция renameCollection может оставить целевую коллекцию в непригодном для использования состоянии и потребовать ручного вмешательства для очистки вверх. Вместо этого я бы использовал update с upsert:true, который перезаписывает весь документ или вставляет новую запись, если она не существует.

+0

Привет, спасибо за быстрый ответ, можете ли вы подробно рассказать о том, почему вы не будете использовать переименование в производстве? –

+0

Я уточнил свой ответ и добавил несколько примеров, подтверждающих возражения против переименования коллекции в производство. – Jaco

Смежные вопросы