Como escolher entre o modo nativo e o modo Datastore

Ao criar um novo banco de dados do Firestore, é possível configurar a instância do banco de dados para ser executada no modo Datastore, o que torna o banco de dados compatível com versões anteriores do Datastore. Nesta página, você verá a diferença entre os dois modos de banco de dados do Firestore: modo nativo e modo Datastore.

Firestore no modo nativo

O Firestore é a próxima grande versão do Datastore, além de ser a reformulação do branding do produto. Unindo o melhor do Datastore e do Firebase Realtime Database, o Firestore consiste em um banco de dados de documentos NoSQL criado para oferecer escalonamento automático, alto desempenho e facilidade no desenvolvimento de aplicativos.

O Firestore apresenta novos recursos, como:

  • uma nova camada de armazenamento altamente consistente;
  • um modelo de dados de coleta e documento;
  • atualizações em tempo real;
  • bibliotecas de cliente móveis e da Web.

O Firestore é compatível com versões anteriores do Datastore, mas o novo modelo de dados, as atualizações em tempo real e os recursos das bibliotecas de cliente da Web e de dispositivos móveis não são. Para acessar todos os novos recursos do Firestore, você precisa usar o Firestore no modo nativo.

Firestore no modo Datastore

O Firestore no modo Datastore mantém o comportamento do sistema do Datastore, mas tem acesso à camada de armazenamento do Firestore e remove as seguintes limitações do Datastore:

  • Consistência posterior: as consultas do Datastore ficam 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.

O modo Datastore desativa os recursos do Firestore que não são compatíveis com o Datastore:

  • O projeto aceitará solicitações da API Datastore e negará as solicitações da API Firestore.
  • O projeto usará índices do Datastore em vez de índices do Firestore.
  • É possível usar as bibliotecas de cliente do Datastore com este projeto, mas não as do Firestore.
  • Os recursos em tempo real do Firestore não estarão disponíveis.
  • No console do Google Cloud, o banco de dados usará o visualizador do Datastore.

Atualização automática para o modo Datastore

Os bancos de dados atuais do Datastore serão automaticamente atualizados para o Firestore no modo Datastore. Novos projetos que exigem um banco de dados do Datastore precisam usar o Firestore no modo Datastore.

Preços e locais

Os bancos de dados do modo nativo e do modo Datastore usam a mesma estrutura de preços e estão disponíveis nos mesmos locais. Os preços e os locais estão descritos em detalhes nestas páginas:

Firestore no modo nativo

Firestore no modo Datastore

Como escolher um modo de banco de dados

Ao criar um novo banco de dados do Firestore, selecione um modo de banco de dados. É possível ter bancos de dados no modo Datastore e no modo nativo no mesmo projeto, mas cada banco de dados será de um único tipo. Recomendamos o seguinte ao escolher um modo de banco de dados:

  • Use o Firestore no modo Datastore para novos projetos de servidor.

    O Firestore no modo Datastore permite o uso de arquiteturas de servidores do Datastore estabelecidas enquanto remove as limitações básicas do Datastore. O modo Datastore pode ser escalonado automaticamente para milhões de gravações por segundo.

  • Use o Firestore no modo nativo para novos aplicativos da Web e de dispositivos móveis.

    O Firestore oferece bibliotecas de clientes para dispositivos móveis e Web com recursos off-line e em tempo real. O modo nativo pode ser escalonado automaticamente para milhões de clientes simultâneos.

Comparação do recurso

A tabela a seguir compara o comportamento do sistema nos dois modos de banco de dados:

Firestore no
Modo nativo
Firestore no
Modo Datastore
Modelo de dados Banco de dados de documentos organizado em documentos e coleções. Entidades organizadas em tipos e grupos de entidades.
Camada de Armazenamento Nova camada de armazenamento sempre de consistência forte Nova camada de armazenamento sempre de consistência forte
Consultas e transações
  • Consultas de consistência forte em todo o banco de dados
  • Remove as limitações anteriores de consistência do Datastore.
  • Consultas de consistência forte em todo o banco de dados
  • As transações têm acesso a qualquer número de grupos de entidades
