Лучшие практики для массовой загрузки данных

Загрузка данных в Cloud Firestore в пакетном режиме с помощью таких инструментов, как mongoimport и mongorestore .

Cloud Firestore — это высокораспределенная система, обеспечивающая автоматическое масштабирование в соответствии с потребностями вашего бизнеса. Cloud Firestore динамически разделяет и объединяет ваши данные в зависимости от нагрузки на систему.

Разделение данных на основе загрузки происходит автоматически без какой-либо предварительной настройки. Система разделения данных на основе загрузки Cloud Firestore обладает рядом важных уникальных характеристик по сравнению с другими документоориентированными базами данных, которые важно учитывать при моделировании данных.

Распределенная природа Cloud Firestore может потребовать изменения некоторых проектных решений, особенно для рабочих нагрузок, оптимизированных для баз данных, где основная реплика является узким местом для пропускной способности записи.

Передовые методы

Нагрузки, обрабатывающие большие объемы данных в однопоточном режиме на стороне клиента, могут создавать узкое место. Клиенты могут использовать однопоточность для массовой загрузки данных, поскольку пропускная способность клиента и сервера примерно одинакова. База данных Cloud Firestore может обрабатывать значительно больший параллелизм, но для этого необходимо настроить клиенты на параллельную отправку запросов.

mongoimport

При использовании инструмента mongoimport запросы по умолчанию выполняются последовательно. Чтобы сократить время загрузки в Cloud Firestore , задайте количество рабочих процессов с помощью флага --numInsertionWorkers . Для оптимизации может потребоваться настройка в зависимости от размера вашего клиента.

mongorestore

При использовании инструмента mongorestore удалите параметр retryWrites=false из строки подключения, чтобы повысить устойчивость к временным сбоям.

Для сокращения времени загрузки в Cloud Firestore можно также увеличить количество обработчиков вставки на каждую коллекцию с помощью флага --numInsertionWorkersPerCollection и количество параллельных коллекций с помощью флага --numParallelCollections . Для корректной настройки параметров может потребоваться дополнительная настройка в зависимости от размера вашего клиента.

асинхронное программирование

При разработке собственного программного обеспечения с использованием операций, совместимых с MongoDB, вы можете повысить параллелизм следующими способами:

  • Асинхронные фреймворки : использование асинхронных фреймворков позволяет обрабатывать запросы и отвечать на них параллельно. Нет необходимости разрабатывать сложные системы пула или очередей при обращении к базе данных. Каждый поток запросов может использовать независимые соединения и выполнять запросы к базе данных параллельно.
  • Используйте решения для параллельных вычислений : с помощью таких сервисов, как Cloud Run , ваша система может масштабировать количество вычислительных процессов, необходимых для обработки данных.

Кратковременные сбои

При работе с крупной распределенной системой, такой как Cloud Firestore , вы можете столкнуться с временными сбоями, такими как перебои в сети или конфликты при доступе к документу.

При массовой загрузке больших объемов информации важно поддерживать стратегию повторных попыток для неудачных операций записи, чтобы не прерывать основную операцию массовой загрузки.