论文部分内容阅读
关系型数据库系统出现在上世纪70年代。其中,事务处理是数据库系统最为关键的特性之一。事务大大简化了上层应用管理数据的复杂度。因此,事务型数据库系统被广泛地运用在银行、证券、电子商务等领域的关键应用中。近些年,互联网的快速发展进一步促进了应用规模的扩展,同时也导致了后台数据库系统需要支撑大吞吐量的事务处理以及海量数据的存储。然而,传统磁盘数据库系统的性能很大程度上受限于低效磁盘读写能力。这导致了它们很难满足新业务日益增长的性能需求。得益于软硬件技术的发展,许多新型数据库系统被设计用于满足互联网业务的数据管理需求。从硬件的角度而言,内存和多核CPU的研发与制造技术均有了长足的发展。这些硬件的发展促成了内存数据库的研究和使用。相对于磁盘数据库,内存数据库在事务处理性能上有数量级的提升。从软件的角度而言,Google首先成功研发和部署了大型的分布式数据库系统。随后,市场上出现了大量的NoSQL分布式数据库系统。这些系统能够利用大量廉价的普通服务器,提供极佳的数据存储和读写能力。然而,这些系统均存在一些重要的限制。例如,内存数据库要求业务的数据量不能超过单点内存容量,并且上层应用需要采用存储过程的方式执行事务。NoSQL系统为了实现良好的扩展性,弱化或不支持关系模型、SQL接口以及事务管理。为了支撑业务在事务处理和数据存储方面的需求,本文给出了一个新型的分布式数据库系统Cedar。它融合了内存事务处理和分布式存储两方面的优势。该系统使用一个两层的分布式日志合并树组织数据。它解耦了系统的数据存储、事务管理和查询处理三个模块。其中,一个分布式存储引擎会保存数据库的历史快照;一个内存事务引擎会管理新提交的增量数据;内存中的数据会周期性地合并到分布式存储中;最后,一个可扩展的分布式查询层会负责SQL处理、事务逻辑执行等。本文主要设计和优化了该系统上的事务处理模块,主要贡献可以总结如下:1.分布式日志合并树上的事务管理和通信优化。Cedar的架构近似于一颗分布式日志合并树。首先,本文为Cedar设计了一种新型的并发控制策略。它保证了内存事务引擎高效的事务管理性能。基于事务管理模块,我们设计了 Cedar的数据合并算法。它保证数据合并操作不会阻塞或中断并发的事务请求。最后,针对Cedar的数据组织特点,本文设计和实现了数据缓存、事务编译等机制来有效地减少事务执行过程中节点间的网络通信。2.内存事务引擎上的交互式事务处理优化。已有的内存事务引擎通常假设事务是作为存储过程执行的。这限制了应用操作数据库的灵活性。因此,本文考虑了如何优化交互式事务的处理。该问题面临着更高的复杂度和难度。由于事务执行需要在客户端和服务器之间进行多次网络交互,这产生了大量的CPU阻塞和上下文切换的代价。本文设计一种基于协程的执行模型来更好地处理网络读写或事务冲突导致的阻塞。此外,网络交互的延迟大大增加了事务的执行时间。这会引起更加频繁的事务冲突。本文设计了一个轻量级、多核可扩展的锁管理器来高效地识别和调度冲突的操作。3.分布式日志合并树的只读请求优化。由于分布式日志合并树的结构特点决定了其在处理只读请求方面的效率不高,本文提出了一种精准数据访问优化方法。该算法主要包括一种可快速更新和同步的布隆过滤器,以及一种分布式租约管理机制。前者能以较低的代价在多个节点上同步数据的存在性,并过滤无效的远程访问。后者确保过滤部分远程数据访问不会弱化读取结果的一致性。通过减少无效的节点间通信,该算法不仅能够降低数据读取的延迟,还能够大大减少处理只读操作产生的资源开销,从而提升系统整体的吞吐率。综上所述,我们在一种新型的分布式数据库系统架构上研究了如何实现高性能的事务处理。首先,针对分布式日志合并树存在的结构性问题,本文从并发控制、数据访问等角度优化了数据合并以及网络通信对事务吞吐率的影响;之后,由于内存事务引擎在处理交互式负载方面存在较大的不足,本文设计了新型的执行引擎和锁管理器来降低事务执行的CPU开销;最后,考虑到应用负载中同样存在大量的只读请求,本文设计了精准数据访问算法来过滤无效的网络通信。未来的研究方向包括:优化数据合并的效率、设计可扩展的事务处理机制以及提升系统在查询分析方面的能力。