我想存储最多10M的文件,2TB的存储单元。我需要的唯一属性仅限于文件名及其内容(数据)。
文件最大长度为100MB,大多数小于1MB。需要删除文件的能力,并且写入和读取速度都应该是优先考虑的——而不需要低存储效率、恢复或完整性方法。
我考虑过 NTFS,但它的大部分功能都是不需要的,同时也不能禁用并且被认为是一个开销问题,其中一些功能是:创建日期、修改日期、属性、日志,当然还有权限。
由于不需要文件系统的本机功能,您是否建议我使用 SQLITE 来满足此要求?或者有一个我应该注意的明显缺点? (有人会猜测删除文件将是一项复杂的任务?)
(SQLITE 将通过 C api)
我的目标是使用更合适的解决方案来获得性能。提前致谢 - Doori 酒吧
实际上 SQLite 官方网站包括一个页面 https://www.sqlite.org/fasterthanfs.html它记录了在各种操作系统中使用数据库相对于本机文件系统的性能优势。存储约 10 KiB 的文件时,sqlite 速度大约快 35%。
SQLite 读取和写入小 blob(例如缩略图)
比读取或写入相同 blob 快 35%1
使用 fread() 或 fwrite() 存储磁盘上的单个文件。
此外,保存 10 KB blob 的单个 SQLite 数据库使用
与将 blob 存储在单个文件中相比,磁盘空间大约减少 20%。
性能差异的出现(我们相信)是因为工作时
对于 SQLite 数据库,open() 和 close() 系统调用是
仅调用一次,而 open() 和 close() 则调用一次
使用存储在单独文件中的 blob 时的每个 blob。看起来
调用 open() 和 close() 的开销大于
使用数据库的开销。尺寸减小源于
事实上,单个文件被填充到下一个倍数
文件系统块大小,而 blob 更紧密地打包到
SQLite 数据库。
本文中的测量是在本周进行的
2017-06-05 使用 3.19.2 和 3.20.0 之间的 SQLite 版本。你
可能期望 SQLite 的未来版本能够表现得更好。
使用较大的文件时,您可能会遇到不同的结果,SQLite 站点包含一个链接kvtest https://www.sqlite.org/src/file/test/kvtest.c您可以使用它在您自己的硬件/操作系统上重现这些结果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)