Относится только к версии Cloud Firestore Enterprise. |
На этой странице описываются лучшие практики массовой загрузки данных в Cloud Firestore с совместимостью с MongoDB с такими инструментами, как mongoimport
.
Cloud Firestore — это высокораспределенная система, предлагающая автоматическое масштабирование в соответствии с потребностями вашего бизнеса. Cloud Firestore динамически разделяет и объединяет ваши данные в зависимости от нагрузки на систему.
Разделение на основе нагрузки происходит автоматически, без какой-либо предварительной настройки. Система разделения на основе нагрузки Cloud Firestore обладает рядом важных уникальных особенностей по сравнению с другими документными базами данных, которые важно учитывать при моделировании данных.
Распределенная природа Cloud Firestore может потребовать изменения некоторых проектных решений, особенно для рабочих нагрузок, оптимизированных для баз данных, где первичная реплика является узким местом для пропускной способности записи.
Лучшие практики
Рабочие нагрузки, обрабатывающие большие объёмы данных в однопоточном клиенте, могут стать узким местом. Клиенты могут использовать однопотоковую обработку для массовой загрузки данных, поскольку пропускная способность клиента и сервера примерно одинакова. База данных Cloud Firestore может обрабатывать значительно больше данных параллельно, но для этого необходимо настроить клиентов на параллельную отправку запросов.
mongoimport
При использовании инструмента mongoimport
запросы по умолчанию выполняются последовательно. Чтобы ускорить загрузку в Cloud Firestore , задайте количество рабочих процессов с помощью флага --numInsertionWorkers
. Для определения правильного значения может потребоваться корректировка в зависимости от размера вашего клиента, но обычно мы рекомендуем начинать с значения не менее 32
.
асинхронное программирование
При разработке собственного программного обеспечения с использованием API, совместимых с MongoDB, вы можете улучшить параллелизм следующими способами:
- Асинхронные фреймворки : использование асинхронных фреймворков позволяет обрабатывать запросы и отвечать на них параллельно. Нет необходимости разрабатывать сложные пулы или очереди при обращении к базе данных. Каждый поток запросов может использовать независимые соединения и выполнять запросы к базе данных параллельно.
- Используйте предложения по распараллеливанию вычислений : используя такие сервисы, как Cloud Run , ваша система может масштабировать количество вычислительных работников, необходимых для обработки данных.
Временные отказы
При работе с большой распределенной системой, такой как Cloud Firestore , вы можете столкнуться с временными сбоями, такими как сбои в работе сети или конфликты в документе.
При массовой загрузке больших объемов информации важно поддерживать стратегию повторных попыток записи, не допуская сбоя операции по загрузке большего объема данных.