Suporte para API Datastore v1 Não, as solicitações são negadas Sim
Suporte para API Firestore v1 Sim Não, as solicitações são negadas
Atualizações em tempo real

Compatível com a capacidade de detectar um documento ou um conjunto de documentos para atualizações em tempo real.

Ao ouvir um documento ou conjunto de documentos, seus clientes são notificados sobre quaisquer alterações de dados e recebem o conjunto de dados mais recente.

Sem suporte
Permanência de dados off-line As bibliotecas de cliente móvel e da Web são compatíveis com a permanência de dados off-line. Incompatível
Bibliotecas cliente Bibliotecas de cliente do Firestore:
  • Java
  • Python
  • PHP
  • Go
  • Ruby
  • C#
  • Node.js
  • Android
  • iOS+
  • Web
  • C++
  • Unity
Bibliotecas de cliente do Datastore:
  • Java
  • Python
  • PHP
  • Go
  • Ruby
  • C#
  • Node.js
  • C++
Segurança
  • O Identity and Access Management (IAM) gerencia o acesso ao banco de dados
  • As regras de segurança do Firestore são compatíveis com autenticação e autorização sem servidor para as bibliotecas de cliente da Web e de dispositivos móveis.
O IAM gerencia o acesso ao banco de dados
Desempenho Escalona automaticamente para milhões de clientes simultâneos. Escalona automaticamente para milhões de gravações por segundo.
SLA Firestore SLA Firestore SLA
Locais

Os dois modos são compatíveis com os mesmos locais:

  • Estados Unidos (multirregional)
  • Europa (multirregional)
  • Oregon
  • Los Angeles
  • Salt Lake City
  • Las Vegas
  • Montreal
  • Los Angeles
  • Carolina do Sul
  • Virgínia do Norte
  • São Paulo
  • Londres
  • Frankfurt
  • Varsóvia
  • Zurique
  • Mumbai
  • Singapura
  • Jacarta
  • Hong Kong
  • Taiwan
  • Tóquio
  • Osaka
  • Seul
  • Sydney
Preço

Os dois modos usam a mesma estrutura de preços para operações de entidade e de documento.

O Firestore no modo Datastore não cobra por operações pequenas.

Os dois modos usam a mesma estrutura de preços para dados armazenados e largura de banda da rede.

Para mais detalhes sobre preços, veja:

Console Leitor do Firestore no Console do Firebase e no Console do Google Cloud Leitor do Datastore no console do Google Cloud
Namespaces Incompatível Namespaces compatíveis
Integração com a biblioteca de cliente do App Engine

Incompatível com os ambientes de execução padrão do App Engine em Python 2.7 e PHP 5.5

Compatível com o ambiente padrão do App Engine e com todos os outros ambientes de execução

Compatível com o ambiente flexível do App Engine e com todos os ambientes de execução

Compatível em qualquer tempo de execução

Como criar um novo banco de dados

É possível criar um novo banco de dados do Firestore no modo Nativo ou no modo Datastore. Essa escolha não depende dos modos de nenhum banco de dados existente no seu projeto.

Consulte Criar e gerenciar bancos de dados para mais informações.

Como alternar entre o modo nativo e o modo Datastore

Se o banco de dados estiver vazio, será possível alternar entre o modo nativo e o modo Datastore.

Altere o banco de dados para o Modo nativo:

gcloud

Use o comando gcloud firestore databases update para alterar o banco de dados para o modo Nativo.

gcloud firestore databases update --type=firestore-native

rest

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

Altere o banco de dados para o modo Datastore:

gcloud

Use o comando gcloud firestore databases update para alterar o banco de dados para o modo Datastore.

 gcloud firestore databases update --type=datastore-mode

rest

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