CN111427963A - 分布式数据库的数据访问方法及系统 - Google Patents
分布式数据库的数据访问方法及系统 Download PDFInfo
- Publication number
- CN111427963A CN111427963A CN202010295854.2A CN202010295854A CN111427963A CN 111427963 A CN111427963 A CN 111427963A CN 202010295854 A CN202010295854 A CN 202010295854A CN 111427963 A CN111427963 A CN 111427963A
- Authority
- CN
- China
- Prior art keywords
- management subsystem
- data management
- data
- global
- database
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 34
- 238000013523 data management Methods 0.000 claims abstract description 138
- 238000012545 processing Methods 0.000 claims abstract description 76
- 238000013467 fragmentation Methods 0.000 claims abstract description 36
- 238000006062 fragmentation reaction Methods 0.000 claims abstract description 36
- 238000004458 analytical method Methods 0.000 claims abstract description 26
- 238000004891 communication Methods 0.000 claims abstract description 14
- 238000007726 management method Methods 0.000 claims description 17
- 238000000926 separation method Methods 0.000 claims description 7
- 230000006870 function Effects 0.000 claims description 4
- 238000011176 pooling Methods 0.000 claims description 4
- 238000011084 recovery Methods 0.000 claims description 4
- 238000010200 validation analysis Methods 0.000 claims description 4
- 230000009286 beneficial effect Effects 0.000 abstract description 3
- 239000003795 chemical substances by application Substances 0.000 description 10
- 230000008569 process Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000011161 development Methods 0.000 description 6
- 230000018109 developmental process Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- 230000011218 segmentation Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000009545 invasion Effects 0.000 description 3
- 230000005012 migration Effects 0.000 description 3
- 238000013508 migration Methods 0.000 description 3
- 239000007943 implant Substances 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 210000001503 joint Anatomy 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种分布式数据库的数据访问方法及系统,该方法包括:全局配置子系统;全局数据管理子系统,用于读取配置信息,并根据配置信息保存数据分片规则以及运行,根据数据分片规则将客户端的数据访问请求的解析信息经由局部数据管理子系统分发到相应的数据库,并协调各数据库之间的数据处理,将数据处理的结果反馈给客户端;多个局部数据管理子系统,用于接收全局数据管理子系统的命令,并根据命令将数据访问请求的解析信息发送至相应的数据库中执行,以及将相应的数据库反馈的结果发送至全局数据管理子系统;各子系统位于业务层与数据库之间的中间件代理层。本发明可以减少通信开销并有利于提升业务层的可维护性。
Description
技术领域
本发明涉及分布式数据库的数据访问技术领域,尤其涉及一种分布式数据库的数据访问方法及系统。
背景技术
基于单机数据库的软件系统,随着日益增长的数据量和业务逻辑的扩展,不可避免地会面临以下的问题:(1)通信开销大,单机数据库会有大量分散的客户端来访问,而其在物理上只存在于某个服务器上,因此会造成大量的通信开销。(2)可靠性差,由于单机数据库所有的数据都存在一个服务器上,因此一旦发生故障,将导致整个系统停止运作。(3)性能差,随着数据量的增加和客户端访问的增加,存储系统本身的性能可能会成为瓶颈,同样的性能瓶颈也包括CPU计算能力、IO吞吐能力。(4)可扩展性差,单机数据库的性能只能通过升级单机硬件能力方式来提高,比如原来采用MySQL单机数据库,遇到瓶颈时可更换磁盘,在仍然满足不了需求时,可采用Oracle的商用解决方案,用更高端的存储设备和高端小型机等,而这个过程存在着设备升级和数据迁移的成本,提高可扩展性时会面临巨大的成本问题。此外,单机硬件能力的升级,并不能换来线性的性能加速比例。(5)设计管理困难,当系统的功能变得越来越复杂,而数据库仍然为单机的情况下,单机数据库上承载的业务类型越来越多,导致管理和业务设计上的困难。
针对单机数据库问题,目前与本发明较为接近的实现方案主要有:
(1)主从部署、读写分离。数据库以主从方式部署,对主库的数据写入,会通过数据库本身的机制,复制到从库上,主库与从库的数据最终保持一致。业务系统在做数据库操作时,将写操作路由至主库执行,而在从库上进行读取操作。主从部署、读写分离的方案可暂时缓解系统现有的请求压力,但随着业务量的不断增加和扩展,依然无法解决表数据量过大导致的单机数据库的性能瓶颈问题,倘若处于流量高峰期或者并发期时,数据库可能因此而宕机,这种方法无法从根本上解决问题。
(2)数据垂直切分。一个数据库由多个表构成,每个表一般对应着不同的业务,垂直切分是指按照业务将表进行分类,将不同的业务所涉及的表,分布到不同的数据库上。数据垂直切分后,由于垂直切分是按照业务的分类将表分散到不同的库,因此对于热门业务,业务表会存在数据量过于庞大的问题,依然存在单库性能瓶颈,不利于数据扩展与性能提高。此外,部分关联的业务表之间无法进行连接查询,只能通过业务层以接口的方式解决,提高了系统的复杂度,并且,在垂直切分的方案下,分布式事务的处理也更加复杂。
(3)数据水平切分。根据数据库表中数据的逻辑关系,将同一个表中的数据按照某种条件拆分到多台数据库上,这称之为水平切分。相对于垂直切分,水平切分不是将表做分类,而是按照某个字段的某种规则来分散到多个库之中,每个表中包含一部分数据。数据水平切分不存在单库大数据或者高并发的性能瓶颈,通过对拆分规则的设计,可以将连接查询的范围缩小到单个库内,能极大地提高系统的稳定性和负载能力。现有水平切分的方式有客户端代理方式,客户端代理的方式存在着以下几个缺点:
1、连接数过多,通信开销大;
2、对业务侵入性强,应用的改动比较大,业务层逻辑需要去考虑具体的分片细节,可维护性较差。对于已经存有的面向单机数据库的业务系统来说,存在着改造难度大,维护成本高的问题。
3、对于SQL语句的解析和结果集的处理,给业务层带来额外的性能开销,可能影响业务系统的稳定性。
发明内容
本发明旨在提供一种分布式数据库的数据访问方法以及系统,以减少通信开销并有利于提升业务层的可维护性。
根据本发明的第一方面,一种分布式数据库的数据访问系统,包括:
全局配置子系统,用于存储及维护配置信息,为数据访问提供全局的配置信息;
全局数据管理子系统,用于读取所述配置信息,并根据所述配置信息保存数据分片规则以及运行,根据所述数据分片规则将客户端的数据访问请求的解析信息经由局部数据管理子系统分发到相应的数据库,并协调各数据库之间的数据处理,将所述数据处理的结果反馈给所述客户端;
多个所述局部数据管理子系统,分别与所述数据库一一对应,每一所述局部数据管理子系统用于接收所述全局数据管理子系统的命令,并根据所述命令将所述数据访问请求的解析信息发送至相应的数据库中执行,以及将所述相应的数据库反馈的结果发送至所述全局数据管理子系统;
所述全局配置子系统、全局数据管理子系统及局部数据管理子系统位于业务层与数据库之间的中间件代理层。
优选地,所述全局数据管理子系统包括:
软负载均衡模块,用于运行于所述业务层,为所述业务层提供软负载均衡功能。
优选地,所述全局数据管理子系统还包括;
前端模块,用于根据预设的通信协议与客户端连接,接收所述客户端的数据访问请求;
语句执行模块,用于处理所述客户端的数据访问请求中无需发往局部数据管理子系统执行的语句;
预编译处理模块,用于处理业务层的预编译请求,并在局部管理子系统中同样采取预编译的方式进行数据查询处理;
语句路由解析模块,用于对所述客户端的数据访问请求中需发往局部数据管理子系统执行的语句进行解析,并根据所述数据分片规则,解析各需发往局部数据管理子系统执行的语句对应的局部数据管理子系统,以及根据解析结果将各语句发送对应的局部数据管理子系统;
分布式事务处理模块,用于将所述解析结果中的语义信息和数据分片规则整合,结合当前连接的事务状态,判断是否处于分布式事务的上下文中,并在处于分布式事务的上下文中时,则植入事务处理逻辑;
结果处理模块,用于根据需发往局部数据管理子系统执行的语句判断是否满足预设的特殊处理条件,在对满足预设的特殊处理条件时,对局部数据管理子系统反馈的结果进行特殊处理。
优选地,所述局部数据管理子系统包括:
数据库连接管理模块,用于连接维护一个相应的数据库,并检查链接的所述数据库的心跳;
读写分离模块,用于根据接收到的语句中读写类型的不同,将写类型的语句路由到主库上执行,将读类型的语句路由到从库上执行;
单点失效恢复模块,用于当所连接的数据库发生宕机后,定时心跳检测所连接的数据库的心跳,在所连接的数据库的心跳恢复时,并将所连接的数据库重新加入到数据服务中。
优选地,所述全局配置子系统包括:
配置读取与解析模块,用于从配置中心读取key-value结构配置信息,解析并检查所述key-value结构配置信息的有效性,并将其保存在内存中,利用读取到的所述配置信息,初始化所述全局配置子系统、全局数据管理子系统以及多个局部数据管理子系统;
配置写入模块,用于将更改的配置信息格式化后,以key-value的结构写入到所述配置中心;
配置热生效模块,用于当所述配置信息发生修改时,从所述配置中心将修改后的配置信息下发到全局数据管理子系统和局部数据管理子系统中,以使得在全局数据管理子系统和局部数据管理子系统处于运行状态时,将所修改的运行时配置信息动态加载。
优选地,多个所述局部数据管理子系统为非池化连接。
优选地,所述数据访问请求为SQL请求,所述预设的通信协议为MySQL数据库协议。
根据本发明的第二方面,一种分布式数据库的数据访问方法,应用于所述的分布式数据库的数据访问系统,所述数据访问方法包括:
全局数据管理子系统在启动后,发送指令给全局配置管理子系统,读取配置信息;
全局配置管理子系统读取到配置信息后,根据所述配置信息,将数据分片规则保存在内存中,并根据运行时配置信息,启动全局数据管理子系统和各个局部数据管理子系统;
全局数据管理子系统在接收到客户端的数据访问请求后,根据所述数据分片规则将客户端的数据访问请求的解析信息经由局部数据管理子系统分发到相应的数据库,并协调各数据库之间的数据处理,将所述数据处理的结果反馈给所述客户端。
优选地,根据所述数据分片规则将客户端的数据访问请求的解析信息经由局部数据管理子系统分发到相应的数据库,并协调各数据库之间的数据处理,将所述数据处理的结果反馈给所述客户端的步骤包括:
语句执行模块判断语句是否需要发往局部数据管理子系统处理,若所述语句不需要发往局部数据管理子系统处理,则执行所述语句并返回结果集给客户端;
若所述语句需要发往局部数据管理子系统处理,语句路由解析模块对所述语句进行语义解析,解析所述语句所携带的表名和字段,结合所述数据分片规则,将所述语句发往的对应的局部数据管理子系统;
各个局部数据管理子系统将接收的语句发送至对应连接的数据库中执行,并接收结果集,把结果集发送给全局数据管理子系统的结果集处理模块进行处理,得到并发送最终处理后的结果集给客户端。
优选地,在将所述语句发往的对应的局部数据管理子系统的步骤之前还包括:
若所述语句采用的是预编译的方式,则将相应的预编译命令发往局部数据管理子系统,之后全局数据管理子系统的分布式事务处理模块根据当前连接事务的状态和解析后的信息,确定是否为所述语句植入分布式事务处理逻辑。
本发明提出的一种分布式数据库的数据访问方法以及系统采用中间件代理的方式实现数据水平分片方案,业务层不与数据库直接连接,而是通过与中间件代理连接,由中间件代替处理具体的数据库访问细节,能够减少网络连接的数量,通信开销较小;简化业务层开发难度,对业务层逻辑几乎零侵入,业务层无需编写处理数据分片后的路由和结果集合并问题,对外提供统一的数据库访问协议,提供给业务层一个单库的开发模型。
参照附图来阅读对于示例性实施例的以下描述,本发明的其它特性特征和优点将变得清晰。
附图说明
并入到说明书中并且构成说明书的一部分的附图示出了本发明的实施例,并且与描述一起用于解释本发明的原理。在这些附图中,类似的附图标记用于表示类似的要素。下面描述中的附图是本发明的一些实施例,而不是全部实施例。对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,可以根据这些附图获得其它的附图。
图1为本发明的分布式数据库的数据访问系统实施例位于客户端以及各数据库之间的架构图;
图2为本发明的分布式数据库的数据访问系统实施例的结构框图;
图3为本发明的分布式数据库的数据访问系统中全局配置子系统实施例的结构框图;
图4为本发明的分布式数据库的数据访问系统中全局数据管理子系统实施例的结构框图;
图5为本发明的分布式数据库的数据访问系统中局部数据管理子系统实施例的结构框图;
图6为本发明的分布式数据库的一个数据访问方法实施例的流程图;
图7为本发明的分布式数据库的另一个数据访问方法实施例的流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
如图1以及图2所示,本发明一种分布式数据库的数据访问系统,包括:
全局配置子系统201,用于存储及维护配置信息,为数据访问提供全局的配置信息;
全局数据管理子系统202,用于读取所述配置信息,并根据所述配置信息保存数据分片规则以及运行,根据所述数据分片规则将客户端的数据访问请求的解析信息经由局部数据管理子系统203分发到相应的数据库,并协调各数据库之间的数据处理,将所述数据处理的结果反馈给所述客户端;
多个所述局部数据管理子系统203,分别与所述数据库一一对应,每一所述局部数据管理子系统203用于接收所述全局数据管理子系统202的命令,并根据所述命令将所述数据访问请求的解析信息发送至相应的数据库中执行,以及将所述相应的数据库反馈的结果发送至所述全局数据管理子系统202;
所述全局配置子系统201、全局数据管理子系统202及局部数据管理子系统203位于业务层与数据库之间的中间件代理层。具体操作时,所述全局配置子系统201、全局数据管理子系统202及局部数据管理子系统203可运行于同一个进程。
局部数据管理子系统不仅可以管理关系型数据库,也支持其它类型的数据源例如NoSQL、MQ等。全局数据管理子系统的前端模块不仅限于支持开源MySQL数据库协议,也支持其它数据库协议。以下各实施例中均以MySQL数据库协议及其SQL语句为例进行解释说明,不应做限定性理解。
需要说明的是,在面对异常复杂的查询场景,例如多层嵌套兼连接的SQL查询时,数据库代理中间件并非全功能的数据库引擎,即使在中间件这一层处理,性能往往较差。各实施例在处理复杂业务逻辑时,定义了明确的能力边界和错误响应,在规范业务开发的同时,也避免了数据出差错,由此实现在给业务层及时反馈的同时,也保证业务数据查询的准确性。
本发明分布式数据库的数据访问系统采用中间件代理的方式实现数据水平分片方案,业务层不与数据库直接连接,而是通过与中间件代理连接,由中间件代替处理具体的数据库访问细节,能够减少网络连接的数量,通信开销较小;简化业务层开发难度,对业务层逻辑几乎零侵入,业务层无需编写处理数据分片后的路由和结果集合并问题,对外提供统一的数据库访问协议,提供给业务层一个单库的开发模型。
如图3所示,本发明提供一种分布式数据库的数据访问系统中全局配置子系统实施例的结构框图,其对应图2中全局配置子系统201的具体实施方式,该全局配置子系统主要维护配置信息,为数据的访问提供一个逻辑统一的全局配置信息。配置信息可以包括对于数据水平切分规则的具体细节、逻辑库、逻辑表、运行时性能相关参数,以及具体数据源信息。具体地,该全局配置子系统包括:
配置读取与解析模块301,用于从配置中心读取key-value结构配置信息,解析并检查所述key-value结构配置信息的有效性,并将其保存在内存中,利用读取到的所述配置信息,初始化所述全局配置子系统、全局数据管理子系统以及多个局部数据管理子系统;配置中心可以是大多数主流的具有存储能力的集中性系统,例如zookeeper、redis、eureka、apollo等。
配置写入模块302,用于将更改的配置信息格式化后,以key-value的结构写入到所述配置中心。
配置热生效模块303,用于当所述配置信息发生修改时,从所述配置中心将修改后的配置信息下发到全局数据管理子系统和局部数据管理子系统中,以使得在全局数据管理子系统和局部数据管理子系统处于运行状态时,将所修改的运行时配置信息动态加载,使其不需要重启也能对新配置生效。
如图4所示,本发明提供一种分布式数据库的数据访问系统中全局数据管理子系统实施例的结构框图,其对应图2中全局数据管理子系统202的具体实施方式,该全局数据管理子系统保证对于收到的每一个数据访问请求,都能根据分片规则,进行SQL语义的解析后,正确地分发到相应的数据节点,并协调各节点之间的数据合并以及事务问题。全局数据管理子系统具体包括:
软负载均衡模块401,为运行于所述业务层的嵌入式软件模块,为所述业务层提供透明的软负载均衡功能;具体操作时,在业务层与中间件之间的负载均衡方案的技术选择中,普通中间件往往依赖于既有硬负载方案,如F5,软负载均衡模块401在减少通信消耗和负载均衡策略的灵活选择上,提供给业务层性能的提升和灵活的策略选择,解决了业务层与中间件对接的负载均衡问题。
前端模块402,用于根据预设的通信协议与客户端连接,接收所述客户端的数据访问请求;具体如实现MySQL协议,维护客户端连接池。
语句执行模块403,用于处理所述客户端的数据访问请求中无需发往局部数据管理子系统执行的语句;例如show tables,show databases等语句。
预编译处理模块404,用于处理业务层的预编译请求,并在局部管理子系统中同样采取预编译的方式进行数据查询处理。
语句路由解析模块405,用于对所述客户端的数据访问请求中需发往局部数据管理子系统执行的语句进行解析,并根据所述数据分片规则,解析各需发往局部数据管理子系统执行的语句对应的局部数据管理子系统,以及根据解析结果将各语句发送对应的局部数据管理子系统,如果语句需要全局序列号的支持或者注解的处理,则在此模块一并处理;
分布式事务处理模块406,用于将所述解析结果中的语义信息和数据分片规则整合,结合当前连接的事务状态,判断是否处于分布式事务的上下文中,并在处于分布式事务的上下文中时,则植入事务处理逻辑;
结果处理模块407,用于根据需发往局部数据管理子系统执行的语句判断是否满足预设的特殊处理条件,在对满足预设的特殊处理条件时,对局部数据管理子系统反馈的结果进行特殊处理。如根据SQL语句是否具有聚合函数或者排序、分组等语义,对结果集进行特殊处理。
本发明分布式数据库的数据访问系统中全局数据管理子系统对外提供统一的开源MySQL数据库访问协议,在其内部处理SQL解析路由、分布式事务协调以及结果集合并的工作。在分布式事务的处理方面,对业务层是完全透明的,由中间件代理保证分布式事务的数据一致性。在中间件这一层实现真正的预编译(数据库术语:绑定变量)功能,允许业务层在API使用层面上和实际运行性能上,得到预编译所带来的对数据库执行计划重复使用带来的性能提升。提供软负载均衡技术解决了业务层与中间件对接的负载均衡问题,并在开发规范上,确定明确的能力边界,在给业务层及时反馈的同时,也保证业务数据查询的准确性。
如图5所示,本发明提供一种分布式数据库的数据访问系统中局部数据管理子系统实施例的结构框图,其对应图2中局部数据管理子系统203的具体实施方式,该局部数据管理子系统用于维护各个具体数据库信息以及动态连接信息,并负责接收全局管理系统的命令,做本地数据的处理,具体包括:
数据库连接管理模块501,用于连接维护一个相应的数据库,并检查链接的所述数据库的心跳;
读写分离模块502,用于根据接收到的语句中读写类型的不同,将写类型的语句路由到主库上执行,将读类型的语句路由到从库上执行;
单点失效恢复模块503,用于当所连接的数据库发生宕机后,定时心跳检测所连接的数据库的心跳,在所连接的数据库的心跳恢复时,并将所连接的数据库重新加入到数据服务中。
普通的中间件在处理局部管理系统时,往往采用池化的方式管理连接,而对于中间件代理来说,往往需要对前端连接状态和后端真正数据源状态的同步,同步通常意味着需要通信,池化后的管理方式会带来过多的状态同步操作,会带来性能上的损耗。优选地,多个所述局部数据管理子系统为非池化连接。
本发明分布式数据库的数据访问系统中局部数据管理子系统,对具体数据库的连接维护、心跳检测、故障恢复以及读写分离处理,对局部数据管理子系统采用非池化设计大大提高性能。
如图6所示,本发明还提供一种分布式数据库的数据访问方法,其应用于图1及图2所示系统实施例,图1-图2所示实施例的解释说明可以应用于本实施例,该数据访问方法包括:
步骤601:全局数据管理子系统在启动后,发送指令给全局配置管理子系统,读取配置信息;
步骤602:全局配置管理子系统读取到配置信息后,根据所述配置信息,将数据分片规则保存在内存中,并根据运行时配置信息,启动全局数据管理子系统和各个局部数据管理子系统;
步骤603:全局数据管理子系统在接收到客户端的数据访问请求后,根据所述数据分片规则将客户端的数据访问请求的解析信息经由局部数据管理子系统分发到相应的数据库,并协调各数据库之间的数据处理,将所述数据处理的结果反馈给所述客户端。
本发明分布式数据库的数据访问方法相对于数据垂直分片而言更加灵活,不容易形成数据量的倾斜,在可靠性和可扩展性方面,不会像垂直分片那样,由于业务类型的不同而使某些业务依然会陷入单机数据库性能瓶颈中。本发明也把主从部署、读写分离方案的优点,直接整合为局部数据管理系统的一个主要模块。本发明采用的中间件代理的方式,相对于客户端代理来说,本发明对外提供数据库代理模型,业务层的开发模型依然是面向单库编程,几乎对业务逻辑的无侵入,极大的降低了业务的改造和迁移成本。
如图7所示,本发明还提供一种分布式数据库的数据访问方法,其为图6所示方法的优选实施例,图6所示实施例的解释说明可以应用于本实施例,该数据访问方法包括:
步骤701,前端模块接收客户端SQL请求;具体地全局数据管理子系统在启动后,发送指令给全局配置管理子系统,进行配置信息的读取,全局配置管理子系统读取到配置后,根据配置信息,将数据分片规则的细节保存在内存中,并根据运行时配置信息,启动全局数据管理子系统的各个模块和各个局部数据管理子系统。全局数据管理系统的各个模块启动成功后,前端模块开始等待客户端连接和SQL请求。
步骤702,收到客户端SQL请求后语句执行模块判断该SQL是否需要发往局部数据管理系统处理,如果不需要,则语句模块执行该SQL并返回结果集给客户端。
步骤703,语句路由解析模块对该SQL进行语义解析,解析该SQL所携带的表名和字段,结合分片规则,判断该SQL需要发往哪个局部数据管理系统,如果该SQL语句采用的是预编译的方式,那么则将相应的预编译命令发往局部数据管理子系统,之后分布式事务处理模块根据当前连接事务的状态和已知的解析后的信息,来决定是否为此SQL植入分布式事务处理逻辑。
步骤704,根据解析结果,一个或者多个局部数据管理子系统接收SQL,各个局部数据管理系统将该SQL发送至具体的数据库中执行,并接收结果集,把结果集发送给全局数据管理子系统的结果处理模块。
步骤705,结果处理模块根据该SQL的语义,对结果集进行例如排序、分组等工作,最终将合并后的结果集返回给客户端。
本实施例分布式数据库的数据访问方法具有上述各个分布式数据库的数据访问系统及方法相应的技术效果,在此不再赘述。
上面描述的内容可以单独地或者以各种方式组合起来实施,而这些变型方式都在本发明的保护范围之内。
上面描述的内容可以单独地或者以各种方式组合起来实施,而这些变型方式都在本发明的保护范围之内。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制。尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种分布式数据库的数据访问系统,其特征在于,包括:
全局配置子系统,用于存储及维护配置信息,为数据访问提供全局的配置信息;
全局数据管理子系统,用于读取所述配置信息,并根据所述配置信息保存数据分片规则以及运行,根据所述数据分片规则将客户端的数据访问请求的解析信息经由局部数据管理子系统分发到相应的数据库,并协调各数据库之间的数据处理,将所述数据处理的结果反馈给所述客户端;
多个所述局部数据管理子系统,分别与所述数据库一一对应,每一所述局部数据管理子系统用于接收所述全局数据管理子系统的命令,并根据所述命令将所述数据访问请求的解析信息发送至相应的数据库中执行,以及将所述相应的数据库反馈的结果发送至所述全局数据管理子系统;
所述全局配置子系统、全局数据管理子系统及局部数据管理子系统位于业务层与数据库之间的中间件代理层。
2.如权利要求1所述的数据访问系统,其特征在于:所述全局数据管理子系统包括:
软负载均衡模块,用于运行于所述业务层,为所述业务层提供软负载均衡功能。
3.如权利要求2所述的数据访问系统,其特征在于:所述全局数据管理子系统还包括;
前端模块,用于根据预设的通信协议与客户端连接,接收所述客户端的数据访问请求;
语句执行模块,用于处理所述客户端的数据访问请求中无需发往局部数据管理子系统执行的语句;
预编译处理模块,用于处理业务层的预编译请求,并在局部管理子系统中同样采取预编译的方式进行数据查询处理;
语句路由解析模块,用于对所述客户端的数据访问请求中需发往局部数据管理子系统执行的语句进行解析,并根据所述数据分片规则,解析各需发往局部数据管理子系统执行的语句对应的局部数据管理子系统,以及根据解析结果将各语句发送对应的局部数据管理子系统;
分布式事务处理模块,用于将所述解析结果中的语义信息和数据分片规则整合,结合当前连接的事务状态,判断是否处于分布式事务的上下文中,并在处于分布式事务的上下文中时,则植入事务处理逻辑;
结果处理模块,用于根据需发往局部数据管理子系统执行的语句判断是否满足预设的特殊处理条件,在对满足预设的特殊处理条件时,对局部数据管理子系统反馈的结果进行特殊处理。
4.如权利要求3所述的数据访问系统,其特征在于:所述局部数据管理子系统包括:
数据库连接管理模块,用于连接维护一个相应的数据库,并检查链接的所述数据库的心跳;
读写分离模块,用于根据接收到的语句中读写类型的不同,将写类型的语句路由到主库上执行,将读类型的语句路由到从库上执行;
单点失效恢复模块,用于当所连接的数据库发生宕机后,定时心跳检测所连接的数据库的心跳,在所连接的数据库的心跳恢复时,并将所连接的数据库重新加入到数据服务中。
5.如权利要求4所述的数据访问系统,其特征在于:所述全局配置子系统包括:
配置读取与解析模块,用于从配置中心读取key-value结构配置信息,解析并检查所述key-value结构配置信息的有效性,并将其保存在内存中,利用读取到的所述配置信息,初始化所述全局配置子系统、全局数据管理子系统以及多个局部数据管理子系统;
配置写入模块,用于将更改的配置信息格式化后,以key-value的结构写入到所述配置中心;
配置热生效模块,用于当所述配置信息发生修改时,从所述配置中心将修改后的配置信息下发到全局数据管理子系统和局部数据管理子系统中,以使得在全局数据管理子系统和局部数据管理子系统处于运行状态时,将所修改的运行时配置信息动态加载。
6.如权利要求5所述的数据访问系统,其特征在于:多个所述局部数据管理子系统为非池化连接。
7.如权利要求6所述的数据访问系统,其特征在于:所述数据访问请求为SQL请求,所述预设的通信协议为MySQL数据库协议。
8.一种分布式数据库的数据访问方法,其特征在于,应用于如权利要求1-7中任一项所述的分布式数据库的数据访问系统,所述数据访问方法包括:
全局数据管理子系统在启动后,发送指令给全局配置管理子系统,读取配置信息;
全局配置管理子系统读取到配置信息后,根据所述配置信息,将数据分片规则保存在内存中,并根据运行时配置信息,启动全局数据管理子系统和各个局部数据管理子系统;
全局数据管理子系统在接收到客户端的数据访问请求后,根据所述数据分片规则将客户端的数据访问请求的解析信息经由局部数据管理子系统分发到相应的数据库,并协调各数据库之间的数据处理,将所述数据处理的结果反馈给所述客户端。
9.如权利要求8所述的数据访问方法,其特征在于:根据所述数据分片规则将客户端的数据访问请求的解析信息经由局部数据管理子系统分发到相应的数据库,并协调各数据库之间的数据处理,将所述数据处理的结果反馈给所述客户端的步骤包括:
语句执行模块判断语句是否需要发往局部数据管理子系统处理,若所述语句不需要发往局部数据管理子系统处理,则执行所述语句并返回结果集给客户端;
若所述语句需要发往局部数据管理子系统处理,语句路由解析模块对所述语句进行语义解析,解析所述语句所携带的表名和字段,结合所述数据分片规则,将所述语句发往的对应的局部数据管理子系统;
各个局部数据管理子系统将接收的语句发送至对应连接的数据库中执行,并接收结果集,把结果集发送给全局数据管理子系统的结果集处理模块进行处理,得到并发送最终处理后的结果集给客户端。
10.如权利要求9所述的数据访问方法,其特征在于:在将所述语句发往的对应的局部数据管理子系统的步骤之前还包括:
若所述语句采用的是预编译的方式,则将相应的预编译命令发往局部数据管理子系统,之后全局数据管理子系统的分布式事务处理模块根据当前连接事务的状态和解析后的信息,确定是否为所述语句植入分布式事务处理逻辑。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010295854.2A CN111427963A (zh) | 2020-04-15 | 2020-04-15 | 分布式数据库的数据访问方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010295854.2A CN111427963A (zh) | 2020-04-15 | 2020-04-15 | 分布式数据库的数据访问方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111427963A true CN111427963A (zh) | 2020-07-17 |
Family
ID=71556841
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010295854.2A Pending CN111427963A (zh) | 2020-04-15 | 2020-04-15 | 分布式数据库的数据访问方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111427963A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112084267A (zh) * | 2020-07-29 | 2020-12-15 | 北京思特奇信息技术股份有限公司 | 解决分布式数据库全局广播的方法 |
CN112417044A (zh) * | 2020-11-20 | 2021-02-26 | 中国平安人寿保险股份有限公司 | 新增附加险系统的数据处理方法、装置及计算机设备 |
CN113032447A (zh) * | 2020-12-31 | 2021-06-25 | 一汽资本控股有限公司 | 一种数据分布式存储的方法以及分布式数据存储系统 |
CN113268471A (zh) * | 2021-06-24 | 2021-08-17 | 京东科技控股股份有限公司 | 处理分布式事务的方法、代理连接池、系统、设备及介质 |
CN113297250A (zh) * | 2021-05-28 | 2021-08-24 | 北京思特奇信息技术股份有限公司 | 一种分布式数据库多表关联查询的方法及系统 |
CN114064694A (zh) * | 2021-11-18 | 2022-02-18 | 北京云上曲率科技有限公司 | 基于数据集的数据库代理方法及装置 |
CN117240855A (zh) * | 2023-08-21 | 2023-12-15 | 北京百度网讯科技有限公司 | 分布式系统及流量控制方法、装置、设备和介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101763347A (zh) * | 2008-12-24 | 2010-06-30 | 中国移动通信集团河北有限公司 | Gis接口平台、网络gis管理系统及管理方法 |
CN102033912A (zh) * | 2010-11-25 | 2011-04-27 | 北京北纬点易信息技术有限公司 | 一种分布式数据库访问方法及系统 |
CN102622427A (zh) * | 2012-02-27 | 2012-08-01 | 杭州闪亮科技有限公司 | 读写分离数据库的方法及系统 |
CN103942234A (zh) * | 2013-01-21 | 2014-07-23 | 中国电信股份有限公司 | 对多个异构数据库操作的方法、中间件装置及系统 |
WO2017049911A1 (zh) * | 2015-09-21 | 2017-03-30 | 中兴通讯股份有限公司 | 一种实现分布式事务的方法、装置及数据库服务器 |
-
2020
- 2020-04-15 CN CN202010295854.2A patent/CN111427963A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101763347A (zh) * | 2008-12-24 | 2010-06-30 | 中国移动通信集团河北有限公司 | Gis接口平台、网络gis管理系统及管理方法 |
CN102033912A (zh) * | 2010-11-25 | 2011-04-27 | 北京北纬点易信息技术有限公司 | 一种分布式数据库访问方法及系统 |
CN102622427A (zh) * | 2012-02-27 | 2012-08-01 | 杭州闪亮科技有限公司 | 读写分离数据库的方法及系统 |
CN103942234A (zh) * | 2013-01-21 | 2014-07-23 | 中国电信股份有限公司 | 对多个异构数据库操作的方法、中间件装置及系统 |
WO2017049911A1 (zh) * | 2015-09-21 | 2017-03-30 | 中兴通讯股份有限公司 | 一种实现分布式事务的方法、装置及数据库服务器 |
Non-Patent Citations (1)
Title |
---|
(美)(乔丹)DAVID JORDAN,(美)(拉塞尔)CRAIG RUSSELL著;O’REILLY台湾公司译: "铁路客运关键岗位胜任力评价方法及其应用", 中国建材工业出版社, pages: 148 - 150 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112084267A (zh) * | 2020-07-29 | 2020-12-15 | 北京思特奇信息技术股份有限公司 | 解决分布式数据库全局广播的方法 |
CN112084267B (zh) * | 2020-07-29 | 2024-06-07 | 北京思特奇信息技术股份有限公司 | 解决分布式数据库全局广播的方法 |
CN112417044A (zh) * | 2020-11-20 | 2021-02-26 | 中国平安人寿保险股份有限公司 | 新增附加险系统的数据处理方法、装置及计算机设备 |
CN112417044B (zh) * | 2020-11-20 | 2023-10-31 | 中国平安人寿保险股份有限公司 | 新增附加险系统的数据处理方法、装置及计算机设备 |
CN113032447A (zh) * | 2020-12-31 | 2021-06-25 | 一汽资本控股有限公司 | 一种数据分布式存储的方法以及分布式数据存储系统 |
CN113297250A (zh) * | 2021-05-28 | 2021-08-24 | 北京思特奇信息技术股份有限公司 | 一种分布式数据库多表关联查询的方法及系统 |
CN113268471A (zh) * | 2021-06-24 | 2021-08-17 | 京东科技控股股份有限公司 | 处理分布式事务的方法、代理连接池、系统、设备及介质 |
CN113268471B (zh) * | 2021-06-24 | 2023-09-22 | 京东科技控股股份有限公司 | 处理分布式事务的方法、代理连接池、系统、设备及介质 |
CN114064694A (zh) * | 2021-11-18 | 2022-02-18 | 北京云上曲率科技有限公司 | 基于数据集的数据库代理方法及装置 |
CN117240855A (zh) * | 2023-08-21 | 2023-12-15 | 北京百度网讯科技有限公司 | 分布式系统及流量控制方法、装置、设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111427963A (zh) | 分布式数据库的数据访问方法及系统 | |
CN111338766B (zh) | 事务处理方法、装置、计算机设备及存储介质 | |
US7472125B2 (en) | Method for managing a database system | |
US6823474B2 (en) | Method and system for providing cluster replicated checkpoint services | |
WO2021051627A1 (zh) | 基于数据库的批量导入方法、装置、设备及存储介质 | |
CN103226598B (zh) | 访问数据库的方法和装置以及数据库管理系统 | |
US6675175B2 (en) | Method and system for sharing catalogs in a multiprocessing system utilizing a shared processor | |
CN111930489B (zh) | 一种任务调度方法、装置、设备及存储介质 | |
US20050114846A1 (en) | Configuration synchronization for redundant processors executing different versions of software | |
KR102016095B1 (ko) | 트랜잭셔널 미들웨어 머신 환경에서 트랜잭션 레코드들을 유지하기 위한 시스템 및 방법 | |
KR20060121654A (ko) | 데이타베이스의 복구 유닛을 위한 시스템 및 방법 | |
US20170206208A1 (en) | System and method for merging a mainframe data file to a database table for use by a mainframe rehosting platform | |
CN113868028B (zh) | 一种在数据节点上回放日志的方法、数据节点及系统 | |
US11704335B2 (en) | Data synchronization in a data analysis system | |
CN112328700A (zh) | 一种分布式数据库 | |
CN113032356A (zh) | 一种客舱分布式文件存储系统及实现方法 | |
US11461201B2 (en) | Cloud architecture for replicated data services | |
CN117851513A (zh) | 一种基于Redis无锁分布式数据高并发处理框架系统 | |
CN113626463A (zh) | 高并发访问下的Web性能优化方法 | |
CN111309552A (zh) | 业务日志采集系统和方法 | |
CN115934417A (zh) | 一种数据备份方法、系统和设备 | |
CN115587141A (zh) | 一种数据库同步方法和装置 | |
CN115510024A (zh) | 一种实现大规模并行数据库高可用的方法及系统 | |
CN114969206A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN114816682A (zh) | 分布式事务处理方法、系统及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200717 |