Descripción general del modo nativo de Firestore

El modo nativo de Firestore consta de dos conjuntos de operaciones: las operaciones de Core y las de Pipeline.

Las operaciones de Core de Firestore proporcionan la funcionalidad estándar de creación, lectura, actualización y eliminación (CRUD) de documentos, además de compatibilidad integrada con consultas de escucha en tiempo real y persistencia sin conexión. Una diferencia operativa distintiva en esta edición es que los índices son opcionales y no se crean automáticamente para los campos únicos. Si bien esto permite que las consultas se ejecuten sin una configuración inicial del índice, las consultas sin indexar se analizarán de forma predeterminada en toda la colección. Esto puede aumentar la latencia y los costos a medida que crece el conjunto de datos.

Las operaciones de Pipeline de Firestore son una función central de la edición Enterprise de Firestore, que se basa en un nuevo motor de consultas para expandir significativamente el rango de consultas posibles. Las operaciones de Pipeline de Firestore emplean una sintaxis de consulta flexible y un método de indexación distinto en el que los índices son opcionales y no se crean automáticamente, lo que permite operaciones avanzadas de recuperación de datos para las aplicaciones.

Funciones de las operaciones de Core de Firestore

Las operaciones de Core permiten operaciones de CRUD estándar y consultas de escucha en tiempo real. Sin embargo, cuando se usan estas operaciones en la edición Enterprise, el comportamiento subyacente con respecto a la indexación y la facturación cambia significativamente en comparación con la edición Standard.

Funcionalidad y continuidad

Las operaciones de Core conservan la sintaxis familiar de encadenamiento de métodos (por ejemplo, .where() y .orderBy()) que se usa en la edición Standard. Estas operaciones admiten consultas de escucha en tiempo real y persistencia sin conexión para clientes web y móviles. Se recomienda usar estas operaciones para cargas de trabajo transaccionales estándar, búsquedas simples y migración de código de aplicación existente.

Indexación personalizada

A diferencia de la edición Standard, la operación Core en la edición Enterprise no crea automáticamente índices de un solo campo. Los índices son opcionales y no se requieren para ejecutar una consulta. Si falta un índice específico, la consulta analiza la colección completa. Si bien las consultas sin indexar aceleran el prototipado, es posible que se ejecuten más lento y cuesten más a medida que crezca el conjunto de datos. Los desarrolladores deben crear índices de forma manual para optimizar el rendimiento de las consultas y reducir el consumo de unidades de lectura.

Modelo de facturación (basado en unidades)

Las unidades de lectura se cobran en tramos de 4 KB en lugar de por cantidad de documentos. Una consulta sin indexar que analiza una colección grande consumirá unidades de lectura según la cantidad total de bytes analizados en todos los documentos. Las unidades de escritura se cobran en tramos de 1 KB. La escritura de un documento consume unidades para los datos y unidades adicionales para cada entrada de índice actualizada. A diferencia de la edición Standard, que aplica la indexación automática de un solo campo, ahora puedes elegir campos específicos para indexar y optimizar los costos de escritura y el rendimiento.

Funciones de las operaciones de Pipeline de Firestore

La edición Enterprise de Firestore con operaciones de Pipeline utiliza un motor de consultas avanzado que quita muchas de las limitaciones existentes de la edición Standard de Firestore. Las operaciones de Pipeline de Firestore proporcionan cientos de funciones de consulta adicionales. Las operaciones de Pipeline de Firestore tienen las siguientes capacidades:

Sintaxis de elementos componibles basados en etapas

Las consultas de Pipeline se construyen definiendo una serie de etapas secuenciales que se ejecutan en orden. Esto permite realizar operaciones complejas, como filtrar el resultado de una agregación, lo que antes no era posible.

En el siguiente ejemplo, se muestra una consulta de canalización que busca la cantidad de IDs de productos únicos que se vieron en el último mes:

guard let cutoffDate = Calendar.current.date(byAdding: .month, value: -1, to: Date()) else {
  return
}
let snapshot = try await db.pipeline()
  .collection("productViews")
  .where(Field("viewedAt").greaterThan(cutoffDate.timeIntervalSince1970))
  .aggregate([Field("productId").countDistinct().as("uniqueProductViews")])
  .execute()

