论文部分内容阅读
随着大数据时代的到来,数据量变得越来越大,数据处理变得越来越困难,传统的单机关系型数据库已经很难满足现在的商业需求了,因此本文引入以关系型数据库MySQL为基础的分布式数据库中间件。分布式数据库中间件可以让用户使用起来与单机MySQL保持一致,对原有的应用无需进行任何代码的修改。本文主要涉及分布式数据库中间件的研究,包括了三个模块的研究:分别为分布式数据库中间件的分库分表功能,分布式数据库中间件的跨节点多表联查功能以及分布式数据库中间件的分布式存储过程功能。对于表的拆分是每一个分布式数据库产品都必须要实现的,也是必须高效实现的,本文在传统的哈希分区的方法上,使用一致性哈希算法进行虚拟分区,从而达到易扩展的目的;对于跨节点多表联查这一业界难题,本文分成三种情况进行讨论,即两张非分区表进行联查,两张分区表分进行联查以及一张非分区表和一张分区表进行联查。无论哪一种情况本文的核心思想就是尽量减少数据的迁移数量,为此本文引入了一系列的优化手段;最后的分布式存储过程,本文对MySQL标准的存储过程进行了完整的分布式支持,包括声明表达,复合表达,循环表达,条件分支判断表达以及游标表达。本文通过对分布式数据库中间件DBScale的分表功能测试,发现随着后端MySQL实例的增多,中间件的性能是线性增长的;通过对本文实现的多节点多表联查解决方案的测试,发现使用Federated存储引擎可以将跨节点多表联查操作的性能提高为MySQL单机的50%;通过与cobar以及ha-proxy的单机损耗对比测试,发现DBScale的性能要全面优于cobar,在低并发下性能略逊于ha-proxy,高并发性能明显优于ha-proxy。