云计算为公共服务提供了新的基础设施平台,其强调在虚拟化环境中运行大规模计算的伸缩性和可用性。随着云计算理论的发展,公有云计算和面向虚拟组织内部的私有云计算成为两种不同的应用范畴,目前企业级应用更关注的是私有云,其后台云存储设备中数据库数据查询反应速率的高低,是体现企业私有云技术可扩展性和高效性的重要指标之一,早期的云计算侧重于互联网应用,企业级应用较少。随着企业私有云概念的发展,传统的企业级应用从数据中心到中间件、编程模式、数据存储方式都在向云计算平台迁移,大量的企业级关系型数据库迁移到云中将是未来一段时间内云计算技术发展的趋势,与分布式数据库中遇到的问题相类似,关系数据库的ACID特性将使得云中的数据库部分操作性能降低,从企业级应用的数据管理的特性而言,增、删、改、查4个基本操作中,查询的使用频率更为显著,在企业云存储环境下对查询命令的处理变得至关重要,如何在降低数据传输率的情况下同时满足数据多表之间的依赖性成为必须考虑的关键因素,本文通过分析企业云服务的3层架构,在综合考虑关键因素的情况下,对云存储中心用户查询操作执行情况提出一种支持实际应用的分布方案。
1 相关研究背景
1.1企业私有云背景
企业私有云是在企业内部构建的,基于企业内部动态业务变化的需要,对数据和服务设置安全有效控制,为企业内部业务实施提供服务平台,其基础设施可设立在企业内部或主机托管场所,它能够为企业节省信息化开销,具有灵活性和安全性的特点,是目前企业信息化的发展方向,由于企业私有云数据中心大部分的数据库命令操作是数据查询,本文将从数据查询操作来定义数据分布策略。
1.2企业私有云存储中心数据管理架构
在文献[6]的基础上,本文提出了一种企业私有云存储中心数据管理架构。企业云计算存储中心不同于分布式架构下的数据中心,它提供公共平台(PAAS)业务的数据查询工作,调用虚拟化操作系统管理下的数据存储层服务。在本文的研究中,将企业私有云数据管理架构分为3层:1)企业云服务器层;2)数据节点层;3)查询结果汇总器层。执行时用户通过SQL命令访问企业私有云数据中心管理系统,SQL命令在企业云服务器层被预处理成若干子查询命令,然后根据数据分布策略将各子查询命令发送到数据节点DN1,DN2,?,DNN,各节点交互执行命令,最后由查询结果汇总器返回查询结果给用户,具体流程如图1所示:
图1 企业私有云层次结构
1.3数据分布策略
在分布式数据库、并行数据库等的研究中已经提出了多种数据分布策略,主要可以分为集中分布、水平分布、垂直分布以及混合分布等。集中分布是指数据库表伞部内容集中存储在数据节点,典型的算法有Together;水平分布可视为一种选择操作,将关系的元组划分成不同的子集(通常为不相交的子集),分布到不同的节点,比较典型的水平分布有RoundRobin;垂直分布可视为一种投影操作,从属性出发,将关系的属性集划分为不同的子集并分布到不同的节点;混合操作介于水平和垂直分布之间。当前实际应用水平分布比较多,具有很好的适应性,云计算的特性之一是针对海量数据的处理,企业级应用中不断产生大量的数据,并且涉及到大量的数据更新,水平分布的处理上将产生一定的数据一致性问题及分布的迭代问题,基于此项考虑,本文的研究中采用混合分布作为出发点,并且假定不同的子集中的属性可以冗余,即存储在不同数据节点的数据存在重复,在此假设下,对不同数据节点承载能力的考虑成为研究的重要关注点。
2 云存储数据节点分布策略(CSND)
2.1策略需考虑因素
在研究文献中常见的数据分布思想是自上而下,即从客户的SQL命令开始分析,将SQL分成若干个子命令再分布到数据节点,执行子查询操作,在设计的过程中没有考虑到数据节点本身的执行能力.本文结合自上而下和自下而上两种分布思想,从客户输入的SQL命令和数据节点的承载能力同时着手,综合考虑数据查询子命令的分布策略。该策略主要从以下3个方面考虑:
2.1.1 SQL查询命令的执行范围
确定SQL查询命令的执行范围对企业云服务器分配处理客户指令有重要意义。若查询是在单表中,则只需分配SQL子命令在含有这一个表的数据节点;如果是多表联接操作,要先确定是否有数据节点同时存有这两个表资源,如果没有,则需要判断操作是如何确定那两个数据节点分配子命令,然后进行分别查询。
2.1.2最近时间周期的查询次数
统计在规定的查询周期内被访问的表的次数,形成表查询矩阵,确定单表被查询次数和多表同时被查询次数。与此同时,设定频度阈值,对查询次数超过阈值的表进行标记处理,在分配数据节点时使其具有优先分配权。
2.1.3数据节点的命令处理能力
假设每个数据节点都具有数据存储和执行查询命令的功能,其存储和执行能力的权值可以确定其功能的优劣,在企业云服务器分配子查询命令时根据数据节点情况分配。本文设定数据节点权值等级计算如式(1)所示,其中数据节点的处理能力是根据系统资源量确定。
1evel1为节点最优状态,level2为节点正常状态,分布策略将根据节点能力分配子查询;level3为警告状态,分布策略将拒绝分配子查询给节点。实验指标采用木桶原理,例如:存储能力符合一级指标,查询能力符合二级指标,则此数据节点为二级指标。
2.2策略基本思想
从2.1节可以看出,要改善系统响应效率,提高系统查询性能,需合理分配每个数据节点子查询,将可能出现连接的表中的属性进行同节点存放,这样在减少数据传输时间的同时提高整个查询周期时间。本文假定企业云服务器将查询命令进行分解时,子命令中最多出现两个数据表连接,其他复杂连接暂不考虑。算法所需参数设置如表1所示:
表1 系统参数列表
下面假设系统已有资源及系统参数设置如下:
1)企业私有云中数据节点DN1,DN2,?,DNN;
2)此处为数据节点的能力权值DNC。,DNC。,DNC3;
3)查询命令统计周期
2.3算法整体流程
当企业云服务器接收到用户的数据查询命令时,算法开始执行。首先,生成数据库表查询矩阵(执行算法1得到),生成分布策略(执行算法2得到),生成分配策略(执行算法3得到);然后,企业云服务器根据分配策略将数据查询命令分配给数据节点,各数据节点执行查询子命令,并将结果传给查询结果汇总器;最后,查询结果汇总器将结果信息传给用户。
2.4算法模型及实现
算法1.SQL查询命令的执行范围统计和查询次数统计。
本算法假设数据库中每两个表之间都可能发生连接操作,根据子查询涉及的数据表在数据节点中被访问的次数,统计形成数据表查询矩阵TaInqMatrixI-M][M+1],矩阵的行和列是数据表的别名。如果是相同的别名,代表此查询为单表查询;如果是不同的别名,代表查询为两表连接查询.例如:TaInqMatrix[1][1]的值代表别名为1的表在某个T周期进行的查询次数,TaInqMatrix EliE2]的值代表连接别名为1,2的表示在某个T周期的查询次数。
在执行过算法1后,形成了TaInqMatrix[M][M+1]矩阵,并在第M+1列统计了每个数据表的在某一个T周期的总查询次数。接下来算法2将根据此矩阵的值是否超过规定阈值(根据系统运行情况设置),按查询的连接表优先原则把表别名组放入到分布队列中。在算法执行结束,将形成丁周期内的查询分布队列。算法的执行以tablePair.next()和singleTable.next()函数来分别获取下一个连接操作的表别名组值和单表操作的数据表别名值,具体算法如下:
算法2.形成分布队列。
算法3输出为分布策略,制定本策略主要考虑因素如下:
1)数据节点当前状态
由于数据节点的当前执行能力会根据设定的指标值,定期被标记。所以在算法3执行结束后要修改数据节点的当前状态。Dn.queryActual表示节点的当前执行能力函数,在数据节点得到一次子查询分配后,Dn.queryActual执行加操作,这样下一轮统计中,数据节点剩余执行能力等级状态会保持更新。
2)分布策略考虑数据节点当前的存储情况
如果当前的子查询命令涉及到了两表连接的状况,首先从数据分布队列中取出数据表别名值,然后从当前数据节点中遍历查询存储有这两个数据表的节点,通过函数getFromDN()形成list()队列,再逐个判断数据节点状态,分配子查询。
3分析实验
本文的数据分布策略考虑了用户sQL查询命令的分配和数据节点的处理能力两个方面的因素,形成了云计算环境下云存储中心数据分布策略。算法执行结束企业云服务器可根据DNplan来进行SQL子命令的分配,提高了分配的适应性,策略的改进体现在以下两个方面:
1)改变了节点分配不考虑数据节点处理能力,只关注自上而下分解的分配思想;
2)根据节点的处理能力,分配多表到一个数据节点,考虑了数据库连接查询的情况。
由于构建企业私有云项目还未满足实验需求,因此实验设计使用一台PC作为企业云服务器(2.0 GCPU,4GB内存,Ubuntu操作系统),另外使用3台PC作为数据存储节点(一台为2.0 G CPU,2 GB内存,Ubuntu操作系统,另外两台为1.0G CPU,1GB内存,Ubuntu操作系统).关于3.1.3节提到的数据节点权值等级设置,本实验拟设3级标准具体指标如表2所示:
表2数据节点3级权值标准
实验开始时,主服务器计算节点的指标等级确定后,将sQL分解成子命令,按CSND策略进行数据分布。待数据分布完成后,在主服务器上进行查询和汇总,比较数据分布策略在I不同数据量时数据库的查询响应时间。实验中对比了集中存储(together)、轮转划分(round robin)和数据节点分布划分(CSND)。结果如图2、图3所示。图中横轴为数据节点单表查询的数据量,以100M为单位;纵轴为查询响应时间,以ms为单位。
从图2中可以明显看出,CSND分布策略对于数据节点单表查询的反应优于Together和RoundRobin分布策略,根据数据量的增加,这种优势更为明显。
图2数据节点单表查询时间统计图
图3数据节点多表查询时间统计图
根据数据节点的处理能力分,配的各数据节点单表查询命令,无需在系统内进行数据传输,只需访问单个数据节点,大大节省了系统响应时间。实验结论:改变后的策略具有良好的适应性,能够改善云计算系统的SQL用户查询环境。
单表查询能力的快慢是企业云计算响应时间的重要测量指标。CSND分布策略为企业云计算数据处理减少了响应时间。
从图3可以看出,在进行数据节点多表查询时,仍是CSND分布策略占优势,多表查询数据量的增加优势越来越明显。实验结论:对于多表查询CSND分布策略,充分考虑数据节点数据表的分布情况,更大地减少了数据传输,数据表投影、选择等操作的反应时间。
4 相关研究现状
关于数据分布策略国内外有许多学者对此进行了研究。早期的数据分布策略较多的成果是在分布式和网格环境下按哈希、范围、轮转进行划分的,后期进行一定的改进。其中,按分配的思想进行分类,采用自上而下分配策略的有:左利云等人从数据库连续读取特性人手,解决了云计算中有部分系统资源闲置的问题;文献[12]考虑了在多数据中心环境的多表连接查询,如何提高数据库系统性能的数据分布策略。
在云计算的数据分布策略上,文献E12]提出了一种面向查询数据库数据分布策略,作者的研究思路对我们有一定的启发,但是采用的是自上而下的单一水平分布的基本策略,没有考虑数据节点的承载能力;文献研究的是社区云环境下的数据分布及搜索策略,社区云本质上是企业私有云的一种表现形式,作者的研究点立足于SaaS层面的业务数据搜索,以云中服务节点的Web服务为数据对象,讨论虚拟化数据搜索服务的实现方法;文献[14]考虑了数据存储节点的承载能力问题,对异构集群中根据不同节点计算权值进行了非均匀的数据划分,并对传统的Range水平分布进行了改进。
本文提出的是在垂直、非均匀分布的基础上,针对关系数据库SQL查询操作设计的一种新的数据分布思想,考虑了自上而下和自下而上的结合式分配策略。通过分析数据节点的处理能力,为子查询命令分配作参考。实验证明,这种策略具有更高的适应性,明显提高查询操作的响应速率。
5 总结
本文从企业私有云的环境出发,以垂直非均匀分布为基础,考虑了云计算节点承载能力权值,设计了一个综合考虑自上而下和自下而上的面向云存储应用的数据分布策略,根据企业云存储中心的实际应用模式进行数据分布,根据应用频率分布数据表到各个数据节点上,同时为了满足数据节点的执行能力,将根据访问频率搭配数据节点的能力。通过分析及试验结果证明,本文的数据分布策略可以明显减少数据库查询响应时间,有效提高企业私有云访问效率。
下一步工作的重点在于研究可能产生的数据倾斜解决办法及访问热点的数据迁移算法等。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:一种面向企业私有云的数据分布策略
本文网址:http://www.toberp.com/html/consultation/1083948162.html