Estoy creando una red social como sitios web donde los usuarios pueden publicar texto/imágenes y darles me gusta, pero me encontré con un problema. Sé que almacenaré las publicaciones en Firestore, pero ¿dónde debo almacenar los Me gusta? No puedo almacenarlos en Firestore, porque me gusta/no me gusta una publicación desperdiciará 1 operación de escritura (hay 600k operaciones de escritura en el nivel de pago por uso). ¿Debo almacenar Me gusta en la base de datos en tiempo real?
Me gusta/no me gusta una publicación desperdiciará 1 operación de escritura (hay 600k operaciones de escritura en el nivel de pago por uso).
El nivel gratuito (plan Spark) incluye 20 000 escrituras por día (aproximadamente 600 000 por mes) y, después de eso, costará aproximadamente $0,18 por cada 100 000 escrituras por mes, según su región.
Personalmente, no me preocuparía demasiado por el costo de las escrituras en este escenario porque si tiene suficientes usuarios en su aplicación para obtener 600k Me gusta en un mes, entonces su aplicación (con suerte) tiene algunos ingresos.
El problema principal es que un solo documento de Firestore solo puede manejar 1 escritura por segundo (puede exceder en ráfagas a corto plazo). Esto solo es un problema para usted si está almacenando todos esos me gusta en un solo documento, lo cual supongo que es así, ya que tiene sentido reducir las lecturas. Como mencionó Frank, para solucionar este problema, puede consultar los contadores distribuidos aquí .
Otra opción como mencionaste es almacenar Me gusta en RTDB. RTDB y Firestore funcionan bien juntos, siempre que administre correctamente los datos en ambos lugares. Si elige almacenar Me gusta en RTDB, tenga cuidado con lo siguiente que puede ser relevante para su caso de uso:
RTDB solo puede tener 100 conexiones simultáneas en el plan Spark y 200k en el plan Blaze. Para escalar más allá de eso (en el plan Blaze), deberá fragmentar sus datos en varias bases de datos
Una sola base de datos RTDB tiene un límite actual de 1k escrituras por segundo
No puede realizar escrituras por lotes en varios servicios de Firebase. Por ejemplo, si necesita actualizar un documento de Firestore al mismo tiempo que escribe en RTDB y quiere asegurarse de que se realice correctamente o falle como grupo.
No encontrará un "sí" o un "no" definitivo a su pregunta. Lo he visto implementado en ambos sentidos, y ambos funcionan igual de bien.
Como mencionó Frank, debe buscar aquí Firestore vs RTDB para elegir cuál es mejor para usted