Sto sviluppando un'applicazione per Google App Engine che utilizza BigTable per il suo datastore.Strutture ad albero in un database nosql
È un'applicazione che consente di scrivere una storia in modo collaborativo. È un progetto di hobby molto semplice a cui sto lavorando solo per divertimento. È open source e puoi vederlo qui: http://story.multifarce.com/
L'idea è che chiunque può scrivere un paragrafo, che poi deve essere convalidato da altre due persone. Una storia può anche essere ramificata in qualsiasi paragrafo, in modo che un'altra versione della storia possa continuare in un'altra direzione.
Immaginate la seguente struttura ad albero:
Ogni numero sarebbe un paragrafo. Voglio essere in grado di selezionare tutti i paragrafi in ogni trama unica. Fondamentalmente, quelle linee di storia uniche sono (2, 7, 2); (2, 7, 6, 5); (2, 7, 6, 11) e (2, 5, 9, 4). Ignora che il nodo "2" appare due volte, ho appena preso un diagramma della struttura ad albero da Wikipedia.
Ho anche fatto un diagramma di un soluzione proposta: https://docs.google.com/drawings/edit?id=1fdUISIjGVBvIKMSCjtE4xFNZxiE08AoqvJSLQbxN6pc&hl=en
Come posso creare una struttura è la prestazione efficiente sia per la scrittura, ma soprattutto per la lettura?
Sì, ho già scelto di non utilizzare elenchi di adiacenze (costo di lettura troppo alto) o set nidificati (costo di scrittura troppo alto). La tua soluzione suona bene. Immagino di aver paura di tenere una lista di 200 chiavi su un'entità, ma non dovrebbe essere un problema, immagino. In realtà ho già implementato la mia soluzione e funziona anche senza problemi di prestazioni, quindi probabilmente la userò per un po 'e vedrò se ha più senso passare alla soluzione. – Blixt
Grazie per la spiegazione, è molto utile. –