在sqlite的或只是它的一个引用存储图像?(Store images in sqlite or j

2019-09-22 06:25发布

我曾夫妇使用coredata应用程序,我被存储sqlite的图像,但地方我发现,这是不好的。 我搜索网,但所有我发现是这样的建议:

  • 图像尺寸<在同一个表100KB存储作为相关数据
  • 图像尺寸<在一个单独的表1MB商店经由关系附接,以避免不必要地加载
  • 图像大小> 1MB在磁盘上存储和引用它核心数据的内

所以我的问题是:什么是节省sqlite的分贝的形象的优劣NSData ,虽然图像保存在文件系统中存储的图像只是一个参考?

Answer 1:

苹果公司提供他们的手册中关于这个主题的一些指导核心数据性能 。 在一般情况下,虽然SQLite的尺度非常好,可以处理那些在轻松大小数千兆字节数据库,大型的二进制块都不可查询或可转位,并用很少的回报膨胀的数据库的大小。

如果你的目标的iOS 4以上,你可以设置“ 允许外部二进制数据存储在包含这样的数据,以及核心数据将分开它们自动存储在文件系统中(如果它认为适当)的属性”标志,并自动管理数据存储中的链接数据。



Answer 2:

优点:不是很确定,但我能想到几个存储的好处的只是在数据库链接。

  1. 与文件系统中的本地代码的互动会比SQLite的图像抓取速度更快。 (总体更快的性能)

  2. 清洁和可扩展的数据库 - (与大小为关注,迁移会更容易)



Answer 3:

您可能要检查的答案,我得到一个类似的,如果不一样,话题。 因为你,我只找到人给意见,但没有人真正提供了标杆和真正的技术答案。

例如提供对为什么它是不可取的图像存储在CoreData?

除此之外,经过我的应用程序已经实现与数据库中的所有图像,并运到应用商店,我可以告诉你,事情更容易,如果你使用的iCloud。 如果您在使用的UITableView小图像与缩略图标,就可以完全避免异步图像加载。

只有一个建议,提供每个图像大小的实体,而存储所有在连接到主实体的一组。

我发现,随着使用的iCloud唯一的缺点,是每个I改变图像时所产生的较大的事务日志。 但在我的情况下,图像小,并且更新图像的需要是罕见的。 此外,iCloud的+ CoreData的时刻是相当马车,所以我发货前删除它,所以目前它是真的不是我的问题。



文章来源: Store images in sqlite or just a reference to it?