加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用app:文件或sqlite数据库捆绑照片的最佳方法?

发布时间:2020-12-12 18:54:46 所属栏目:百科 来源:网络整理
导读:假设我有一个应用程序,可以让您浏览Sqlite数据库中找到的汽车列表.当您点击列表中的汽车时,它会打开一个包含汽车描述和汽车照片的视图. 我的问题是:我应该将照片作为特定汽车行中的二进制数据列保存在数据库中,还是应该将照片放在资源目录中的某个位置?哪
假设我有一个应用程序,可以让您浏览Sqlite数据库中找到的汽车列表.当您点击列表中的汽车时,它会打开一个包含汽车描述和汽车照片的视图.

我的问题是:我应该将照片作为特定汽车行中的二进制数据列保存在数据库中,还是应该将照片放在资源目录中的某个位置?哪个更好?在二进制数据列的大小方面,Sqlite是否有任何限制?

数据库几乎只能读取并与应用程序捆绑在一起(因此用户不会插入任何汽车及其照片).

解决方法

这是一个经过深思熟虑的决定.在我看来,这是个人品味的问题.非常像 vim / emacs,windows / linux类的辩论.虽然不是那么激烈.

双方各有利弊.将它们存储在数据库中时,您无需担心文件名和位置.管理也更容易(你删除包含BLOB的行,就是这样).但是文件也很难访问,你可能需要以某种方式编写包装代码(例如,某些“download.php”链接).

另一方面,如果二进制数据存储为单独的文件,则管理更复杂(您需要首先通过构造文件名从磁盘打开正确的文件).在大型数据集上,当一个目录中的文件数量变得非常大时,您可能会遇到文件系统瓶颈(但这可以通过轻松创建子目录来防止).但是,如果数据存储为文件,则替换它们会变得非常容易.其他人也可以在不需要知道内部的情况下访问它(例如,想象一下在定制他/她的UI时乐趣的用户).

我确信还有其他要点,但我现在不想写太多……

我想说:想想你想对照片做什么操作(以及两种存储方法的局限性),并从那里做出明智的决定.没有太多可能出错的地方.

TX-Log和FS-Journal

在进一步调查中,我发现了一些更多信息

> SQLite使用事务日志
> Android在系统挂载点上使用YAFFS,在SD卡上使用VFAT.两者都是(尽我所知)没有经历过.

我不知道SQLite的TX-Log的确切实现,但是可以预期每个INSERT / UPDATE操作将在磁盘上执行两次写操作.我可能弄错了(这在很大程度上取决于事务的实现),但坦率地说,我不能轻易浏览SQLite源代码.我觉得我们在这里开始分裂头发(过早优化任何人?)……

由于两个文件系统(YAFFS和VFAT)都没有记录,因此您没有其他“隐藏”写入操作.

这两点支持文件系统.

请注意,这些信息是用一粒盐.我只浏览了YAFFS日记和sqlite事务日志的Google结果.我可能错过了一些细节.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读