Actualización automática a Firestore

En esta página, se describe la ruta de actualización de la versión heredada de Cloud Datastore a Firestore en modo Datastore

Firestore puede operar en modo Datastore, por lo que es retrocompatible con Cloud Datastore heredado. Con Firestore en modo Datastore, puedes acceder a una capa de almacenamiento mejorada de Firestore mientras conservas el comportamiento del sistema de Datastore. Firestore en modo Datastore quita las siguientes limitaciones heredadas de Cloud Datastore:

  • Las consultas ya no tienen coherencia eventual. En cambio, tienen coherencia sólida, a menos que solicites coherencia eventual de forma explícita.
  • Ya no es necesario que las consultas de las transacciones sean consultas principales1.
  • Las transacciones ya no están limitadas a 25 grupos de entidades1.
  • Las operaciones de escritura en un grupo de entidades ya no están limitadas a 1 por segundo1.

Para obtener más información sobre el modo Datastore, consulta Firestore en modo Datastore.

A partir de junio de 2021, las migraciones de la versión heredada de Cloud Datastore a Firestore en modo Datastore empezaste. Las migraciones comienzan a partir de bases de datos de tráfico muy bajo y se expandirán a bases de datos de tráfico más alto en los próximos meses.

1 Bases de datos que migran al modelo optimista El modo de simultaneidad de los grupos de entidades aún está sujeto al grupo de 25 grupos de entidades de transacciones, así como el límite de 1 escritura por segundo en Firestore en modo Datastore. Es necesario que las consultas en transacciones sean consultas principales. Observa el optimismo Con el modo de simultaneidad de grupos de entidades sección para obtener más información.

Actualización automática a Firestore en modo Datastore

Si administras una aplicación que usa la versión heredada de Cloud Datastore, no necesitarás actualizar el código de la aplicación. Te notificaremos sobre el programa de la actualización de tu aplicación a Firestore en modo Datastore. La actualización no requiere tiempo de inactividad.

Si tienes preguntas adicionales sobre el proceso de actualización automática, comunícate con uno de nuestros canales de asistencia.

Visualiza el tipo de base de datos

Puedes usar la gcloud alpha firestore databases describe para ver tu tipo de base de datos. Busca la presencia del campo type en el resultado:

  • type: DATASTORE_MODE

    El tipo de base de datos es Firestore en modo Datastore. No requieran una actualización o ya la hayan completado.

  • type no aparece en el resultado

    El tipo de base de datos es Cloud Datastore heredado. El base de datos se actualizará a Firestore en modo Datastore.

  • type: FIRESTORE_NATIVE

    El tipo de base de datos es Firestore en modo nativo.

Etapas de actualización

En términos generales, seguimos este proceso para actualizar tu base de datos heredada de Cloud Datastore en Firestore en modo Datastore. Este proceso no requiere tiempo de inactividad de la aplicación:

  1. Agrega una nueva réplica de datos de Firestore en modo Datastore a la red existente una base de datos heredada de Cloud Datastore. Duplica de forma asíncrona las operaciones de escritura de entidades en Firestore en modo Datastore.

  2. Copia los datos existentes y las entradas de índice de la versión heredada de Cloud Datastore a Firestore en modo Datastore. Después de copiarlos, verifica los datos.

  3. Redirecciona las lecturas de entidades directamente a Firestore en modo Datastore. Primero redirecciona las lecturas de coherencia eventual y, luego, redirecciona las lecturas de coherencia sólida.

  4. Redirecciona las operaciones de escritura y las lecturas transaccionales de la entidad directamente en Firestore en modo Datastore

Este proceso usa las siguientes etapas.

1. Aplica operaciones de escritura de forma síncrona

Durante esta etapa, las operaciones de escritura se aplican de forma síncrona a Cloud Datastore heredado: no informará el éxito hasta que todos los cambios en las entidades y los índices se hayan aplicado al menos una réplica. Esto simula el comportamiento de Firestore en modo Datastore, que también Aplica operaciones de escritura de forma síncrona (y difiere del comportamiento predeterminado de la versión heredada de Cloud Datastore). en la que las escrituras se aplican de forma asíncrona después de confirmarse).

Esta etapa tiene como objetivo detectar cualquier impacto de latencia de las aplicaciones síncronas en Firestore en modo Datastore antes de la actualización. La aplicación síncrona de escrituras continuará durante y después de la migración.

