Upgrade automático para o Firestore

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Nesta página, descrevemos o caminho de upgrade do Cloud Datastore legado para o Firestore no modo Datastore.

O Firestore pode funcionar no modo Datastore, o que o torna compatível com versões anteriores do Cloud Datastore legado. Com o Firestore no modo Datastore, você pode acessar a camada de armazenamento aprimorada do Firestore, mantendo o comportamento do sistema do Datastore. O Firestore no modo Datastore remove as seguintes limitações legadas do Cloud Datastore:

  • As consultas não têm mais consistência eventual. Elas são altamente consistentes, a menos que você solicite explicitamente a consistência posterior.
  • As consultas em transações não são mais necessárias para serem consultas de ancestral1.
  • as transações não estão mais limitadas a 25 grupos de entidades1.
  • as gravações em um grupo de entidades não estão mais limitadas a uma por segundo1.

Para mais informações sobre o modo Datastore, consulte Firestore em modo Datastore.

A partir de junho de 2021, as migrações do Cloud Datastore legado para o Firestore no modo Datastore serão iniciadas. As migrações estão começando pelos bancos de dados de tráfego muito baixo e serão expandidas para bancos de dados de tráfego maiores nos próximos meses.

1 Os bancos de dados que migram para o modo de simultaneidade de grupos otimistas com grupos de entidades ainda estão sujeitos ao limite de 25 transações de grupos de entidades e ao limite de uma gravação por segundo no Firestore no modo Datastore. As consultas em transações precisam ser de ancestrais. Consulte a seção "Otimista com o modo de simultaneidade de grupos de entidades" para ver mais informações.

Upgrade automático para o Firestore no modo Datastore

Se você gerencia um aplicativo que usa o Cloud Datastore legado, não é necessário atualizar o código do aplicativo. Notificaremos você sobre a programação do upgrade do aplicativo para o Firestore no modo Datastore. O upgrade não requer inatividade.

Para mais perguntas sobre o processo de upgrade automático, entre em contato com um dos nossos canais de suporte.

Ver seu tipo de banco de dados

É possível usar o comando gcloud alpha firestore databases describe para visualizar seu tipo de banco de dados. Procure a presença do campo type na saída:

  • type: DATASTORE_MODE

    O tipo de banco de dados é o Firestore no modo Datastore. Ele não exige um upgrade ou já foi concluído.

  • type ausente na saída

    O tipo de banco de dados é o Cloud Datastore legado. O banco de dados será atualizado para o Firestore no modo Datastore.

  • type: FIRESTORE_NATIVE

    O tipo de banco de dados é o Firestore no modo Nativo.

Estágios do upgrade

Em alto nível, seguimos esse processo para fazer upgrade do banco de dados legado do Cloud Datastore para o Firestore no modo Datastore. Esse processo não requer tempo de inatividade do aplicativo:

  1. Adicionar uma nova réplica de dados do Firestore no modo Datastore ao banco de dados legado do Cloud Datastore legado. Duplique de maneira assíncrona as operações de gravação de entidades ao Firestore no modo Datastore.

  2. Copie entradas de dados e de indexação do Cloud Datastore legado para o Firestore no modo Datastore. Depois de copiar, verifique os dados.

  3. Redirecionar as leituras de entidades diretamente para o Firestore em modo Datastore. Primeiro, faça o redirecionamento de leituras com consistência eventual e depois redirecione leituras com consistência forte.

  4. Redirecionar as gravações de entidade e leituras de transações diretamente para o Firestore no modo Datastore.

Esse processo usa os estágios a seguir.

1. Aplicar gravações de maneira síncrona

Durante esse estágio, as gravações são aplicadas de maneira síncrona ao Cloud Datastore legado: as gravações não informarão o sucesso até que todas as alterações em entidades e índices tenham sido aplicadas a pelo menos uma réplica. Isso simula o comportamento do Firestore no modo Datastore, que também aplica gravações de maneira síncrona e difere do comportamento padrão do Cloud Datastore legado, em que as gravações são aplicadas de maneira assíncrona após a confirmação.

