9
votes

Stocker un graphique dirigé dans Google Appengine Datastore

J'ai besoin de stocker un graphique non dirigé de vaste et dynamique dans Google Appengine, quelle est la meilleure façon de le faire? La représentation graphique doit pouvoir prendre en charge rapidement un ensemble de sommets (pour le rendu sur une page) et tous les liens d'un sommet spécifique et de la fiathication à travers le graphique (bien que le chemin optimal ne soit pas vraiment nécessaire, juste un juste bon)

Mes pensées sur le sujet: La manière la plus évidente est d'avoir un modèle de sommet et d'un modèle de bord qui fait référence à deux sommets, cependant cela ressemble à ce que cela va finir par utiliser énormément de requêtes pour chaque opération, je me demande s'il y a une meilleure façon ( peut-être construire les informations de liaison dans chaque sommet en quelque sorte)


0 commentaires

3 Réponses :


0
votes

Considérant que vous utilisez le moteur de Google App, il serait préférable que vous enregistriez les informations dans des tableaux séparés:

Un pour les sommets, un pour les liens d'un sommet (comme vous l'avez déjà dit) et un supplémentaire où les chemins sont déjà précalisés.

GAE fonctionne mieux si les informations que vous stockez sont désormalisées, vous ne devez donc pas effectuer de calculs.


1 commentaires

Le problème est que le graphique est dynamique, recalculant tous ces changements de chemin qui coûtera beaucoup de mon quota.



7
votes

Voici le moyen le plus simple: xxx pré>

Vous pouvez maintenant explorer le graphique sans aucune question - il suffit d'appeler db.get sur 1 ou plusieurs clés pour récupérer les sommets pertinents: P >

# Get the first referenced vertex
vertex2 = db.get(vertex1.outedges[0])

# Get all referenced vertices
vertices = db.get(vertex1.outedges)


0 commentaires

2
votes

Selon le nombre de sommets / liens, vous voudrez peut-être simplement utiliser des listes au lieu de créer une bande de nouvelles entités. Consultez les problèmes de graphique des amis décrits dans la seconde moitié de cette vidéo de Google IO 2009: http: // www.youtube.com/watch?v=agal6ngpkb8

Si vous pensez que le nombre de sommets est suffisamment élevé, vous pouvez simplement créer un modèle de sommet avec une liste qui représente les connexions.


0 commentaires