Estoy construyendo un componente angular para manejar calendarios y eventos personalizados. Una vez que se crea un evento, guardo los datos proporcionados en la base de datos de firestore como documentos individuales.
Ejemplo de documento:
{ "name" : "test event", "description" :"sample test event for check", "startdate":"8/12/2021", "enddate":"8/12/2021", "color":"#11111", "userid":"user1" }Entonces, al crear cada evento, la estructura de datos similar se guardará como documentos individuales. Podemos filtrar el calendario personalizado con un rango de fechas y también mostrar múltiples eventos de usuario en un solo calendario.
Pero al usar la estructura del documento anterior, cuando tratamos de obtener una gran cantidad de datos, genera un mayor costo para el servidor. ¿Cómo puedo organizar estos datos de forma individual o no? ¿Alguien puede sugerir su opinión sobre esto?
Esta estructura debería ser buena para el caso de uso, ya que no alcanzará ningún límite por documento (almacenar eventos en una matriz puede alcanzar 1 MB por límite de tamaño de documento) y puede ejecutar fácilmente la mayoría de las consultas.
¿Cómo puedo organizar estos datos de forma individual o no?
Tiene el campo de ID de userid en el documento y los eventos del usuario se pueden filtrar usando .where("userid", "==", curUserId) . Otra forma sería usar subcolecciones:
users -> {userId} -> events -> {eventId} (col) (doc) (col) (doc)De esta forma, no tendrá que almacenar el UID del usuario en cada documento, ya que ya está agrupado en subcolecciones.
cuando tratamos de obtener una gran cantidad de datos, genera un mayor costo para el servidor
Los costos de Firestore se basan totalmente en su uso. Si su aplicación tiene muchos usuarios, los costos serán más altos.