tiero - Fotolia

Comparación de Google Cloud Firestore y Firebase Realtime Database

Las bases de datos NoSQL administradas son cada vez más populares para el desarrollo de aplicaciones. Comparen dos de estas opciones de Google: Realtime Database y Cloud Firestore, para ver si satisfacen sus necesidades.

Las bases de datos NoSQL han demostrado su valor para muchos tipos de aplicaciones que dependen de grandes conjuntos de datos no estructurados, un desarrollo rápido y una implementación resistente.

Se puede elegir entre numerosos servicios de base de datos NoSQL alojados en la nube que pueden complementar la mayoría de las cargas de trabajo de clase empresarial. Los desarrolladores de aplicaciones móviles y web que usan Google Cloud Platform pueden elegir entre Firebase Realtime Database o Google Cloud Firestore.

Destaquemos las características básicas de cada base de datos NoSQL y consideremos cuál podría ser la mejor alternativa para su próximo proyecto de desarrollo de aplicaciones.

Los fundamentos

Firebase Realtime Database es la base de datos NoSQL original alojada de Firebase. Almacena datos en el formato JSON (JavaScript Object Notation) y proporciona esos datos en tiempo real. La base de datos está destinada principalmente para el desarrollo de aplicaciones móviles y web. Los desarrolladores pueden usar SDK de Android, iOS y JavaScript, así como APIs REST.

Google Cloud Firestore también forma parte de la cartera de Firebase y es una base de datos NoSQL flexible, escalable y alojada que se adapta mejor a aplicaciones complejas y exigentes. Esta nueva oferta ofrece algunas características adicionales y más funcionalidades en comparación con Realtime Database. Por ejemplo, al igual que su predecesor, Cloud Firestore se usa para crear aplicaciones móviles y web usando SDKs para iOS y Android, pero también se puede usar para el desarrollo del lado del servidor a través de Node.js, Java, Python y Go SDK, como APIs REST y RPC. Debido a esto, Firestore es el mejor para proyectos de desarrollo de aplicaciones más nuevos.

Las similitudes y diferencias

Elegir la base de datos NoSQL correcta depende de sus necesidades de sincronización de datos en tiempo real y de los requisitos de su aplicación. Y aunque ambas bases de datos comparten algunas similitudes, es importante saber qué las hace diferentes.

Estructura de datos

Cada base de datos NoSQL almacena datos de diferentes maneras. Firebase Realtime Database almacena datos como un gran árbol JSON, que es un grupo de documentos JSON. Esto funciona bien para manejar datos simples, pero puede fallar si necesita su base de datos para organizar grandes cantidades de datos o manejar datos de manera jerárquica.

Google Cloud Firestore utiliza documentos que contienen campos a los que se asignan a valores reales. Estos documentos se almacenan como colecciones y subcolecciones, que se pueden organizar para recopilar datos relacionados o facilitar consultas a la base de datos. La base de datos puede admitir muchos tipos de datos, incluso objetos anidados y estructuras de datos jerárquicas complejas.

Soporte fuera de línea

Firebase Realtime Database admite un modo fuera de línea en el que la persistencia se mantiene a través de un caché local, incluso cuando la aplicación está desconectada de internet. La base de datos se actualiza automáticamente y se sincroniza con su instancia una vez que la aplicación se vuelve a conectarse a internet. De esta manera, la aplicación puede continuar funcionando incluso cuando el acceso a la red es lento o intermitente.

Google Cloud Firestore también proporciona un modo sin conexión que almacena en caché los datos del cliente y permite que las aplicaciones continúen leyendo y escribiendo en la base de datos sin acceso a internet. Sin embargo, también se integra con otros servicios de Google Cloud, como Cloud Functions, así como con bibliotecas de código abierto. Esto proporciona acciones más versátiles y flexibilidad en el diseño de la aplicación: solo los cambios en la base de datos se intercambian durante la sincronización.

Seguridad

Firebase Realtime Database está construida para manejar datos no estructurados con un lenguaje de reglas llamado Firebase Realtime Database Security Rules. Las reglas definen las estructuras de datos y controlan cómo se escriben, leen, validan e indexan los datos. Los equipos de TI también pueden usarlos junto con Firebase Authentication, que permite el control sobre el acceso a datos a nivel de usuario.

Google Cloud Firestore también usa su propio lenguaje de reglas llamado Cloud Firestore Security Rules. Al igual que con Realtime Database, las reglas pueden proporcionar protección granular a los contenidos y el acceso a la base de datos. Estas reglas también se pueden usar junto con Firebase Authentication para aplicaciones móviles y web, y las empresas también pueden usar Google Cloud Identity and Access Management para los idiomas del lado del servidor.

Consultas

Firebase Realtime Database puede ordenar o filtrar, pero no ambos. Las consultas pueden ser granulares, pero devolverán todo el subárbol, lo que ofrece más resultados de los necesarios. Si bien la base de datos no requiere indexación, esto puede afectar el rendimiento en grandes conjuntos de datos. En comparación, Google Cloud Firestore admite necesidades más complejas, como consultas indexadas que simultáneamente ordenan y filtran para refinar los resultados de búsqueda.

Escritura y transacciones

Firebase Realtime Database utiliza escrituras y transacciones simples. Los datos se escriben a través de conjuntos dedicados y operaciones de actualización periódicas. Los datos también se guardan a través de transacciones. Google Cloud Firestore agrega flexibilidad a las escrituras y transacciones, escribiendo datos con conjuntos y actualizaciones, además de permitir operaciones más complejas con transformaciones. Las transacciones también se pueden leer y escribir en cualquier parte de la base de datos, mientras que Firebase Realtime solo puede usar transacciones en un subárbol de datos específico.

Fiabilidad y escalabilidad

En términos de confiabilidad y rendimiento, Firebase Realtime Database proporciona operaciones extremadamente rápidas, pero la base de datos está limitada a las zonas de disponibilidad de una sola región. Además, la base de datos deberá dividirse en varias instancias si supera las 100,000 conexiones concurrentes y 1,000 escrituras por segundo.

En comparación, Google Cloud Firestore ofrece la confiabilidad de un servicio nativo de varias regiones. Además, es más escalable con límites actuales de 1 millón de conexiones concurrentes y 10,000 escrituras por segundo, y se espera que aumente en el futuro.

Otras opciones

Independientemente de su elección, Firebase Realtime Database y Google Cloud Firestore no son mutuamente excluyentes. Los desarrolladores de Firebase ciertamente pueden usar ambas bases de datos juntas en el mismo proyecto. Pero también hay muchas otras ofertas de bases de datos no relacionales en el ámbito de la nube pública, que incluyen:

  • Amazon DynamoDB;
  • Amazon DocumentDB;
  • Azure Cosmos DB; y
  • Azure Table Storage.

La elección de su base de datos dependerá principalmente de las necesidades de la aplicación y los tipos de datos que necesita manejar.

Investigue más sobre Bases de datos