论文部分内容阅读
随着嵌入式系统的不断完善和发展,应用终端对数据的存取能力提出了更高的要求,因此有必要使用数据库管理系统。由于NAND闪存的优良特性,目前大多数嵌入式系统它作为存储介质。但是不同于传统磁盘,往NAND闪存中写入数据时,不能在原来数据的基础之上覆盖而是必须在已经执行了擦除操作的区块中进行,对各个区块执行擦除操作的次数是有限制的。而数据库的写操作发生次数是很多的,从而导致了擦除操作的增多,减短了NAND闪存使用期限。怎么克服NAND闪存这一特性是一直备受关注的问题。B+树数据库索引在数据读写等方面的性能有着较大的优势,可移植性强,有较好的稳定性和可维护性。在数据库实际应用中,索引的写入次数是很多的,这对NAND闪存使用期限会产生影响,因此需要设计一种针对NAND闪存物理特性的索引机制,尽量减少对NAND闪存的写入和擦除操作。在分析NAND闪存和嵌入式数据库的基础上,首先结合“附加页”和B+树索引,在结点将要分裂时,使用“附加页”来存储插入的新的关键字,有效地缓解了分裂操作,从而减少了对NAND闪存的写入和擦除,并且提高了数据存储率;其次结合日志文件系统思想,采用Log-Mode的B+树索引机制,跟随结点的变化,将变化的内容记入到日志。每一次写操作对应一条Log Entry,当待写入到数据库的数据记录占满系统开设的记录缓冲区时,对应的日志记录就被写到NAND闪存中。建立一个B+树结点构架图,并用结点对应的日志记录地址链表(NLAT)把结点与结点对应的日志记录联系起来。Log-Mode索引树合并了大量写入操作,减少了对NAND闪存的擦写,延长了闪存使用期限。对NLAT中链表长度通过“压缩”日志记录进行了控制从而提高了系统读性能,并且对读写性能进行了分析。对“过时”的日志记录进行清理,结合实际应用提出了一种平衡磨损算法,均衡地使用NAND闪存的各个区块,从而延长闪存使用期限。最后搭建实验平台,在嵌入式Linux系统中,将改进后的索引应用到SQLite3嵌入式数据库中,对比测试各数据指标,结果表明改进后的方案有效地使闪存得以长久使用,同时也提高了数据存储占有率。