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