胡昕
摘 要:在海量数据存储模型设计和数据并行查询存储技术的基础上,基于MPP架构的存储架构系统,实现了具有良好的扩展性和大规模并行处理的优势的海量数据存储解决方案。
关键词:海量数据存储;分布式数据库;MPP架构;并行处理
目前海量数据处理还是一个比较新的研究方向,大多数都是各公司或者是组织各自研究自己的处理方法,国际上没有通用的标准,研究的方式和结果也都是各有千秋。针对项目中带有复杂业务逻辑的海量数据存储,主要从容量扩展和并行处理两个方面考虑。前文己论述过NoSQL分布式数据库由于其数据结构简单、不善于做JOIN连接等复杂操作,存在数据迁移问题,并不适用于本项目,所以本解决方案依旧从关系型数据库入手。其次为了支持多样的切分策略,本论文将实现range、list、consis
tent-hash模式。最后系统借鉴MPP并行处理架构,使得整个项目能部署在便宜的PC集群上,不仅能保证稳定性,还节省项目成本。
物理设施包含数据库服务器的基础架构、web服务器的选择,以及资源分配管理服务器的选择。这三者分别负责数据的存取、数据的分析处理以及资源工作的均衡分配,它们协同合作,共同搭建一个高效的协同的后端服务管理,使存储系统均衡工作、高效运行。
作为解决海量数据的存储方案,首要必须考虑是存放海量数据的需求。根据前文可知,分布式数据库的出现其根本原因是解决存放不下数据的问题,故而将数据依照策略存放在不同的数据库服务器上,存放数据的策略以及数据之间的并行查询处理是研究的重点。第二个问题是分布式处理方案,现有技术从各个方面进行过尝试,有的基于关系型数据库提出了多种shard
ing方案。将关系型数据库迁移到非关系型数据库上代价太大,所以本解决方案基于关系型数据库的系统。
根据以上的设计思路与实现目标,设计出分布式海量数据存储解决方案。该系统主要包含以下四个模块:
SQL解析模块。SQL语句复杂、格式多样、形式多变,解析结果作为数据切分的依据。解析SQL语句的方法是编译成字节码,生成语法树,这种方式的优点是准确率高、数据层次清晰、结构正确,但设计到相关语法树知识,比解析字符串更难以理解。
数据分发模块。如果集群系统中没有进行数据切分,则多台数据库服务器存储的是完全一样的数据,这实际上是对硬件资源的浪费,也在同步数据保持一致上浪费了更多的时间和效能。而且一旦数据再上升一个等级,很可能一台服务器就无法存储下大量数据。所以合适的数据切分策略是迟早的,本解决方案将结合现有的数据切分策略,结合业务逻辑,提供多样的切分策略,并且预留切分接口使用户灵活地自定义自实现,系统的可用性更高。
并行处理模块。由分发服务器和多台数据库服务器构成。相对于集中式数据库来说,分布式査询代价需要考虑以下因素:
CPU处理时间,I/O消耗时间,还有数据在网络上的传输时间。在设计系统的时候,应该根据分布式数据库中各个数据库的地理位置的不同情况来设计。在局域网且传输率高的系统中,通信代价和局部处理的开销差别不大,在优化中则应平等对待;在数据传输率较低和通信网速度较慢的系统中,网络传输可能会比花费在查询中的CPU及I/O的开销更大,则应首要考虑优化网络通信。
汇总处理糢块。结果汇总大致分为两种情况:单机单库情况下,直接返回结果;多机多库的情况则需要在转发节点处进行一个汇总。
基于架构的工作流程大致如下:首先,转发节点收到客户端发来的SQL语句,将依据各个解析节点当前工作量、预计完成解析工作的时间、本条查询语句预估需要时间、历史响应需求时间等因素,将SQL语句转发给各个解析节点,对其进行语法解析。当所有的工作量都经过这个转发节点的时候,必然会产生高并发的问题。在存在多个分发节点的情形下,为了消除单个转发节点的性能瓶颈,本文设计多个分发节点,每个节点都可以将任务转发到不同的解析节点。采用RoundRobin策略将任务依次分发给每个解析节点,让工作量保持均衡。其次,解析节点解析本次查询的SQL语句,生成便于理解的SQL对象,通过调用相应的接口方法可以实现对SQL语句的操作。最后,各个数据库服务器执行了 SQL语句,便对查询结果进行一个汇总并返回,划分倘若是单机查询,那么处理的结果可直接返回给客户端。
SQL解析、数据切分以及转发归并的工作都由以上四个模块协同完成。
基于MPP架构的设计了关系型数据库的海量数据分布式存储解决方案。本章采用解析SQL语句、分发SQL语句,并行处理、归并汇总处理结果的方式完成整个框架。与MySQL
Cluster的区别在于采用的存储引擎就是MySQL,适应于本身就釆用MySQL进行存储的集中式数据库的改造,或是业务逻辑复杂的报表展示等,无论是业务的扩展,迁移都十分方便。
参考文献:
[1]姜宇鸣.海量数据存储系统研究.《电脑知识与技术》2011年08期
[2] 李文虎.分布式数据库系统的设计浅析.科技资讯,2009年第34期endprint