Elegir entre el modo nativo y el modo Datastore

Cuando creas una base de datos de Firestore nueva, puedes configurar la instancia de base de datos para que se ejecute en modo Datastore, que hace que la base de datos sea retrocompatible con Datastore. En esta página, encontrarás ayuda para comprender la diferencia entre los siguientes modos de base de datos de Firestore: modo nativo y modo Datastore.

Firestore en modo nativo

Firestore es la próxima versión importante de Datastore y el desarrollo de la marca del producto. Firestore es una base de datos NoSQL de documentos que toma lo mejor de Datastore y Firebase Realtime Database, para brindar ajuste de escala automático y alto rendimiento, y facilitar el desarrollo de las aplicaciones.

Firestore incluye las siguientes funciones:

  • Una capa de almacenamiento con coherencia sólida
  • Un modelo de datos de colección y documento
  • Actualizaciones en tiempo real
  • Bibliotecas cliente para dispositivos móviles y la Web

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

Firestore en modo Datastore

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

  • Todas las consultas de Datastore ahora tienen coherencia sólida, a menos que solicites de forma explícita la coherencia eventual.
  • Las consultas en las transacciones ya no deben ser consultas principales.
  • Las transacciones ya no están limitadas a 25 grupos de entidades.
  • Las operaciones de escritura en un grupo de entidad ya no están limitadas a 1 por segundo.

El modo Datastore inhabilita las características de Firestore que no son compatibles con Datastore:

  • El proyecto aceptará las solicitudes a la API de Datastore y rechazará las solicitudes a la API de Firestore.
  • El proyecto usará los índices de Datastore en lugar de los índices de Firestore.
  • Puedes usar las bibliotecas cliente de Datastore con este proyecto, pero no las de Firestore.
  • Las capacidades 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 modo Datastore utilizan la misma estructura de precios y están disponibles en las mismas ubicaciones. Los precios y las ubicaciones se describen en detalle en las siguientes páginas:

Firestore en modo nativo

Firestore en modo Datastore

Elige un modo de base de datos

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

  • Usa Firestore en modo Datastore para proyectos nuevos de servidor.

    Firestore en modo Datastore te permite usar las arquitecturas de servidor establecidas de Datastore sin las limitaciones fundamentales de Datastore. El modo Datastore puede escalar automáticamente a millones de escrituras por segundo.

  • Usa Firestore en modo nativo para aplicaciones web y móviles nuevas.

    Firestore ofrece bibliotecas cliente para dispositivos móviles y la Web con características en tiempo real y sin conexión. El modo nativo puede escalar de forma automática a millones de clientes simultáneos.

Comparación de funciones

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

Firestore en
modo nativo
Firestore en
modo Datastore
Modelo de datos Base de datos de documentos organizadas en documentos y colecciones Entidades organizadas en categorías y grupos de entidad
Capa de almacenamiento Una capa de almacenamiento con coherencia sólida Una capa de almacenamiento con coherencia sólida
Consultas y transacciones
  • Consultas con coherencia sólida en toda la base de datos
  • Quita las limitaciones de coherencia anteriores de Datastore.
  • Consultas con coherencia sólida en toda la base de datos
  • Las transacciones pueden acceder a cualquier cantidad de grupos de entidad
Compatibilidad con la API de Datastore v1 No, se rechazan las solicitudes
Compatibilidad con la API de Firestore v1 No, se rechazan las solicitudes.
Actualizaciones en tiempo real

Compatible con la capacidad de detectar actualizaciones en tiempo real para un documento o conjunto de documentos

Mientras detecta un documento o conjunto de documentos, a tus clientes se les notifica sobre cualquier cambio en los datos y se les envía el nuevo conjunto de datos.

No compatible
Persistencia de datos sin conexión Las bibliotecas cliente para dispositivos móviles y web son compatibles con la persistencia de datos sin conexión. No compatible
Bibliotecas cliente Bibliotecas cliente de Firestore:
  • Java
  • Python
  • PHP
  • Go
  • Ruby
  • C#
  • Node.js
  • Android
  • iOS+
  • Web
  • C++
  • Unity
Bibliotecas cliente de Datastore:
  • Java
  • Python
  • PHP
  • Go
  • Ruby
  • C#
  • Node.js
  • C++
Seguridad
  • La administración de identidades y accesos (IAM) administra el acceso a la base de datos
  • Las reglas de seguridad de Firestore admiten la autenticación sin servidores y la autorización para las bibliotecas cliente para dispositivos móviles y la Web.
IAM administra el acceso a la base de datos
Rendimiento Escala automáticamente a millones de clientes simultáneos. Escala automáticamente a millones de escrituras por segundo.
ANS ANS de Firestore ANS de Firestore
Ubicaciones

Ambos modos admiten las mismas ubicaciones. Para obtener 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 modo Datastore no cobra por operaciones pequeñas.

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

Para obtener más detalles sobre los precios, consulta las siguientes páginas:

Consola Visualizador de Firestore de Firebase console y Google Cloud Console Visualizador de Datastore de la consola de Google Cloud
Espacios de nombres No compatible Compatible con espacios de nombres
Integración con la biblioteca cliente de App Engine

No compatible con los entornos de ejecución de Python 2.7 y PHP 5.5 del entorno estándar de App Engine

Compatible con todos los demás entornos de ejecución del entorno estándar de App Engine

Compatible con todos los entornos de ejecución del entorno flexible de App Engine

Compatible con todos los entornos de ejecución

Crear una base de datos nueva

Puedes crear una nueva base de datos de Firestore en modo nativo o en modo Datastore. Esta elección no depende de los modos de las bases de datos existentes en tu proyecto.

Consulta Crea y administra bases de datos para obtener más información.

Cambia entre el modo nativo y el modo Datastore

Si tu base de datos está vacía, puedes cambiar entre el modo nativo y el modo 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'

Reemplaza 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"

Reemplaza lo siguiente:

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

Cambia la base de datos al modo 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'

Reemplaza 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"

Reemplaza lo siguiente:

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