Nelle origini nebulose della nostra piattaforma, abbiamo deciso che avremmo avuto bisogno di alcune strutture gerarchiche di dati memorizzate nell'RDBMS. Le relazioni tra i nodi sono state memorizzate tramite una colonna "parent_id" che faceva riferimento a un'altra riga nella stessa tabella. Anche se a prima vista può sembrare un po 'sensato, la realtà si è rivelata molto diversa.
Ora mi è stato assegnato il compito di implementare alcune funzionalità che richiedono il superamento della gerarchia. In particolare, ho bisogno di creare un elenco di tutti i discendenti di un nodo per un determinato nodo. Ciò sarebbe banale se le relazioni fossero memorizzate come "parent - > bambini 'ma come le relazioni sono memorizzate come' figlio - > (unico) genitore 'Non riesco a capire un modo performante per farlo (l'approccio ingenuo è O (n ^ 2), credo).
Avendo affrontato questo argomento per alcune ore, il pensiero corrente è che dovremmo rifattorizzare il database, ma se qualcuno lo ha sperimentato prima sarebbe bello sapere della tua soluzione. Altrimenti, che questo sia un avvertimento per chiunque cerchi di salvare un albero in questo modo, se mai hai intenzione di doverlo attraversare!