Wir haben eine Anforderung in GAE-Datenspeicher zu implementieren. Es gibt eine Reihe von Dokumenten (in Millionen) und jedes Dokument hat einen Eigentümer, einige Kommentare und Revisionen.Verwenden von GAE-Datastore-Beziehung im Vergleich zu flachem Design
Wenn der Eigentümer des Dokuments die Organisation verlässt, müssen wir die Eigentümerschaft des Dokuments auf die Person ändern, die die letzte Überarbeitung durchgeführt hat. Außerdem müssen wir die Überarbeitungen und Kommentare für jedes Dokument beibehalten. Diese Besitzänderung muss von einem Job implementiert werden, der jedes einzelne Dokument einzeln verarbeitet.
Ist es der richtige Ansatz, Eltern-Kind-Beziehungen zwischen den Entitäten Document, Comment und Revision wie Document die Eltern mit Comment und Revision als Kind zu haben? ODER in typischer NoSql Weise müssen wir die Tabelle abflachen und eine einzelne Entität bilden?
Die typische NoSQL-Implementierung muss nur eingefügt und gelesen werden, aber keine Updates. Funktioniert der Google-Datenspeicher? Bitte klären Sie.
Unsere Forschung sagt, dass wir Beziehung haben können, aber das wird mehr wie RDBMS aussehen.
Diese Frage viel zu breit ist, beabsichtigen. Sie sollten versuchen, zu modellieren und zu prototypieren. Die kommen mit einigen spezifischen Implementierungsfragen zurück. Wenn Sie Beziehungen besitzen, die geändert werden können ** Definieren Sie dies nicht mit Eltern, die im Schlüssel definiert sind. Dies bedeutet, dass Sie das Eigentumsrecht nicht ändern können. Sie müssen dann jedoch neue Entitäten kopieren und erstellen. Struktur und Beziehungen sind in Ordnung. Wichtig ist, dass Sie Ihre Zugriffsmuster betrachten und Entitäten für die Aktivität optimieren. Wenn Ihre Abfragen normalerweise Joins bedeuten, werden Zwischenelemente, die alles speichern, was Sie benötigen, wichtig. –
Können wir Ihr Dokumentenformat sehen, das in der Frage bearbeitet wurde?Persönlich denke ich, dass das von NoSQL unterstützte schemafreie Format mehr Probleme verursacht als es löst - wenn Sie also nicht die rohe Geschwindigkeit von NoSQL benötigen, gehen Sie mit einem traditionellen RDBMS und modellieren Sie dieses mit Tabellen. – halfer
@halfer außer ich würde den Datenspeicher nicht als schemafrei klassifizieren –