Hace unos días comenzamos una serie de posts sobre Firebase, y hablamos sobre el almacenamiento de datos en la nube con Firebase y sobre qué es Cloud Storage. En el segundo post de esta colección, vimos cómo Firebase pone a nuestra disposición dos bases de datos: Cloud Firestore y Realtime Database.

En este nuevo post, lo que vamos a hacer es analizarlas y compararlas para saber qué nos ofrece cada una de ellas, de forma que según las necesidades de nuestra app elijamos la que mejor se adapte.

Comenzaremos diciendo que tenemos 2 tipos de base de datos en Firebase:

Ambas ofrecen SDK centrados en el cliente, sin servidores que implementar ni mantener y actualizaciones en tiempo real.

En cuanto al precio, como todo con Firebase, tienen un paquete gratuito con ciertos límites en cuanto al tamaño de la base de datos y número de interacciones por día. Y como con todas las herramientas de Firebase, si necesitas aumentar esas cuotas, ofrecen más paquetes con diferentes precios.

Cloud Firestore o Realtime Database

Como decía antes, en función de las necesidades de nuestro proyecto, elegiremos una base de datos u otra. Realizarte estas preguntas te ayudará a saber cuál es la que mejor se adapta a tu app:

  1. Función de la base de datos: Mi app usa una base de datos para…
  1. Operaciones con datos: El uso de la base de datos de mi aplicación tiene…
  1. Modelo de datos: Prefiero estructurar mis datos como…
  1. Disponibilidad: Mis necesidades de disponibilidad son…
  1. Consultas sin conexión: Mi app deberá realizar consultas en dispositivos con conectividad limitada o sin conexión…

En resumen:

Cloud Firestore ofrece la posibilidad de poder trabajar con una estructura de datos compleja, realizar consultas específicas para obtener un conjunto de datos, filtrar, etc. Mientras, Realtime Database ofrece un árbol JSON, donde podrás almacenar un conjunto de datos sencillos sobre los que podrás realizar operaciones sencillas de lectura y consulta.

Además, en Cloud Firestore los datos están más estructurados ya que todos sus datos consisten en documentos y colecciones (que son colecciones de documentos). Los documentos también pueden apuntar a subcolecciones, que pueden contener otros documentos, que a su vez pueden contener otros documentos, y así sucesivamente.

Tener los datos más estructurados, facilita que las consultas puedan ser más complejas y eficientes ya que puedes solicitar un documento sin tener que obtener todos los datos que se encuentran debajo.

Sin embargo, en Realtime Database siempre obtendrás el árbol completo, por lo que filtrar y obtener sólo unos campos específicos será más difícil.

En cuanto a la escalabilidad, Cloud Firestore ofrece una mayor escalabilidad. Sus consultas se escalarán al tamaño de su conjunto de resultados, no a su conjunto de datos. Por lo tanto, la búsqueda seguirá siendo rápida sin importar cómo de grande pueda llegar a ser tu conjunto de datos.

Por otro lado, Cloud Firestore nos ofrece compatibilidad con varias regiones, es decir, sus datos se comparten en varios centros de datos a la vez. Y a la vez ofrece una gran consistencia, lo que significa que siempre puedes hacer una consulta y estar obteniendo la última versión de tus datos.

Realtime Database, por su lado, no ofrece compatibilidad con varias regiones, pero ofrece una latencia más baja, por lo que será la mejor opción si necesitamos actualizar estado de datos con frecuencia.

Por último, añadir que ambas ofrecen mecanismos de escucha si necesitas estar atento a cambios en los datos en tiempo real.

Todo esto, podemos agruparlo y mostrarlo resumido en esta tabla:

Cloud Firestore Realtime Database
Función de la BBDD Consultas avanzadas Consultas básicas
Modelo de datos Datos estructurados Árbol JSON simple
Eficiencia de las consultas Elevada Baja
Escalabilidad Alta Baja
Actualización en tiempo real Disponible Disponible

Usos prácticos

Con Cloud Firestore podemos poseer una base de datos en la que podemos almacenar una estructura de datos compleja, realizar consultas potentes, anidar consultas, filtrar, ordenar los resultados, etc.

Por lo tanto, será recomendable usar Cloud Firestore si necesitamos una base de datos clásica.

Por otro lado, Realtime Database será recomendable si no tenemos una estructura de datos complejas ni necesidades de realizar consultas muy potentes.

Por ejemplo, Realtime Database se adaptará muy bien si tus necesidades son disponer de varios ficheros de configuración, en función de los cuales cambiarán diferentes ajustes de tu app.

¿Qué sigue?

Espero que este post te haya ayudado a elegir cuál es la base de datos que mejor se adapta a tu proyecto. En el anterior post vimos en detalle cómo trabajar con cada una de ellas, por lo que si no lo visitaste, te recomendamos que profundices en él.

Y si ya lo hiciste y lo que deseas es seguir conociendo las herramientas que nos ofrece Firebase para el almacenamiento de datos en la nube, no te pierdas en unos días el siguiente post donde finalizamos con la última herramienta que nos proporciona Firebase para ello: Remote Config.

¿Te has quedado con alguna duda? ¡Déjanos un comentario!

Cuéntanos qué te parece.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.

Suscríbete