Skip to main content
QUICK REVIEW

[论文解读] To BLOB or Not To BLOB: Large Object Storage in a Database or a Filesystem?

Russell Sears, Catharine van Ingen|arXiv (Cornell University)|Jan 26, 2007
Advanced Data Storage Technologies参考文献 10被引用 74
一句话总结

本文研究了将大对象存储在数据库(作为BLOB)与文件系统之间的权衡,重点关注长期运行性能和可管理性。通过引入'存储年龄'——一种用于对象覆盖操作的归一化指标——研究发现,小于256KB的对象在数据库中表现最佳,大于1MB的对象在文件系统中表现更优,而在256KB至1MB之间的性能交叉区域,读写比和覆盖频率是决定性因素。

ABSTRACT

Application designers often face the question of whether to store large objects in a filesystem or in a database. Often this decision is made for application design simplicity. Sometimes, performance measurements are also used. This paper looks at the question of fragmentation - one of the operational issues that can affect the performance and/or manageability of the system as deployed long term. As expected from the common wisdom, objects smaller than 256KB are best stored in a database while objects larger than 1M are best stored in the filesystem. Between 256KB and 1MB, the read:write ratio and rate of object overwrite or replacement are important factors. We used the notion of "storage age" or number of object overwrites as way of normalizing wall clock time. Storage age allows our results or similar such results to be applied across a number of read:write ratios and object replacement rates.

研究动机与目标

  • 确定大对象存储策略的最优方案——即在数据库(BLOB)中存储还是在文件系统中存储——基于长期运行性能和可管理性。
  • 解决碎片化作为影响系统长期性能的关键操作问题。
  • 开发一种归一化指标,使不同工作负载和部署场景下的性能比较成为可能。
  • 识别决定BLOB或文件系统存储更高效的对象大小阈值和工作负载特征。
  • 为应用设计者在选择大对象的数据库与文件系统存储方案时提供数据驱动的指导。

提出的方法

  • 提出'存储年龄'作为归一化时间指标,定义为对象覆盖次数,以实现不同工作负载间性能趋势的比较。
  • 通过受控实验测量I/O性能、碎片化程度和存储效率,覆盖从256KB到1MB不等的对象大小及不同工作负载。
  • 在不同读写比和对象替换率下,评估数据库(SQL Server)和文件系统(NTFS)的存储表现。
  • 使用经存储年龄归一化的时钟时间,以隔离对象覆盖对性能退化的影响。
  • 通过分析碎片化和存储效率指标,评估长期可管理性和可扩展性。
  • 通过模拟不同访问模式和对象生命周期行为,将结果应用于真实工作负载。

实验结果

研究问题

  • RQ1在何种对象大小下,文件系统存储相较于数据库BLOB存储更具效率?
  • RQ2读写比和对象覆盖频率如何影响大对象存储的性能与碎片化程度?
  • RQ3像'存储年龄'这样的归一化指标能否有效比较不同工作负载和部署场景下的存储性能?
  • RQ4长期来看,将大对象存储在数据库与文件系统中,特别是在碎片化和可管理性方面,会产生哪些操作影响?
  • RQ5在256KB至1MB的中间尺寸范围内,当两种方案均无明显优势时,性能特征如何变化?

主要发现

  • 小于256KB的对象在作为BLOB存储于数据库中时表现更优,原因在于更强的事务完整性和更低的I/O开销。
  • 大于1MB的对象更高效地存储于文件系统中,因为数据库BLOB存储会带来更高的开销和碎片化。
  • 在256KB至1MB之间,最优选择取决于读写比和对象覆盖频率,更高的写入频率更有利于文件系统。
  • 存储年龄(定义为对象覆盖次数)提供了一个稳健的归一化指标,使不同工作负载间的性能比较保持一致。
  • 在高覆盖工作负载下,数据库BLOB存储的碎片化程度显著增加,尤其在256KB至1MB范围内,导致性能随时间持续下降。
  • 在高写入和高覆盖工作负载下,文件系统存储展现出更好的长期可管理性,且性能退化程度低于BLOB存储。

更好的研究,从现在开始

从论文设计到论文写作,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。