Cómo elegir tu base de datos: Cloud Firestore o Realtime Database

Firebase ofrece dos soluciones de bases de datos en la nube y accesibles para los clientes que admiten sincronización en tiempo real:

  • Cloud Firestore es la base de datos más reciente de Firebase para el desarrollo de apps para dispositivos móviles. Aprovecha lo mejor de Realtime Database con un modelo de datos nuevo y más intuitivo. Con Cloud Firestore también se pueden realizar consultas más ricas y rápidas, y el escalamiento se ajusta a un nivel más alto que Realtime Database.

  • Realtime Database es la base de datos original de Firebase. Es una solución eficiente y de baja latencia destinada a las apps para dispositivos móviles que necesitan estados sincronizados entre los clientes en tiempo real.

¿Qué base de datos recomienda Firebase?

La elección de una solución de base de datos dependerá de muchos factores, pero cuando se trata de ciertas características, podemos darte algunas recomendaciones sobre la base de datos indicada para ti.

Las dos soluciones ofrecen lo siguiente:

  • SDK centrados en el cliente, sin servidores que implementar ni mantener
  • Actualizaciones en tiempo real
  • Nivel gratuito, luego pagas por lo que usas

Consideraciones clave

Más allá de las excelentes funciones principales comunes de ambas bases de datos, piensa en cómo algunas de las siguientes consideraciones (o todas) influirán en el éxito de tus apps.

Función de la base de datos
Mi app usa una base de datos para…
Sincronizar datos con consultas básicas principalmente.
Si no necesitas realizar consultas, transacciones ni ordenamientos avanzados, te recomendamos Realtime Database.
Realizar búsquedas, transacciones y ordenamientos avanzados.
Si necesitas realizar interacciones complejas con tus datos, como en apps de comercio electrónico, te recomendamos Cloud Firestore.
Operaciones con datos
El uso de la base de datos de mi aplicación tiene…
Algunos GB de datos o menos que cambian con frecuencia.
Si tu app envía un flujo de pequeñas actualizaciones, como en una app de pizarra digital, te recomendamos utilizar Realtime Database.
De cientos de GB a TB de datos que se leen con mucha más frecuencia de la que se cambia.
Para conjuntos de datos muy grandes y cuando se necesitan operaciones por lotes con frecuencia, recomendamos Cloud Firestore.
Modelo de datos
Prefiero estructurar mis datos como…
Un árbol JSON simple.
Para datos JSON no estructurados, recomendamos Realtime Database.
Documentos organizados en colecciones.
Para los documentos y colecciones estructurados, recomendamos Cloud Firestore.
Disponibilidad
Mis necesidades de disponibilidad son…
Garantía de tiempo de actividad extremadamente alta del 99.999%.
Si la disponibilidad es de suma importancia, como en apps de comercio electrónico, recomendamos Cloud Firestore.
Una garantía de tiempo de actividad de al menos un 99.95%.
Cuando se acepta una disponibilidad muy alta, pero que no llega a ser crítica, recomendamos Cloud Firestore o Realtime Database.
Consultas sin conexión en datos locales
Mi app deberá realizar consultas en dispositivos con conectividad limitada o sin conexión…
Con frecuencia.
Para capacidades de consulta sofisticadas en datos locales cuando el usuario no tiene conexión, recomendamos Cloud Firestore.
Rara vez o nunca.
Si esperas que tus usuarios estén constantemente en línea, recomendamos Cloud Firestore o Realtime Database.

¿Qué otros aspectos importantes debo tener en cuenta?

Después de pensar en las consideraciones clave anteriores, es posible que estés listo para elegir una base de datos. Si aún estás considerando las ventajas y desventajas, en esta sección se abarcan otras diferencias entre Cloud Firestore y Realtime Database.

Modelo de datos

Tanto Realtime Database como Cloud Firestore son bases de datos NoSQL.

Realtime Database Cloud Firestore
Almacena datos como un gran árbol JSON.
  • Los datos simples son muy fáciles de almacenar.
  • Los datos complejos y jerárquicos son más difíciles de organizar a escala.

Obtén más información sobre el modelo de datos de Realtime Database.

Almacena datos como colecciones de documentos.
  • Los datos simples son fáciles de almacenar en documentos, que son muy similares a JSON.
  • Los datos complejos y jerárquicos son más fáciles de organizar a escala, con subcolecciones dentro de los documentos.
  • Necesita menos desnormalización y compactación de datos.

Más información sobre el modelo de datos de Cloud Firestore

Compatibilidad sin conexión y en tiempo real

Ambos tienen SDK en tiempo real centrados en dispositivos móviles y ambos admiten el almacenamiento de datos locales para las apps que funcionan sin conexión.

Realtime Database Cloud Firestore
Soporte sin conexión para clientes de Apple y Android. Soporte sin conexión para clientes de Apple, Android y la Web.

Presencia

Puede ser útil para saber si un cliente está en línea o no tiene conexión. Firebase Realtime Database puede registrar el estado de conexión del cliente y proporcionar actualizaciones cada vez que cambie el estado de conexión del cliente.

Realtime Database Cloud Firestore
Se admite la presencia. No compatible de forma nativa. Puedes aprovechar la compatibilidad de Realtime Database con la presencia si sincronizas Cloud Firestore y Realtime Database con Cloud Functions. Consulta Crea una presencia en Cloud Firestore.

