Prácticas recomendadas para la carga de datos en bloque
En esta página se describen las prácticas recomendadas para cargar datos de forma masiva en Firestore con compatibilidad con MongoDB
con herramientas como mongoimport.
Firestore es un sistema altamente distribuido que ofrece escalado automático para satisfacer las necesidades de tu empresa. Firestore divide y combina dinámicamente tus datos en función de la carga que recibe el sistema.
La división basada en la carga se produce automáticamente sin necesidad de preconfiguración. El sistema de división basado en la carga de Firestore tiene algunas características importantes y únicas en comparación con otras bases de datos de documentos que debes tener en cuenta al modelar tus datos.
La naturaleza distribuida de Firestore puede requerir que se cambien algunas decisiones de diseño, sobre todo en el caso de las cargas de trabajo optimizadas para bases de datos en las que la réplica principal es el cuello de botella del rendimiento de escritura.
Prácticas recomendadas
Las cargas de trabajo que procesan grandes cantidades de datos en un cliente de un solo subproceso pueden crear un cuello de botella. Es posible que los clientes puedan usar un solo hilo para cargar datos en bloque, ya que el rendimiento del cliente y del servidor son similares. Una base de datos de Firestore puede gestionar mucho más paralelismo, pero para ello debes configurar los clientes para que envíen solicitudes en paralelo.
mongoimport
Cuando se usa la herramienta mongoimport, las solicitudes se realizan de forma secuencial de forma predeterminada.
Para mejorar el tiempo de carga en Firestore, define el número de trabajadores con la marca --numInsertionWorkers.
Es posible que la configuración correcta requiera ajustes en función del tamaño de tu cliente, pero, por lo general, te recomendamos que empieces con al menos 32.
Programación asíncrona
Cuando desarrolles tu propio software con APIs compatibles con MongoDB, puedes mejorar el paralelismo de las siguientes formas:
- Frameworks asíncronos: permiten procesar y responder a las solicitudes en paralelo. No es necesario desarrollar ningún sistema complejo de agrupación o de colas al hacer llamadas a tu base de datos. Cada flujo de solicitudes puede usar conexiones independientes y hacer sus llamadas a la base de datos en paralelo.
- Usa ofertas de computación paralelizada: con servicios como Cloud Run, tu sistema puede escalar el número de trabajadores de computación necesarios para procesar datos.
Fallos transitorios
Cuando trabajas con un sistema distribuido de gran tamaño como Firestore, es posible que se produzcan errores transitorios, como fallos de red o conflictos en un documento.
Cuando se cargan grandes cantidades de información de forma masiva, es importante mantener una estrategia de reintentos para las escrituras fallidas sin que se produzca un error en la operación de carga masiva.