Essa etapa tem como objetivo exibir qualquer impacto de latência síncrono que se aplique ao Firestore no modo Datastore antes do upgrade. A aplicação síncrona de gravações continuará durante e após a migração.

Os bancos de dados com pouca atividade pularão essa etapa. Para determinar se esse estágio foi incluído no upgrade do seu banco de dados, inspecione os [registros] para o estágio APPLY_WRITES_SYNCHRONOUSLY.

2. Copiar e verificar

Essa etapa representa o início da migração. Ela apresenta uma réplica do Firestore no modo Datastore e executa as seguintes etapas:

  1. Registro

    As operações de gravação de entidade no Cloud Datastore legado também começam a fluir por meio de um canal lateral para a réplica do Firestore no modo Datastore. Isso acontece como parte do sistema de replicação existente do Cloud Datastore' Essas operações de gravação não afetam a latência de gravação. A réplica do Firestore no modo Datastore armazena essas operações de gravação em buffer para aplicá-las após a etapa de cópia.

  2. Copiar

    Na réplica do Firestore no modo Datastore, crie uma cópia off-line dos dados e entradas de índice existentes. A etapa de cópia não afeta as operações legadas do Cloud Datastore. Essa etapa pode durar vários dias.

  3. Drenar diário

    Aplique as gravações da etapa do diário à parte superior dos dados da cópia off-line.

  4. Verificar dados

    Verifique novamente os dados no Firestore no modo Datastore comparando com os dados no Cloud Datastore legado.

3. Redirecionar leituras com consistência posterior

Veicule leituras com consistência posterior (consultas sem filtro de ancestrais) do Firestore no modo Datastore. A semântica legada do Cloud Datastore para leituras ainda se aplica neste momento:

  • As consultas de ancestral têm consistência forte.
  • As consultas de não ancestral têm consistência posterior.
  • As pesquisas são altamente consistentes, exceto aquelas configuradas para consistência posterior.

O Firestore no modo Datastore continua atuando como uma réplica dos seus dados legados do Cloud Datastore.

4. Redirecionar leituras com consistência forte

Disponibilize leituras altamente consistentes (não transacionais) do Firestore no modo Datastore. Observe que a semântica legada do Cloud Datastore para leituras ainda se aplica. Mesmo que as leituras agora venham diretamente do Firestore, o Firestore ainda depende do Cloud Datastore legado para garantir que ele esteja atualizado para leituras altamente consistentes.

5. Redirecionar gravações

Redirecionar as gravações de entidade e leituras de transações para o Firestore no modo Datastore. Modificações simultâneas na mesma entidade continuam gerando cancelamentos de transações. Modificações simultâneas em entidades diferentes dentro do mesmo grupo de entidades não resultam mais em cancelamentos de transações.

No início deste estágio, o Firestore no modo Datastore ainda depende do Cloud Datastore legado para garantir que ele esteja atualizado antes de cada gravação. Após uma transmissão final que garante que todas as gravações anteriores sejam aplicadas, o Firestore no modo Datastore interrompe a consulta ao Cloud Datastore legado.

6. Migração concluída

Agora, a semântica do Firestore no modo Datastore para leituras é aplicada: todas as consultas têm consistência forte.

Os preços permanecem os mesmos, mas seu faturamento agora lista SKUs do Firestore. A página "Cotas" do App Engine começa a mostrar o uso do Firestore em vez do uso legado do Cloud Datastore.

Transações

O Firestore no modo Datastore é compatível com três modos de simultaneidade:

  • Otimista

    A maioria dos bancos de dados legados do Cloud Datastore usará a simultaneidade otimista para transações no Firestore no modo Datastore. A simultaneidade otimista preserva os comportamentos atuais das transações no Cloud Datastore legado.

  • Otimista com os grupos de entidades

    Os bancos de dados que dependem da semântica transacional do grupo de entidades migrarão para esse modo de simultaneidade. Consulte a seção "Otimista com o modo de simultaneidade de grupos de entidades" para mais informações.

  • Pessimista

    Alguns bancos de dados migrados anteriormente com pouca atividade foram migrados com bloqueios pessimistas para transações no Firestore no modo Datastore.