Realiza consultas

Recupera, ordena y filtra datos de ambas bases de datos mediante consultas.

Realtime Database Cloud Firestore
Consultas directas con funciones de ordenamiento y filtrado limitadas.
  • Las consultas pueden ordenar o filtrar en una propiedad, pero no ambas opciones.
  • Las consultas son profundas según la configuración predeterminada: siempre muestran el subárbol completo.
  • Las consultas pueden acceder a los datos en cualquier nivel de detalle, hasta valores de nodo de hoja individuales en el árbol JSON.
  • Las consultas no requieren un índice. Sin embargo, el rendimiento de ciertas consultas se degrada a medida que crece el conjunto de datos.
Consultas indexadas con ordenamiento y filtrado compuestos.
  • Puedes encadenar filtros y combinar filtrado con ordenamiento según una propiedad en la misma consulta.
  • Las consultas son superficiales: solo muestran documentos de colecciones o grupos de colecciones específicos y no muestran datos de subcolecciones.
  • Las consultas siempre deben mostrar documentos completos.
  • Las consultas se indexan de forma predeterminada: el rendimiento de las consultas es proporcional al tamaño del conjunto de resultados, no del conjunto de datos.

Escrituras y transacciones

Realtime Database Cloud Firestore
Operaciones básicas de escritura y transacción.
  • Permite escribir datos mediante operaciones de configuración y actualización.
  • Las transacciones son atómicas en un subárbol de datos específico.
Operaciones avanzadas de escritura y transacción.
  • Permite escribir datos a través de operaciones de configuración y actualización, así como transformaciones avanzadas, como operadores de arreglos y numéricos.
  • Las transacciones pueden leer y escribir datos atómicamente desde cualquier parte de la base de datos.

Confiabilidad y rendimiento

Realtime Database Cloud Firestore
Realtime Database es una solución regional
  • Está disponible en configuraciones regionales. Las bases de datos se limitan a la disponibilidad zonal de una región.
  • Latencia extremadamente baja, es la opción ideal para sincronizar estados con frecuencia.
Obtén más información sobre las características de rendimiento y confiabilidad de Realtime Database en el Acuerdo de Nivel de Servicio.
Cloud Firestore es una solución regional y multirregional con ajuste de escala automático
  • Aloja los datos en varios centros de datos de distintas regiones, lo que garantiza una escalabilidad global y una confiabilidad sólida.
  • Está disponible en configuraciones regionales o multirregionales en todo el mundo.
Obtén más información sobre las características de rendimiento y confiabilidad de Cloud Firestore en el Acuerdo de Nivel de Servicio.

Escalabilidad

Realtime Database Cloud Firestore
El escalamiento necesita fragmentación.
  • Escala hasta alrededor de 200,000 conexiones simultáneas y 1,000 escrituras por segundo en una misma base de datos. Para un escalamiento mayor que ese, se deben fragmentar los datos en distintas bases de datos.
  • Las tasas de escritura en piezas individuales de datos no tienen límites locales.
El escalamiento es automático.
  • Escala de forma completamente automática. En este momento, los límites de escalamiento son de 1 millón de conexiones simultáneas y 10,000 operaciones de escritura por segundo. Esperamos aumentar los límites en el futuro.
  • Las tasas de escritura en índices o documentos individuales tienen límites.

Seguridad

Realtime Database Cloud Firestore
Lenguaje de reglas en cascada que separa la autorización de la validación. Reglas sin formato de cascada que combinan autorización y validación.
  • Las reglas de seguridad de Cloud Firestore protegen las operaciones de lectura y escritura desde los SDK para dispositivos móviles.
  • Identity and Access Management (IAM) protege las operaciones de lectura y escritura desde los SDK para servidores.
  • Las reglas no se aplican en cascada, a menos que uses un comodín.
  • Las reglas pueden restringir consultas: Si los resultados de una consulta pudiesen contener datos a los que el usuario no tiene acceso, la consulta completa falla.

Precios

Ambas soluciones están disponibles en los planes de precios Spark y Blaze.

Realtime Database Cloud Firestore
Se cobra solo por ancho de banda y almacenamiento, pero con una tarifa mayor.

Más información sobre los planes de precios de Realtime Database

Se cobra principalmente por operaciones ejecutadas en la base de datos (lecturas, escrituras y eliminaciones) y, con una tarifa menor, por ancho de banda y almacenamiento.

Cloud Firestore admite límites de gasto diarios para proyectos de App Engine a fin de garantizar que no excedas los costos esperados.

Obtén más información sobre los planes de precios de Cloud Firestore.

Uso de Cloud Firestore y Realtime Database

Puedes usar ambas bases de datos dentro del mismo proyecto o la misma app de Firebase. Ambas bases de datos NoSQL pueden almacenar los mismos tipos de datos y las bibliotecas cliente funcionan de manera similar. Ten en cuenta las diferencias descritas anteriormente si decides usar ambas bases de datos en la app.

Obtén más información sobre las funciones disponibles en Realtime Database y Cloud Firestore.

¿Todo listo para elegir una base de datos?

Esperamos que esta comparación te haya ayudado a elegir una solución de base de datos de Firebase. Ahora puedes aprender a agregar una base de datos a tus proyectos de Firebase.