Escoger el modo nativo o el de Datastore

Cuando creas una base de datos de Firestore, debes elegir entre dos modos: el nativo o el de Datastore. En esta página se explica la diferencia entre los dos modos.

Elegir un modo de base de datos

Cuando creas una base de datos de Firestore, debes seleccionar un modo de base de datos. Puedes tener bases de datos en modo nativo y en modo Datastore en el mismo proyecto, pero cada base de datos será de un solo tipo.

Te recomendamos lo siguiente a la hora de elegir un modo de base de datos:

  • Usa Firestore en modo nativo en todas las aplicaciones nuevas (de servidor, móviles y web).

    Firestore en modo nativo usa un modelo de datos basado en documentos que se ajusta a los estándares del sector. Además de una base de datos coherente y escalable, Firestore en modo nativo proporciona sincronización de datos en tiempo real y funciones de backend como servicio.

  • Usa Firestore en modo Datastore si tu aplicación depende de la API de Datastore.

    El modo Datastore es totalmente compatible y se recomienda para las aplicaciones que dependen de la API de Datastore. El modo nativo y el modo de Datastore comparten una capa de almacenamiento subyacente con las mismas funciones de disponibilidad, coherencia y escalado.

Firestore en modo nativo

Firestore es la próxima versión principal de Datastore y un cambio de marca del producto. Firestore combina lo mejor de Datastore y de Firebase Realtime Database. Es una base de datos de documentos NoSQL creada para el escalado automático, el alto rendimiento y la facilidad de desarrollo de aplicaciones.

Firestore presenta las siguientes funciones:

  • Una capa de almacenamiento de coherencia fuerte
  • Un modelo de datos de colección y documento
  • Actualizaciones en tiempo real
  • Bibliotecas de cliente web y para móviles

Firestore es compatible con Datastore, pero no lo son el nuevo modelo de datos, las actualizaciones en tiempo real y las funciones de la biblioteca de cliente web y para móviles. Para acceder a todas las funciones de Firestore, debes usar Firestore en modo nativo.

Firestore en modo Datastore

Firestore en el modo de Datastore usa el comportamiento del sistema de Datastore, pero accede a la capa de almacenamiento de Firestore, lo que elimina las siguientes limitaciones de Datastore:

  • Todas las consultas de Datastore ahora son fuertemente coherentes, a menos que solicite explícitamente la coherencia final.
  • Ya no es necesario que las consultas de las transacciones sean consultas de ancestros.
  • Las transacciones ya no están limitadas a 25 grupos de entidades.
  • Las escrituras en un grupo de entidades ya no están limitadas a una por segundo.

El modo Datastore inhabilita las funciones de Firestore que no son compatibles con Datastore:

  • El proyecto aceptará las solicitudes de la API de Datastore y rechazará las de la API de Firestore.
  • El proyecto usará índices de Datastore en lugar de índices de Firestore.
  • Puedes usar bibliotecas de cliente de Datastore con este proyecto, pero no bibliotecas de cliente de Firestore.
  • Las funciones en tiempo real de Firestore no estarán disponibles.
  • En la consola de Google Cloud , la base de datos usará el visualizador de Datastore.

Precios y ubicaciones

Las bases de datos en modo nativo y en modo Datastore usan la misma estructura de precios y están disponibles en las mismas ubicaciones. Los precios y las ubicaciones se describen con detalle en las siguientes páginas:

Firestore en modo nativo

Firestore en modo Datastore

Comparación de funciones

En la siguiente tabla se compara el comportamiento del sistema de los modos de base de datos:

Firestore en
modo nativo
Firestore en modo Datastore
Modelo de datos Base de datos de documentos organizada en documentos y colecciones. Entidades organizadas en tipos y grupos de entidades.
Capa de almacenamiento Una capa de almacenamiento de coherencia inmediata. Una capa de almacenamiento de coherencia inmediata.
Consultas y transacciones
  • Consultas con coherencia inmediata en toda la base de datos
  • Elimina las limitaciones de coherencia anteriores de Datastore
  • Consultas con coherencia inmediata en toda la base de datos
  • Las transacciones pueden acceder a cualquier número de grupos de entidades
