Firestore vs Realtime Database: por qué migrar

Clase 14 de 32Curso de Firebase 5 para Web

Resumen

Firestore concentra lo esencial para construir apps con datos persistentes de forma rápida y segura. Ofrece modelo NoSQL basado en documentos, consultas compuestas, operaciones por lotes y sincronización offline en móvil y web, con baja latencia gracias a su infraestructura en Google Cloud. Frente a Realtime Database, resuelve limitaciones del SDK/API en batch y consultas complejas, y mejora la expresividad al consultar y escribir datos.

¿Qué es Firestore y por qué elegirlo?

Firestore es una base de datos NoSQL que no usa tablas ni filas. La información se organiza en colecciones y documentos, con campos en formato similar a JSON, pero con tipos de datos adicionales. Es flexible: cada documento puede tener atributos distintos sin esquemas rígidos.

  • Escalabilidad y baja latencia: datos replicados en regiones para responder más cerca del usuario.
  • Soporte multiplataforma: Android, iOS, web y back end con Node.js, Go, Python y otros frameworks.
  • Modo offline: persistencia local y sincronización automática al recuperar conexión, también en web guardando en el caché del browser.
  • Integración: interoperabilidad con servicios de Firebase y Google Cloud.
  • Operaciones por lotes: múltiples insert, update y delete en una sola unidad de trabajo.
  • Consultas expresivas: filtros y combinaciones que antes eran difíciles en Realtime Database.

¿Cómo mejora el performance e integridad de datos?

El diseño y las herramientas de Firestore priorizan rendimiento e integridad.

  • Menor latencia por distribución regional de datos.
  • Batch para reducir viajes de red y agrupar operaciones.
  • Transacciones con rollback si una operación falla: consistencia sin datos a medio escribir.
  • SDKs modernos con consultas compuestas y lectura/escritura más claras.

¿Cómo se estructura la información en Firestore?

La unidad principal es la colección, que contiene documentos. Cada documento almacena campos en pares llave–valor. Un documento puede tener subcolecciones para relacionar datos. Por ejemplo: una colección de preguntas puede tener, por cada pregunta, una subcolección de respuestas. Se puede anidar hasta cien niveles, aunque no es recomendable abusar.

  • Recomendación práctica: evita anidamientos profundos. Mejor mantener todo al primer nivel o como máximo 4–5 niveles cuando sea inevitable.
  • Diseño más claro que un árbol JSON plano: colecciones y documentos facilitan modelar el dominio.
  • Campos heterogéneos: no todos los documentos requieren los mismos atributos.

¿Qué tipos de datos admite un documento?

Firestore soporta más que JSON, lo que enriquece el modelado.

  • Arreglo.
  • Boolean.
  • Bytes.
  • Timestamp (fecha y tiempo).
  • Números flotantes e enteros.
  • Puntos geográficos.
  • Map para objetos embebidos, incluso anidados.
  • Null.
  • Referencia a otro documento o colección.
  • Campos de stream.

¿Cómo organizar colecciones y subcolecciones?

Un diseño claro facilita consultas eficientes y mantenimiento sencillo.

  • Colecciones como contenedores de documentos relacionados.
  • Documentos con llaves y valores bien definidos.
  • Subcolecciones para relaciones directas: por ejemplo, respuestas dentro de una pregunta.
  • Preferir colecciones de primer nivel cuando el vínculo no requiera anidamiento fuerte.

¿Te gustaría ver ejemplos de modelado o resolver un caso específico de tu app con colecciones y subcolecciones? Cuéntame en comentarios qué entidad estás diseñando y qué consultas necesitas hacer.