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

标签 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的范围内)但文件很多时,它直接将图像存储为BLOB当用户需要将文件上传到本地SQLite数据库时或当用户需要将本地SQLite数据库同步到远程服务器时,而不是文件路径会导致严重的性能下降(例如几分钟)?

该应用程序的安装时间很长,并且与远程数据库的初始同步不是问题,只要安装和同步不会花费很长时间(例如,超过45分钟)即可。

最佳答案

不要相信某个随机网站会告诉您的一切。

在某些tests for reading internal vs. external blobs中,对于非常小的文件大小(小于100 KB),blob会更快,并且在任何情况下,对于300 KB的文件,差异都不是很大。

由于事务/同步开销,写入Blob的效率往往不如写入文件。

所有这些如何转换为您的Android设备是您必须自己测试的东西。

关于database - 通过BLOB在SQLite数据库中存储很小的音频/图像文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38776055/

相关文章:

java - 在条件sqlite数据库中使用OR语句

java - 如何使用 Spring MVC 在 src/main/webapp/resources 中上传图片

c - sqlite3_exec的使用

c - 将二进制文件读入同一个后Unsigned Char为(null)

ios - sqlite3.dylib : illegal multi-threaded access to database connection

ios - 使用 firefox 插件创建的 .sqlite 文件如何打开

database - Sql Developer 可以连接Oracle Database 12c 和TNS 但不能连接basic

sql - 连接表时删除重复项

php - 将文件导入到 Mysql 数据库并使用 PATHINFO_EXTENSION

python - 导入天气快照/图像