Ho un numero di oggetti diversi con un numero variabile di attributi. Fino ad ora ho salvato i dati in file XML che consentono facilmente un numero di attributi in continuo cambiamento. Ma sto cercando di spostarlo in un database.Come memorizzare i dati con il numero dinamico di attributi in un database
Quale sarebbe il modo preferito per memorizzare questi dati?
Poche strategie ho identificato finora:
- Avere un unico campo denominato "attributi" nella tabella dell'oggetto e memorizzare i dati serializzati o json'ed in là.
- Memorizzare i dati in due tabelle (oggetti, attributi) e usare un terzo per salvare le relazioni, rendendolo una vera relazione n: m. Soluzione molto pulita, ma probabilmente molto costosa per recuperare un intero oggetto e tutti i suoi attributi
- Identificazione di attributi di tutti gli oggetti in comune e creazione di campi per questi nella tabella dell'oggetto. Memorizza gli attributi rimanenti come dati serializzati in un altro campo. Questo ha un vantaggio rispetto alla prima strategia, rendendo più facili le ricerche.
Qualche idea?
Qual è la motivazione per passare a una soluzione db? Hai detto di seguito che la velocità è la tua principale preoccupazione. Pensi che una soluzione DB sarebbe più veloce del tuo attuale approccio XML? –
Una quarta strategia mi è venuta in mente con DVK che proponeva lo stesso: Memorizzazione di attributi comuni nella tabella degli oggetti e memorizzazione di tutti gli altri utilizzando una relazione 1: n una seconda tabella. Sembra il miglior compromesso per velocità, flessibilità e soluzione pulita (@Tobiask) –
@Corey, no non lo faccio. La soluzione XML è incredibilmente veloce al momento e non credo che un DB possa tenere il passo con questo. È più un esercizio per il mio, cercando di rendere il sistema più flessibile per quanto riguarda le opzioni di archiviazione e allo stesso tempo migliorare le mie competenze MySQL. –