Visão geral do Datastore

O Firestore no modo Datastore é um banco de dados de documentos NoSQL criado para escalonamento automático, alto desempenho e facilidade no desenvolvimento de aplicativos. Veja os recursos do Datastore:

  • Transações atômicas. O Datastore pode executar um conjunto de operações em que todas são bem-sucedidas ou nenhuma ocorre.
  • Alta disponibilidade de leituras e gravações. O Datastore é executado nos data centers do Google, que usam redundância para minimizar o impacto dos pontos de falha.
  • Grande escalonabilidade com alto desempenho. O Datastore usa uma arquitetura distribuída para gerenciar automaticamente o escalonamento. O Datastore usa uma combinação de índices e restrições de consulta para que as consultas sejam escalonadas com o tamanho do conjunto de resultados, e não com o tamanho do conjunto de dados.
  • Armazenamento flexível e consultas de dados. O Datastore mapeia naturalmente para linguagens de script e orientadas a objetos e é exposto a aplicativos por meio de vários clientes. Ele também oferece uma linguagem de consulta semelhante à SQL.
  • Consistência forte. O Datastore garante a consistência forte de todas as consultas.
  • Criptografia em repouso. O Datastore criptografa automaticamente todos os dados antes que eles sejam gravados no disco e descriptografa os dados automaticamente quando lidos por um usuário autorizado. Para mais informações, consulte Criptografia no servidor.
  • Totalmente gerenciado sem inatividade planejada. O Google lida com a administração do serviço para que você possa se concentrar no seu aplicativo. Seu aplicativo ainda poderá usar o Datastore quando o serviço receber um upgrade planejado.

Comparação com bancos de dados relacionais

A interface do Datastore tem muitos recursos semelhantes aos bancos de dados relacionais, mas como um banco de dados NoSQL, ela varia na forma como descreve as relações entre os objetos de dados. Veja a seguir uma comparação de alto nível dos conceitos do Datastore e do banco de dados relacional:

Conceito Datastore Firestore Banco de dados relacional
Categoria de objeto Tipo Grupo de coleção Tabela
Um objeto Entidade Documento Linha
Dados individuais de um objeto Propriedade Campo Coluna
Código exclusivo de um objeto Chave Código do documento Chave primária

Diferentemente das linhas em uma tabela de banco de dados relacional, as entidades do Datastore do mesmo tipo podem ter propriedades diferentes, e entidades distintas podem ter propriedades com o mesmo nome, mas tipos de valores diversos. Com essas características exclusivas, há uma forma diferente de projetar e gerenciar dados para aproveitar a capacidade de escalonamento automático. Em particular, o Datastore tem diferenças marcantes de um banco de dados relacional tradicional, como, por exemplo:

  • O Datastore é projetado para escalonamento automático com grandes conjuntos de dados, permitindo que os aplicativos mantenham o alto desempenho conforme recebem mais tráfego:
    • As gravações do Datastore são escalonadas distribuindo dados automaticamente, conforme o necessário.
    • As leituras do Datastore são escalonadas porque as únicas consultas compatíveis são aquelas que têm o desempenho escalonado com o tamanho do conjunto de resultados (em oposição ao conjunto de dados). Isso significa que uma consulta com 100 entidades no conjunto de resultados tem o mesmo resultado de uma pesquisa com centenas ou um milhão de entidades. Essa propriedade é a principal razão de não haver suporte para alguns tipos de consultas.
  • Como todas as consultas são disponibilizadas por índices criados anteriormente, os tipos de consultas que podem ser executados são mais restritivos do que os permitidos em um banco de dados relacional com SQL. Em particular, o Datastore não inclui suporte para operações de junção, filtragem de desigualdade em várias propriedades ou filtragem de dados com base nos resultados de uma subconsulta.
  • Diferentemente dos bancos de dados relacionais que impõem um esquema, o Datastore não tem esquemas. Ele não exige que entidades do mesmo tipo tenham um conjunto consistente de propriedades, embora você tenha a opção de impor esse requisito em seu próprio código de aplicativo.

Indicações de uso

O Datastore é ideal para aplicativos que dependem de dados estruturados altamente disponíveis em escala. Use o Datastore para armazenar e consultar todos os seguintes tipos de dados:

  • Catálogos de produtos que oferecem detalhes de produto e inventário em tempo real para um varejista
  • Perfis de usuários que oferecem uma experiência personalizada com base nas preferências e atividades anteriores do usuário
  • Transações com base em propriedades ACID (em inglês). Por exemplo, transferência de fundos de uma conta bancária para outra

Outras opções de armazenamento e banco de dados

O Datastore não é ideal para todos os casos de uso. Por exemplo, ele não é um banco de dados relacional nem uma solução eficaz para dados analíticos.

Veja alguns cenários comuns em que você provavelmente precisa considerar uma alternativa ao Datastore:

  • Se você precisa de um banco de dados relacional com compatibilidade total a SQL para um sistema de processamento de transações on-line (OLTP, na sigla em inglês), use o Cloud SQL.
  • Se você não precisa de compatibilidade para transações de atomicidade, consistência, isolamento e durabilidade (ACID, na sigla em inglês) ou se os seus dados não são altamente estruturados, use o Bigtable.
  • Se você precisa de consultas interativas em um sistema de processamento analítico online (OLAP), pense em usar o BigQuery.
  • Se você precisa armazenar blobs grandes e imutáveis, como imagens ou filmes, pense em usar o Cloud Storage.

Para saber mais sobre outras opções de bancos de dados, consulte a visão geral dos serviços de bancos de dados.

A seguir

Como se conectar ao Datastore com o App Engine

O ambiente de execução padrão do Go no App Engine é conectado ao Datastore usando a API do Datastore para Go. Para uma lista completa do conteúdo do pacote datastore, consulte a referência do pacote datastore.

Não é possível usar a biblioteca de cliente do Cloud Datastore com aplicativos Go no ambiente padrão do App Engine.