2009-04-16 15 views
6

Estoy creando una aplicación basada en una sola tabla con una columna con texto. Ocasionalmente, una columna adyacente tendrá una imagen. ¿Es mejor almacenar esta imagen como un BLOB en SQLITE o debería almacenarlos en el sistema de archivos y hacer referencia a ellos desde mis programas? Gracias!SQLITE Blob O sistema de archivos para imágenes

+0

Solo por aclaración: esto es para una aplicación de iPhone, ¿correcto? – AnonJr

Respuesta

2

EDIT:

dimos cuenta de que significaba para el medio ambiente específicamente iPhone. En ese caso, usaría DB solo por la simplicidad de tener todo el contenido en un solo lugar. No tendrá que preocuparse por la escalabilidad porque no es como si su iPhone se utilizara como servidor o algo así.

Respuesta Original:

no tengo ningún enlace a apoyar esto, pero yo no recuerdo haber leído en varios estudios que el "cortado" es de 1 MB para la eficiencia blob. Pero esto puede moverse hasta 10 MB con una matriz de discos lo suficientemente rápida. Totalmente depende del sistema

Básicamente, dado su límite de eficiencia, cualquier dato menor que eso sería mejor atendido por la base de datos, cualquier cosa más grande, solo indexe la base de datos y déjela en una memoria caché de archivos.

+0

Está usando el iphone, por lo que el disco no es actualizable. – Kevlar

+0

ahh, no vi esa parte. –

1

Realmente depende de su aplicación. Tener las imágenes almacenadas en una base de datos le facilitará la vida ya que las tiene fácilmente accesibles en un solo punto en lugar de tenerlas en archivos separados que podrían haber desaparecido. Por otro lado, muchas imágenes, que son bastante grandes, podrían ser demasiado para una base de datos SQLITE. En su situación, simplemente los referenciaría en la base de datos.

3

Los archivos le causarán menos problemas a largo plazo. Realmente no desea servir toneladas de archivos de su servidor de base de datos especialmente cuando escala

+1

Los archivos facilitarán la carga de las imágenes de manera eficiente. Si usas [UIImage imageNamed: @ "blah.png"], cargará la imagen en la RAM purgable y la cargará/descargará del archivo según sea necesario (es decir, cuando ya no se pueda ver y tengas poca memoria, se purgará y luego vuelto a cargar cuando se puede ver de nuevo) – Gabe

+0

Vaya ... ¿entonces la API está acoplada al sistema de archivos y no a un tipo abstracto? ... –

2

Me gusta mantener las imágenes en el sistema de archivos porque UIImage puede almacenar en caché los archivos de imagen &, volcarlos de la memoria automáticamente cuando sea necesario. Solo tenga cuidado de no cambiar o eliminar un archivo de imagen que se carga en un UIImage o se bloqueará u otros errores extraños.

3

Suponiendo que las imágenes que va a utilizar no son extremadamente grandes y que no hay un número exorbitante de ellas, me gustaría ir con la base de datos.

Actualmente estoy usando una base de datos Sqlite en varios dispositivos Windows Mobile y WinCE con más de 10,000 imágenes pequeñas almacenadas como blobs y está funcionando muy bien.

He visto un software similar al nuestro ejecutándose en el mismo hardware utilizando la carga de imágenes basada en archivos y fue significativamente más lento. Por supuesto, esto fue en WinCE y software diferente, por lo que esa no es la mejor prueba.

Encuentro que la base de datos individual es mucho más fácil de trabajar que muchos archivos de imagen.

Cuestiones relacionadas