Supponiamo di avere il concetto di archiviazione gerarchico di "Foo". "Foo" contiene un id, vari valori e zero a molti "Foo". Ovviamente, a sua volta, gli elementi figli possono contenere zero a molti Foos. I dati sono puramente gerarchici: un dato Foo apparterrà a zero a uno Foos, e quindi non c'è mai una preoccupazione di più genitori.
I dati sono memorizzati in una sorta di formato dati (JSON, BSON, XML, ecc.) all'interno di una tecnologia di archiviazione (come MongoDB, file flat, ecc.). Supponiamo che entrambi siano sconosciuti, quindi è auspicabile un'architettura agnostica del sistema.
Quali principi / scelte di architettura detterebbero se gli oggetti dovessero essere archiviati gerarchicamente (direttamente nel supporto di memorizzazione con bambini esistenti come bambini effettivi) o in modo piatto, con tutti i genitori e i bambini allo stesso livello (e riferimenti ai bambini tramite id) .
La mia inclinazione è che l'archiviazione degli oggetti nel modello gerarchico naturale è l'ideale, tuttavia sono incerto se questo è probabilmente un problema di prestazioni (se è necessario trovare un bambino specifico, che richiederebbe una sorta di ricerca attraverso la struttura ad albero?).
Ho visto le API Web esposte in entrambi i modi e gli archivi di codice che si occupano di entrambi i moduli. Tuttavia, non riesco a trovare i punti decisionali / le questioni di architettura formalmente trattate.