У меня есть облачная функция в Python 3.7 для записи / обновления небольших документов в Firestore. У каждого документа есть user_id как Document_id и два поля: отметка времени и карта (словарь) с тремя объектами значения ключа, все они очень маленькие.
Это код, который я использую для write / update Firestore:
doc_ref = db.collection(u'my_collection').document(user['user_id'])
date_last_seen=datetime.combine(date_last_seen, datetime.min.time())
doc_ref.set({u'map_field': map_value, u'date_last_seen': date_last_seen})
Моя цель - вызывать эту функцию один раз в день и записывать / обновлять ~ 500K документов. Я пробовал следующие тесты, для каждого из которых я включаю время выполнения:
Тест A : обработка вывода до 1000 документов. Не писать / обновлять Firestore -> ~ 2 секунды
Тест B : обработать вывод до 1000 документов. Запись / обновление Firestore -> ~ 1 мин 3 секунды
Тест C: обработка вывода до 5000 документов. Не писать / обновлять Firestore -> ~ 3 секунды
Тест D : обработать вывод до 5000 документов. Запись / обновление Firestore -> ~ 3 мин 12 секунд
Мой вывод здесь: запись / обновление Firestore занимает более 99% моего вычислительного времени.
Вопрос: Как эффективно писать / обновлять ~ 500 тыс. Документов каждый день?