Я использую Mongodb как кеш прямо сейчас. Приложение будет загружено с 3 CSV за ночь, а CSV увеличатся, потому что новые продукты будут добавляться все время. Прямо сейчас, я достиг 5 миллионов записей, и потребовалось около 2 часов, чтобы обработать все. Поскольку кеш обновляется каждый день, становится нецелесообразным обновлять данные.Производительность Mongodb значительно ухудшается с течением времени с помощью upsert.
Например
CSV 1
ID, NAME
1, NAME!
CSV 2
ID, DESCRIPTION
1, DESC
CSV 3
ID, SOMETHING_ELSE
1, SOMETHING_ELSE
Приложение будет читать CSV 1 и поместить его в базу данных. Затем CSV 2 будет прочитан, если появится новая информация, которую он добавит в тот же документ или создаст новую запись. Та же логика применяется для CSV 3. Таким образом, один документ будет получать разные атрибуты из разных CSV, следовательно, upsert
. После того, как все будет сделано, все документы станут индексами.
В настоящее время первые 1 млн. Документов относительно быстры, но я вижу, что со временем производительность значительно ухудшается. Я предполагаю, что это связано с тем, что Mongodb должен найти документ и обновить атрибуты, иначе создав его. Я использую Java Driver и MongoDB 2.4. В любом случае, я могу улучшить или даже выполнить пакетный запуск в java-драйвере mongodb?