Ich kam aus der Welt der relationalen Datenbanken, dann fand ich dieses Datenspeicher-Ding. Es dauerte mehrere Tage, bis ich es verstanden hatte. Nun, es gibt einige meiner Erkenntnisse.
Sie müssen bereits gewusst haben, dass der Datenspeicher maßstabsgetreu erstellt wurde, und das ist das, was ihn von RDMBS unterscheidet. Um mit großen Datenmengen besser skalieren zu können, hat App Engine einige Änderungen vorgenommen (einige bedeuten viele Änderungen).
RDBMS VS DataStore-
Struktur
In der Datenbank strukturieren wir unsere Daten normalerweise in Tabellen, Zeilen, die sich im Datenspeicher in Arten und Entitäten befinden .
Beziehungen
In RDBMS, Die meisten Menschen folllows die One-to-One, Many-to-One, Many-to-Many - Beziehung, in Datastor, da es "Nein Joins" , was aber immer noch können wir unsere Normalisierung erreichen mit " Reference "zB Eins-zu-Eins-Beziehungsbeispiel .
Indizes
Normalerweise erstellen wir in RDMBS Indizes wie Primärschlüssel, Fremdschlüssel, eindeutiger Schlüssel und Indexschlüssel, um die Suche zu beschleunigen und die Datenbankleistung zu steigern. Im Datenspeicher müssen Sie mindestens einen Index pro Art erstellen (dieser wird automatisch generiert ob Sie ihn mögen oder nicht), da der Datenspeicher Ihre Entität anhand dieser Indizes durchsucht und mir glaubt, dass dies der beste Teil ist. In RDBMS können Sie mit suchen Nicht-Index-Feld, obwohl es einige Zeit dauern wird, aber es wird. Im Datenspeicher können Sie nicht mit Nicht-Index-Eigenschaften suchen.
Count
In RDMBS, es ist viel einfacher zu zählen (*) , sondern in Datenspeichern, Bitte nicht einmal denken , es in gewohnter Weise (Yeah gibt es eine Zählfunktion) , da sie hat 1000 - Grenze , und es wird so viel kostet kleine Opertion als die Einheit , die ist nicht gut, aber wir haben immer eine gute Auswahl, wir können Shard Counters verwenden .
Einzigartige Einschränkungen
In RDMBS lieben wir diese Funktion, oder? Aber der Datenspeicher hat seinen eigenen Weg. Sie können eine Eigenschaft nicht als eindeutig definieren :(.
Abfrage
GAE Datatore bietet eine bessere Funktion viel LIKE (Oh nein! Datenspeicher hat kein LIKE-Schlüsselwort) SQL, das GQL ist .
Daten einfügen / aktualisieren / löschen / auswählen
Dies ist der Punkt, an dem wir alle interessiert sind, da wir in RDMBS eine Abfrage für Einfügen, Aktualisieren, Löschen und Auswählen benötigen, genau wie RDBMS setzen oder in Bezug auf die erhalten schreiben, lesen, Kleine Operationen (lesen Kosten für Datenspeicher - Calls ) und das ist , wo die Datenmodellierung in Aktion. Sie müssen diese Vorgänge minimieren und Ihre App am Laufen halten. Zum Reduzieren des Lesevorgangs können Sie Memcache verwenden .