O modo de simultaneidade pode ser acessado por meio do recurso REST projects.databases do Firestore:

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

O modo de simultaneidade também pode ser encontrado inspecionando os registros para o estágio PREPARE.

Otimista com o modo de simultaneidade de grupos de entidades

Para remover o Otimismo com as limitações de capacidade de consulta, transação e gravação dos grupos de entidades, mude o modo de simultaneidade do seu projeto para Otimista. Para garantir que essa mudança seja compatível com seu projeto, faça o seguinte:

  1. Crie um projeto de teste no Firestore no modo Datastore.

  2. O modo de simultaneidade do projeto de teste foi alterado para OPTIMISTIC. Emita uma solicitação HTTP PATCH, conforme demonstrado abaixo.

  3. Execute testes no projeto de teste para garantir que a carga de trabalho tenha o desempenho esperado sem grupos de entidades.

  4. Mude o modo de simultaneidade do seu projeto principal de OPTIMISTIC_WITH_ENTITY_GROUPS para OPTIMISTIC.

A solicitação HTTP PATCH para mudar o modo de simultaneidade do banco de dados:

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"

Notificações de registro e progresso

O processo de upgrade usa o Cloud Logging para publicar atualizações de progresso. Para visualizar os registros, use o Explorador de registros, a API Cloud Logging ou a Google Cloud CLI.

As atualizações são publicadas em dois registros no nome do serviço de registro datastore.googleapis.com:

Nome do registro Recurso monitorado Payload
migration_state datastore_database type.googleapis.com/google.datastore.admin.v1.MigrationStateEvent
migration_progress datastore_database type.googleapis.com/google.datastore.admin.v1.MigrationProgressEvent

O registro migration_state é atualizado quando o estado geral do upgrade muda (RUNNING e COMPLETE).

O registro migration_progress é atualizado sempre que o upgrade passa para uma nova etapa (PREPARE, START, APPLY_WRITES_SYNCHRONOUSLY, COPY_AND_VERIFY, REDIRECT_EVENTUALLY_CONSISTENT_READS, REDIRECT_STRONGLY_CONSISTENT_READS e REDIRECT_WRITES).

Para receber notificações durante o processo de upgrade, crie métricas com base em registros com base nos dois registros e crie alertas com base nessas métricas.

Banner de migração no Console do Google Cloud

Enquanto o banco de dados legado do Cloud Datastore estiver no processo de migração, um banner de informações será exibido na página Entidades do Datastore do Console do Google Cloud. Esse banner inclui um link para abrir o Cloud Logging e filtrar as atualizações de migração.

Acessar entidades do Datastore

Como visualizar o estado atual em uma CLI

Para ver rapidamente o estado atual de uma migração, use o seguinte comando gcloud:

gcloud datastore operations describe datastore-firestore-migration

Pausar a migração

Grandes migrações de banco de dados são qualificadas para serem pausadas e retomadas. Pausar uma migração impede que ela prossiga para a próxima fase até que ela seja retomada. Pausar uma migração pode ajudar a determinar se uma mudança observada no comportamento ou no desempenho é resultado do processo de migração ou de um fator não relacionado.

Depois de receber a notificação por e-mail sobre a migração do seu banco de dados, execute o comando de pausa abaixo para verificar se ele está qualificado para ser pausado e retomado. Se a migração não estiver qualificada, ela retornará um erro indicando que a funcionalidade não está disponível.

Se a migração do seu banco de dados estiver qualificada para ser pausada e retomada, os comandos abaixo vão começar a funcionar quando a migração chegar ao estágio START.

Para pausar uma migração, faça o seguinte:

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 retomar uma migração, siga estas etapas:

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"

Esses comandos não funcionarão após a migração.

Se você precisar manter a migração pausada por mais de uma semana, entre em contato usando um canal de suporte. Após duas semanas, sua migração pode ser retomada automaticamente.

Métricas do Cloud Monitoring

As métricas do Cloud Monitoring disponíveis para o banco de dados do Datastore permanecem as mesmas durante todo o processo de upgrade. Veja as métricas disponíveis do Datastore.