论文部分内容阅读
在过去的几十年里,磁盘一直是最常用的存储介质。然而,随着电子技术的快速发展,嵌入式系统、航空航天等应用领域对数据存储提出了远远超出磁盘存储能力的需求。在这种背景下,闪存技术应运而生。闪存是一种高速、低功耗、抗震、小巧轻便的存储介质。随着越来越多的电子设备直接用其来存储大量的数据,并基于此开发各种复杂的数据应用。由此带来的新问题是“如何有效地存储、组织、管理和使用闪存中的数据”。 目前,数据管理的主流技术是数据库技术。因此,采用数据库技术来存储和管理闪存中的数据是目前首选的途径,即建立“闪存数据库系统”(Flash-BasedDatabase Systems)。目前已有的研究工作主要是针对闪存数据库的存储、索引、和缓冲区管理方面。(1)存储和索引。根据处理方法不同,主要分为三大类:块映射机制、基于FTL的存储索引技术和纯闪存存储索引技术。已有的存储和索引技术都不能从根本上消除闪存低下的随机写性能。(2)缓冲区管理。闪存读写代价不对称的特性则决定了其必须采用不同于一般磁盘存储的缓冲区置换策略。目前的方法都是基于简单的读写优化,并没有针对上层的查询处理和事务处理进行设计。 本文的工作主要从闪存和固态硬盘的特性出发,以优化其写性能为基础,分别在存储、索引和缓冲区管理上展开深入的研究。本文的主要贡献如下: (1)固态硬盘随机写优化技术。固态硬盘低下的随机写性能成为固态硬盘进一步广泛应用的性能瓶颈。针对这一问题,本文提出了针对静态随机写序列和动态随机写序列的写优化方法。 静态随机序列写优化方法:本方法首次通过将随机写转换为连续写来避免低下的随机写性能。本文将随机写序列排序之后,将序列中缺少的数据项从固态硬盘中读取出来,然后再插入该序列中,最终将随机序列转换为连续的序列。本方法同时提出了静态随机序列密度概念。当密度小于最小密度时,本文提出聚类的方法来提高写性能。在此基础上,通过最优写来改进静态写序列的转换策略,达到转换后的写序列代价最小。并且证明了转换优化方法为P时间复杂度,从而保证了系统的性能。 动态随机序列写优化方法:针对数据流上产生的动态随机写序列,根据粒度对带宽的影响,本文首先提出了最佳写粒度。在数据流上,本文提出长聚类的方法来选择子序列进行转换和写出。此外,利用固态硬盘内部的并发机制提高写性能。该方法将连续写序列进行划分,并将各划分段同时交替写入到固态硬盘中。在聚类的基础上,本文提出增益的概念。增益用来评价单个数据项转换后的性能提高。在此基础上,通过结合写粒度和增益,本文提出了数据项的写带宽的概念。写带宽能够准确地评价一个数据项的写出速度,从而选择最佳的写出项。该方法能够有效地提高数据流上随机写性能。 (2)纯闪存索引技术。由于闪存高昂的写操作代价,传统的基于磁盘的索引结构如果直接应用在闪存上会导致极差的更新性能。针对此问题,本文提出一种新颖的高更新性能的索引结构HF-tree,通过组提交、更新合并,以及多级延迟的方式来提高更新性能。HF-tree能够有效地克服闪存和现有基于磁盘的索引之间的不匹配性的问题。 (3)缓冲区管理技术。现有的基于磁盘的数据库系统并不能充分发挥闪存的高速IO性能,特别是事务处理。通过对事物处理中偷帧和非强制写页算法与闪存特性之间的分析,本文提出一种针对事务处理的缓冲区管理策略。在这种策略中,本文提出采用平均访问时间算法和日志写方法来提高IO性能。该方法不仅能够有效地克服传统数据库在闪存上的不足,而且能够针对事物处理充分发挥闪存的高速IO性能。此外,该方法还能够提高闪存的使用寿命,并且维护磨损平衡。 在研究的基础上,本人还开发闪存数据库系统。根据本文的随机写优化算法,数据库系统随机写性能得到了极大的提高。在数据库系统中,可以选择将各种测试集运行在各种数据库上,从而获得性能的比较。此外本人还将数据库测试过程进行了可视化,提供了测试过程的重放机制,形象地展示了数据库的性能。 综上所述,本文对闪存数据库的存储、索引和缓冲区管理进行了研究,针对其问题,从高效性和可用性上提出了创新性的解决方案,达到了预期的目的。