DataStore: [Parte 1] Introdução
O que é o DataStore ?
O datastore é a solução NoSql da plataforma de cloud do Google (Google Cloud Platform). De forma resumida, ele possui as seguintes características:
- Estrutura : banco de dados de objetos "schemaless"
- Consistência : oferece "Strong Consistency" (consistência forte), para consultas com as chaves completas (com ancestral). Consistência eventual para as demais consultas.
- Custo: oferece uma cota livre, com limites diários.
- Transações: são ACID.
Como funciona internamente
Internamente o DataStore foi construído sobre o BigTable e Megastore:- MegaStore: traz a escalabilidade de um NoSql com as conveniências de um banco relacional.
- BigTable: oferece a infraestrutura escalável de armazenamento.
Alguns termos básicos do DataStore
- Kinds: equivalem às tabelas do mundo relacional.
- Entities: equivale a uma linha no mundo relacional. No dataStore, uma "entity" é um objeto armazenado em uma kind.
- Keys: equivale à chave-primária.
- Properties: equivale aos demais campos da entidade. As proprierties podem conter diversos tipos de dados, como int, float, boolean, string, date, etc. Além disso, ele podem ser multivalorados.
Entity Group
As entidades no DataStore obedecem a uma estrutura de pai e filho. Na figura acima podemos ver a entidade raiz (root entity). O conjunto de pai e filhos formam o conceito de "entity group".
Um detalhe importante: a chave que identifica uma entidade é formada pelo "ancestor path" (caminho dos pais) + kind:id" da entidade. Por exemplo:
[Person:GreatGrandpa, Person:Grandpa, Person:Dad, Person:Me]
Salvando uma entidade no DataStore
Veja um exemplo em Python, usando a NDB API:Defnição da classe:
from google.appengine.ext import ndb class Account(ndb.Model): username = ndb.StringProperty() userid = ndb.IntegerProperty() email = ndb.StringProperty()
Instanciando a classe:
sandy = Account(username='Sandy', userid=123, email='sandy@gmail.com')Salvando:
sandy_key = sandy.put()
Recuperando uma entidade do DataStore
A partir da "key" (do exemplo anterior), você pode recuperar a entidade do datastore:sandy = sandy_key.get()
Da mesma forma, exite o método ".delete()" para a deleção de uma entidade.
https://cloud.google.com/appengine/docs/python/datastore/

Comentários
Postar um comentário