Frage

Ich brauche einen ungerichteten Graphen in einer Google App Engine-Datenbank zu speichern. Zur Optimierung, denke ich Datenbankindizes verwenden . Mit Google App Engine, ist es eine Möglichkeit, die Spalten einer Datenbanktabelle zu definieren, seinen Index zu erstellen?

Ich werde einige Optimierungen müssen, da meine Anwendung auf einer inhaltsbasierten Filterung für Artikel Empfehlung diese gespeicherten ungerichteten Graphen verwendet. Auch der Recommender-Algorithmus aktualisiert die Gewichte einiger Diagramms Kanten.

Wenn es nicht möglich ist, Datenbankindizes zu verwenden, schlagen Sie bitte eine andere Methode Abfragezeit für die Graph-Tabelle zu reduzieren. Ich glaube, mein Algorithmus mehr Daten Auslagerungen von Graph-Tabelle hat als Schreiboperationen.

. PS: Ich verwende Python

Andere Tipps

sehen Sie eigentlich unerschwinglich langsame Abfragen? Ich vermute nicht. Ich vermute, dass dies etwas vorzeitige Optimierung ist. der App Engine-Datenspeicher führt keine Sortierung, Filterung, Verknüpfungen oder andere sinnvolle Operationen im Speicher, so Abfragezeiten im Allgemeinen ziemlich konstant sind. insbesondere abhängig Abfrage Latenz von der Anzahl der Einheiten des Datenspeichers nicht, oder auch die Anzahl der Unternehmen, die Ihre Suchkriterien entsprechen. es hängt nur von der Anzahl der Ergebnisse für Sie fragen.

über einen entsprechenden Hinweis, Hinzufügen von Indizes zu Ihrem Datenspeicher wird nicht beschleunigt bestehende Abfragen. Wenn eine Abfrage einen benutzerdefinierten Index benötigt, wird es nicht degradieren und langsamer laufen ohne sie. die Abfrage wird einfach nicht ausgeführt, bis Sie den Index hinzuzufügen.

für die spezifische Abfrage, die Sie erwähnen, select * from edges where vertex1 == x and vertex2 == y kann der Datenspeicher überhaupt ohne einen benutzerdefinierten Index laufen. finden Sie unter diesem Abschnitt der docs für weitere Details.

kurz gesagt, führen Sie einfach die Fragen, die Sie brauchen, und nicht denken zu viel über Indizes oder versuchen, zu optimieren, als ob Sie ein DBA waren. es ist nicht eine relationale Datenbank. : P

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top