Pergunta

Uma vez que o Google App Engine não permite que se junta, isso significa que eu tenho que tomar todas as tabelas em meu aplicativo web e descobrir uma maneira de combiná-los em uma única tabela grande?

Foi útil?

Solução

Só porque você não tem junções implementada pelo SGBD não significa que você não pode ter várias tabelas. Na App Engine, estes são chamados de 'tipos de entidade', e você pode ter como muitos deles como você quer.

Geralmente, você precisa desnormalizar seus dados, a fim de evitar a necessidade de se junta frequente. Nos poucos casos em que eles são inevitáveis, você pode usar outras técnicas, como fazer a junção no código do usuário.

Outras dicas

Combinando-lo a um grande mesa é sempre uma opção, mas resulta desnecessariamente grande e tabelas redundantes maior parte do tempo, portanto, ele vai fazer seu aplicativo lento e difícil de manter.

Você também pode emular uma junção, por iteração através dos resultados de uma consulta, e executando uma segunda consulta para cada resultado encontrado para a primeira consulta. Se você tem o SQL consulta

SELECT a.x FROM b INNER JOIN a ON a.y=b.y;

você pode emular isso com algo como isto:

for b in db.GqlQuery("SELECT * FROM b"):
  for a in db.GqlQuery("SELECT * FROM a WHERE y=:1", b.y):
    print a.x

Se você está procurando a maneira de projetar a tabela de dados. Eu recomendo que você faça um pouco de pesquisa antes de iniciar o trabalho. Existem propriedades muito mágico para o Google App Engine como:

  • auto-merge
  • Multi-valorizado propriedade da lista

Isso seria muito útil para o seu design. Eu compartilhei minha experiência aqui .

Para saber mais sobre scale-capacidade não é um exclusivo curso livre em Udacity aqui apenas na tópico. É ensinado pelo fundador do reddit.com e ele explica claramente toda a escala coisas que acontecem no reddit, um dos locais com o maior número de visitantes. Ele mostra toda a implementação do curso demo em GAE (e que foi um jackpot para mim!). Eles oferecem toda a vídeos curso grátis para download aqui . Eu tenho labutando duro com motor de aplicativo antes que eu tenho esses recursos. Então eu pensei que partilhar isso pode ajudar outros que estão pisando o pé em águas.

Mudar de um banco de dados relacional para o App Engine Datastore requer uma mudança de paradigma para os desenvolvedores na modelagem de seus dados. Dê uma olhada aqui para ter uma idéia melhor. Isso exigirá que você a pensar mais na frente sobre como encaixar o seu problema nas restrições imposta pelo armazenamento de dados, mas se você pode, então, você está garantido que ele será executado de forma rápida e escala.

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