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 |
|
|
Compatibilidad con la API Datastore v1 | No, las solicitudes se rechazan | Sí |
Compatibilidad con la API Firestore v1 | Sí | No, las solicitudes se rechazan |
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:
|
Bibliotecas de cliente de Datastore:
|
Seguridad |
|
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