Estoy creando una aplicación donde almacena cuántos minutos ha estudiado un usuario con mi aplicación. La base de datos de My Firestore comienza con una colección de "usuarios", y cada usuario tiene su propio documento que lleva el nombre de su ID de usuario generado en Auth.
Mi pregunta es si leo su documento de ID de usuario, que tiene muchos documentos en sus subcolecciones, ¿eso cuenta como una lectura o también cuenta la cantidad de documentos en las subcolecciones?
Gracias de antemano.
La respuesta aquí de Torewin es mayormente correcta, pero le falta un detalle importante. Dice:
si recupera un documento; en cualquier lugar, cuenta como una lectura
Esto no es enteramente verdad. Las lecturas de documentos en caché no se facturan como lecturas. Esta es una característica importante de los SDK de cliente de Firestore que ayuda a reducir los costos de facturación. Si obtiene un solo documento utilizando la caché de opciones de origen (las opciones son "caché", "servidor" o "predeterminado"), primero se consultará la caché y obtendrá el documento sin facturación. El caché también se usa para los resultados de la consulta cuando la aplicación está fuera de línea.
Lo mismo se aplica a los resultados de las consultas. Si un documento proviene de la memoria caché por algún motivo, no se factura esa lectura.
No estoy seguro de lo que Torewin quiere decir con esto en los comentarios: "Recomiendan que haga varias lecturas en lugar de 1 grande porque ahorrará dinero de esa manera". Todas las lecturas tienen el mismo "tamaño" en términos de facturación, considerando solo el costo de la lectura en sí. El tamaño del documento solo importa para el costo del uso de salida de Internet, para el cual existe documentación sobre precios .
Vale la pena señalar que los documentos no pueden "contener" otros documentos. Los documentos están contenidos en colecciones o subcolecciones. Esta colección solo tiene un "camino" que describe dónde viven. Una subcolección puede existir sin un documento "principal". Cuando un documento no existe, pero se organiza una colección debajo de él, el ID del documento se muestra en cursiva en la consola. Cuando elimina un documento mediante la API del cliente, no se elimina ninguna de sus subcolecciones. Se dice que las eliminaciones son "superficiales" a este respecto.
Si se refiere a ¿es 1 lectura para acceder a un Document (en este caso, su ID de usuario generado) desde FireStore?
Me imagino que la respuesta sería sí.
Cualquier consulta o lectura de Firestore solo extrae la referencia a la que está mapeando. Por ejemplo, si toma el tercer documento en su Usuario -> ID de usuario -> Tercer documento, solo se devolverá el tercer documento. Ninguno de los otros documentos en esa colección o cualquiera de las colecciones además del ID de usuario.
¿Eso responde a tu pregunta o estás preguntando algo completamente diferente?
Para referencia: https://firebase.google.com/docs/firestore/pricing#operations
Editar: se cobrará cada documento individual que se extraiga de la consulta. Por ejemplo, si extrae la colección principal (con 6 documentos), se le cobrará por los 6 documentos. La idea es tomar solo los documentos que necesita o usar un cursor que le permita reanudar una consulta de larga duración. Por ejemplo, si solo desea que el documento correspondiente use datos en una fecha específica (si sus datos están configurados de esa manera), solo recuperaría ese documento específico y no recuperaría todos los documentos de la colección para los otros días. .
Una forma simple de pensarlo es: si recupera un documento; en cualquier lugar, cuenta como una lectura.