Upgrade automático para o Firestore

Esta página descreve o caminho de upgrade do Cloud Datastore legado para o Firestore no modo Datastore.

O Firestore pode funcionar no modo Datastore, tornando-o compatível com versões anteriores do Cloud Datastore. 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 do Cloud Datastore legados:

  • 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 precisam mais ser 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.

As migrações do Cloud Datastore legado para o Firestore no modo Datastore começaram em junho de 2021. 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 Bancos de dados que migram para o modo otimista com O modo de simultaneidade de grupos de entidades ainda está sujeito ao grupo de 25 entidades bem como o limite de 1 gravação por segundo no Firestore no modo Datastore. As consultas em transações precisam ser consultas de ancestral. Veja o cenário otimista Com o modo de simultaneidade de grupos de entidades section para 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 precisa 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.

Confira o tipo do seu banco de dados

Você pode usar o comando gcloud alpha firestore databases describe para conferir o 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 não exigem um upgrade ou já o concluíram.

  • type não está presente na saída

    O tipo de banco de dados é o Cloud Datastore legado. O do 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

De maneira geral, seguimos esse processo para fazer upgrade do banco de dados legados do Cloud Datastore para o Firestore no modo Datastore. Esse processo não requer tempo de inatividade do aplicativo:

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

  2. Copiar dados atuais e entradas de índice 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 esta etapa, as gravações são aplicadas de maneira síncrona ao Cloud Datastore legado: as gravações não informarão êxito 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 é diferente do comportamento padrão do Cloud Datastore legado em que 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 etapa foi incluída no upgrade do banco de dados, inspecione os [registros] para a etapa 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. Diário

    As operações de gravação de entidades no Cloud Datastore legado também vão começar a fluir por um canal lateral para a réplica do Firestore no modo Datastore. Isso acontece como parte sistema de replicação atual do Cloud Datastore legado. 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 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

    Verificar novamente os dados no Firestore no modo Datastore fazendo uma comparação 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 ponto:

  • 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 a atuar 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 a atualização para e leituras com consistência forte.

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 desta etapa, o Firestore no modo Datastore ainda depende o Cloud Datastore legado para garantir a atualização antes de cada gravação. Após um passagem final que garante que todas as gravações anteriores sejam for aplicado, o Firestore no modo Datastore deixa de consultar do 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 oferece suporte a três modos de simultaneidade:

  • Otimista

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

  • Otimismo com grupos de entidades

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

  • Pessimista

    Alguns bancos de dados já migrados com pouquíssima atividade foram migrados com bloqueios pessimistas para transações no Firestore no modo Datastore.

O modo de simultaneidade pode ser acessado pelo 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 de na etapa PREPARE.

Modo de simultaneidade otimista com grupos de entidades

Para remover as limitações de capacidade de processamento de consulta, transação e gravação do Optimistic With Entity Groups, altere o modo de simultaneidade do seu projeto para Otimista. Para garantir que essa mudança seja compatível com seu projeto:

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

  2. Mude o modo de concorrência do projeto de teste 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 tem o desempenho esperado sem os grupos de entidades.

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

Solicitação HTTP PATCH para alterar 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 a Análise de registros, a API Cloud Logging ou a Google Cloud CLI.

As atualizações são publicadas em dois registros com o nome do serviço de geração de registros 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 sobre o andamento do upgrade, faça o seguinte: criar métricas com base em registros baseadas nas duas registros e criar alertas com base no essas 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 vai aparecer na página Datastore Studio do console do Google Cloud. Esse banner inclui um link para abrir o Cloud Logging e filtrar as atualizações de migração.

  1. No Console do Google Cloud, acesse a página Bancos de Dados.

    Acessar "Bancos de dados"

  2. Selecione o banco de dados necessário na lista de bancos de dados.

  3. No menu de navegação, clique em Datastore Studio.

Como visualizar o estado atual em uma CLI

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

gcloud datastore operations describe datastore-firestore-migration

Como pausar a migração

As migrações de banco de dados grandes podem ser pausadas e retomadas. Pausar um a migração impede que ela avance para a próxima fase até que tenha sido retomado. Pausar uma migração pode ajudar você a determinar se uma alteração observada em comportamento ou desempenho é o resultado do processo de migração ou de uma fator não relacionado.

Depois de receber a notificação por e-mail sobre a migração do banco de dados, pode verificar se ele está qualificado para pausa e retomada executando a pausa. comando abaixo. Se a migração não estiver qualificada, um erro vai aparecer. 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:

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:

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 vão funcionar depois que a migração for concluída.

Se você precisar manter a migração pausada por mais de uma semana, entre em contato por um canal de suporte. Depois de duas semanas, a 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.