Capacidades ampliadas

La consulta de canalizaciones introduce una gran cantidad de funciones nuevas, incluidas las siguientes:

  • Agregaciones: Compatibilidad con nuevas funciones de agregación (como sum(...), min(...) y count_distinct(...)) combinadas con campos de agrupación arbitrarios.
  • Filtrado complejo: Compatibilidad con cientos de funciones adicionales para expresar instrucciones where(...) arbitrariamente complejas, incluidas regex_match(...), add(...) y str_contains(...), todo sin requisitos de indexación estrictos.
  • Lecturas parciales o proyecciones: Recupera subconjuntos dinámicos de documentos con select(...), remove_fields(...) y muchas otras etapas de manipulación de documentos.

Para obtener más información sobre estas capacidades, consulta Consulta datos con operaciones de Pipeline.

Compatibilidad sin conexión y en tiempo real

Para aprovechar las funciones en tiempo real y sin conexión, los desarrolladores pueden usar las operaciones de Core de Firestore en la edición Enterprise de Firestore.

Integración de clientes y herramientas

La edición Enterprise incluye funciones especializadas para interactuar con las consultas de Pipeline y administrarlas:

  • Explicación y generación de perfiles de consultas: Puedes usar los resultados de Query Explain para comprender cuántas unidades de lectura o escritura consume una consulta y analizar su ejecución.
  • Estadísticas de consultas: La edición Enterprise admite las Estadísticas de consultas, que te ayudan a determinar dónde se podrían crear índices para mejorar el rendimiento y el costo brindándote visibilidad de las principales consultas que se ejecutan en tu base de datos y sus características de rendimiento.
  • Nuevos tipos de índices: Puedes crear índices especializados para la edición Enterprise, incluidos tipos de índices como dispersos, no dispersos y únicos. También admite la creación y edición de índices de búsqueda de vectores para bases de datos de Enterprise.

Diferencias entre Firestore Standard y Firestore Enterprise

La principal diferencia operativa entre las operaciones de Core y Pipeline radica en la administración de la indexación, que afecta directamente el rendimiento y el costo.

Firestore Standard: Operaciones de Core Firestore Enterprise: Operaciones de Core y de Pipeline
Requisito de indexación Los índices son obligatorios para las consultas.

Los índices para campos individuales se crean automáticamente, mientras que las consultas más complejas dependen de índices compuestos o índices de grupos de colecciones que se deben configurar manualmente.

Los índices no son obligatorios y, por lo tanto, son opcionales para las consultas.

Defines los índices según sea necesario. La edición Enterprise también admite una mayor variedad de tipos de índices, incluidos los índices dispersos y no dispersos, y los índices únicos.

Rendimiento Consultas indexadas: El rendimiento y el costo se ajustan según el tamaño del conjunto de resultados.

Consultas sin indexar: El rendimiento y el costo se ajustan según el tamaño de tu conjunto de datos.

Consultas indexadas: El rendimiento y el costo se ajustan según el tamaño del conjunto de resultados.

Te recomendamos que uses las herramientas Explicación de la consulta y Estadísticas de consultas para crear índices y mejorar el rendimiento y el costo de tus consultas.

Implicación del costo de almacenamiento Los índices automáticos y los índices compuestos generan una sobrecarga de almacenamiento. Ahorras en costos de almacenamiento porque los índices no se crean automáticamente para cada campo.
Base de costo Se cobra por cada operación de lectura, escritura y eliminación de documentos. Se cobra por unidad de lectura (tramos de 4 KB) y unidad de escritura (tramos de 1 KB). La escritura de entradas de índice consume unidades de escritura.

Obtén más información sobre los precios nuevos con algunos ejemplos.

Reglas de seguridad Las reglas de seguridad protegen las colecciones verificando los permisos de lectura y escritura. Las reglas de seguridad protegen las colecciones verificando los permisos de lectura y escritura. Obtén información para modelar tus datos y admitir consultas de canalizaciones en la guía del Modelo de datos.