CN108090056A - 数据查询方法、装置及系统 - Google Patents
数据查询方法、装置及系统 Download PDFInfo
- Publication number
- CN108090056A CN108090056A CN201611020823.6A CN201611020823A CN108090056A CN 108090056 A CN108090056 A CN 108090056A CN 201611020823 A CN201611020823 A CN 201611020823A CN 108090056 A CN108090056 A CN 108090056A
- Authority
- CN
- China
- Prior art keywords
- global transaction
- query
- data
- request
- query request
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 75
- 238000012217 deletion Methods 0.000 claims description 80
- 230000037430 deletion Effects 0.000 claims description 80
- 238000012545 processing Methods 0.000 claims description 51
- 230000005540 biological transmission Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 28
- 238000002955 isolation Methods 0.000 description 15
- 238000007726 management method Methods 0.000 description 13
- 238000004590 computer program Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 238000001914 filtration Methods 0.000 description 5
- 238000003860 storage Methods 0.000 description 5
- 230000000977 initiatory effect Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 239000002253 acid Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- 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/245—Query processing
- G06F16/2453—Query optimisation
-
- 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/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种数据查询方法,该方法包括:接收前置中间件发送的查询请求和查询请求的全局事务ID;其中,查询请求的全局事务ID为全局事务管理器根据查询请求生成的;根据查询请求和查询请求的全局事务ID生成数据查询结果;发送数据查询结果给前置中间件。本发明实施例同时公开了一种数据库集群、前置中间件、全局事务管理器以及数据查询系统。
Description
技术领域
本发明涉及数据查询技术,尤其涉及一种数据查询方法、装置及系统。
背景技术
目前,大多数数据库都采用传统的商业关系型分布式数据库,分布式数据库中,为了满足海量数据的存储和系统的动态可扩展性,数据被分布在多个存储设备上,因此在数据查询此过程中可能存在有其他用户事务会改变数据库数据,导致出现查询数据集查询不一致的问题。另外,由应用或者前置中间件统一处理查询数据集,在多并发请求下会导致系统性能低下,降低系统性能。
发明内容
为解决上述技术问题,本发明实施例期望提供一种数据查询方法、装置及系统,解决了现有分布式数据库系统的数据查询不一致的问题,同时提高了分布式系统的查询性能。
本发明的技术方案是这样实现的:
一种数据查询方法,包括:
接收前置中间件发送的查询请求和所述查询请求的全局事务ID;其中,所述查询请求的全局事务ID为全局事务管理器根据所述查询请求生成的;
根据所述查询请求和所述查询请求的全局事务ID生成数据查询结果;
发送所述数据查询结果给所述前置中间件。
如上所述的方法,所述根据所述查询请求和所述查询请求的全局事务ID生成数据查询结果,包括:
根据所述查询请求获取符合所述查询请求的数据记录;
获取所述数据记录的全局事务创建ID和所述数据记录的全局事务删除ID;
根据所述数据记录、所述数据记录的全局事务创建ID和所述数据记录的全局事务删除ID生成所述数据查询结果。
如上所述的方法,所述根据所述数据记录、所述数据记录的全局事务创建ID和所述数据记录的数据的全局事务删除ID生成所述数据查询结果,包括:
判断所述数据记录的全局事务创建ID和所述数据记录的全局事务删除ID是否存在于活跃事务ID列表中;
若所述数据记录的全局事务创建ID和所述数据记录的全局事务删除ID不存在于所述活跃事务ID列表中,分别比较所述查询请求的全局事务ID与所述数据记录的全局事务创建ID和所述数据记录的全局事务删除ID的大小;
若所述查询请求的全局事务ID大于等于所述数据记录的全局事务创建ID,且所述查询请求的全局事务ID小于等于所述数据记录的全局事务删除ID,确定所述数据记录是所述数据查询结果。
如上所述的方法,还包括:
接收全局事务管理器发送的活跃事务ID列表。
一种数据查询方法,包括:
根据查询请求发送所述查询请求的全局事务ID申请请求给全局事务管理器;
接收所述全局事务管理器发送的所述查询请求的全局事务ID;
发送所述查询请求和所述查询请求的全局事务ID给数据库集群;
接收所述数据库集群发送的数据查询结果。
如上所述的方法,还包括:
接收客户端发送的业务请求;
对所述业务请求进行解析,判断所述业务请求是否是查询请求。
如上所述的方法,还包括:
根据所述数据查询结果生成最终查询结果;
发送所述最终查询结果发送给所述客户端。
一种数据查询方法,包括:
接收前置中间件发送的查询请求的全局事务ID申请请求;
根据所述查询请求的全局事务ID申请请求生成所述查询请求的全局事务ID;
发送所述查询请求的全局事务ID给所述前置中间件。
如上所述的方法,还包括:
同步活跃事务ID列表到数据库集群中;其中,所述活跃事务ID列表包含活跃数据记录的全局事务创建ID和所述活跃数据记录的全局事务删除ID。
一种数据库集群,包括:
第一接收模块,用于接收前置中间件发送的查询请求和所述查询请求的全局事务ID;其中,所述查询请求的全局事务ID为全局事务管理器根据所述查询请求生成的;
第一处理模块,用于根据所述查询请求和所述查询请求的全局事务ID生成数据查询结果;
第一发送模块,用于发送所述数据查询结果给所述前置中间件。
如上所述的数据库集群,所述第一处理模块包括:
获取单元,用于根据所述查询请求获取符合所述查询请求的数据记录;获取所述数据记录的全局事务创建ID和所述数据记录的全局事务删除ID;
处理单元,用于根据所述数据记录、所述数据记录的全局事务创建ID和所述数据记录的全局事务删除ID生成所述数据查询结果。
如上所述的数据库集群,所述处理单元,具体用于判断所述数据记录的全局事务创建ID和所述数据记录的全局事务删除ID是否存在于活跃事务ID列表中;
若所述数据记录的全局事务创建ID和所述数据记录的全局事务删除ID不存在于所述活跃事务ID列表中,分别比较所述查询请求的全局事务ID与所述数据记录的全局事务创建ID和所述数据记录的全局事务删除ID的大小;
若所述查询请求的全局事务ID大于等于所述数据记录的全局事务创建ID,且所述查询请求的全局事务ID小于等于所述数据记录的全局事务删除ID,确定所述数据记录是所述数据查询结果。
如上所述的数据库集群,所述第一接收模块,还用于接收全局事务管理器发送的活跃事务ID列表。
一种前置中间件,包括:
第二发送模块,用于根据查询请求发送所述查询请求的全局事务ID申请请求给全局事务管理器;还用于发送所述查询请求和所述查询请求的全局事务ID给数据库集群;
第二接收模块,用于接收所述全局事务管理器发送的所述查询请求的全局事务ID;还用于接收所述数据库集群发送的数据查询结果。
如上所述的前置中间件,还包括:
第二处理模块,用于对业务请求进行解析,判断所述业务请求是否是查询请求;
所述第二接收模块,还用于接收客户端发送的所述业务请求。
如上所述的前置中间件,所述第二处理模块,还用于根据所述数据查询结果生成最终查询结果;
所述第二发送模块,还用于发送所述最终查询结果发送给所述客户端。
一种全局事务管理器,包括:
第三接收模块,用于接收前置中间件发送的查询请求的全局事务ID申请请求;
第三处理模块,用于根据所述查询请求的全局事务ID申请请求生成所述查询请求的全局事务ID;
第三发送模块,用于发送所述查询请求的全局事务ID给所述前置中间件。
如上所述的全局事务管理器,所述第三处理模块,还用于同步活跃事务ID列表到数据库集群中;其中,所述活跃事务ID列表包含活跃数据记录的全局事务创建ID和所述活跃数据记录的全局事务删除ID。
一种数据查询系统,所述数据查询系统包括如上所述的数据库集群、所述前置中间件和所述全局事务管理器。
本发明实施例提供的数据查询方法、装置及系统,该方法包括接收前置中间件发送的查询请求和查询请求的全局事务ID;其中,查询请求的全局事务ID为全局事务管理器根据查询请求生成的;根据查询请求和查询请求的全局事务ID生成数据查询结果;发送数据查询结果给前置中间件;这样,在进行数据查询时,通过全局事务ID标识查询请求,数据库集群可以根据查询请求的全局事务ID对数据查询结果过滤,筛选出符合一致性的数据查询结果,从而确保了数据查询的一致性,同时,数据查询结果的处理由各个数据库集群进行,大大减少了前置中间件的数据处理量,提高了分布式系统的查询性能。
附图说明
图1为本发明实施例提供的一种数据查询方法的流程示意图;
图2为本发明实施例提供的另一种数据查询方法的流程示意图;
图3为本发明实施例提供的又一种数据查询方法的流程示意图;
图4为本发明实施例提供的数据库集群的数据过滤方法流程示意图;
图5为本发明实施例提供的又一种数据查询方法的流程示意图;
图6为本发明实施例提供的又一种数据查询方法的流程示意图;
图7为本发明实施例提供的又一种数据查询方法的流程示意图;
图8为本发明实施例提供的一种数据查询方法的示意图;
图9为本发明实施例提供的另一种数据查询方法的示意图;
图10为本发明实施例提供的又一种数据查询方法的示意图;
图11为本实施例提供的一种数据库集群的结构示意图;
图12为本实施例提供的另一种数据库集群的结构示意图;
图13为本实施例提供的一种前置中间件的结构示意图;
图14为本实施例提供的另一种前置中间件的结构示意图;
图15为本发明实施例提供的一种全局事务管理器的结构示意图;
图16为本发明实施例提供的一种数据查询系统的结构示意图;
图17为本发明实施例提供的数据查询系统的示意图;
图18为本发明实施例提供的另一种数据查询系统的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
传统的分布式数据库系统一般包括客户端、前置中间件服务器(以下简称前置中间件)、全局事务管理服务器、一个以上的数据库集群、后置中间件服务器(以下简称后置中间件)和运维管理服务系统。关于传统的分布式数据库系统可参考现有技术,不再赘述,下面说明一些涉及数据库方面的概念。事务(transaction)是数据库系统的执行单位,可以是一个数据库操作(如Select操作)或者是一组操作序列;事务ACID属性,包括:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。其中,
原子性:保证事务中的所有操作全部执行或全部不执行。例如执行转账事务,要么转账成功,要么失败。成功,则金额从转出帐户转入到目的帐户,并且两个帐户的金额将发生相应的变化;失败,则两个账户的金额都不变。不会出现转出帐户扣了钱,而目的帐户没有收到钱的情况。
一致性:保证数据库始终保持数据的一致性,事务操作之前是一致的,事务操作之后也是一致的,不管事务成功与否。如上面的例子,转账之前和之后数据库都保持数据上的一致性。
隔离性:多个事务并发执行的话,结果应该与多个事务串行执行效果是一样的。显然最简单的隔离就是将所有事务都串行执行:先来先执行,一个事务执行完了才允许执行下一个。但这样数据库的效率低下,如:两个不同的事务只是读取同一批数据,这样完全可以并发进行。为了控制并发执行的效果就有了不同的隔离级别。
持久性:持久性表示事物操作完成之后,对数据库的影响是持久的,即使数据库因故障而受到破坏,数据库也应该能够恢复。通常的实现方式是采用日志。
本发明实施例为了解决现有技术中存在的分布式数据库系统中数据查询不一致的问题和多并发请求下系统性能低下的问题,保持现有分布式数据库系统中数据库客户端、后置中间件和运维管理服务系统三大模块原有功能,通过改进和优化前置中间件、数据库集群、全局事务管理服务器来实现本发明各个实施例。下面结合附图具体说明本发明各个实施例。
图1为本发明实施例提供的一种数据查询方法的流程示意图,如图1所示,该方法包括:
步骤101、接收前置中间件发送的查询请求和查询请求的全局事务ID;其中,查询请求的全局事务ID为全局事务管理器根据查询请求生成的。
具体的,步骤101接收前置中间件发送的查询请求和查询请求的全局事务ID可以由数据库集群实现。查询请求的全局事务ID用于表征查询请求的发送时间,因此,某一时间查询请求的全局事务ID是唯一的。
步骤102、根据查询请求和查询请求的全局事务ID生成数据查询结果。
具体的,步骤102根据查询请求和查询请求的全局事务ID生成数据查询结果可以由数据库集群实现。在步骤102中,每个数据库集群根据查询请求在本地数据库中进行查询,得到初步查询结果,然后根据查询请求的全局事务ID过滤该初步查询结果,生成数据查询结果。
步骤103、发送数据查询结果给前置中间件。
具体的,步骤103发送数据查询结果给前置中间件可以由数据库集群实现。在步骤103中,每个数据库集群将自己生成的数据查询结果发送给前置中间件,如果某个数据库集群根据查询请求和查询请求的全局事务ID生成不出数据查询结果,则不像前置中间件返回数据查询结果。
本发明实施例提供的数据查询方法,数据库集群接收前置中间件发送的查询请求和查询请求的全局事务ID;根据查询请求和查询请求的全局事务ID生成数据查询结果并发送给前置中间件;这样,在进行数据查询时,通过全局事务ID标识查询请求,数据库集群可以根据查询请求的全局事务ID对数据查询结果过滤,筛选出符合一致性的数据查询结果,从而确保了数据查询的一致性,同时,数据查询结果的处理由各个数据库集群进行,大大减少了前置中间件的数据处理量,提高了分布式系统在并发请求下的数据查询性能。
图2为本发明实施例提供的另一种数据查询方法的流程示意图,如图2所示,该方法包括:
步骤201、数据库集群接收前置中间件发送的查询请求和查询请求的全局事务ID;其中,查询请求的全局事务ID为全局事务管理器根据查询请求生成的。
步骤202、数据库集群根据查询请求获取符合查询请求的数据记录。
需要说明的是,步骤202获取的是符合查询请求的数据记录,在这些数据记录里可能存在不符合一致性的情况,因此需要经过步骤203的筛选。
步骤203、数据库集群获取数据记录的全局事务创建ID和数据记录的全局事务删除ID。
需要说明的是,数据记录的全局事务创建ID用于表征数据记录的创建时间,数据记录的全局事务删除ID用于表征数据记录的的删除时间。每个数据库集群中都存储有若干条数据记录,以及数据记录对应的数据记录的全局事务创建ID和数据记录的全局事务删除ID,其中,数据记录和对应的数据记录的全局事务创建ID、数据记录的全局事务删除ID可以以对应关系表的形式存储在数据库集群中,也可以以其它形式存储在数据库集群中。
步骤204、数据库集群根据数据记录、数据记录的全局事务创建ID和数据记录的全局事务删除ID生成数据查询结果。
需要说明的是,数据库集群在自身数据库中进行数据查询,进而生成数据查询结果的过程中,客户端也会发起其它数据库操作请求,如创建操作、删除操作、更新操作(相当于先进行删除操作,再进行创建操作),因此为了保证数据查询的一致性,需要根据数据记录的全局事务创建ID和数据记录的全局事务删除ID过滤获取的数据记录,生成符合一致性的数据查询结果。
步骤205、数据库集群发送数据查询结果给前置中间件。
本发明实施例提供的数据查询方法,数据库集群接收前置中间件发送的查询请求和查询请求的全局事务ID;根据查询请求获取符合查询请求的数据记录以及数据记录的全局事务创建ID和数据记录的全局事务删除ID;根据查询请求和查询请求的全局事务ID生成数据查询结果并发送给前置中间件;这样,在进行数据查询时,通过全局事务ID标识查询请求,数据库集群可以根据查询请求的全局事务ID对数据查询结果过滤,筛选出符合一致性的数据查询结果,从而确保了数据查询的一致性,同时,数据查询结果的处理由各个数据库集群进行,大大减少了前置中间件的数据处理量,提高了分布式系统在并发请求下的数据查询性能。
图3为本发明实施例提供的又一种数据查询方法的流程示意图,如图3所示,该方法包括:
步骤301、数据库集群接收前置中间件发送的查询请求和查询请求的全局事务ID;其中,查询请求的全局事务ID为全局事务管理器根据查询请求生成的。
步骤302、数据库集群根据查询请求获取符合查询请求的数据记录。
步骤303、数据库集群获取数据记录的全局事务创建ID和数据记录的全局事务删除ID。
需要说明的事,数据库集群需要获取所有在步骤302中获取的数据记录相对应的全局事务创建ID和全局事务删除ID,也就是说,如果在步骤302中数据库集群根据查询请求获取到了N条数据记录,在步骤303中则进一步获取这N条数据记录所对应的全局事务创建ID和全局事务删除ID。
步骤304、数据库集群判断数据记录的全局事务创建ID和数据记录的全局事务删除ID是否存在于活跃事务ID列表中。
需要说明的是,活跃事务指的是正在执行中、还未结束的事务,活跃事务可能是包含某一条数据记录创建操作的事务,也可能是包含某一条数据记录删除操作的事务,还有可能是同时包含某一条数据记录创建操作和另一条数据记录的删除操作的事务。
步骤305、若数据记录的全局事务创建ID和数据记录的全局事务删除ID不存在于活跃事务ID列表中,数据库集群分别比较查询请求的全局事务ID与数据记录的全局事务创建ID和数据记录的全局事务删除ID的大小。
需要说明的是,若某条数据记录的全局事务创建ID或某条数据记录的全局事务删除ID存在于活跃事务ID列表中,则丢弃该条数据记录。
步骤306、若查询请求的全局事务ID大于等于数据记录的全局事务创建ID,且查询请求的全局事务ID小于等于数据记录的全局事务删除ID,数据库集群确定数据记录是数据查询结果。
需要说明的是,若查询请求的全局事务ID小于等于对应数据记录的全局事务创建ID或查询请求的全局事务ID大于等于对应数据记录的全局事务删除ID,数据库集群确定该条数据记录不是数据查询结果。
步骤307、数据库集群发送数据查询结果给前置中间件。
本发明实施例提供的数据查询方法,数据库集群接收前置中间件发送的查询请求和查询请求的全局事务ID;根据查询请求查询并获取符合查询请求的数据记录以及数据记录的全局事务创建ID和数据记录的全局事务删除ID;当数据记录的全局事务创建ID和全局事务删除ID不存在于活跃事务ID列表中,并且查询请求的全局事务ID大于等于数据记录的全局事务创建ID且小于等于全局事务删除ID,数据库集群数据记录是数据查询结果,并发送给前置中间件;这样,在进行数据查询时,通过全局事务ID标识查询请求,数据库集群可以根据查询请求的全局事务ID对数据查询结果过滤,筛选出符合一致性的数据查询结果,从而确保了数据查询的一致性,同时,数据查询结果的处理由各个数据库集群进行,大大减少了前置中间件的数据处理量,提高了分布式系统在并发请求下的数据查询性能。
进一步,本发明实施例提供的数据查询方法还包括:数据库集群接收全局事务管理器发送的活跃事务ID列表。
具体的,活跃事务ID列表是实施更新的,数据库集群每隔一段时间就会接收全局事务管理器发送的活跃事务ID列表,接收的方式可以是以数据库集群每隔预定时间向全局事务管理器发送获取活跃事务ID列表的请求,全局事务管理器予以响应的方式,也可以是以全局事务管理器每隔预定时间向数据库集群自动发送的方式。接收的时间可以与接收前置中间件发送的查询请求和查询请求的全局事务ID的相同时间,也可以在接收前置中间件发送的查询请求和查询请求的全局事务ID之前,还可以在接收前置中间件发送的查询请求和查询请求的全局事务ID之后。在判断数据记录的全局事务创建ID和数据记录的全局事务删除ID是否存在于活跃事务ID列表中时,所用的活跃事务ID列表是最近一次接收的活跃事务ID列表。
图4为本发明实施例提供的数据库集群的数据过滤方法流程示意图,如图4所示:
数据库集群接收到前置中间件发来的SQL请求,判断该请求是否是SQL查询请求,如果不是,忽略该请求,如果是,判断该请求是否包含全局事务ID,如果不是,忽略该请求,如果是,在本数据库中获取符合条件的数据记录。
获取数据记录的全局事务创建ID和全局事务删除ID。
判断数据记录的全局事务创建ID和全局事务删除ID的其中之一是否存在于活跃事务ID列表中,若是,表明该数据记录的创建事务或删除事务正在执行中,则丢弃该数据记录。
若否,则继续判断查询请求的全局事务ID是否大于等于数据记录的全局事务创建ID,且小于等于数据记录的全局事务删除ID(即发起该查询请求的时间点晚于数据记录的创建时间点,早于数据记录的删除时间点),如果是,则确定数据记录是数据查询结果,否则丢弃本数据记录。
本发明实施例提供的数据库集群的数据过滤方法通过全局事务ID标识查询请求发起时间点,进行数据查询,同时根据具有时序特征的查询请求的全局事务ID过滤查询结果,确保了数据查询的一致性。另外,数据查询结果的处理由数据库集群进行,从而大大减少前置中间件的数据处理量,提高了分布式系统在并发请求下的数据查询性能。
图5为本发明实施例提供的又一种数据查询方法的流程示意图,如图5所示,该方法包括:
步骤401、根据查询请求发送查询请求的全局事务ID申请请求给全局事务管理器。
具体的,步骤401根据查询请求发送查询请求的全局事务ID申请请求给全局事务管理器可以由前置中间件实现。
需要说明的是,申请请求是申请获得查询请求的全局事务ID的请求。有多少个查询请求,前置中间件就向全局事务管理器发送对应数量的申请全局事务ID的申请请求。
步骤402、接收全局事务管理器发送的查询请求的全局事务ID。
具体的,步骤402接收全局事务管理器发送的查询请求的全局事务ID可以由前置中间件实现。前置中间件向全局事务管理器发送多少个申请请求,则接收相应数量的查询请求的全局事务ID。
步骤403、发送查询请求和查询请求的全局事务ID给数据库集群。
具体的,步骤403发送查询请求和查询请求的全局事务ID给数据库集群可以由前置中间件实现。查询请求和查询请求的全局事务ID的发送对象是所有数据库集群。
步骤404、接收数据库集群发送的数据查询结果。
具体的,步骤404接收数据库集群发送的数据查询结果可以由前置中间件实现。数据查询结果是数据库集群经过过滤返回的数据记录,接收的数据查询结果可能是来自于一个数据库集群,也可能来自于多个数据库集群。
本发明实施例提供的数据查询方法,前置中间件根据查询请求发送查询请求的全局事务ID申请请求给全局事务管理器;接收全局事务管理器发送的查询请求的全局事务ID;发送查询请求和查询请求的全局事务ID给数据库集群;接收数据库集群发送数据查询结果;这样,在分布式数据系统中进行数据查询时,前置中间件仅负责转发任务,而将生成数据查询结果的任务移交给了各个数据库集群,从而大大减少了前置中间件的数据处理量,提高了分布式系统在并发请求下的数据查询性能。
图6为本发明实施例提供的又一种数据查询方法的流程示意图,如图6所示,该方法包括:
步骤501、前置中间件接收客户端发送的业务请求。
需要说明的是,业务请求是客户端发送的结构化查询语言(Structured QueryLanguage,SQL)请求,包括SQL插入请求、SQL删除请求、SQL查询请求等。
步骤502、前置中间件对业务请求进行解析,判断业务请求是否是查询请求。
需要说明的是,前置中间件接收客户端发起的SQL请求,对SQL进行解析,判断SQL请求的类型是否是SQL查询请求。
如果SQL请求的类型是SQL查询,根据事务隔离级别向全局事务管理器发起事务ID号申请请求。
步骤503、若确定业务请求是查询请求,前置中间件根据查询请求发送查询请求的全局事务ID申请请求给全局事务管理器。
需要说明的是,若确定SQL请求不是查询请求,则忽略该SQL请求,若SQL请求的类型是SQL查询请求,则对SQL查询请求进行优化和路由,然后根据SQL查询请求发送查询请求的全局事务ID申请请求给全局事务管理器。
步骤504、前置中间件接收全局事务管理器发送的查询请求的全局事务ID。
步骤505、前置中间件发送查询请求和查询请求的全局事务ID给数据库集群。
步骤506、前置中间件接收数据库集群发送的数据查询结果。
步骤507、前置中间件根据数据查询结果生成最终查询结果。
需要说明的是,前置中间件对接收到的所有数据查询结果进行组合,生成最终查询结果。
步骤508、前置中间件发送最终查询结果发送给客户端。
需要说明的事,前置中间件将最终查询结果发送给对应的客户端,该客户端是发送SQL查询请求的客户端。
本发明实施例提供的数据查询方法,前置中间件接收客户端发送的查询请求;根据查询请求发送查询请求的全局事务ID申请请求给全局事务管理器;接收全局事务管理器发送的查询请求的全局事务ID;发送查询请求和查询请求的全局事务ID给数据库集群;接收数据库集群发送数据查询结果、生成最终查询结果发送给客户端;这样,在分布式数据系统中进行数据查询时,前置中间件仅负责转发任务,而将生成数据查询结果任务的移交给了各个数据库集群,从而大大减少了前置中间件的数据处理量,提高了分布式系统在并发请求下的数据查询性能。
图7为本发明实施例提供的又一种数据查询方法的流程示意图,如图7所示,该方法包括:
步骤601、接收前置中间件发送的查询请求的全局事务ID申请请求。
具体的,步骤601接收前置中间件发送的查询请求的全局事务ID申请请求可以由全局事务管理器实现。
步骤602、根据查询请求的全局事务ID申请请求生成查询请求的全局事务ID。
具体的,步骤602根据查询请求的全局事务ID申请请求生成查询请求的全局事务ID可以由全局事务管理器实现。
需要说明的是,当事务隔离级别为已提交读,则一个事务中每个查询语句生成一个全局事务ID,一个事务中由多少个查询语句,则生成多少个全局事务ID;当事务隔离级别为可重复读,则一个事务中多个查询语句共享一个全局事务ID。
步骤603、发送查询请求的全局事务ID给前置中间件。
具体的,步骤603发送查询请求的全局事务ID给前置中间件可以由全局事务管理器实现。全局事务管理器将生成的一个或多个查询请求的全局事务ID返回给前置中间件。
本发明实施例提供的数据查询方法,全局事务管理器接收前置中间件发送的查询请求的全局事务ID申请请求;根据查询请求的全局事务ID申请请求生成查询请求的全局事务ID并发送给前置中间件;这样,在进行数据查询时,全局事务管理器会为查询请求生成表征其时序的全局事务ID,从而使得数据库集群可以根据全局事务ID对数据查询结果过滤,筛选出符合一致性的数据查询结果,确保了数据查询的一致性。
进一步,本发明实施例提供的数据查询方法,还包括:全局事务管理器同步活跃事务ID列表到数据库集群中;其中,活跃事务ID列表包含活跃记录数据的全局事务创建ID和活跃记录数据的全局事务删除ID。
需要说明的是,活跃事务ID列表是一个实施更新的列表,它包含活跃数据记录的全局事务创建ID和活跃数据记录的全局事务删除ID,如果在某一时刻,活跃数据记录对应的事务已经结束(假设该事务是删除事务),那么活跃事务ID列表不再包含活跃数据记录的全局事务删除ID。
本发明另外提供一个实施例展示前置中间件、全局事务管理器以及数据库集群之间的交互过程,如下:
前置中间件接收客户端发送的业务请求,对业务请求进行解析,判断业务请求是否是查询请求,若确定业务请求是查询请求,根据查询请求发送查询请求的全局事务ID申请请求给全局事务管理器。
全局事务管理器接收查询请求的全局事务ID申请请求,生成查询请求的全局事务ID并发送给前置中间件。
前置中间件接收查询请求的全局事务ID,发送查询请求和查询请求的全局事务ID给数据库集群。
数据库集群接收查询请求和查询请求的全局事务ID,根据查询请求获取符合查询请求的数据记录以及数据记录的全局事务创建ID和数据记录的全局事务删除ID,判断数据记录的全局事务创建ID和数据记录的全局事务删除ID是否存在于活跃事务ID列表中,若数据记录的全局事务创建ID和数据记录的全局事务删除ID不存在于活跃事务ID列表中,再分别比较查询请求的全局事务ID与数据记录的全局事务创建ID和数据记录的全局事务删除ID的大小,若查询请求的全局事务ID大于等于数据记录的全局事务创建ID,且查询请求的全局事务ID小于等于数据记录的全局事务删除ID,确定数据记录是数据查询结果,并将数据查询结果给前置中间件。
前置中间件接收数据查询结果,根据数据查询结果生成最终查询结果并发送给客户端。
本发明实施例提供的数据查询方法,前置中间件向全局事务管理器申请表征查询请求发起时间点的全局事务ID,数据库集群根据全局事务ID对符合查询请求的数据记录进行过滤,从而确保了数据查询的一致性;同时,将数据查询结果的处理交由各个数据库集群进行,从而大大减少了前置中间件的数据处理量,提高了分布式系统在并发请求下的数据查询性能。
关于本发明提供的数据查询方法如何保证查询数据的一致性,下面结合具体实例再作说明。图8为本发明实施例提供的一种数据查询方法的示意图,如图8所示:
起始时,事务T1发起数据插入请求,该插入请求为在数据库1插入数据a,在数据库2中插入数据b。
然后事务T2发起查询请求(查询数据a和数据b),因为事务T1的插入请求在两个数据库中均未提交,因此从UNDO空间中查询,查询结果为空。
接着事务T3发起查询请求(查询数据a和数据b),由于数据库2中T1事务未提交,所以无法查询到数据b;而数据库1中事务T1虽已提交,但事务T1的全局事务创建ID存在于活跃事务ID列表中,因此,查询结果也为空。
再然后事务T4发起更新请求,该更新请求为在数据库1中更新a=a1,在数据库2中更新b=b1。
再接着事务T5发起查询请求(查询数据a1和数据b1),因为事务T4的更新请求在数据库1和数据库2均未提交,因此从UNDO空间查询,查询结果为未更新的(a,b)。
再接着事务T6发起查询请求(查询数据a1和数据b1),因为数据库1中T4事务未提交,因此从UNDO空间查询到的结果为(a),数据库2中事务T4虽已提交,但是事务T4的全局事务创建ID依然在活跃事务ID列表中,因此查询到的结果为(b)。
最后事务T7发起查询请求,由于数据库1和数据库2中的事务T4均已提交,且T7事务的全局事务ID大于数据记录a1的全局事务创建ID并且小于数据记录a1的全局事务删除ID,T7事务的全局事务ID大于数据记录b1的全局事务创建ID并且小于数据记录b1的全局事务删除ID,因此事务T7的查询结果为(a1,b1)。
由此可以看出,随着时间轴的推进,本发明提供的数据查询方法始终能够实现强一致性的查询结果。
本实施例提供的数据查询方法,通过判断数据记录的全局活跃性,并且比较查询请求的全局事务ID与数据记录的全局事务创建ID、全局事务删除ID的大小,从而确保在分布式数据库中,数据查询的一致性;同时,将数据查询结果的处理交由各个数据库集群进行,大大减少了前置中间件的数据处理量,提高了分布式系统在并发请求下的数据查询性能。
图9为本发明实施例提供的另一种数据查询方法的示意图,如图9所示,假设写事务T1的全局事务创建ID大于查询事务T0的全局事务ID。
起始时,数据库1中a的初始值为1,数据库2中b的初始值为1,写事务T1更新数据库1中的a为2,更新数据库2中的b为2。
查询事务T0两次发起查询请求,第一次在事务T1未提交前,返回结果为(a=1,b=1),第二次在事务T1提交后,因事务T1已提交,并且当前隔离级别为已提交读,查询事务的全局事务ID大于写事务T1的全局事务创建ID,因此查询结果为(a=2,b=2)。
由此可以看出,已提交读隔离级别保证了数据的一致性,但是同一个事务的多次查询结果可能不同。
图10为本发明实施例提供的又一种数据查询方法的示意图,如图10所示,假设写事务T1的全局事务创建ID大于查询事务T0的全局事务ID。
起始时,数据库1中a的初始值为1,数据库2中b的初始值为1,写事务T1更新数据库1中的a为2,更新数据库2中的b为2。
查询事务T0两次发起查询请求,第一次在事务T1未提交前,返回结果为(a=1,b=1),第二次在事务T1提交后,因事务T1已提交,并且当前隔离级别为可重复读,查询事务的全局事务ID为T0事务开始点的全局事务ID,小于写事务T1的全局事务创建ID,因此查询结果仍为(a=1,b=1)。
由此可以看出,可重复读隔离级别保证了数据的一致性,且同一个事务中的多次查询结果完全相同。需要说明的是,为了方便描述说明,以上实施例以2个数据库集群或2个数据为例进行说明,不用于限定本发明。
基于上述分析,本发明实施例中,当客户端发起数据库查询请求时,前置中间件向全局事务管理器请求生成全局事务ID,并同SQL查询请求一起下发到系统中对应的所有数据库集群中,数据库集群过滤数据记录返回数据查询结果给前置中间件,前置中间件根据返回的数据查询结果生成最终查询结果。本发明实施例实现了分布式数据库系统下的多版本并发控制机制,每个读操作(即查询请求)会看到会得到一个一致性的数据视图,从而保证了数据的一致性,同时在许多情况下避免了使用锁,有效地减少了开销,优化了分布式数据库并发系统,使系统在有大量并发请求时能够达到最高性能。
图11为本实施例提供的一种数据库集群的结构示意图,如图11所示,该数据库集群7包括:
第一接收模块71,用于接收前置中间件发送的查询请求和查询请求的全局事务ID;其中,查询请求的全局事务ID为全局事务管理器根据查询请求生成的。
第一处理模块72,用于根据查询请求和查询请求的全局事务ID生成数据查询结果。
第一发送模块73,用于发送数据查询结果给前置中间件。
本发明实施例提供的数据库集群接收前置中间件发送的查询请求和查询请求的全局事务ID;根据查询请求和查询请求的全局事务ID生成数据查询结果并发送给前置中间件;这样,在进行数据查询时,通过全局事务ID标识查询请求,数据库集群可以根据查询请求的全局事务ID对数据查询结果过滤,筛选出符合一致性的数据查询结果,从而确保了数据查询的一致性,同时,数据查询结果的处理由各个数据库集群进行,大大减少了前置中间件的数据处理量,提高了分布式系统在并发请求下的数据查询性能。
图12为本实施例提供的另一种数据库集群的结构示意图,如图12所示,第一处理模块72包括:
获取单元721,用于根据查询请求获取符合查询请求的数据记录;获取数据记录的全局事务创建ID和数据记录的全局事务删除ID。
处理单元722,用于根据数据记录、数据记录的全局事务创建ID和数据记录的全局事务删除ID生成数据查询结果。
进一步,处理单元722,具体用于判断数据记录的全局事务创建ID和数据记录的全局事务删除ID是否存在于活跃事务ID列表中;若数据记录的全局事务创建ID和数据记录的全局事务删除ID不存在于活跃事务ID列表中,分别比较查询请求的全局事务ID与数据记录的全局事务创建ID和数据记录的全局事务删除ID的大小;若查询请求的全局事务ID大于等于数据记录的全局事务创建ID,且查询请求的全局事务ID小于等于数据记录的全局事务删除ID,确定数据记录是数据查询结果。
进一步,第一接收模块71,还用于接收全局事务管理器发送的活跃事务ID列表。
本发明实施例提供的数据库集群接收前置中间件发送的查询请求和查询请求的全局事务ID;根据查询请求查询并获取符合查询请求的数据记录以及数据记录的全局事务创建ID和数据记录的全局事务删除ID;当数据记录的全局事务创建ID和全局事务删除ID不存在于活跃事务ID列表中,并且查询请求的全局事务ID大于等于数据记录的全局事务创建ID且小于等于全局事务删除ID,数据库集群数据记录是数据查询结果,并发送给前置中间件;这样,在进行数据查询时,通过全局事务ID标识查询请求,数据库集群可以根据查询请求的全局事务ID对数据查询结果过滤,筛选出符合一致性的数据查询结果,从而确保了数据查询的一致性,同时,数据查询结果的处理由各个数据库集群进行,大大减少了前置中间件的数据处理量,提高了分布式系统在并发请求下的数据查询性能。
图13为本实施例提供的一种前置中间件的结构示意图,如图13所示,该前置中间件8包括:
第二发送模块81,用于根据查询请求发送查询请求的全局事务ID申请请求给全局事务管理器;还用于发送查询请求和查询请求的全局事务ID给数据库集群。
第二接收模块82,用于接收全局事务管理器发送的查询请求的全局事务ID;还用于接收数据库集群发送的数据查询结果。
本发明实施例提供的前置中间件根据查询请求发送查询请求的全局事务ID申请请求给全局事务管理器;接收全局事务管理器发送的查询请求的全局事务ID;发送查询请求和查询请求的全局事务ID给数据库集群;接收数据库集群发送数据查询结果;这样,在分布式数据系统中进行数据查询时,前置中间件仅负责转发任务,而将生成数据查询结果的任务移交给了各个数据库集群,从而大大减少了前置中间件的数据处理量,提高了分布式系统在并发请求下的数据查询性能。
图14为本实施例提供的另一种前置中间件的结构示意图,如图14所示,该前置中间件8还包括:
第二处理模块83,用于对业务请求进行解析,判断所述业务请求是否是查询请求。
进一步,第二接收模块82,还用于接收客户端发送的业务请求。
第二处理模块83,还用于根据数据查询结果生成最终查询结果。
第二发送模块81,还用于发送最终查询结果发送给客户端。
本发明实施例提供的前置中间件接收客户端发送的查询请求;根据查询请求发送查询请求的全局事务ID申请请求给全局事务管理器;接收全局事务管理器发送的查询请求的全局事务ID;发送查询请求和查询请求的全局事务ID给数据库集群;接收数据库集群发送数据查询结果、生成最终查询结果发送给客户端;这样,在分布式数据系统中进行数据查询时,前置中间件仅负责转发任务,而将生成数据查询结果任务的移交给了各个数据库集群,从而大大减少了前置中间件的数据处理量,提高了分布式系统在并发请求下的数据查询性能。
图15为本发明实施例提供的一种全局事务管理器的结构示意图,如图15所示,该全局事务管理器9包括:
第三接收模块91,用于接收前置中间件发送的查询请求的全局事务ID申请请求。
第三处理模块92,用于根据查询请求的全局事务ID申请请求生成查询请求的全局事务ID。
第三发送模块93,用于发送查询请求的全局事务ID给前置中间件。
进一步,第三处理模块92,还用于同步活跃事务ID列表到数据库集群中;其中,活跃事务ID列表包含活跃数据记录的全局事务创建ID和活跃数据记录的全局事务删除ID。
本发明实施例提供的全局事务管理器接收前置中间件发送的查询请求的全局事务ID申请请求;根据查询请求的全局事务ID申请请求生成查询请求的全局事务ID并发送给前置中间件;这样,在进行数据查询时,全局事务管理器会为查询请求生成表征其时序的全局事务ID,从而使得数据库集群可以根据全局事务ID对数据查询结果过滤,筛选出符合一致性的数据查询结果,确保了数据查询的一致性。
在实际应用中,所述第一接收模块71、第一处理模块72、获取单元721、处理单元722、第一发送模块73、第二发送模块81、第二接收模块82、第二处理模块83、第三接收模块91、第三处理模块92、第三发送模块93均可由位于缓存空间的管理装置中的中央处理器(Central Processing Unit,CPU)、微处理器(Micro Processor Unit,MPU)、数字信号处理器(Digital Signal Processor,DSP)或现场可编程门阵列(Field Programmable GateArray,FPGA)等实现。
本发明实施例还提供的一种数据查询系统,其由上述任一种数据库集群、任一种前置中间件和任一种全局事务管理器组成,此处不再赘述。
图16为本发明实施例提供的一种数据查询系统的结构示意图,如图16所示,该系统包括:
客户端:以数据服务的方式向应用提供数据库功能,并对应用请求或响应进行编解码,对应用提供统一的标准SQL接口,负责与前置中间件即第一设备通讯,并以轻量级的数据交换格式(JavaScript Object Notation,JSON)、Java对象等数据形式返回结果给应用。
前置中间件:负责与前端和后端网络通讯、SQL协议处理、SQL解析优化路由和执行;同时负责和全局事务管理器即第二设备通讯,管理分布式环境下多数据库间数据的一致性。
数据库集群:由多组数据库组组成,数据按照一定的规则切分后存放在各个数据库组中。每个数据库组有主备两个节点,之间通过同步方式进行复制,确保数据安全。数据库集群根据前置中间件下发的全局事务ID来记录数据行的生命周期,根据全局事务ID的时间先后顺序获取满足条件的数据集。
后置中间件:主要负责数据管理、日志分析和集群复制。
管理服务模块:完成分布式数据库系统中各个网元的监控,包括统一门户管理、元数据管理、前置中间件管理、集群管理和统一事务管理。统一事务管理模块维护分布式数据库系统中统一的全局事务ID,保证各种场景下的事务一致性,解决分布式数据库中可能存在的脏读问题,对汇聚、死锁问题进行了合理规避策略。
图17为本发明实施例提供的数据查询系统的示意图,图18为本发明实施例提供的另一种数据查询系统的示意图,结合图17、图18所示:
客户端发起SQL查询请求,前置中间件接收到SQL查询请求后,根据事务隔离级别向全局事务管理器申请全局事务ID。
具体的,通过全局事务ID可以标识事务的时间顺序。如隔离级别为已提交读,则一个事务中每个查询语句生成一个全局事务ID。隔离级别为可重复读,则一个事务中多个查询语句共享一个全局事务ID号。
全局事务管理器接收到请求后,根据时间顺序在系统中生成全局唯一的标识,并记录下该全局事务ID的状态;全局事务ID生成成功后返回给前置中间件。同时,全局事务管理器实时向各个数据库集群同步活跃全局事务ID列表。
前置中间件得到该查询请求对应的全局事务ID后构建SQL查询包,向数据库集群发起查询请求。
数据库集群收到SQL查询请求后,进行解析和执行,并根据查询请求中的全局事务ID过滤数据记录,生成数据查询结果并返回给前置中间件。
前置中间件收到各个数据库集群返回的数据查询结果后生成最终查询结果,返回给客户端。
本发明实施例提供的数据查询系统,前置中间件根据客户端提交的数据查询请求向全局事务管理器申请表征查询请求发起时间点的全局事务ID,数据库集群根据全局事务ID对符合查询请求的数据记录进行过滤生成数据查询结果返回给前置中间件,前置中间件生成最终查询结果返回给客户端,从而确保了数据查询的一致性;同时,将数据查询结果的处理交由各个数据库集群进行,从而大大减少了前置中间件的数据处理量,提高了分布式系统在并发请求下的数据查询性能。
本发明实施例提供的数据查询系统涉及分布式数据库前置中间件服务器、全局事务管理服务器和数据库集群的开发和改造,改造后的数据查询系统对分布式数据库在金融领域、互联网领域、教育领域等能够起到很好的推进作用,使用该数据查询系统能够节省系统资源投入,实现迅速提升高并发情况下分布式数据库的查询性能,提升用户体验,同时保证分布式环境下数据查询的一致性。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (19)
1.一种数据查询方法,其特征在于,所述方法包括:
接收前置中间件发送的查询请求和所述查询请求的全局事务ID;其中,所述查询请求的全局事务ID为全局事务管理器根据所述查询请求生成的;
根据所述查询请求和所述查询请求的全局事务ID生成数据查询结果;
发送所述数据查询结果给所述前置中间件。
2.根据权利要求1所述的方法,其特征在于,所述根据所述查询请求和所述查询请求的全局事务ID生成数据查询结果,包括:
根据所述查询请求获取符合所述查询请求的数据记录;
获取所述数据记录的全局事务创建ID和所述数据记录的全局事务删除ID;
根据所述数据记录、所述数据记录的全局事务创建ID和所述数据记录的全局事务删除ID生成所述数据查询结果。
3.根据权利要求2所述的方法,所述根据所述数据记录、所述数据记录的全局事务创建ID和所述数据记录的数据的全局事务删除ID生成所述数据查询结果,包括:
判断所述数据记录的全局事务创建ID和所述数据记录的全局事务删除ID是否存在于活跃事务ID列表中;
若所述数据记录的全局事务创建ID和所述数据记录的全局事务删除ID不存在于所述活跃事务ID列表中,分别比较所述查询请求的全局事务ID与所述数据记录的全局事务创建ID和所述数据记录的全局事务删除ID的大小;
若所述查询请求的全局事务ID大于等于所述数据记录的全局事务创建ID,且所述查询请求的全局事务ID小于等于所述数据记录的全局事务删除ID,确定所述数据记录是所述数据查询结果。
4.根据权利要求1~3所述的方法,其特征在于,所述方法还包括:
接收全局事务管理器发送的活跃事务ID列表。
5.一种数据查询方法,其特征在于,所述方法包括:
根据查询请求发送所述查询请求的全局事务ID申请请求给全局事务管理器;
接收所述全局事务管理器发送的所述查询请求的全局事务ID;
发送所述查询请求和所述查询请求的全局事务ID给数据库集群;
接收所述数据库集群发送的数据查询结果。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
接收客户端发送的业务请求;
对所述业务请求进行解析,判断所述业务请求是否是查询请求。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
根据所述数据查询结果生成最终查询结果;
发送所述最终查询结果发送给所述客户端。
8.一种数据查询方法,其特征在于,所述方法包括:
接收前置中间件发送的查询请求的全局事务ID申请请求;
根据所述查询请求的全局事务ID申请请求生成所述查询请求的全局事务ID;
发送所述查询请求的全局事务ID给所述前置中间件。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
同步活跃事务ID列表到数据库集群中;其中,所述活跃事务ID列表包含活跃数据记录的全局事务创建ID和所述活跃数据记录的全局事务删除ID。
10.一种数据库集群,其特征在于,所述数据库集群包括:
第一接收模块,用于接收前置中间件发送的查询请求和所述查询请求的全局事务ID;其中,所述查询请求的全局事务ID为全局事务管理器根据所述查询请求生成的;
第一处理模块,用于根据所述查询请求和所述查询请求的全局事务ID生成数据查询结果;
第一发送模块,用于发送所述数据查询结果给所述前置中间件。
11.根据权利要求10所述的数据库集群,其特征在于,所述第一处理模块包括:
获取单元,用于根据所述查询请求获取符合所述查询请求的数据记录;获取所述数据记录的全局事务创建ID和所述数据记录的全局事务删除ID;
处理单元,用于根据所述数据记录、所述数据记录的全局事务创建ID和所述数据记录的全局事务删除ID生成所述数据查询结果。
12.根据权利要求11所述的数据库集群,其特征在于,
所述处理单元,具体用于判断所述数据记录的全局事务创建ID和所述数据记录的全局事务删除ID是否存在于活跃事务ID列表中;
若所述数据记录的全局事务创建ID和所述数据记录的全局事务删除ID不存在于所述活跃事务ID列表中,分别比较所述查询请求的全局事务ID与所述数据记录的全局事务创建ID和所述数据记录的全局事务删除ID的大小;
若所述查询请求的全局事务ID大于等于所述数据记录的全局事务创建ID,且所述查询请求的全局事务ID小于等于所述数据记录的全局事务删除ID,确定所述数据记录是所述数据查询结果。
13.根据权利要求10-12所述的数据库集群,其特征在于,
所述第一接收模块,还用于接收全局事务管理器发送的活跃事务ID列表。
14.一种前置中间件,其特征在于,所述前置中间件包括:
第二发送模块,用于根据查询请求发送所述查询请求的全局事务ID申请请求给全局事务管理器;还用于发送所述查询请求和所述查询请求的全局事务ID给数据库集群;
第二接收模块,用于接收所述全局事务管理器发送的所述查询请求的全局事务ID;还用于接收所述数据库集群发送的数据查询结果。
15.根据权利要求14所述的前置中间件,其特征在于,所述前置中间件还包括:
第二处理模块,用于对业务请求进行解析,判断所述业务请求是否是查询请求;
所述第二接收模块,还用于接收客户端发送的所述业务请求。
16.根据权利要求15所述的前置中间件,其特征在于,
所述第二处理模块,还用于根据所述数据查询结果生成最终查询结果;
所述第二发送模块,还用于发送所述最终查询结果发送给所述客户端。
17.一种全局事务管理器,其特征在于,所述全局事务管理器包括:
第三接收模块,用于接收前置中间件发送的查询请求的全局事务ID申请请求;
第三处理模块,用于根据所述查询请求的全局事务ID申请请求生成所述查询请求的全局事务ID;
第三发送模块,用于发送所述查询请求的全局事务ID给所述前置中间件。
18.根据权利要求17所述的全局事务管理器,其特征在于,
所述第三处理模块,还用于同步活跃事务ID列表到数据库集群中;其中,所述活跃事务ID列表包含活跃数据记录的全局事务创建ID和所述活跃数据记录的全局事务删除ID。
19.一种数据查询系统,其特征在于,所述系统包括:
如权利要求10至13任一所述的数据库集群,如权利要求14至16任一所述的前置中间件,以及如权利要求17、18任一所述的全局事务管理器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611020823.6A CN108090056B (zh) | 2016-11-21 | 2016-11-21 | 数据查询方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611020823.6A CN108090056B (zh) | 2016-11-21 | 2016-11-21 | 数据查询方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108090056A true CN108090056A (zh) | 2018-05-29 |
CN108090056B CN108090056B (zh) | 2021-06-15 |
Family
ID=62168344
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611020823.6A Active CN108090056B (zh) | 2016-11-21 | 2016-11-21 | 数据查询方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108090056B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110955719A (zh) * | 2018-09-27 | 2020-04-03 | 阿里巴巴集团控股有限公司 | 一种数据存取处理设备、系统和方法 |
CN111324603A (zh) * | 2019-12-27 | 2020-06-23 | 湖南星汉数智科技有限公司 | 一种基于分组的数据库处理方法、装置、计算机装置及计算机可读存储介质 |
CN112069196A (zh) * | 2020-11-12 | 2020-12-11 | 腾讯科技(深圳)有限公司 | 基于数据库的数据处理方法、装置、设备及可读存储介质 |
WO2022135471A1 (zh) * | 2020-12-24 | 2022-06-30 | 中兴通讯股份有限公司 | 多版本并发控制和日志清除方法、节点、设备和介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101365464B1 (ko) * | 2012-03-05 | 2014-02-20 | 네이버비즈니스플랫폼 주식회사 | 데이터베이스 미들웨어를 이용한 데이터 관리 시스템 및 방법 |
CN103020147B (zh) * | 2012-11-22 | 2015-10-21 | 用友软件股份有限公司 | 数据集成系统和数据集成方法 |
US20150120645A1 (en) * | 2013-10-31 | 2015-04-30 | Futurewei Technologies, Inc. | System and Method for Creating a Distributed Transaction Manager Supporting Repeatable Read Isolation level in a MPP Database |
CN103729471B (zh) * | 2014-01-21 | 2017-03-08 | 华为软件技术有限公司 | 数据库查询方法和装置 |
CN105608086B (zh) * | 2014-11-17 | 2021-07-27 | 中兴通讯股份有限公司 | 分布式数据库系统的事务处理方法及装置 |
-
2016
- 2016-11-21 CN CN201611020823.6A patent/CN108090056B/zh active Active
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110955719A (zh) * | 2018-09-27 | 2020-04-03 | 阿里巴巴集团控股有限公司 | 一种数据存取处理设备、系统和方法 |
CN111324603A (zh) * | 2019-12-27 | 2020-06-23 | 湖南星汉数智科技有限公司 | 一种基于分组的数据库处理方法、装置、计算机装置及计算机可读存储介质 |
CN111324603B (zh) * | 2019-12-27 | 2023-04-14 | 湖南星汉数智科技有限公司 | 一种基于分组的数据库处理方法、装置、计算机装置及计算机可读存储介质 |
CN112069196A (zh) * | 2020-11-12 | 2020-12-11 | 腾讯科技(深圳)有限公司 | 基于数据库的数据处理方法、装置、设备及可读存储介质 |
WO2022135471A1 (zh) * | 2020-12-24 | 2022-06-30 | 中兴通讯股份有限公司 | 多版本并发控制和日志清除方法、节点、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108090056B (zh) | 2021-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020224374A1 (zh) | 数据复制方法、装置、计算机设备及存储介质 | |
EP3234780B1 (en) | Detecting lost writes | |
US9697253B2 (en) | Consistent client-side cache | |
US10691722B2 (en) | Consistent query execution for big data analytics in a hybrid database | |
US10296629B2 (en) | Server supporting a consistent client-side cache | |
US8504523B2 (en) | Database management system | |
WO2021036768A1 (zh) | 数据读取方法、装置、计算机设备及存储介质 | |
US10977227B2 (en) | Dynamic snapshot isolation protocol selection | |
EP2932370B1 (en) | System and method for performing a transaction in a massively parallel processing database | |
US9589041B2 (en) | Client and server integration for replicating data | |
US8738568B2 (en) | User-defined parallelization in transactional replication of in-memory database | |
US9747356B2 (en) | Eager replication of uncommitted transactions | |
CN111338766A (zh) | 事务处理方法、装置、计算机设备及存储介质 | |
CN108090056B (zh) | 数据查询方法、装置及系统 | |
US20070239790A1 (en) | Systems and methods for a distributed in-memory database | |
CN105608086A (zh) | 分布式数据库系统的事务处理方法及装置 | |
CN111159252A (zh) | 事务执行方法、装置、计算机设备及存储介质 | |
US20140279840A1 (en) | Read Mostly Instances | |
JP7549137B2 (ja) | トランザクション処理方法、システム、装置、機器、及びプログラム | |
US20230110826A1 (en) | Log execution method and apparatus, computer device and storage medium | |
EP3818454A1 (en) | Asynchronous cache coherency for mvcc based database systems | |
WO2022135471A1 (zh) | 多版本并发控制和日志清除方法、节点、设备和介质 | |
CN116108057A (zh) | 一种分布式数据库访问方法、装置、设备及存储介质 | |
US20240311391A1 (en) | K-db database multi-node cluster scheduling method and system, device, and medium | |
CN115080666A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220118 Address after: 100176 floor 18, building 8, courtyard 10, KEGU 1st Street, Beijing Economic and Technological Development Zone, Daxing District, Beijing (Yizhuang group, high-end industrial area of Beijing Pilot Free Trade Zone) Patentee after: Jinzhuan Xinke Co.,Ltd. Address before: 518057 Ministry of justice, Zhongxing building, South Science and technology road, Nanshan District hi tech Industrial Park, Shenzhen, Guangdong Patentee before: ZTE Corp. |
|
TR01 | Transfer of patent right |