通过BLOB在SQLite数据库中存储非常小的音频/图像文件?

时间:2016-08-04 19:41:39

标签: database image sqlite audio blob

背景资讯

我是Android开发新手,我正在为我的客户创建一个Android应用程序,我正在尝试找出为我的应用程序存储大量音频和图像文件的最佳方法。该方法需要满足以下要求:

1)允许应用程序的用户将自己的图像和音频文件添加到应用程序(使用SQLite数据库)。这可能意味着将存储数千个音频和图像文件,但同样,它们不大于0.35 mb,大多数小于0.1 mb。用户可能会上传几十个图像和四分之一音频文件的文件串。

2)允许用户将其本地数据与服务器上的SQL数据库同步,以便不同应用的用户可以上传,下载和删除图像和音频文件(除了分配其他数据)位置。

我知道将文件路径存储在SQLite数据库中几乎总是优先,而不是将文件存储为BLOBS,但是,正如在这些问题中BLOB vs. file path storage一样, Storing small BLOBs in a Database, 在某些情况下,将文件直接存储在数据库中更为合适,尤其是当涉及的文件非常小时,就像它们在我的应用程序中一样。我的应用中的所有文件都不超过350 K / b。

我的问题是,当处理非常小的文件大小时(我的图像/音频文件都不超过350 k / b且大多数都在0到100 k / b范围内)但很多文件,当用户需要将文件上传到本地SQLite数据库或用户需要同步本地SQLite数据库时,将文件直接存储为BLOB而不是文件路径会导致任何严重的性能命中(如超过几分钟)远程服务器?

应用程序的冗长安装时间以及与远程数据库的初始同步都不是问题,只要安装和同步不需要花费大量时间(例如,超过45分钟)。

1 个答案:

答案 0 :(得分:2)

不要相信一些随机网站告诉你的一切。

在某些tests for reading internal vs. external blobs中,对于非常小的文件大小(<100 KB),blob会更快,而且无论如何,300 KB文件的差异不是很大。

由于事务/同步开销,编写blob的效率往往低于写入文件。

这一切如何转化为您的Android设备是您必须自己测试的。