Las bases de datos con muy poca actividad omitirán esta etapa. Para determinar si esta etapa se incluyó en la actualización de tu base de datos; inspecciona los [registros] para la etapa APPLY_WRITES_SYNCHRONOUSLY.

2. Copia y verifica

Esta etapa representa el inicio de la migración. Presentación de una réplica de Firestore en modo Datastore y realiza los siguientes pasos:

  1. Diario

    Las operaciones de escritura de entidades en Cloud Datastore heredado también comienzan a fluir a través de un a la réplica de Firestore en modo Datastore. Esto sucede como parte en un sistema de replicación existente de Cloud Datastore heredado. Estas operaciones de escritura no afectan la latencia de escritura. La réplica de Firestore en modo Datastore almacena en búfer estas operaciones de escritura para aplicarlas después del paso de copia.

  2. Copiar

    En la réplica de Firestore en modo Datastore, crea una copia sin conexión de los datos existentes y las entradas de índice. El paso de copiar no afecta operaciones heredadas de Cloud Datastore. Este paso puede durar varios días.

  3. Desvía el diario

    Aplica las escrituras del paso del diario sobre los datos desde la copia sin conexión.

  4. Verifica datos

    Vuelve a verificar los datos en Firestore en modo Datastore comparando con los datos en la versión heredada de Cloud Datastore.

3. Redirecciona lecturas de coherencia eventual

Entregar lecturas de coherencia eventual (consultas sin filtro de entidad principal) de Firestore en modo Datastore Semántica heredada de Cloud Datastore para operaciones de lectura seguirán aplicando en este punto:

  • Las consultas principales tienen coherencia sólida.
  • Las consultas no principales son de coherencia eventual.
  • Las búsquedas son de coherencia sólida (excepto las configuradas de manera explícita para coherencia eventual).

Firestore en modo Datastore continúa actuando como réplica de tus datos heredados de Cloud Datastore.

4. Redirecciona las lecturas de coherencia sólida

Entrega lecturas con coherencia sólida (no transaccionales) de Firestore en modo Datastore. Ten en cuenta que aún se aplica la semántica heredada de Cloud Datastore para las lecturas. Aunque ahora las lecturas provienen directamente de Firestore, Firestore aún depende de Cloud Datastore heredado para garantizar que esté actualizado para o lectura con coherencia sólida.

5. Redirecciona escrituras

Redirecciona las escrituras de entidades y las lecturas transaccionales a Firestore en modo Datastore. Las modificaciones simultáneas en la misma entidad continúan generando anulaciones de transacciones. Las modificaciones simultáneas a diferentes entidades dentro del mismo grupo de entidades ya no dan como resultado la anulación de las transacciones.

Al comienzo de esta etapa, Firestore en modo Datastore aún depende de para garantizar que esté actualizado antes de cada escritura. Después de un pase final que garantiza que todas las escrituras anteriores se en la aplicación, Firestore en modo Datastore deja de consultar en Cloud Datastore heredado.

6. Migración completa

Ahora se aplican las semánticas de Firestore en modo Datastore para las lecturas: todas las consultas tienen coherencia sólida.

Los precios serán los mismos, pero tu facturación ahora incluye los SKU de Firestore. La página Cuotas de App Engine comienza a mostrar el uso de Firestore. en lugar del uso heredado de Cloud Datastore.

Transacciones

Firestore en modo Datastore admite tres modos de simultaneidad:

  • Optimista

    La mayoría de las bases de datos heredadas de Cloud Datastore usarán simultaneidad optimista para transacciones en Firestore en modo Datastore. La simultaneidad optimista conserva los comportamientos existentes de las transacciones en la versión heredada de Cloud Datastore.

  • Optimista con grupos de entidad

    Bases de datos que dependen de un grupo de entidad la semántica transaccional migrará a este modo de simultaneidad. Consulta la Optimista con el modo de simultaneidad de grupos de entidades sección para obtener más información.

  • Pesimista

    Se migraron algunas bases de datos previamente migradas con muy poca actividad. Con bloqueos pesimistas para transacciones en Firestore en modo Datastore.

Se puede acceder al modo de simultaneidad a través de Firestore projects.databases Recurso de REST:

curl -X GET -H "Authorization: Bearer "$(gcloud auth print-access-token) \
"https://firestore.googleapis.com/v1/projects/PROJECT_ID/databases"

El modo de simultaneidad también se puede encontrar inspeccionando los registros de la etapa PREPARE.

Optimista con el modo de simultaneidad de grupos de entidades

