Question

Puisque Google App Engine n'autorise pas les jointures, cela signifie-t-il que je dois prendre toutes les tables de mon application Web et trouver un moyen de les combiner en une seule table énorme?

Était-ce utile?

La solution

Ce n'est pas parce que vous n'avez pas implémenté de jointures dans le SGBD que vous ne pouvez pas avoir plusieurs tables. Dans App Engine, ils sont appelés "types d'entités" et vous pouvez en avoir autant que vous le souhaitez.

En règle générale, vous devez dénormaliser vos données afin d’éviter les jointures fréquentes. Dans les rares situations où elles sont inévitables, vous pouvez utiliser d'autres techniques, telles que la jointure dans le code utilisateur.

Autres conseils

La combinaison en une seule grande table est toujours une option, mais la plupart du temps, il en résulte des tables inutilement volumineuses et redondantes. Par conséquent, votre application sera lente et difficile à gérer.

Vous pouvez également émuler une jointure en itérant les résultats d'une requête et en exécutant une seconde requête pour chaque résultat trouvé pour la première requête. Si vous avez la requête SQL

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

vous pouvez émuler ceci avec quelque chose comme ceci:

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

Si vous cherchez un moyen de concevoir le datatable. Je vous recommande de faire un peu de recherche avant de commencer le travail. Il existe des propriétés assez magiques pour Google App Engine telles que:

  • fusion automatique
  • Propriété de liste à valeurs multiples

Cela serait très utile dans votre conception. J'ai partagé mon expérience ici . .

Pour en savoir plus sur les possibilités d'adaptation, il existe un cours gratuit sur Udacity uniquement sur le site sujet. Il est enseigné par le fondateur de reddit.com et il explique clairement tout ce qui se passe dans reddit, l'un des sites avec le plus grand nombre de visiteurs. Il montre toute la mise en œuvre de la démonstration du cours dans gae (et c'était un gros lot pour moi!). Ils proposent l'intégralité des vidéos du cours en téléchargement gratuit ici . J'ai beaucoup travaillé avec le moteur d'applications avant d'avoir ces ressources. J'ai donc pensé que partager cela pourrait aider d'autres personnes qui marchent le pas dans les eaux.

Le passage d'une base de données relationnelle à la banque de données App Engine nécessite un changement de paradigme pour les développeurs lors de la modélisation de leurs données. ici pour en avoir une meilleure idée. Cela vous obligera à réfléchir plus en amont sur la manière d'adapter votre problème aux contraintes imposées par le magasin de données, mais si vous le pouvez, vous êtes assuré qu'il s'exécutera rapidement et à l'échelle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top