Pergunta

Uma vez que o Google App Engine de Armazenamento de dados é baseado em Bigtable e nós sabemos que esse não é um banco de dados relacional, como o desenho de um esquema de banco de dados/modelo de dados para aplicações que utilizam este tipo de sistema de banco de dados?

Foi útil?

Solução

A concepção de um bigtable esquema é um processo aberto, e basicamente requer que você pense sobre:

  • Os padrões de acesso que você vai usar e quantas vezes cada um vai ser usado
  • As relações entre seus tipos
  • O que índices de que você vai precisar
  • A gravação padrões que você vai utilizar (para efetivamente distribuir a carga)

GAE do armazenamento de dados automaticamente denormalizes seus dados.Isto é, cada um índice contém um (a maioria) cópia completa dos dados, e assim, cada índice aumenta significativamente o tempo gasto para executar uma gravação, e o espaço de armazenamento utilizado.

Se não fosse este o caso, a criação de um Armazenamento de dados de esquema seria um trabalho muito mais:Você teria que pensar cuidadosamente sobre a chave primária para cada tipo, e considerar os efeitos de sua decisão na localidade de dados.Por exemplo, quando o processamento de um post de blog que você provavelmente teria de exibir os comentários para ir junto com ele, de modo que cada comentário é chave provavelmente começar com o associado de pós-chave.

Com o Armazenamento de dados, este não é um negócio tão grande:A consulta utiliza uma vontade de olhar algo como "Select * FROM Comentário ONDE postid = N." (Se você deseja página de comentários, que você também gostaria de ter uma cláusula limit, e uma possível sufixo "E comment_id > last_comment_id".) Uma vez que você adicionar uma consulta, Armazenamento de dados, irá criar o índice remissivo para você e sua lê vai ser magicamente rápido.

Algo para se manter em mente é que cada um índice adicional cria algum custo adicional:é melhor se você pode usar como alguns padrões de acesso possível, uma vez que irá reduzir o número de índices GAE vai construir, e, assim, o total de armazenamento necessário para os seus dados.

Lendo sobre essa resposta, acho que é um pouco vago.Talvez uma questão de design, ajudaria a âmbito de aplicação o presente para baixo?:-)

Outras dicas

Você pode usar www.web2py.com.Você cria o modelo e a aplicação uma vez e ele funciona no GAE, mas também witl SQLite, MySQL, Posgres, Oracle, MSSQL, FireBird

Como GAE baseia no modo como os dados são gerenciados em Django, há um monte de informações sobre como lidar com questões semelhantes na documentação do Django (por exemplo, ver aqui, vá para "Seu primeiro modelo').

Em suma, você, você db modelo como modelo de objeto e deixá-GAE de classificação de todos, o objeto-relacional mapeamentos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top