Советы по быстрому и эффективному обновлению миллионов документов MongoDB с использованием Python? - PullRequest
0 голосов
/ 25 марта 2019

быстрый вопрос о базе данных mongodb и сборке, которую я настроил, и пытаюсь использовать python для обновления каждого из документов.

В основном у меня есть коллекция из примерно 2.6 миллионов записей почтовых индексов, и у меня есть скрипт на pythonэто берет данные из файла CSV, используя почтовый индекс в качестве ключа.

Все почтовые индексы уникальны, и у DB и CSV есть соответствующие ключи.Данные, которые я импортирую, на самом деле не имеют значения, это скорее упражнение, чтобы найти лучший метод, использующий python для обновления моего документа, так как позже я планирую сделать что-то с более значимыми данными.Я добавил индекс в столбец почтового индекса в коллекции mongo, но это, похоже, не ускорило обработку.

Когда я запускаю приведенный ниже код, кажется, что для обновления документа требуется около 1 секунды на каждый документ,и, как вы можете догадаться, так долго ждать обновления всех этих записей.Кто-нибудь знает более быстрый способ сделать это, и если есть что-то из моего примера ниже, что может помешать ему работать быстрее.

Любая помощь будет принята с благодарностью.Извините, если это неправильное место, я не уверен, что это проблема Монго или проблема с питоном.

Спасибо

пожалуйста, найдите пример кода Python, который я использую для обновления Монгозаписи.

for key, val in testdict.items():
    mycol.update_one({"Postcode": key}, {"$set": {"SOAExample": val}})
    count = count+1
    print(count, " out of ", totalkeys, " done")

1 Ответ

0 голосов
/ 26 марта 2019

Посмотрите на API bulk_write , который позволит вам выполнять пакетные обновления, чтобы сократить количество обращений к серверу. Кроме того, разделите ваши данные и запустите множество процессов обновления параллельно, чтобы обновления происходили параллельно. сервер базы данных может работать медленно для любого конкретного обновления из-за write_concerns и т. д., но он может обрабатывать много обновлений параллельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...