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 consistência eventual.
  • 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 em modo Datastore foram iniciadas. As migrações estão começando por 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 atualizar seu banco de dados do Cloud Datastore para o Firestore em modo Datastore. Esse processo não exige o 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 no Cloud Datastore: 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 em que as gravações são aplicadas de maneira assíncrona após serem confirmadas).

Nesta fase, o objetivo é apresentar qualquer impacto de latência de restrições síncronas no Firestore no modo Datastore antes do upgrade. A aplicação síncrona de gravações continuará durante e após a migração.

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 da etapa APPLY_WRITES_SYNCHRONOUSLY.

2. Copiar e verificar

Este estágio representa o início da migração. Ele 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 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

O comportamento das transações após o upgrade depende do nível da atividade do banco de dados.

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

Bancos de dados com pouca atividade usarão bloqueios pessimistas para transações após o upgrade 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 para as fases PREPARE ou REDIRECT_WRITE.

Notificações de registro e andamento

O processo de upgrade usa o Cloud Logging para publicar atualizações de progresso. Para ver 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 no nome do serviço de geração de registros datastore.googleapis.com:

Nome do registro Recurso monitorado Payload
migration_state [estado_da_migração] datastore_database type.googleapis.com/google.datastore.admin.v1.MigrationStateEvent (em inglês)
progresso_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 muda (RUNNING e COMPLETE).

O registro de migration_progress é atualizado sempre que o upgrade passa para um novo estágio (PREPARE, START, APPLY_WRITES_SYNCHRONOUSLY, COPY_AND_VERIFY, REDIRECT_EVENTUALLY_CONSISTENT_READS, REDIRECT_STRONGLY_CONSISTENT_READS e REDIRECT_WRITES). .

Para receber notificações à medida que o upgrade avança, é possível criar métricas com base em registros com base nos dois registros e criar alertas com base nessas métricas.

Como testar um aplicativo atual

Para um aplicativo existente que use o Cloud Datastore, teste o comportamento do aplicativo com o Firestore em modo Datastore fazendo o seguinte:

  1. Crie um novo projeto. Neste projeto, crie um banco de dados Firestore em modo Datastore.
  2. Com o serviço de exportação gerenciada, exporte parte dos dados do seu aplicativo para o Cloud Storage.
  3. Com o serviço de importação gerenciada, importe os dados do seu aplicativo para o novo projeto.
  4. Copie a lógica do aplicativo que você quer testar para o novo projeto ou simule o comportamento do aplicativo em relação ao novo projeto.

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, veja as métricas disponíveis do Datastore.