Compatibilidad con la API Datastore v1 No, las solicitudes se rechazan
Compatibilidad con la API Firestore v1 No, las solicitudes se rechazan
Actualizaciones en tiempo real

Permite escuchar un documento o un conjunto de documentos para recibir actualizaciones en tiempo real.

Mientras escuchas un documento o un conjunto de documentos, se notifica a tus clientes cualquier cambio en los datos y se les envía el conjunto de datos más reciente.

No se admite
Persistencia de datos offline Las bibliotecas de cliente web y móvil admiten la persistencia de datos sin conexión. No se admite
Bibliotecas de cliente Bibliotecas de cliente de Firestore:
  • Java
  • Python
  • PHP
  • Go
  • Ruby
  • C#
  • Node.js
  • Android
  • iOS+
  • Web
  • C++
  • Unity
Bibliotecas de cliente de Datastore:
  • Java
  • Python
  • PHP
  • Go
  • Ruby
  • C#
  • Node.js
  • C++
Seguridad
  • Gestión de Identidades y Accesos (IAM) gestiona el acceso a la base de datos
  • Las reglas de seguridad de Firestore admiten la autenticación y la autorización sin servidor para las bibliotecas de cliente web y para móviles
IAM gestiona el acceso a la base de datos
Rendimiento Se escala automáticamente a millones de clientes simultáneos. Se escala automáticamente a millones de escrituras por segundo.
Acuerdo de nivel de servicio Acuerdo de Nivel de Servicio de Firestore Acuerdo de Nivel de Servicio de Firestore
Ubicaciones

Ambos modos admiten las mismas ubicaciones. Para ver una lista detallada de las ubicaciones, consulta las siguientes páginas:

Precios

Ambos modos usan la misma estructura de precios para las operaciones de entidades y documentos.

Firestore en el modo de Datastore no cobra por las operaciones menores.

Ambos modos usan la misma estructura de precios para los datos almacenados y el ancho de banda de la red.

Para obtener más información sobre los precios, consulta las siguientes páginas:

Consola Consola de Firebase y Google Cloud visualizador de Firestore de la consola Google Cloud Lector de Datastore de la consola
Espacios de nombres No se admite Espacios de nombres admitidos
Integración de la biblioteca de cliente de App Engine

No se admite en los entornos de ejecución Python 2.7 y PHP 5.5 del entorno estándar de App Engine

Se admite en el entorno estándar de App Engine y en todos los demás entornos de ejecución.

Se admite en el entorno flexible de App Engine. Todos los entornos de ejecución

Compatible con todos los entornos de ejecución

Crear una base de datos

Puedes crear una base de datos de Firestore en modo nativo o en modo Datastore. Esta opción no depende de los modos de las bases de datos que ya haya en tu proyecto.

Consulta más información en Crear y gestionar bases de datos.

Cambiar entre el modo nativo y el de Datastore

Si tu base de datos está vacía, puedes cambiar entre el modo nativo y el de Datastore.

Cambia la base de datos al modo nativo:

gcloud

Usa el comando gcloud firestore databases update para cambiar tu base de datos al modo nativo.

gcloud firestore databases update --type=firestore-native --database='DATABASE_ID'

Sustituye DATABASE_ID por el ID de tu base de datos.

rest

curl --request PATCH \
--header "Authorization: Bearer "$(gcloud auth print-access-token) \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"type":"FIRESTORE_NATIVE"}' \
"https://firestore.googleapis.com/v1/projects/PROJECT_ID/databases/DATABASE_ID?updateMask=type"

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto
  • DATABASE_ID: el ID de la base de datos

Cambia la base de datos al modo de Datastore:

gcloud

Usa el comando gcloud firestore databases update para cambiar tu base de datos al modo Datastore.

 gcloud firestore databases update --type=datastore-mode --database='DATABASE_ID'

Sustituye DATABASE_ID por el ID de tu base de datos.

rest

curl --request PATCH \
--header "Authorization: Bearer "$(gcloud auth print-access-token) \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"type":"DATASTORE_MODE"}' \
"https://firestore.googleapis.com/v1/projects/PROJECT_ID/databases/DATABASE_ID?updateMask=type"

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto
  • DATABASE_ID: el ID de la base de datos