View Full Version : [SQL] Campo Blob
MaxDembo81
12-11-2010, 09:16
Salve a tutti,
ho un'applicazione client-server dove in poche parole i pc client inviano delle immagini al server (in pacchi da 50/100 alla volta) via FTP e ricevono (ma non sempre) un PDF (sempre mandato via FTP).
Dall'alto della mia incommensurabile ignoranza io non avevo mai sentito parlare dei campo BLOB. Poi ieri un mio amico mi ha fatto vedere una sua webapp dove i PDF erano salvati direttamente sul database oracle (nel mio caso sarebbe sql server...).
Domanda: pregi e difetti del blob? Visto così potrei cambiare radicalmente il problema facendo scrivere direttamente l'immagine sulla banca dati riducendo i tempi, gli errori, il problema di dove vanno a finire queste immagini, i tempi morti etc...
grazie per le risposte
Difetti qualcuno, pregi pochi.
Il difetto principale e' il non poter gestire i file direttamente da sistema operativo.
Senza un decoupling tra questi file e il database non si possono p.es. gestire i backup indipendentemente, e tutte le volte si e' costretti ad un unico backup quando magari si potrebbero avere politiche diverse data la natura diversa dei dati.
Sotto Oracle c'e' una soluzione brillante, le External Tables
Una External Table e' di fatto una directory di file system, nella quale ci sono dei file. Mediante un oppotruno descrittore si mappa questa directory direttamente dal database, e la si vedra' dall'interno come una tabella particolare, su cui si potra' agire tranquillamente con le SELECT.
Sotto altri database la soluzione preferita e' la solita della colonna di tipo stringa con contenuto il nome del file.
MaxDembo81
12-11-2010, 17:08
però facendo scrivere (se è possibile eh, sto sparando) il record direttamente dal computer A sul server B evito di dover spostare fisicamente l'immagine da A a B no?
Direi, fintantoche non senti il bisogno di dover cliccare su un file per vederne un contenuto direttamente sul server, e fino a che ti sta bene avere un database che potenzialmente puo' crescere davvero tanto in dimensioni, allora il blob va bene.
Trasferire i dati da client a server lo devi fare comunque.
Un conto e' via FTP, un altro e' durante la insert di un database.
Per i problema FTP su dove vanno a finire i file c'e' il server a gestire i folder.
Ridurre i tempi usando i BLOB al posto di FTP non vedo come.
MaxDembo81
12-11-2010, 21:09
Beh perchè oggi il programma lato "server" chiamiamolo così fa una stampa in pdf da passare in tempo reale al "client".
Questo vuol dire che gira un thread che controlla ogni 5 secondi se c'è un nuovo file pdf, se sì li prende e lo manda via ftp al vero server e scrive un record su un database dicendo "ehi client pippo il tuo pdf è pronto".
Dall'altra parte c'è pippo che controlla ogni tot secondi il database e se legge che è pronto sempre via ftp lo va a prendere, se lo copia sul suo HD e lo stampa.
Tutto questo tempo connettiti->trasferisci->stampa magari potrebbe ridursi.
Se poi mi dici che non ci son vantaggi tangibili allora nulla :D
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.