PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Memorizzazione di stringhe binarie lunghe (dati grezzi).

Per quanto riguarda PostgreSQL è interessato, digita text è fuori questione. È più lento, utilizza più spazio ed è più soggetto a errori di bytea allo scopo.

Ci sono fondamentalmente 3 approcci:

  1. Usa il tipo bytea (fondamentalmente l'equivalente pg del tipo BLOB SQL).

  2. Usa "oggetti di grandi dimensioni ".

  3. Archivia i BLOB come file nel filesystem e salva solo il nome del file nel database.

Ognuno ha i suoi vantaggi e svantaggi.

1. è piuttosto semplice da gestire ma richiede più spazio su disco. Sono necessarie alcune decodifica e codifica, il che lo rende anche lento. Le dimensioni dei backup crescono rapidamente!

2. è leggermente imbarazzante nella gestione, ma hai la tua infrastruttura per manipolare i BLOB, se necessario. E puoi eseguire più facilmente backup separati.

3. è di gran lunga il modo più veloce e utilizza il minimo spazio su disco. Ma non fornisce l'integrità referenziale che ottieni quando memorizzi all'interno del database.

Ho una serie di implementazioni come quella per i file di immagine:memorizza una piccola miniatura in un campo di byte per l'integrità referenziale e un riferimento rapido. Memorizza l'immagine originale come file nel file system. Ovviamente, devi riflettere su quando e come eliminare i file obsoleti, come eseguire il backup dei file esterni e così via.