Piccoli oggetti (che 500Kb) si qualificano come funzionano bene come bytea. La principale limitazione della dimensione è che occorrerà materializzare l'intero campo in memoria prima sul server e poi sul client (ci sono modi per farlo, ma sono limitati). Per mezzo megabyte, non dovrebbe essere un problema, ma se inizi a memorizzare oggetti molto più grandi potrebbe essere necessario prendere in considerazione.
Memorizzarlo nel file system e archiviare la posizione (o memorizzarlo con una chiave primaria surrogata da una sequenza SERIAL) è un buon modo per gestire file di grandi dimensioni, e ovviamente è possibile applicarlo anche qui. I lati negativi sono che perdi l'integrità della transazione (non puoi essere sicuro che sia il filesystem che il database sono stati aggiornati, quindi devi implementare qualche tipo di strumento di verifica da eseguire regolarmente per confrontarli), e probabilmente più importante che tu possa ' t ottenere backup coerenti (cosa succede se il file è stato sottoposto a backup e non il db record? o viceversa) Ci sono anche dei metodi per affrontare questo, ovviamente, ma diventa molto più complesso che mantenere i dati memorizzati in la tavola.
fonte
2010-12-30 09:49:10