本发明涉及数据库及大数据处理技术领域,更具体地涉及一种基于mpp架构的事务处理系统及其方法。
背景技术:
目前,市场上的数据库基本上要么只能较好地适应oltp(on-linetransactionprocessing,联机事务处理)业务,要么只能较好地适应olap(on-lineanalyticalprocessing,联机分析处理)业务,这使得在不同应用场景时,要使用不同的数据库,两种数据库之间需要进行数据迁移、数据同步等,较难实现无缝对接,而现有greenplum架构主要面向olap业务,其采用了mpp(massiveparallelprocessing,海量并行处理结构)。mpp系统由管理节点和若干个数据节点组成,前端提交的任务经管理节点调度后发送至全部或部分数据节点进行执行,然后再由管理节点汇总执行结果并返回前端,因所有的sql解析与执行计划的确定都在管理节点上运行,且通过管理节点进行update和delete操作时其采用表级排它锁,无法并行,则使得greenplum对于oltp的支持很差,即在处理oltp业务时,存在较大的性能问题,每秒处理事务数较低,每秒仅能处理200多个增删改的sql操作。
鉴于此,有必要提供一种可增加事务处理的吞吐量且能较好地适应olap业务及oltp业务的基于mpp架构的事务处理系统及其方法以解决上述缺陷。
技术实现要素:
本发明所要解决的技术问题是提供一种可增加事务处理的吞吐量且能较好地适应olap业务及oltp业务的基于mpp架构的事务处理系统。
本发明所要解决的另一技术问题是提供一种可增加事务处理的吞吐量且能较好地适应olap业务及oltp业务的基于mpp架构的事务处理其方法。
为解决上述技术问题,根据本发明的一方面,提供一种基于mpp架构的事务处理系统,其包括有一管理节点、客户端以及多个数据节点,其中,所述管理节点,存储有数据表的分布规则;所述客户端,与所述管理节点及数据节点通信,用于解析来自外部的sql命令以获知数据处理指令,且获取管理节点中存储的分布规则,根据所获取的分布规则采用hash算法计算出用于执行该数据处理指令的数据节点,并将该数据处理指令发送至计算所得的数据节点;所述数据节点,执行数据处理指令,并将执行结果发送至客户端。
其进一步技术方案为:所述数据节点具体用于:若所述数据处理指令为数据插入指令时,数据节点根据该指令将数据存储至其存储区中,并将插入结果发送至客户端。
其进一步技术方案为:所述数据节点具体用于:若所述数据处理指令为数据删除指令时,数据节点根据该指令删除其中存储的相应数据,并将删除结果发送至客户端。
其进一步技术方案为:所述数据节点具体用于:若所述数据处理指令为数据查询指令时,数据节点根据该指令查找相应数据的存储地址,并将存储地址发送至客户端。
其进一步技术方案为:所述分布规则包括分布键及分布方式。
为解决上述技术问题,根据本发明的另一方面,提供一种基于mpp架构的事务处理方法,该方法包括:
接收来自外部的sql命令,并获取管理节点中存储的数据表分布规则;
解析所接收的sql命令以获知数据处理指令;
根据所获取的分布规则采用hash算法计算出用于执行该数据处理指令的数据节点;
将数据处理指令发送至计算所得的数据节点;
接收数据节点的执行结果。
与现有技术相比,本发明的客户端直联数据节点,管理节点仅在客户端接收到sql命令后提供数据表的分布规则,则数据传输不需经过管理节点,直接由客户端传至数据节点,可减少数据传输的消耗,且因数据节点之间的事务处理是独立的,可以并行处理事务,以增加事务处理的吞吐量,使得其较好地适应olap业务及oltp业务。
附图说明
图1是本发明基于mpp架构的事务处理系统一具体实施例的结构框图。
图2是本发明基于mpp架构的事务处理方法一具体实施例的流程示意图。
具体实施方式
为使本领域的普通技术人员更加清楚地理解本发明的目的、技术方案和优点,以下结合附图和实施例对本发明做进一步的阐述。
现有mpp系统中将数据表横向切分成多个数据块,并分别存储到相应的数据节点,数据节点的运行机制与单机环境的数据库无异,即每个数据节点具有单独的操作系统、数据库等,节点之间完全无共享,有独立的i/o,数据处理完全并行,加载和数据处理方式与一般数据库相同,其负责数据的插入、查询、修改等操作。
参照图1,图1为本发明基于mpp架构的事务处理系统100一具体实施例的结构框图。在附图所示的实施例中,所述系统100包括有一管理节点20、客户端10以及多个数据节点30。其中,所述管理节点20存储有数据表的分布规则;本实施例中,所述分布规则包括分布键及分布方式,因greenplum架构默认使用hash分布策略,该策略可选一个或者多个列作为分布键,所述分布键可用于做hash算法以确认数据存放至对应的数据节点30上,优选地,相同分布键值会hash到相同的数据节点30上。所述客户端10与所述管理节点20及数据节点30通信,用于解析来自外部的sql命令以获知数据处理指令,且获取管理节点20中存储的分布规则,根据所获取的分布规则采用hash算法计算出用于执行该数据处理指令的数据节点30,并将该数据处理指令发送至计算所得的数据节点30;所述数据节点30,执行数据处理指令,并将执行结果发送至客户端10。基于该设计,本发明的客户端10直联数据节点30,管理节点20仅在客户端10接收到sql命令后提供数据表的分布规则,则数据传输不需经过管理节点20,直接由客户端10传至数据节点30,可减少数据传输的消耗,且数据节点之间的事务处理是独立的,直接访问数据节点30时,因数据节点30处理数据时采用行级锁,可以并行,可增加事务处理的吞吐量,使得其较好地适应olap业务及oltp业务。
在某些实施例中,所述数据节点30具体用于:若所述数据处理指令为数据插入指令时,数据节点30根据该指令将数据存储至其存储区中,并将插入结果发送至客户端10,以告知用户数据插入成功;若所述数据处理指令为数据删除指令时,数据节点30根据该指令删除其中存储的相应数据,并将删除结果发送至客户端10,以告知用户数据删除成功;而若所述数据处理指令为数据查询指令时,数据节点30根据该指令查找相应数据的存储地址,并将存储地址发送至客户端10,以告知用户其所需查找的数据具体的存储地址。
参照图2,图2为本发明基于mpp架构的事务处理方法一具体实施例的流程示意图。所述基于mpp架构的事务处理方法包括:
s101、接收来自外部的sql命令,并获取管理节点中存储的数据表分布规则。
其中,mpp系统中将数据表横向切分成多个数据块,并分别存储到相应的数据节点。所述分布规则包括分布键及分布方式,因greenplum架构默认使用hash分布策略,该策略可选一个或者多个列作为分布键,所述分布键可用于做hash算法以确认数据存放至对应的数据节点上,即将hash函数计算出的分布键值划分成不同的数值分区,并将不同分区映射到不同的数据节点,相同分布键值的数值分区会hash到相同的数据节点上。
该步骤中,客户端接收来自外部的sql命令后,获取管理节点中存储的数据表分布规则。
s102、解析所接收的sql命令以获知数据处理指令。
该步骤中,所述数据处理指令包括数据插入指令、数据删除指令及数据查询指令等。
s103、根据所获取的分布规则采用hash算法计算出用于执行该数据处理指令的数据节点。
该步骤中,若所述数据处理指令为数据插入指令,则客户端根据所获取的分布规则采用从greenplum源代码中提取的hash算法计算数据应该存放到哪个节点数据;而若所述数据处理指令为数据删除指令或数据查询指令,则需根据所获取的分布规则采用从greenplum源代码中提取的hash算法计算出所述需要删除的数据或者所需查询的数据存放的数据节点。
s104、将数据处理指令发送至计算所得的数据节点。
该步骤中,将数据处理指令发送至步骤s103计算所得的数据节点中,若所述数据处理指令为数据插入指令时,数据节点根据该指令将数据存储至其存储区中,并将插入结果发送至客户端,以告知用户数据插入成功;若所述数据处理指令为数据删除指令时,数据节点根据该指令删除其中存储的相应数据,并将删除结果发送至客户端,以告知用户数据删除成功;而若所述数据处理指令为数据查询指令时,数据节点根据该指令查找相应数据的存储地址,并将存储地址发送至客户端,以告知用户其所需查找的数据具体的存储地址。
s105、接收数据节点的执行结果。
综上所述,本发明的客户端直联数据节点,管理节点仅在客户端接收到sql命令后提供数据表的分布规则,则数据传输不需经过管理节点,直接由客户端传至数据节点,可减少数据传输的消耗,且因数据节点之间的事务处理是独立的,可以并行处理事务,以增加事务处理的吞吐量,使得其较好地适应olap业务及oltp业务。
以上所述仅为本发明的优选实施例,而非对本发明做任何形式上的限制。本领域的技术人员可在上述实施例的基础上施以各种等同的更改和改进,凡在权利要求范围内所做的等同变化或修饰,均应落入本发明的保护范围之内。