Luego de mucho luchar pudimos encontrar el arreglo de esta problema que algunos los lectores de nuestra web han presentado. Si quieres compartir algo más no dudes en dejar tu información.
Solución:
Tengo algo key puntos sobre las subcolecciones que debe tener en cuenta al modelar su base de datos.
1 – Las subcolecciones le brindan una base de datos más estructurada.
2 – Las consultas se indexan de forma predeterminada: el rendimiento de las consultas es proporcional al tamaño de su conjunto de resultados, no a su conjunto de datos. Entonces, no importa el tamaño de su colección, el rendimiento depende del tamaño de su conjunto de resultados.
3 – Cada documento tiene un tamaño máximo de 1 MB. Por ejemplo, si tienes un array de pedidos en su documento de cliente, podría ser una buena idea crear una subcolección de pedidos para cada cliente porque no puede prever cuántos pedidos tendrá un cliente. Al hacer esto, no necesita preocuparse por el tamaño máximo de su documento.
4 – Precios: Firestore le cobra por la lectura, escritura y eliminación de documentos. Por lo tanto, cuando cree muchas subcolecciones en lugar de utilizar matrices en los documentos, deberá realizar más lecturas, escrituras y eliminaciones, lo que aumentará su factura.
Para responder a la pregunta original sobre la eficiencia:
Consultar a todas las personas con el family
'Smith'
desde el people
colecciones de primer nivel De Verdad no es mas lento que pedir todo el people
en el 'Smith'
family
subcolección.
Esto se explica en el episodio Cómo estructurar sus datos de la serie de videos Conozca Cloud Firestore.
Hay algunas compensaciones entre las colecciones de nivel superior y las subcolecciones a tener en cuenta. Dependiendo de las consultas específicas que pretenda utilizar, es posible que deba crear composite indexes
para consultar colecciones de nivel superior o collection group indexes
para consultar subcolecciones. Ambos tipos de índice cuentan para el límite de 200 exenciones de índice.
Estas compensaciones se analizan en detalle cerca de la parte inferior de la publicación de blog Comprensión de las consultas de grupos de colecciones y en Mapas, arreglos y subcolecciones, ¡Dios mío! episodio de la serie de videos Get to Know Cloud Firestore.
He enlazado a las partes relevantes de ambos videos.
Me preguntaba lo mismo. La documentación habla principalmente de matrices frente a subcolecciones. Mi conclusión es que no existen ventajas claras en el uso de una subcolección sobre una colección de nivel superior. Las subcolecciones tenían algunas limitaciones técnicas claras antes, pero creo que se eliminaron con la reciente introducción de consultas de grupos de colecciones.
Estas son algunas de las ventajas de ambos enfoques:
Subcolección:
- Su base de datos “se siente” más estructurada ya que tendrá menos colecciones de nivel superior en la lista.
- No es necesario almacenar una referencia/extranjero key/id del documento principal, como está implícito en la estructura de la base de datos. Puede llegar al padre a través del documento de subcolección ref.
Colección de primer nivel:
- Los documentos son más fáciles de eliminar. Al usar subcolecciones, debe asegurarse de eliminar primero todos los documentos de la subcolección antes de eliminar el documento principal. No hay una API para esto, por lo que es posible que deba implementar sus propias funciones auxiliares.
- Tener la identificación principal directamente en cada (sub) documento puede facilitar el procesamiento de los resultados de la consulta, según la aplicación.
Sección de Reseñas y Valoraciones
Si entiendes que te ha resultado útil este artículo, sería de mucha ayuda si lo compartieras con el resto entusiastas de la programación y nos ayudes a difundir este contenido.