Para quitar las limitaciones de capacidad de procesamiento de consultas, transacciones y escritura de los grupos de entidades, cambia el modo de simultaneidad de tu proyecto a Optimista. Para asegurarte de que este cambio sea compatible con tu proyecto, sigue estos pasos:

  1. Crear un proyecto de prueba en Firestore en modo Datastore

  2. Cambia la simultaneidad del proyecto de prueba en OPTIMISTIC. Emitir un PATCH HTTP una solicitud, tal como se muestra a continuación.

  3. Ejecuta pruebas en el proyecto para asegurarte de que la carga de trabajo funciona como se espera sin grupos de entidad.

  4. Cambia el modo de simultaneidad de tu proyecto principal de De OPTIMISTIC_WITH_ENTITY_GROUPS a OPTIMISTIC.

Solicitud HTTP PATCH para cambiar el modo de simultaneidad de la base de datos:

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

Notificaciones de registro y progreso

El proceso de actualización usa Cloud Logging para publicar actualizaciones de progreso. Para ver los registros, usa el Explorador de registros la API de Cloud Logging Google Cloud CLI.

Las actualizaciones se publican en Dos registros con el nombre del servicio de registro datastore.googleapis.com:

Nombre del registro Recurso supervisado Carga útil
migration_state datastore_database type.googleapis.com/google.datastore.admin.v1.MigrationStateEvent
migration_progress datastore_database type.googleapis.com/google.datastore.admin.v1.MigrationProgressEvent

El registro de migration_state se actualiza cuando cambia el estado general de la actualización (RUNNING y COMPLETE).

El registro migration_progress se actualiza cada vez que la actualización se mueve a una etapa nueva (PREPARE, START, APPLY_WRITES_SYNCHRONOUSLY, COPY_AND_VERIFY, REDIRECT_EVENTUALLY_CONSISTENT_READS, REDIRECT_STRONGLY_CONSISTENT_READS y REDIRECT_WRITES).

Para recibir notificaciones a medida que se completa la actualización, puedes hacer lo siguiente: crear métricas basadas en registros basadas en los dos registros y crear alertas en función de esas métricas.

Banner de migración en la consola de Google Cloud

Mientras tu base de datos heredada de Cloud Datastore se encuentra en proceso de migración, una aparecerá un banner informativo en la página de Datastore Studio la consola de Google Cloud. En este banner, se incluye un vínculo para abrir Cloud Logging y filtrar las actualizaciones de la migración.

  1. En la consola de Google Cloud, ve a la página Bases de datos.

    Ir a Bases de datos

  2. Selecciona la base de datos requerida de la lista.

  3. En el menú de navegación, haz clic en Datastore Studio.

Visualiza el estado actual en una CLI

Para ver con rapidez el estado actual de una migración, usa lo siguiente Comando gcloud:

gcloud datastore operations describe datastore-firestore-migration

Pausando la migración

Las migraciones de bases de datos grandes son aptas para detenerse y reanudarse. Pausando un migración impide que avance a la siguiente etapa hasta que se haya y se reanudó. Detener una migración puede ayudarte a determinar si se observa un cambio o el rendimiento es el resultado del proceso de migración o de una es un factor no relacionado.

Después de que recibas la notificación por correo electrónico sobre la migración de tu base de datos, puedes puede verificar si es apta para detenerse y reanudarse ejecutando la pausa a continuación. Si la migración no es apta, se mostrará un error. lo que indica que la funcionalidad no está disponible.

Si la migración de tu base de datos es apta para pausarse y reanudarse, los comandos que se indica a continuación comenzarán a funcionar una vez que la migración alcance la etapa START.

Para pausar una migración, sigue estos pasos:

curl --request POST \
--header "Authorization: Bearer "$(gcloud auth print-access-token) \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{}' \
"https://datastore.googleapis.com/v1/projects/PROJECT_ID:pauseMigration"

Para reanudar una migración, sigue estos pasos:

curl --request POST \
--header "Authorization: Bearer "$(gcloud auth print-access-token) \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{}' \
"https://datastore.googleapis.com/v1/projects/PROJECT_ID:resumeMigration"

Estos comandos no funcionarán una vez que se complete la migración.

Si necesitas que la migración se detenga durante más de una semana, comunícate con nosotros a través de un canal de asistencia. Después de dos semanas, tu migración puede reanudarse automáticamente.

Métricas de Cloud Monitoring

Las métricas de Cloud Monitoring disponibles para la base de datos de Datastore siguen siendo las mismas durante el proceso de actualización. Consulta las métricas de Datastore disponibles.