Рекомендации по массовой загрузке данных

массовая загрузка данных в 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, вы можете столкнуться с временными сбоями, например сбоями в сети или конфликтами в документе.

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