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 once
llamadas 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!