2009-04-16 17 views
6

Sto costruendo un'applicazione basata su una singola tabella con una colonna con testo. Occasionalmente, una colonna adiacente avrà un'immagine. È meglio memorizzare questa immagine come un BLOB in SQLITE o dovrei memorizzarli sul file system e farli riferimento ai miei programmi. Grazie!SQLITE Blob OR file system per immagini

+0

Solo per chiarimenti - questo è per un'app per iPhone, corretto? – AnonJr

risposta

2

EDIT:

abbiamo capito che volevi dire per l'ambiente iPhone in particolare. In tal caso, userei il DB solo per la semplicità di avere tutto il contenuto in un unico posto. Non ti devi preoccupare della scalabilità perché non è come il tuo iPhone sarà usato come server o altro.

risposta originale:

Non ho alcun legame a sostegno di questo, ma io non ricordo di aver letto in diversi studi che la "tagliata" è di 1 MB per l'efficienza blob. Ma questo può essere spostato fino a 10 MB con un array di dischi abbastanza veloce. Dipende totalmente dal sistema.

Quindi, dato il limite di efficienza, qualsiasi dato più piccolo di quello sarebbe meglio servito dal DB, qualcosa di più grande, basta indicizzare nel DB e lasciare in una cache di file.

+0

Sta usando iPhone, quindi il disco stesso non è aggiornabile. – Kevlar

+0

ahh, non ho visto quella parte. –

1

Dipende davvero dalla vostra applicazione. Avere le immagini memorizzate in un database renderà la tua vita più facile in quanto li avrai prontamente accessibili in un singolo punto invece di averli in file separati che potrebbero scomparire. D'altra parte, molte immagini, che sono piuttosto grandi, potrebbero rivelarsi troppo per un database SQLITE. Nella tua situazione vorrei semplicemente fare riferimento a loro nel database.

3

I file causeranno meno problemi a lungo termine. Davvero non vuoi servire moltissimi file dal tuo server di database specialmente quando ridimensiona

+1

I file semplificheranno il caricamento delle immagini in modo efficiente. Se usi [UIImage imageNamed: @ "blah.png"] caricherà l'immagine in RAM non cancellabile e la caricherà/scaricherà dal file quando necessario (cioè quando non è più visualizzabile e hai una memoria ristretta, viene eliminata e quindi ricaricato quando è nuovamente visualizzabile) – Gabe

+0

Wow ... quindi l'API è accoppiata al file system e non un tipo astratto? ... –

2

Mi piace conservare le immagini nel file system perché UIImage può memorizzare nella cache i file di immagine & scaricandoli automaticamente dalla memoria quando necessario. Basta fare attenzione a non modificare o eliminare un file immagine che viene caricato in una UIImage o si verificherà un arresto anomalo o altri bug strani.

3

Supponendo che le immagini che si intende utilizzare non siano estremamente grandi e che non esista un numero esorbitante di esse vorrei andare con il database.

Attualmente sto utilizzando un database Sqlite su diversi dispositivi Windows Mobile e WinCE con oltre 10.000 piccole immagini memorizzate come BLOB e funziona perfettamente.

Ho visto un software simile al nostro in esecuzione sullo stesso hardware utilizzando il caricamento dell'immagine basato su file ed è stato notevolmente più lento. Naturalmente questo era su WinCE e diversi software, quindi non è il test migliore.

Trovo che il singolo database sia molto più facile da utilizzare rispetto a molti file di immagine.

Problemi correlati