¿Cuál es la diferencia entre Cloud Firestore y Firebase Realtime Database?

252

Google acaba de lanzar Cloud Firestore, su nueva base de datos de documentos para aplicaciones.

He estado leyendo la documentación pero no veo muchas diferencias entre Firestore y Firebase DB.

El punto principal es que Firestore usa documentos y colecciones que permiten el uso fácil de las consultas en comparación con Firebase, que es una base de datos noSQL tradicional con una base JSON.

Me gustaría saber un poco más sobre sus diferencias o usos, o si Firestore acaba de reemplazar Firebase DB.

Francisco Durdin Garcia
fuente
1
Las lecturas son más rápidas en Firestore, las escrituras son más rápidas en Firebase Real Time Database
DragonFire

Respuestas:

380

Así que escribí una publicación de blog completa sobre esta misma pregunta, y le recomiendo que la revise (o la documentación oficial ) para obtener una respuesta más completa.

Pero si quieres el resumen rápido (-ish), aquí está:

Mejor consulta y datos más estructurados : si bien la base de datos en tiempo real es solo un árbol JSON gigante, Cloud Firestore es un poco más estructurado. Todos sus datos consisten en documentos (que son básicamente almacenes de valores clave) y colecciones (que son colecciones de documentos). Los documentos también apuntarán con frecuencia a subcolecciones, que contienen otros documentos, que pueden contener otros documentos, etc.

Estos datos estructurados lo ayudan de dos maneras. Primero, todas las consultas son poco profundas , lo que significa que puede solicitar un documento sin obtener todos los datos que se encuentran debajo. Esto significa que puede mantener sus datos almacenados jerárquicamente de una manera que tenga más sentido para usted sin tener que preocuparse por mantener su base de datos superficial. Segundo, tienes consultas más poderosas. Por ejemplo, ahora puede consultar en múltiples campos sin tener que crear esos campos "combinados" que combinan (y desnormalizan) datos de otras partes de su base de datos. En algunos casos, Cloud Firestore solo ejecutará esas consultas directamente, y en otros casos, automáticamente creará y mantendrá índices para usted.

Diseñado para escalar: Cloud Firestore podrá escalar mejor que la base de datos en tiempo real. Es importante tener en cuenta que sus consultas se ajustan 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 cuán grande sea su conjunto de datos.

Recuperación manual de datos más fácil : al igual que la base de datos en tiempo real, puede configurar escuchas en Cloud Firestore para transmitir los cambios en tiempo real. Pero si no desea ese tipo de comportamiento, y solo desea una simple llamada "recuperar mis datos", Cloud Firestore también lo tiene, y está integrado como un caso de uso principal. (Son mucho mejores que las oncellamadas en Realtime Database-land)

Soporte para múltiples regiones : esto básicamente significa más confiabilidad, ya que sus datos se comparten en múltiples centros de datos a la vez. Pero aún tiene una fuerte consistencia, lo que significa que siempre puede hacer una consulta y estar seguro de que está obteniendo la última versión de sus datos.

Modelo de precios diferente : mientras que la base de datos en tiempo real cobra principalmente en función del almacenamiento o el ancho de banda de la red, Cloud Firestore cobra principalmente en función del número de operaciones que realiza. ¿Será esto mejor o peor? Depende de tu aplicación.

Para impulsar una aplicación de noticias, un juego multijugador por turnos o algo así como su propia versión de Stack Overflow, Cloud Firestore probablemente se verá bastante favorable desde el punto de vista de los precios. Para algo así como una aplicación de dibujo grupal en tiempo real donde envía múltiples actualizaciones por segundo a varias personas, probablemente sea más costoso que la Base de datos en tiempo real.

Por qué es posible que aún desee utilizar la base de datos en tiempo real : se debe a algunas razones. 1) Todo eso "probablemente será más barato para las aplicaciones que hacen muchas actualizaciones frecuentes" que mencioné anteriormente, 2) Ha existido durante mucho tiempo y ha sido probado en batalla por miles de aplicaciones, 3) Tiene una mejor latencia y cuando necesita algo con baja latencia confiable para una sensación en tiempo real, la base de datos en tiempo real podría funcionar mejor.

Para la mayoría de las aplicaciones nuevas, le recomendamos que consulte Cloud Firestore. Pero si tiene una aplicación que ya está en la base de datos en tiempo real, realmente no recomiendo cambiar solo por cambiar, a menos que tenga una razón convincente para hacerlo.

¡Espero que ayude!

Todd Kerpelman
fuente
2
Muchas gracias Todd! ¡Vi el anuncio publicado pero no este! Estoy totalmente enamorado de Firestore, lamentablemente ahora tendré que reescribir todo mi RxJava envuelto para este xD.
Francisco Durdin García el
1
¿Cómo encaja Google Cloud Datastore? Ingenuamente parece tener mucha superposición con Cloud Firestore. @ToddKerpelman
Jon G
2
Tiene mucho en común con Cloud Datastore. La mayor diferencia es la integración con Firebase, por lo que tiene acceso a los SDK móviles y web junto con un modo fuera de línea nativo, así como las funciones de sincronización en tiempo real. Cloud Datastore es ideal para el desarrollo del lado del servidor a gran escala en el que administra su propia conexión a su aplicación, como ejecutar su propio sitio web en App Engine o mediante Compute / Container Engine.
Todd Kerpelman
2
¿Qué significa realmente "fuerte consistencia"? El teorema de CAP establece que no puede "estar seguro de que está obteniendo la última versión de sus datos" en un entorno distribuido y disponible. Consistencia, disponibilidad, tolerancia de partición => selección 2.
AjahnCharles
1
@ToddKerpelman Cualquier posibilidad de que hagas una comparación de Cloud Firestore / Cloud Datastore. Los dos parecen terriblemente similares.
TheAddonDepot
63

