用于图像的SQLITE Blob OR文件系统

时间:2009-04-16 18:38:54

标签: iphone sqlite filesystems

我正在构建一个基于单个表的应用程序,其中包含带有文本的列。有时,相邻列将具有图像。将此图像作为BLOB存储在SQLITE中是更好还是应该将它们存储在文件系统中并从我的程序中引用它们。 谢谢!

5 个答案:

答案 0 :(得分:3)

从长远来看,文件会减少问题。您真的不希望从数据库服务器提供大量文件,尤其是在扩展时

答案 1 :(得分:3)

假设您要使用的图像不是非常大,并且没有过多的图像,我会使用数据库。

我目前在几个不同的Windows Mobile和WinCE设备上使用Sqlite数据库,其中有超过10,000个小图像存储为blob,它运行良好。

我已经看到类似于我们的软件使用基于文件的图像加载在相同的硬件上运行,而且速度明显变慢。当然这是在WinCE和不同的软件上,所以这不是最好的测试。

我发现单个数据库比许多图像文件更容易使用。

答案 2 :(得分:2)

编辑:

没有意识到你专门针对iPhone环境。在这种情况下,我会使用数据库只是为了简单地将所有内容放在一个地方。您不必担心可扩展性,因为它不像您的iphone将被用作服务器或任何东西。

原始回复:

我没有任何链接支持这一点,但我记得在几项研究中读到,“切断”是1 MB的blob效率。但是,使用足够快的磁盘阵列,这可以移动到10 MB。完全取决于系统。

所以基本上,考虑到你的效率中断,任何小于数据的数据最好由数据库服务,任何更大的数据,只需在数据库中索引并留在文件缓存中。

答案 3 :(得分:2)

我喜欢将图像保存在文件系统中,因为UIImage可以缓存图像文件&必要时自动从内存中转储它们。请注意不要更改或删除加载到UIImage中的图像文件,否则会出现崩溃或其他奇怪的错误。

答案 4 :(得分:1)

这实际上取决于您的申请。将图像存储在数据库中将使您的生活更轻松,因为您可以在单个点轻松访问它们,而不是将它们放在可能丢失的单独文件中。另一方面,许多相当大的图像可能对SQLITE数据库来说太过分了。在你的情况下,我只会在数据库中引用它们。