Ich entwickle eine Anwendung für Google App Engine, die BigTable für ihren Datenspeicher verwendet.Baumstrukturen in einer Nosql-Datenbank
Es ist eine Anwendung zum gemeinsamen Schreiben einer Geschichte. Es ist ein sehr einfaches Hobby-Projekt, an dem ich nur zum Spaß arbeite. Es ist Open Source und Sie können es hier sehen: http://story.multifarce.com/
Die Idee ist, dass jeder einen Absatz schreiben kann, der dann von zwei anderen Personen validiert werden muss. Eine Geschichte kann auch in jedem Absatz verzweigt werden, so dass eine andere Version der Geschichte in eine andere Richtung weitergehen kann.
Stellen Sie sich folgende Baumstruktur:
Jede Zahl wäre ein Absatz sein. Ich möchte in der Lage sein, alle Absätze in jeder einzelnen Storyline auszuwählen. Grundsätzlich sind diese einzigartigen Handlungsstränge (2, 7, 2); (2, 7, 6, 5); (2, 7, 6, 11) und (2, 5, 9, 4). Ignoriere, dass der Knoten "2" zweimal erscheint, ich habe einfach ein Baumstrukturdiagramm von Wikipedia genommen.
Ich habe auch ein Diagramm einer vorgeschlagenen Lösung: https://docs.google.com/drawings/edit?id=1fdUISIjGVBvIKMSCjtE4xFNZxiE08AoqvJSLQbxN6pc&hl=en
Wie kann ich eine Struktur ist eine effiziente Leistung eingerichtet sowohl für das Schreiben, sondern vor allem zum Lesen?
Yup, ich habe bereits gewählt, keine Adjazenzlisten (zu hohe Lesekosten) oder verschachtelte Sätze (zu hohe Schreibkosten) zu verwenden. Deine Lösung klingt gut. Ich glaube, ich hatte Angst, eine Liste mit 200 Schlüsseln auf einer Entität zu führen, aber das sollte kein Problem sein, denke ich. Ich habe meine Lösung bereits implementiert und funktioniert auch ohne Performance-Probleme, also werde ich sie wahrscheinlich für eine Weile verwenden und sehen, ob es sinnvoller ist, zu Ihrer Lösung überzugehen. – Blixt
Danke für die Erklärung, es ist sehr hilfreich. –