Per quanto riguarda PostgreSQL, il tipo text
è fuori questione. È più lento, utilizza più spazio ed è più soggetto a errori rispetto a bytea
per lo scopo.
ci sono fondamentalmente 3 approcci:
uso di tipo bytea (fondamentalmente il pg equivalente di tipo SQL blob)
uso "large objects"
blob Store come file nel filesystem e memorizza solo il nome file nel database.
Ognuno ha i suoi vantaggi e svantaggi.
è piuttosto semplice da gestire ma richiede più spazio su disco. È richiesta una certa decodifica e codifica, il che lo rende anche slow-ish. I backup crescono rapidamente in dimensioni!
è un po 'difficile da gestire, ma hai la tua infrastruttura per manipolare i BLOB - se necessario. E puoi fare più facilmente backup separati.
è di gran lunga il modo più veloce e utilizza il minor spazio su disco. Ma non fornisce l'integrità referenziale che si ottiene quando si archivia nel database.
Ho un certo numero di implementazioni come quella per i file immagine: memorizzare una piccola miniaturain un bytea-campo per l'integrità referenziale e rapida consultazione. Salva l'immagine originale come file nel file system. Naturalmente, è necessario riflettere su quando e come eliminare i file obsoleti, come eseguire il backup dei file esterni e così via.
fonte
2011-09-16 02:50:10
Ottima risposta. Grazie. – teustis
Esistono dati recenti che confrontano questi approcci? Sarebbe meraviglioso se ci fossero dei confronti oggettivi. – beldaz