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

Firebase ofrece dos bases de datos de documentos basadas en la nube y accesibles para los clientes. Te recomendamos que los clientes nuevos comiencen con Cloud Firestore:

  • Cloud Firestore es la base de datos de documentos de nivel empresarial recomendada y compatible con JSON, en la que confían más de 250,000 desarrolladores. Es adecuada para aplicaciones con modelos de datos enriquecidos que requieren capacidad de consulta, escalabilidad y alta disponibilidad. También ofrece sincronización de clientes de baja latencia y acceso a los datos sin conexión.

  • Realtime Database es la base de datos JSON clásica de Firebase. Es adecuado para aplicaciones con modelos de datos simples que requieren búsquedas simples y sincronización de baja latencia con escalabilidad limitada.

¿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 todavía 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.

Cloud Firestore Preferido 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.

Obtén más información sobre el modelo de datos de 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.

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.

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

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.

Cloud Firestore Preferido Realtime Database
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 presencia en Cloud Firestore. Se admite la presencia.

Realiza consultas

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

Cloud Firestore Preferido Realtime Database
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 devuelven documentos en una colección o un grupo de colecciones en particular y no muestran los datos de una subcolección.
  • 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.
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.

Escrituras y transacciones

Cloud Firestore Preferido Realtime Database
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.
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.

Confiabilidad y rendimiento

Cloud Firestore Preferido Realtime Database
Cloud Firestore es una solución regional y multirregional con ajuste de escala automático.
  • Una solución de baja latencia, con tiempos de respuesta típicos no superiores a 30 ms.
  • 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.
Lee más sobre las características de rendimiento y confiabilidad de Cloud Firestore en el Acuerdo de Nivel de Servicio.
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, con tiempos de respuesta típicos no superiores a 10 ms. Es una opción ideal para la sincronización frecuente de estados.
Lee más sobre las características de rendimiento y confiabilidad de Realtime Database en el Acuerdo de Nivel de Servicio.

Tiempo de actividad

Cloud Firestore Preferido Realtime Database
Rendimiento de tiempo de actividad extremadamente alto
  • Rendimiento de tiempo de actividad típico del 99.999%
  • Si la disponibilidad es de suma importancia, por ejemplo, en apps de comercio electrónico, usa Cloud Firestore.
Alto rendimiento de tiempo de actividad
  • Rendimiento de tiempo de actividad típico del 99.95%

Escalabilidad

Cloud Firestore Preferido Realtime Database
El escalamiento es automático.
  • Escala de forma completamente automática. 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.
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.

Seguridad

Cloud Firestore Preferido Realtime Database
Reglas sin formato de cascada que combinan autorización y validación.
  • Las operaciones de lectura y escritura desde los SDK para dispositivos móviles protegidos por Cloud Firestore Security Rules.
  • 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.
Lenguaje de reglas en cascada que separa la autorización de la validación.
  • Las operaciones de lectura y escritura desde los SDK para dispositivos móviles protegidos por Realtime Database Security Rules.
  • Transmisión en cascada de reglas de lectura y escritura.
  • Debes validar los datos por separado con la regla validate.

Precios

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

Cloud Firestore Preferido 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 diariamente límites de gasto para proyectos de App Engine, a fin de asegurarte de no superar los costos si te acomodan.

Más información sobre Planes de precios de Cloud Firestore.

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

Obtén más información sobre los planes de precios de Realtime Database.

Usa 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.