CN110046181A - 基于数据库分布式存储的数据路由的方法和装置 - Google Patents
基于数据库分布式存储的数据路由的方法和装置 Download PDFInfo
- Publication number
- CN110046181A CN110046181A CN201910190656.7A CN201910190656A CN110046181A CN 110046181 A CN110046181 A CN 110046181A CN 201910190656 A CN201910190656 A CN 201910190656A CN 110046181 A CN110046181 A CN 110046181A
- Authority
- CN
- China
- Prior art keywords
- data query
- data
- new
- sentence
- query statement
- 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
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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
- G06F16/24556—Aggregation; Duplicate elimination
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种基于数据库分布式存储的数据路由的方法和装置。该方法包括:接收访问原始数据库的原始数据查询语句;对原始数据查询语句进行内容解析获得原始数据查询语句的元数据;按照表定义规则将原始数据查询语句改写为若干条新的数据查询语句;按照路由规则路由各新的数据查询语句;根据路由结果执行各新的数据查询语句;将执行各新的数据查询语句后得到的数据按照聚合信息进行聚合处理;输出聚合处理后的结果,作为原始数据查询语句的查询结果。通过本发明,利用分布式存储,对数据库存储进行弹性扩展,缓解大数据库的访问压力,屏蔽分库分表后使用上的差异。
Description
技术领域
本发明涉及云存储中分布式存储的技术领域,尤其涉及一种基于数据库分布式存储的数据路由的方法、装置、计算机设备及存储介质。
背景技术
随着数据量越来越大,在数据库内查询数据的查询速度也越来越慢,为了增加数据查询的速度,可将数据库进行分布式存储,具体地,可对数据库进行分库和分表,从而缓解大容量数据库的访问压力。但是,从使用者的角度来说,又不希望因数据库分库而增加数据查询的复杂性。
因此,提供一种基于数据库分布式存储的数据路由的方法、装置、计算机设备及存储介质,既能够通过数据库分库分表来缓解数据库访问压力,又无需使用者因数据库分库分表而修改查询指令的数据路由的方法,成为本领域急需解决的技术问题。
发明内容
本发明的目的是提供一种基于数据库分布式存储的数据路由的方法、装置、计算机设备及存储介质,用于解决现有技术存在的上述问题。
为了实现上述目的,本发明提供了一种基于数据库分布式存储的数据路由的方法。
原始数据库中的数据被按照表定义规则切分为多个数据表,所述多个数据表按照路由规则分布于若干新的数据库中,该基于数据库分布式存储的数据路由的方法包括:接收访问所述原始数据库的原始数据查询语句;对所述原始数据查询语句进行内容解析,以获得所述原始数据查询语句的元数据,其中,所述元数据包括聚合信息和所述原始数据库中的数据表的表名;按照所述表定义规则,将所述原始数据查询语句改写为若干条新的数据查询语句,其中,每条新的数据查询语句中的表名为切分后的数据表的表名;按照所述路由规则路由各所述新的数据查询语句;根据路由结果执行各所述新的数据查询语句;将执行各所述新的数据查询语句后得到的数据按照所述聚合信息进行聚合处理;输出聚合处理后的结果,作为所述原始数据查询语句的查询结果。
为了实现上述目的,本发明提供了一种基于数据库分布式存储的数据路由的装置。
原始数据库中的数据被按照表定义规则切分为多个数据表,所述多个数据表按照路由规则分布于若干新的数据库中,基于数据库分布式存储的数据路由的装置包括:接收模块,用于接收访问所述原始数据库的原始数据查询语句;解析模块,用于对所述原始数据查询语句进行内容解析,以获得所述原始数据查询语句的元数据,其中,所述元数据包括聚合信息和所述原始数据库中的数据表的表名;改写模块,用于按照所述表定义规则,将所述原始数据查询语句改写为若干条新的数据查询语句,其中,每条新的数据查询语句中的表名为切分后的数据表的表名;路由模块,用于按照所述路由规则路由各所述新的数据查询语句;执行模块,用于根据路由结果执行各所述新的数据查询语句;聚合模块,用于将执行各所述新的数据查询语句后得到的数据按照所述聚合信息进行聚合处理;输出模块,用于输出聚合处理后的结果,作为所述原始数据查询语句的查询结果。
为了实现上述目的,本发明提供了一种计算机设备。
该计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现本发明提供的任意一种基于数据库分布式存储的数据路由的方法的步骤。
为了实现上述目的,本发明提供了一种计算机可读存储介质。
该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现本发明提供的任意一种基于数据库分布式存储的数据路由的方法的步骤。
与现有技术相比,本发明提供的一种基于数据库分布式存储的数据路由的方法、装置、计算机设备及存储介质,至少具有以下技术效果:
针对通过数据库分库分表缓解访问压力的情况,也即对原始数据库中的数据按照表定义规则切分为多个数据表,然后将切分后的多个数据表按照路由规则分布于若干新的数据库中,在对新的数据库和数据表进行访问时,使用者仍然采用访问原始数据库的原始数据查询语句进行访问。当采用访问原始数据库的原始数据查询语句进行访问时,对原始数据查询语句先进行解析、改写和路由,然后按照路由结果执行改写后的语句,最后将执行结果进行聚合处理后返回,对于使用者来讲,无需关心数据库分库分表对数据查询产生的影响,从而既缓解大数据库的访问压力,又简化接入流程,屏蔽分库分表后使用上的差异。
附图说明
图1为本发明实施例提供的基于数据库分布式存储的数据路由的方法的流程图;
图2为本发明实施例提供的基于数据库分布式存储的数据路由的装置的框图;
图3为本发明实施例提供的框计算机设备的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了一种基于数据库分布式存储的数据路由的方法、装置、计算机设备及存储介质,该方法针对已经进行分库分表的数据库的数据路由,对于使用者来说,仍然采用访问原始数据库(分库分表前的数据库)的原始数据查询语句进行查询,在接收到原始数据查询语句后,先对原始数据查询语句进行内容解析,得到原始数据查询语言的元数据,然后按照分表时的定义规则,将原始数据查询语句改写为若干条新的数据查询语句,再按照路由规则路由新的数据查询语句,根据路由结果执行数据查询语句,将执行后得到的数据按照聚合信息进行聚合,最后输出结果得到原始数据查询语句的查询结果,对于使用者来说,数据库进行分库分表后,并不需要参与中间过程,通过原始数据查询语句即可来得到查询结果,从而既通过分布式存储,也即分库分表,缓解大数据库的访问压力,又简化接入流程,屏蔽分库分表后使用上的差异,提升用户体验。
以下将通过各个实施例详细说明本发明提供的基于数据库分布式存储的数据路由的方法、装置、计算机设备及存储介质。
图1为本发明实施例提供的基于数据库分布式存储的数据路由的方法的流程图,在该实施例中,数据路由的数据表是由原始数据库按照表定义规则进行切分得到的多个数据表,该切分后的多个数据表按照路由规则分布于若干新的数据库中,基于此,如图1所示,该实施例提供的基于数据库分布式存储的数据路由的方法包括如下的步骤:
步骤S1:接收访问原始数据库的原始数据查询语句。
对于使用者来讲,即使原始数据库已经分库分表,仍可采用访问原始数据库的原始数据查询语句进行数据查询,无需关注原始数据库是否分库分表。
原始数据库在进行分库分表时,新的数据表的表定义规则包括垂直切分规则和水平切分规则,垂直切分规则按照业务表的类型进行切分,也即按照业务将原数据表进行分类,例如将一个整体的数据表拆分为关于用户的数据表、关于支付的数据表以及关于订单的数据表,将拆分后得到的新的数据表分布到不同的数据库上面,从而把压力分担到不同数据库上面;水平切分规则按照字段进行切分,也即按照某个字段的规则将数据表进行拆分,例如将一个整体的数据表按照用户字段进行拆分,将拆分后得到的新的数据表分散到多个数据库中,每个表中只包含一部分数据,分担访问数据的压力,例如将一个整体的数据表拆分位关于北京用户的数据表,关于上海用户的数据表,关于深圳用户的数据表等,每个数据表中包括一个用户字段的数据,且均包括用户、支付和订单数据。关于数据表的具体拆分规则,根据业务数据中数据内容的不同可做不同的拆分,上述仅用于举例说明一种拆分场景,本申请对此并不进行限定,
需要说明的是,在进行数据表的拆分时,可以仅基于垂直切分规则或水平切分规则进行拆分,也可以同时基于垂直切分规则和水平切分规则进行拆分。
步骤S2:对原始数据查询语句进行内容解析,以获得原始数据查询语句的元数据。
其中,在进行内容解析时,可调用第三方的数据查询语句的解析引擎,通过访问者模式遍历原始数据查询语句,将原始数据查询语句输入数据查询语句的解析引擎后,即可得到原始数据查询语句的元数据。例如调用alibaba的druid进行数据查询语句的解析。无论采用何种解析方式,解析到的元数据均包括聚合信息和原始数据库中的数据表的表名,聚合信息包括聚合函数、聚合方式和聚合列,聚合方式包括分组聚合和排序聚合,聚合函数包括Max、Min、Count、Sum和Avg等聚合函数。
步骤S3:按照表定义规则,将原始数据查询语句改写为若干条新的数据查询语句。
其中,每条新的数据查询语句中的表名为切分后的数据表的表名,例如原始数据查询语句为select*from table,按照表定义规则,改写后会生成三条新的数据查询语句,select*from table1;select*from table2;select*from table3。
步骤S4:按照路由规则路由各新的数据查询语句。
对于改写后的每条新的数据查询语句,按照路由规则,确认每条新的数据查询语句中的数据表的位置。
步骤S5:根据路由结果执行各新的数据查询语句。
对于改写后的每条新的数据查询语句,在步骤S4中确认的数据表中执行,实现数据的查询,每条新的数据查询语句执行后都会得到一些数据结果。
步骤S6:将执行各新的数据查询语句后得到的数据按照聚合信息进行聚合处理。
在该步骤中,对各新的数据查询语句执行得到的数据结果进行聚合处理,具体地,按照原始数据查询语句中的聚合信息进行聚合处理,也即,将执行各新的数据查询语句后得到的数据,对聚合列按照聚合函数进行分组聚合或排序聚合例如,针对某一列(也即聚合列)数据进行分组聚合,且聚合函数为Sum时,则对所有数据结果的该列数据先进行分组,然后再对分组后的每一组数据求和,得到的对应每一组的和即为聚合处理后的结果。
步骤S7:输出聚合处理后的结果,作为原始数据查询语句的查询结果。
最后将聚合处理后的结果作为原始数据查询语句的查询结果进行输出。
采用本发明提供的基于数据库分布式存储的数据路由的方法,针对通过数据库分库分表缓解访问压力的情况,也即对原始数据库中的数据按照表定义规则切分为多个数据表,然后将切分后的多个数据表按照路由规则分布于若干新的数据库中,在对新的数据库和数据表进行访问时,使用者仍然采用访问原始数据库的原始数据查询语句进行访问。当采用访问原始数据库的原始数据查询语句进行访问时,对原始数据查询语句先进行解析、改写和路由,然后按照路由结果执行改写后的语句,最后将执行结果进行聚合处理后返回,对于使用者来讲,无需关心数据库分库分表对数据查询产生的影响,从而既缓解大数据库的访问压力,又简化接入流程,屏蔽分库分表后使用上的差异。
可选地,在一种实施例中,为了实现数据库的读写分离,在接收访问原始数据库的原始数据查询语句之后,该数据路由方法还包括:对原始数据查询语句进行类型解析,以判断原始数据查询语句是数据读取语言还是数据操纵语言,其中,数据读取语言是一种只读操作,数据操纵语言是对数据的增加、修改或删除的写操作,在进行类型解析时,具体地,可以判断原始数据查询语句中是否包括INSERT、UPDATE、DELETE或REPLACE等写操作语言,如果包括这类型语言,则原始数据查询语句是数据操纵语言。每个新的数据库相应包括主库和只读库,其中,主库和只读库具有相同的数据内容,主库用于执行数据操纵语言,只读库用于执行数据查询语言,并且在主库执行数据操作语言后,将执行结果同步于只读库。针对每条新的数据查询语句,根据路由结果执行该条新的数据查询语句的步骤包括:
当原始数据查询语句是数据操纵语言时,在主库执行各新的数据查询语句;当原始数据查询语句是数据读取语言时,判断原始数据查询语句的操作模式是否为自动提交模式,其中,当原始数据查询语句的操作模式不为自动提交模式,说明基于该原始数据查询语句的操作属于一个事务内的操作,此时,为了保证事务的原子性,在主库执行各新的数据查询语句;当原始数据查询语句的操作模式为自动提交模式,在只读库执行各新的数据查询语句。
采用该实施例提供的基于数据库分布式存储的数据路由的方法,新的数据库相应设置主库和只读库,在接收访问原始数据库的原始数据查询语句之后,判断原始数据查询语句的操作类型,在根据路由结果执行新的数据查询语句时,根据原始数据查询语句的操作类型来选择在主库或只读库执行,实现了数据库的读写分离,提升了数据库的安全性。
可选地,在一种实施例中,每个新的数据库包括多个只读库,该多个只读库内容相同,相互并列,当需要在只读库执行新的数据查询语句时,根据读数据负载均衡策略在多个只读库中确定一个只读库,其中,读数据负载均衡策略包括轮询策略和权重策略,其中,轮询策略可以为:将N个只读库按顺序编号0~N-1放在数组中,对于自增数取模%N获取余数,根据余数在N个只读库中的确定一个。权重策略可以为:按照N个只读库中各只读库的权重,将0至S,共S+1个整数划分为N个数据段,每个只读库对应一个数据段,其中,权重大的只读库对应的数据段的数据多,在0至S中生成一个随机数,确定随机数所述的数据段,根据确定的数据段在N个只读库中的确定一个。无论以何种方式选定一个只读库,最终在确定的只读库执行该新的数据查询语句。
采用该实施例提供的基于数据库分布式存储的数据路由的方法,每个新的数据库设置多个只读库,在只读库执行新的数据查询语句时,根据读数据负载均衡策略在多个只读库中确定一个只读库,实现数据库的负载均衡,提升数据库的读取速度。
可选地,在一种实施例中,为了对数据访问进行限流,根据路由结果执行各新的数据查询语句的步骤包括:判断当前时间片内执行新的数据查询语句的次数;若当前时间片内执行新的数据查询语句的次数超出预置的第一阈值,则不允许执行新的数据查询语句;当新的数据查询语句不允许执行时,重新执行新的数据查询语句;若新的数据查询语句不允许执行的次数超出预置的第二阈值,则返回执行异常的结果。
以上为本发明提供的基于数据库分布式存储的数据路由的方法,本发明还提供了一种基于数据库分布式存储的数据路由的方法。需要说明的是,本发明提供的基于数据库分布式存储的数据路由的方法与上述基于数据库分布式存储的数据路由的方法相对应,相关之处可相互参考。
图2为本发明实施例提供的基于数据库分布式存储的数据路由的装置的框图,原始数据库中的数据被按照表定义规则切分为多个数据表,多个数据表按照路由规则分布于若干新的数据库中,该数据路由的装置包括:接收模块10、解析模块20、改写模块30、路由模块40、执行模块50、聚合模块60和输出模块70。
其中,接收模块10用于接收访问原始数据库的原始数据查询语句;解析模块20用于对原始数据查询语句进行内容解析,以获得原始数据查询语句的元数据,其中,元数据包括聚合信息和原始数据库中的数据表的表名;改写模块30用于按照表定义规则,将原始数据查询语句改写为若干条新的数据查询语句,其中,每条新的数据查询语句中的表名为切分后的数据表的表名;路由模块40用于按照路由规则路由各新的数据查询语句;执行模块50用于根据路由结果执行各新的数据查询语句;聚合模块60用于将执行各新的数据查询语句后得到的数据按照聚合信息进行聚合处理;输出模块70用于输出聚合处理后的结果,作为原始数据查询语句的查询结果。
可选地,聚合信息包括聚合函数、聚合方式和聚合列,聚合方式包括分组聚合和排序聚合,聚合模块60进行聚合处理时,具体执行的步骤为将执行各新的数据查询语句后得到的数据,对聚合列按照聚合函数进行分组聚合或排序聚合。
可选地,表定义规则包括垂直切分规则和水平切分规则,垂直切分规则按照业务表的类型进行切分,水平切分规则按照字段进行切分。
可选地,解析模块20对原始数据查询语句进行内容解析时,具体执行的步骤为调用数据查询语句的解析引擎,通过访问者模式遍历原始数据查询语句。
可选地,该数据路由的装置还包括判断模块,该判断模块用于在接收模块接收访问原始数据库的原始数据查询语句之后,对原始数据查询语句进行类型解析,以判断原始数据查询语句是数据读取语言还是数据操纵语言。每个新的数据库包括主库和只读库,执行模块包括第一执行单元、判断单元、第二执行单元和第三执行单元。其中,第一执行单元用于当原始数据查询语句是数据操纵语言时,在主库执行各新的数据查询语句;判断单元用于当原始数据查询语句是数据读取语言时,判断原始数据查询语句的操作模式是否为自动提交模式;第二执行单元用于当原始数据查询语句的操作模式不为自动提交模式,在主库执行各新的数据查询语句;第三执行单元用于当原始数据查询语句的操作模式为自动提交模式,在只读库执行各新的数据查询语句。
可选地,每个新的数据库包括多个只读库,第三执行单元在只读库执行各新的数据查询语句时,具体执行的步骤包括:根据读数据负载均衡策略在多个只读库中确定一个只读库,其中,读数据负载均衡策略包括轮询策略和权重策略;在确定的只读库执行各新的数据查询语句。
可选地,第一执行单元、第二执行单元和第三执行单元,在根据路由结果执行各新的数据查询语句时,具体执行的步骤包括:判断当前时间片内执行新的数据查询语句的次数;若当前时间片内执行新的数据查询语句的次数超出预置的第一阈值,则不允许执行新的数据查询语句;当新的数据查询语句不允许执行时,重新执行新的数据查询语句;若新的数据查询语句不允许执行的次数超出预置的第二阈值,则返回执行异常的结果。
本发明实施例还提供一种计算机设备,如可以执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。本实施例的计算机设备02至少包括但不限于:可通过系统总线相互通信连接的存储器021、处理器022,如图3所示。需要指出的是,图3仅示出了具有组件021-022的计算机设备02,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
本实施例中,存储器021(即可读存储介质)包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器021可以是计算机设备02的内部存储单元,例如该计算机设备02的硬盘或内存。在另一些实施例中,存储器021也可以是计算机设备02的外部存储设备,例如该计算机设备02上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器21还可以既包括计算机设备02的内部存储单元也包括其外部存储设备。本实施例中,存储器021通常用于存储安装于计算机设备02的操作系统和各类应用软件,例如上述实施例的基于数据库分布式存储的数据路由的装置的程序代码等。此外,存储器021还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器022在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器022通常用于控制计算机设备02的总体操作。本实施例中,处理器022用于运行存储器021中存储的程序代码或者处理数据,例如运行基于数据库分布式存储的数据路由的装置等。
本发明实施例还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,程序被处理器执行时实现相应功能。本实施例的计算机可读存储介质用于存储基于数据库分布式存储的数据路由的装置,被处理器执行时实现上述实施例的基于数据库分布式存储的数据路由的方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种基于数据库分布式存储的数据路由的方法,其特征在于,原始数据库中的数据被按照表定义规则切分为多个数据表,所述多个数据表按照路由规则分布于若干新的数据库中,所述数据路由的方法包括:
接收访问所述原始数据库的原始数据查询语句;
对所述原始数据查询语句进行内容解析,以获得所述原始数据查询语句的元数据,其中,所述元数据包括聚合信息和所述原始数据库中的数据表的表名;
按照所述表定义规则,将所述原始数据查询语句改写为若干条新的数据查询语句,其中,每条新的数据查询语句中的表名为切分后的数据表的表名;
按照所述路由规则路由各所述新的数据查询语句;
根据路由结果执行各所述新的数据查询语句;
将执行各所述新的数据查询语句后得到的数据按照所述聚合信息进行聚合处理;
输出聚合处理后的结果,作为所述原始数据查询语句的查询结果。
2.根据权利要求1所述的基于数据库分布式存储的数据路由的方法,其特征在于,所述聚合信息包括聚合函数、聚合方式和聚合列,所述聚合方式包括分组聚合和排序聚合,将执行各所述新的数据查询语句后得到的数据按照所述聚合信息进行聚合处理包括:
将执行各所述新的数据查询语句后得到的数据,对所述聚合列按照所述聚合函数进行分组聚合或排序聚合。
3.根据权利要求1所述的基于数据库分布式存储的数据路由的方法,其特征在于,所述表定义规则包括垂直切分规则和水平切分规则,所述垂直切分规则按照业务表的类型进行切分,所述水平切分规则按照字段进行切分。
4.根据权利要求1所述的基于数据库分布式存储的数据路由的方法,其特征在于,对所述原始数据查询语句进行内容解析,以获得所述原始数据查询语句的元数据的步骤包括:
调用数据查询语句的解析引擎,通过访问者模式遍历所述原始数据查询语句。
5.根据权利要求1所述的基于数据库分布式存储的数据路由的方法,其特征在于,
在接收访问所述原始数据库的原始数据查询语句之后,所述方法还包括:对所述原始数据查询语句进行类型解析,以判断所述原始数据查询语句是数据读取语言还是数据操纵语言;
每个所述新的数据库包括主库和只读库,根据路由结果执行各所述新的数据查询语句的步骤包括:
当所述原始数据查询语句是数据操纵语言时,在所述主库执行各所述新的数据查询语句;
当所述原始数据查询语句是数据读取语言时,判断所述原始数据查询语句的操作模式是否为自动提交模式;
当所述原始数据查询语句的操作模式不为自动提交模式,在所述主库执行各所述新的数据查询语句;
当所述原始数据查询语句的操作模式为自动提交模式,在所述只读库执行各所述新的数据查询语句。
6.根据权利要求5所述的基于数据库分布式存储的数据路由的方法,其特征在于,每个所述新的数据库包括多个所述只读库,在所述只读库执行各所述新的数据查询语句包括:
根据读数据负载均衡策略在多个所述只读库中确定一个所述只读库,其中,所述读数据负载均衡策略包括轮询策略和权重策略;
在确定的所述只读库执行各所述新的数据查询语句。
7.根据权利要求6所述的基于数据库分布式存储的数据路由的方法,其特征在于,根据路由结果执行各所述新的数据查询语句的步骤包括:
判断当前时间片内执行所述新的数据查询语句的次数;
若当前时间片内执行所述新的数据查询语句的次数超出预置的第一阈值,则不允许执行所述新的数据查询语句;
当所述新的数据查询语句不允许执行时,重新执行所述新的数据查询语句;
若所述新的数据查询语句不允许执行的次数超出预置的第二阈值,则返回执行异常的结果。
8.一种基于数据库分库分表的数据路由的装置,其特征在于,原始数据库中的数据被按照表定义规则切分为多个数据表,所述多个数据表按照路由规则分布于若干新的数据库中,所述数据路由的装置包括:
接收模块,用于接收访问所述原始数据库的原始数据查询语句;
解析模块,用于对所述原始数据查询语句进行内容解析,以获得所述原始数据查询语句的元数据,其中,所述元数据包括聚合信息和所述原始数据库中的数据表的表名;
改写模块,用于按照所述表定义规则,将所述原始数据查询语句改写为若干条新的数据查询语句,其中,每条新的数据查询语句中的表名为切分后的数据表的表名;
路由模块,用于按照所述路由规则路由各所述新的数据查询语句;
执行模块,用于根据路由结果执行各所述新的数据查询语句;
聚合模块,用于将执行各所述新的数据查询语句后得到的数据按照所述聚合信息进行聚合处理;
输出模块,用于输出聚合处理后的结果,作为所述原始数据查询语句的查询结果。
9.一种计算机设备,所述计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至7任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述程序被处理器执行时实现权利要求1至7任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910190656.7A CN110046181B (zh) | 2019-03-13 | 2019-03-13 | 基于数据库分布式存储的数据路由的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910190656.7A CN110046181B (zh) | 2019-03-13 | 2019-03-13 | 基于数据库分布式存储的数据路由的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110046181A true CN110046181A (zh) | 2019-07-23 |
CN110046181B CN110046181B (zh) | 2023-06-16 |
Family
ID=67273708
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910190656.7A Active CN110046181B (zh) | 2019-03-13 | 2019-03-13 | 基于数据库分布式存储的数据路由的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110046181B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111125114A (zh) * | 2019-12-25 | 2020-05-08 | 中国建设银行股份有限公司 | 数据库横向扩展、数据表访问方法及装置 |
CN112363994A (zh) * | 2020-10-27 | 2021-02-12 | 杭州大搜车汽车服务有限公司 | 数据库的处理方法、装置、电子装置和存储介质 |
CN113434529A (zh) * | 2021-06-22 | 2021-09-24 | 青岛海尔科技有限公司 | 业务数据查询方法、装置、存储介质、处理器及电子设备 |
CN114547082A (zh) * | 2022-02-25 | 2022-05-27 | 腾讯科技(深圳)有限公司 | 一种数据聚合的方法、相关装置、设备以及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104123374A (zh) * | 2014-07-28 | 2014-10-29 | 北京京东尚科信息技术有限公司 | 分布式数据库中聚合查询的方法及装置 |
CN108628986A (zh) * | 2018-04-27 | 2018-10-09 | 深圳市牛鼎丰科技有限公司 | 数据查询方法、装置、计算机设备和存储介质 |
-
2019
- 2019-03-13 CN CN201910190656.7A patent/CN110046181B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104123374A (zh) * | 2014-07-28 | 2014-10-29 | 北京京东尚科信息技术有限公司 | 分布式数据库中聚合查询的方法及装置 |
CN108628986A (zh) * | 2018-04-27 | 2018-10-09 | 深圳市牛鼎丰科技有限公司 | 数据查询方法、装置、计算机设备和存储介质 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111125114A (zh) * | 2019-12-25 | 2020-05-08 | 中国建设银行股份有限公司 | 数据库横向扩展、数据表访问方法及装置 |
CN111125114B (zh) * | 2019-12-25 | 2023-06-16 | 中国建设银行股份有限公司 | 数据库横向扩展、数据表访问方法及装置 |
CN112363994A (zh) * | 2020-10-27 | 2021-02-12 | 杭州大搜车汽车服务有限公司 | 数据库的处理方法、装置、电子装置和存储介质 |
CN113434529A (zh) * | 2021-06-22 | 2021-09-24 | 青岛海尔科技有限公司 | 业务数据查询方法、装置、存储介质、处理器及电子设备 |
CN113434529B (zh) * | 2021-06-22 | 2023-06-16 | 青岛海尔科技有限公司 | 业务数据查询方法、装置、存储介质、处理器及电子设备 |
CN114547082A (zh) * | 2022-02-25 | 2022-05-27 | 腾讯科技(深圳)有限公司 | 一种数据聚合的方法、相关装置、设备以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110046181B (zh) | 2023-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110046181A (zh) | 基于数据库分布式存储的数据路由的方法和装置 | |
US11075991B2 (en) | Partitioning data according to relative differences indicated by a cover tree | |
US8775425B2 (en) | Systems and methods for massive structured data management over cloud aware distributed file system | |
CN110471949B (zh) | 数据血缘分析方法、装置、系统、服务器及存储介质 | |
CN111478961A (zh) | 多租户的服务调用方法及装置 | |
US20150180872A1 (en) | System and method for hierarchical resource permissions and role management in a multitenant environment | |
CN106970958B (zh) | 一种流文件的查询与存储方法和装置 | |
US9992269B1 (en) | Distributed complex event processing | |
CN109840257A (zh) | 数据库查询方法、装置、计算机装置及可读存储介质 | |
CN109241159B (zh) | 一种数据立方体的分区查询方法、系统及终端设备 | |
CN108959510B (zh) | 一种分布式数据库的分区级连接方法和装置 | |
CN109508355A (zh) | 一种数据抽取方法、系统及终端设备 | |
US11868310B2 (en) | Composite storage of objects in multi-tenant devices | |
CN107967361A (zh) | 一种数据库的增量处理方法和系统 | |
CN105373746B (zh) | 一种分布式数据处理方法和装置 | |
CN110287264A (zh) | 分布式数据库的数据批量更新方法、装置以及系统 | |
CN107480205A (zh) | 一种进行数据分区的方法和装置 | |
CN111144132A (zh) | 一种语义识别方法及装置 | |
CN111784468A (zh) | 一种账户关联方法、装置及电子设备 | |
CN111475511A (zh) | 基于树状结构的数据存储方法、访问方法、装置及设备 | |
CN111125114A (zh) | 数据库横向扩展、数据表访问方法及装置 | |
CN110019448B (zh) | 一种数据交互方法及装置 | |
CN109241102A (zh) | 数据处理方法及装置、存储介质和电子设备 | |
CN115827589A (zh) | 一种权限验证方法、装置、电子设备及存储介质 | |
CN112749189A (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 |