论文部分内容阅读
传统的数据索引采用一种固定的读写策略,底层索引的数据结构也是固定不变的,这在传统的磁盘模型中,这些都不是问题。因为磁盘的硬件特性是读写平衡的,对于读取操作和写入操作,其代价是相当的,不需要区别对待。然而对于NAND闪存而言,其写入代价一般都大大超过读取,而且各种设备之间也存在巨大差异性,传统的索引机制已经不能适应这种读写特性了。为了保证索引机制在各种设备上的高效性以及通用性,重新设计一种灵活的动态索引机制已成为必需。本文研究如何利用NAND闪存的读写特性,提高嵌入式数据库索引机制的存储性能。在对现有基于NAND闪存的存储设计进行了综述和对比之后,文章表述了基于B+树的数据库动态索引的设计和实现。该原型系统综合了适应读取操作的磁盘模型和适应写入操作的日志模型的优点,在运行期对B+树中每个节点进行最优存储模型的匹配和转换,使得其在各种设备上都有更好的读写性能。动态索引机制的设计目标是通用性和高效性。其通用性反映在,对于不同的NAND闪存,该索引机制在运行期决定磁盘模型还是日志模型的数据结构更加适合现在的环境,并在必要时进行数据结构的转换。对于高效性体现在其对B+树中每个节点都进行了动态优化,使得每个节点都有其最优的读写结构。这保证了动态索引机制无论在什么情况下都能优于现有的两种固定模型的索引机制。本文探讨的动态索引机制的各模块的设计思路和实现方案,包括BFTL中的结点转换表,日志模式缓存,B+树调度层中的模式转换算法。另外本文还讨论了B+树结点大小对于索引机制性能的影响。最后用实验数据说明:在各种设备环境及读写比率下,该动态索引机制都要优于固定的磁盘模式和日志模式。