Puede leer el artículo completo aquí: https://medium.com/@beingrahul/firebase-cloud-firestore-vs-firebase-realtime-database-931d4265d4b0

Firebase Realtime databaseeso se construye como un árbol JSON pero Cloud Firestorese almacena datos en documentos (que es un conjunto de pares clave-valor) y formatos de colección (que es una colección de documentos).

Más datos de estructura

La base de datos en tiempo real almacenó datos en el árbol JSON pero Cloud firestore almacenó datos en documentos que es muy similar a JSON. ingrese la descripción de la imagen aquí

En Cloud FireStore, los documentos pueden contener subcolecciones y objetos anidados (como 'teléfono' en la figura anterior), los cuales pueden incluir campos primitivos como cadenas (como 'nombre', 'correo electrónico' y etc. en la figura anterior) u objetos complejos como liza.

Mejor consulta

  • En la base de datos en tiempo real, solo podemos ordenar o filtrar una propiedad en una sola consulta, no tanto ordenar como filtrar en una propiedad, mientras que en Cloud FireStore, puede encadenar filtros y combinar el filtrado y la clasificación de una propiedad en una sola consulta.
  • Si desea obtener datos en orden descendente, Cloud fireStore es muy útil para usted, pero para la base de datos en tiempo real, no hay una función de consulta disponible. ingrese la descripción de la imagen aquí
  • También puede encadenar múltiples métodos "dónde" para crear consultas más específicas (AND lógico) en Cloud FireStore. ingrese la descripción de la imagen aquí

Escalabilidad

Cloud Firestore podrá escalar mejor que la base de datos en tiempo real. Es importante tener en cuenta que el rendimiento de su consulta es proporcional 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 cuán grande sea su conjunto de datos.

Recuperación manual de datos

Podemos escuchar datos en tiempo real en Cloud FireStore como la base de datos en tiempo real, pero en Cloud FireStore, también podemos buscar datos manualmente (si desea obtener datos solo una vez).

Seguridad

En la base de datos en tiempo real, necesitamos validar los datos por separado utilizando la regla de validación, pero en Cloud FireStore, la validación de datos se realiza automáticamente.

Escribiendo los datos

Podemos ejecutar varias operaciones como un solo lote y completarlos de forma atómica, con cualquier combinación de los set(), update()o delete()métodos. ingrese la descripción de la imagen aquí

Precios

En la base de datos en tiempo real, se cobra solo por el ancho de banda y el almacenamiento, pero a una tasa más alta. Mientras se encuentre en Cloud FireStore, se cobra principalmente por las operaciones realizadas en su base de datos (lectura, escritura, eliminación) y, a menor velocidad, ancho de banda y almacenamiento.

0xAliHn
fuente
12
Sería bueno vincular el artículo original: medium.com/@beingrahul/…
Salem Ouerdani
1
¿Puede explicar con mayor detalle lo que significa "validación de datos ocurre automáticamente"?
SoEzPz
12

Razones para elegir Cloud Firestore sobre Realtime Database

Es una versión mejorada

La base de datos de Firebase fue suficiente para aplicaciones básicas. Pero no era lo suficientemente potente como para manejar requisitos complejos. Es por eso que se presenta Cloud Firestore. Aquí hay algunos cambios importantes.

  • Se mejora la estructura básica del archivo.
  • Soporte fuera de línea para el cliente web.
  • Admite consultas más avanzadas.
  • Las operaciones de escritura y transacción son atómicas.
  • Mejoras de confiabilidad y rendimiento
  • El escalado será automático.
  • Estará más seguro.

Precios

En Cloud Firestore, las tarifas han bajado aunque cobra principalmente por las operaciones realizadas en su base de datos junto con el ancho de banda y el almacenamiento. También puede establecer un límite de gasto diario. Aquí están los detalles completos sobre la facturación.

Planes futuros de Google

Cuando descubrieron los defectos con la base de datos en tiempo real, crearon otro producto en lugar de mejorar el anterior. Aunque no hay detalles confiables que revelen su clasificación actual en la base de datos en tiempo real, es el momento de comenzar a pensar que es probable que sea abandonado.



Bertram Gilfoyle
fuente
2

Sugerir enlace de google también: Firebase Real-time Database vs FireStore

Extraído de Google Docs, un pequeño resumen aquí:

FireBase Real Time DB está basado en JSON NO SQL DB, destinado a aplicaciones móviles, regionales, y se usa típicamente para almacenar y sincronizar datos entre usuarios / dispositivos en tiempo real / latencia extremadamente baja.

FireStore es JSON 'like' NOSQL DB destinado a una alta concurrencia, global, persistencia de escalado automático fácil, diseñado para cualquier cliente (no solo aplicaciones móviles) con casos de uso típicos como seguimiento de activos, análisis en tiempo real, creación de catálogos de productos minoristas, usuario social perfil, tablas de clasificación de juegos, aplicaciones basadas en chat, etc.

TechFree
fuente