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 dos modos de bases 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.

Estas son algunas de las características nuevas de Firestore:

  • Una nueva capa de almacenamiento de 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 nuevas características 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:

  • Coherencia eventual: Las consultas de Datastore cuentan con 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.

Actualización automática al modo Datastore

Las bases de datos existentes de Datastore se actualizarán de manera automática a Firestore en modo Datastore. Los nuevos proyectos que requieren una base de datos de Datastore deberían usar Firestore en modo 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 en modo Datastore y en 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 Nueva capa de almacenamiento con coherencia sólida permanente Nueva capa de almacenamiento con coherencia sólida permanente.
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 la Web admiten la persistencia de datos sin conexión. No compatible
Bibliotecas cliente Bibliotecas cliente de Firestore:
  • Java
  • Python
  • PHP
  • Go
  • Rita
  • C#
  • Node.js
  • Android
  • iOS+
  • Web
  • C++
  • Unity
Bibliotecas cliente de Datastore:
  • Java
  • Python
  • PHP
  • Go
  • Rita
  • 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:

  • Estados Unidos (multirregión)
  • Europa (multirregión)
  • Oregón
  • Los Ángeles
  • Salt Lake City
  • Las Vegas
  • Montreal
  • Los Ángeles
  • Carolina del Sur
  • Virginia del Norte
  • São Paulo
  • Londres
  • Fráncfort
  • Varsovia
  • Zúrich
  • Bombay
  • Singapur
  • Yakarta
  • Hong Kong
  • Taiwán
  • Tokio
  • Osaka
  • Seúl
  • Sídney
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 estas 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

Crea una base de datos nueva

Puedes crear una base de datos de Firestore nueva 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 a 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

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/(default)?updateMask=type"

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

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/(default)?updateMask=type"