Question

Je dois stocker un graphe non orienté dans une base de données Google App Engine. Pour des raisons d'optimisation, je pense à utiliser . Utilisation de Google App Engine, est-il possible de définir les colonnes d'une table de base de données pour créer son index?

Je besoin d'optimisation, puisque mon application utilise ce graphe non orienté stockés sur un filtrage basé sur le contenu de la recommandation de l'article. En outre, l'algorithme de recommender met à jour les poids des bords un graphe.

S'il est impossible d'utiliser des index de base de données, s'il vous plaît suggérer une autre méthode pour réduire le temps de recherche de la table graphique. Je crois que mon algorithme effectue des opérations de récupération plus de données à partir du tableau graphique que les opérations d'écriture.

PS. J'utilise Python

Autres conseils

êtes-vous réellement voir les requêtes lentes prohibitive? Je devine pas. Je soupçonne que c'est un peu l'optimisation prématurée. le moteur de l'application magasin de données ne fait pas de tri, le filtrage, joint, ou d'autres opérations significatives dans la mémoire, de sorte que les temps de requête sont généralement assez constant. en particulier, la latence de requête ne dépend pas du nombre d'entités de votre magasin de données, ou même le nombre d'entités qui correspondent à votre requête. il ne dépend que du nombre de résultats que vous demandez.

sur une note connexe, l'ajout d'index à votre magasin de données pas accélérer les requêtes existantes. si une requête a besoin d'un index personnalisé, il ne se dégraderont pas et courir moins vite sans lui. la requête simplement ne fonctionnera pas du tout jusqu'à ce que vous ajoutez l'index.

pour la requête spécifique que vous mentionnez, select * from edges where vertex1 == x and vertex2 == y, le datastore peut fonctionner sans un indice personnalisé du tout. voir cette partie de la docs pour plus de détails.

En bref, il suffit d'exécuter les requêtes dont vous avez besoin, et ne pense pas trop sur indices ou essayer d'optimiser comme si vous étiez un DBA. ce n'est pas une base de données relationnelle. : P

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