我正在构建一个基于单个表格的应用程序,其中一列包含文本。偶尔,相邻的列会有一个图像。在SQLITE中将此图像存储为BLOB更好,还是应该将它们存储在文件系统中,并从我的程序中引用它们?
谢谢!
我正在构建一个基于单个表格的应用程序,其中一列包含文本。偶尔,相邻的列会有一个图像。在SQLITE中将此图像存储为BLOB更好,还是应该将它们存储在文件系统中,并从我的程序中引用它们?
谢谢!
长远来看,文件会给你带来较少的问题。尤其是在你进行扩展时,你真的不想从数据库服务器上提供大量文件。
编辑:
我没有意识到您特别指的是iPhone环境。在这种情况下,出于将所有内容放在一个地方的简单性考虑,我会使用数据库。您不必担心可扩展性,因为您的iPhone不会像服务器一样被用来。
原始回复:
我没有任何链接支持这一点,但我记得在几项研究中读到“截止”的大小为1 MB以获得blob的效率。但是,如果磁盘阵列足够快,则可以将其提高到10 MB。完全取决于系统。
因此,基本上,根据您的效率截止时间,任何小于该值的数据都应该由数据库提供服务,任何大于该值的数据都应该在数据库中进行索引并保留在文件缓存中。
我喜欢将图像存储在文件系统中,因为UIImage可以自动缓存图像文件并在必要时自动从内存中卸载它们。只需小心不要更改或删除加载到UIImage中的图像文件,否则会导致崩溃或其他奇怪的错误。
这实际上取决于您的应用程序。将图像存储在数据库中将使您的生活更加轻松,因为您可以在单个位置轻松访问它们,而不是将它们放在可能会丢失的单独文件中。另一方面,许多相当大的图片可能会对 SQLITE 数据库造成太大压力。在您的情况下,我建议只是在数据库中引用它们。