Visão geral do Datastore

O Datastore é um banco de dados de documentos NoSQL criado para fornecer 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.
  • Equilíbrio entre consistência posterior e forte. O Datastore garante que as pesquisas de entidade por consultas de chave e de ancestral sempre recebam dados fortemente consistentes. Todas as outras consultas têm consistência posterior. Com os modelos de consistência, o aplicativo oferece uma excelente experiência do usuário no processamento de grandes volumes de dados e usuários.

  • 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 do Datastore para que você possa se concentrar no seu aplicativo. Seu aplicativo ainda poderá usar o Datastore quando o serviço receber um upgrade planejado.

Firestore no modo Datastore

O Firestore é a mais nova versão do Datastore e apresenta várias melhorias sobre o Datastore. Os usuários existentes do Datastore podem acessar essas melhorias criando um novo Firestore na instância de banco de dados do modo Datastore. Futuramente, todos os bancos de dados atuais do Datastore terão upgrade automático para o Firestore no modo Datastore.

Comparação com bancos de dados tradicionais

Embora a interface do Datastore tenha muitos dos mesmos recursos dos bancos de dados tradicionais, como banco de dados NoSQL, ela é diferente deles na forma como descreve relacionamentos entre 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 tradicionais 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, o Datastore não é um banco de dados relacional e não é 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, pense em usar o Cloud 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.

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.