Upgrade automático para o Firestore

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

O Firestore pode funcionar em 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 em modo Datastore remove as seguintes limitações do Cloud Datastore:

  • As consultas não têm mais consistência posterior. Em vez disso, eles 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 ancestral.
  • As transações não estão mais limitadas a 25 grupos de entidades.
  • As gravações em um grupo de entidades não estão mais limitadas a uma por segundo.

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

Desde junho de 2021, as migrações do Cloud Datastore para o Firestore no modo Datastore começaram. As migrações estão começando com bancos de dados de tráfego muito baixo e se expandirão para bancos de dados de tráfego mais altos nos próximos meses.

Upgrade automático para o Firestore no modo Datastore

Se você gerencia um aplicativo que usa o Cloud Datastore, não precisa atualizar o código do aplicativo porque 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.

Estágios do upgrade

Em geral, seguimos esse processo para fazer upgrade do banco de dados do Cloud Datastore para o Firestore em 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 ao banco de dados atual do Cloud Datastore. Duplique de maneira assíncrona as operações de gravação de entidades ao Firestore no modo Datastore.

  2. Copiar dados e entradas de índice existentes do Cloud Datastore 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: as gravações não serão relatadas como bem-sucedidas até que todas as alterações em entidades e índices sejam 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, além de um comportamento padrão do Cloud Datastore em que as gravações são aplicadas de maneira assíncrona após a confirmação.

Este estágio é destinado a mostrar qualquer impacto de latência de aplicações síncronas no Firestore no modo Datastore antes do upgrade. O aplicativo síncrono de gravações continuará durante e após a migração.

Bancos de dados com pouca atividade pularão esse estágio. Para determinar se esse estágio foi incluído no upgrade do banco de dados, inspecione os registros do estágio APPLY_WRITES_SYNCHRONOUSLY.

2. Copiar e verificar

Esse estágio representa o início da migração. Ele introduz 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 também começarão a passar por um canal lateral para a réplica do Firestore no modo Datastore. Isso acontece como parte do sistema de replicação atual 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 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 fazendo uma comparação com os dados no Cloud Datastore.

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 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 do Cloud Datastore.

4. Redirecionar leituras com consistência forte

Disponibilize leituras altamente consistentes (não transacionais) do Firestore no modo Datastore. A semântica do Cloud Datastore para leituras ainda se aplica. Mesmo que as leituras venham diretamente do Firestore, ele ainda depende do Cloud Datastore para garantir que esteja atualizado para leituras de 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 do Cloud Datastore para garantir que ele esteja atualizado antes de cada gravação. Após um cartão final que garante que todas as gravações anteriores sejam aplicadas, o Firestore no modo Datastore interrompe a consulta do Cloud Datastore.

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 do Cloud Datastore.

Transações

Os bancos de dados do Cloud Datastore usarão a simultaneidade otimista para transações no Firestore no modo Datastore. A simultaneidade otimista preserva os comportamentos atuais das transações no Cloud Datastore.

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

Para verificar o modo de simultaneidade do banco de dados durante ou após a migração, inspecione os registros do estágio PREPARE.

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 o SDK do Cloud.

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
estado_da_migração datastore_database type.googleapis.com/google.datastore.admin.v1.MigrationStateEvent
andamento_da_migração datastore_database type.googleapis.com/google.datastore.admin.v1.MigrationProgressEvent (em inglês)

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

O registro migration_progress é atualizado sempre que o upgrade muda 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 upgrade, crie métricas com base em registros de acordo com os dois registros e crie alertas com base nessas métricas.

Métricas do Cloud Monitoring

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