Post molto bello sulla data visualization

Semplicemente ve lo segno e vi dico di andarlo a leggere:

http://www.codinghorror.com/blog/archives/000926.html

Il post di oggi di Atwood è nel complesso una delle migliori raccolte di link sul tema della data visualization che io ricordi, semplicemente navigare sui primi 2 link esposti vuole dire perdersi in una quantità di immagini e modalità di visualizzazione dei dati per cui spendere un mattino a bocca aperta è un attimo. E non dite che non vi avevo avvertito.

Scrittura di XML su database, tempi e modi

L'applicazione creata e mantenuta dal mio gruppo di lavoro fa un uso molto pesante di dati XML salvati sul database, fino ad ora abbiamo sempre usato SQL2000 ma dalla prossima release manterremo solo la compatibilità con SQL 2005 e quindi finalmente diventa possibile usare qualcuna delle sue nuove feature.

Ho quindi scritto un piccolo client di test per testare il salvataggio e la lettura di 10000 record XML (con lunghezza variabile da 52 a 136588 byte ed una media di 3373) sui diversi tipi di campi che si possono usare su SQL 2005. Questi i risultati:

Campo di tipo NText: scrittura in 4.9 secondi, lettura 2.0
Campo di tipo NVarChar(MAX): scrittura in 3.6 secondi, lettura 2.1
Campo di tipo Xml: scrittura in 14.1 secondi, lettura 2.3

A questo punto ho provato a settare l'opzione "text in row" per la mia tabella in cui ci sono gli NText, rendendola quindi equivalente ad un NVarChar(MAX) come utilizzo fisico del disco

Campo di tipo NText con text in row abilitato: scrittura in 3.6 secondi, lettura 2.0

Quindi il carico necessario, lato SQL Server, per fare il parse di un XML sembra essere molto elevato e la gestione "fisica" dei dati su SQL server sembra impattare parecchio. Ho provato anche a fare un'ulteriore test in cui, invece di memorizzare XML memorizzavo uno stream compresso mediante la libreria di compressione, per cercare di minimizzare lo spazio ed il costo di scrittura (includendo anche i tempi di compressione/decompressione per avere dati comparabili):

Campo di tipo Image in cui scrivo XML compresso con GZip: scrittura 5.2 secondi, lettura 1.9
Campo di tipo Image in cui scrivo XML compresso con Deflate: scrittura 4.9 secondi, lettura 1.4

E' da notare che il campo XML non aveva schema associati dato che gli XML di partenza erano molto vari.