Sto provando a creare una sorta di app / forum di collaborazione con threading illimitato; nessuna differenza tra post, discussioni o forum. Qualsiasi post può avere una risposta illimitata, e lo stesso post può avere diversi bambini, che hanno diversi figli, e così via. Ogni post può anche avere diversi genitori. Il risultato finale sarebbe più simile a una mappa mentale di un forum, anche se l'uso come forum regolare sarebbe anche possibile.
Come vedo le persone che la usano: dire che un team discute la realizzazione di un sito web del progetto. Dopo alcuni thread, la conversazione si divide in conversazioni parallele su coding & design. Poi, dopo un po ', i due nodi finali vengono collegati. La conversazione continua per un po '... Anche una terza conversazione non correlata sui siti web in stile bauhaus viene collegata, per riferimento ... ecc.
In questo momento sto provando a costruire una dimostrazione di concetto, e sono a corto di scelta sulla progettazione del database da scegliere.
A quanto ho capito, ci sono due possibili modelli: il modello di lista di adiacenza e il modello di serie nidificato. E a quanto ho capito, il set annidato è solitamente preferito. Ho creato un'app basata sul modello del set annidato e so perché è più utile, nella maggior parte dei casi.
Qualcosa mi infastidisce qui però: dal momento che ho intenzione di avere molti utenti che aggiungono molte foglie su molti nodi diversi, e dal momento che il N.S.M. deve spostare a sinistra oa destra un intero mazzo di foglie ogni volta che viene aggiunto un fratello, quale sarebbe il mio schema di database migliore? Non intendo ancora rilasciare un'applicazione completamente ottimizzata, ma mi piacerebbe comunque iniziare con il piede giusto.
Ecco alcuni dei miei pensieri, vorrei opinioni su di loro:
- Lascia molto spazio tra i nodi, così i nodi dei genitori sarebbero numerati 0, 10000, 20000, ecc. Questa non è una soluzione elegante, ma potrebbe funzionare
- Tornare al modello dell'elenco di adiacenza e utilizzare una tabella node_node per collegare i nodi. Meno efficiente nel recupero degli alberi, ma più efficiente nell'aggiunta / eliminazione dei nodi
- Elimina completamente i database e torna ai file, con un mix di directory / xml per memorizzare i dati. Non ho mai lavorato con i filesystem per recuperare e cercare grandi quantità di dati, non so come funzionerebbe fuori
- C'è qualche schema DB più adatto al mio caso di cui sei a conoscenza?
Grazie in anticipo