Se memorizzi xml in una colonna digitata xml, i dati non verranno memorizzati come testo semplice, come nel caso di nvarchar, sarà archiviato in una sorta di albero di dati analizzato, che a sua volta sarà più piccolo del versione xml non analizzata. Ciò non solo riduce la dimensione del database, ma offre altri vantaggi, come la convalida, la facile manipolazione, ecc. (Anche se non stai usando nessuno di questi, sono comunque disponibili per un uso futuro).
D'altro canto, il server dovrà analizzare i dati al momento dell'inserimento, il che probabilmente rallenterà il database - è necessario prendere una decisione sulla velocità rispetto alle dimensioni.
Edit:
Personalmente, penso che i dati presenti nel database devono essere immagazzinati come XML solo quando ha una struttura che è difficile da implementare in un modello relazionale, ad esempio, layout, descrizioni di stile ecc. In genere ciò significa che non ci saranno molti dati e la velocità non è un problema, quindi sono state aggiunte funzionalità xml, come la convalida dei dati e la capacità di manipolazione (anche, non da ultimo, la possibilità di fare clic sul valore in studio di gestione e vedere xml formattato - mi piace molto quella funzione!), superare i costi.
Non ho esperienza diretta nella memorizzazione di grandi quantità di xml nel database e non lo farei se avessi l'opzione, dal momento che è quasi sempre più lento di un modello relazionale, ma se questo fosse il caso, suggerirei profilare entrambe le opzioni e scegliere tra dimensioni e velocità che meglio si adattano alle tue esigenze.
fonte
2009-02-05 06:50:49
Sei sicuro che la dimensione del DB aumenti? È contrario a ciò che ha affermato Saulous. È importante per me dal momento che ho un modulo di registrazione che scrive su un DB e qualcuno del mio team ha proposto di conservare alcuni dettagli del registro in XML. Se DB diminuisse, potrei prendere in considerazione la conversione in XML, ma sicuramente non se le dimensioni del DB aumentano. –
Vedere le figure nel mio esempio (confrontare il valore dei dati prima e dopo la conversione). Nel mio caso la dimensione del DB è stata aumentata a 1,7 volte. – FoxyBOA