CN113961544A - 数据库分库方法及装置 - Google Patents
数据库分库方法及装置 Download PDFInfo
- Publication number
- CN113961544A CN113961544A CN202111247688.XA CN202111247688A CN113961544A CN 113961544 A CN113961544 A CN 113961544A CN 202111247688 A CN202111247688 A CN 202111247688A CN 113961544 A CN113961544 A CN 113961544A
- Authority
- CN
- China
- Prior art keywords
- database
- data source
- rule
- partitioning
- database partitioning
- 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
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/21—Design, administration or maintenance of databases
- G06F16/211—Schema design and management
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种数据库分库方法及装置,可用于大数据技术领域,该方法包括:获取分库规则列表,所述分库规则列表中的分库规则为能够获取到数据源信息的分库规则;拦截调用数据库的方法,读取所述方法使用的注解中配置的业务字段信息;基于所述业务字段信息,从分库规则列表中查找分库规则;获得所述分库规则对应的分片键;基于所述分片键,从分库规则中确定数据源标识;在所述数据源标识与当前数据源的标识不一致时,进行切库,绑定确定的数据源标识对应的数据源。本发明可以实现数据库分库,效率高,应用轻便。
Description
技术领域
本发明涉及大数据技术领域,尤其涉及一种数据库分库方法及装置。
背景技术
数据库分库技术是分布式数据库常用的技术之一,由于信息时代数据量的不断提升,传统的单一数据库模式吞吐量会存在瓶颈,利用数据库分库则可以提升数据存储效率以及容量。然而由于不同业务的需求,使用分布式数据库对与不同的业务场景来说并不是全量使用,而仅仅是一部分数据库使用量,这就要求分库的同时对数据库的使用范围能够进行控制。
现有的技术方案是在首先在配置文件里定义一个全局性的分库规则以及业务-库范围映射,其次是在分库的计算算法里声明一个自定义算法,在这个自定义算法里首先需要获取到规则映射以及数据库范围,其次通过sql字段取值进行匹配计算,最后完成数据库的绑定。
从Sql字段取值,这会导致数据库多行插入进行多次计算的,降低计算效率;其次在分库算法加入数据库范围确定,使得分片计算与数据库范围绑定耦合,使得分库算法复杂度上升;再者将范围确定逻辑交给使用者全流程实现,使用不够轻便。
发明内容
本发明实施例提出一种数据库分库方法,用以实现数据库分库,效率高,应用轻便,该方法包括:
获取分库规则列表,所述分库规则列表中的分库规则为能够获取到数据源信息的分库规则;
拦截调用数据库的方法,读取所述方法使用的注解中配置的业务字段信息;
基于所述业务字段信息,从分库规则列表中查找分库规则;
获得所述分库规则对应的分片键;
基于所述分片键,从分库规则中确定数据源标识;
在所述数据源标识与当前数据源的标识不一致时,进行切库,绑定确定的数据源标识对应的数据源。
本发明实施例提出一种数据库分库装置,用以实现数据库分库,效率高,应用轻便,该装置包括:
分库规则模块,用于获取分库规则列表,所述分库规则列表中的分库规则为能够获取到数据源信息的分库规则;
注解模块,用于拦截调用数据库的方法,读取所述方法使用的注解中配置的业务字段信息;基于所述业务字段信息,从分库规则列表中查找分库规则;
分库计算模块,用于获得所述分库规则对应的分片键;基于所述分片键,从分库规则中确定数据源标识;在所述数据源标识与当前数据源的标识不一致时,进行切库,绑定确定的数据源标识对应的数据源。
本发明实施例还提出了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述数据库分库方法。
本发明实施例还提出了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述数据库分库方法的计算机程序。
在本发明实施例中,获取分库规则列表,所述分库规则列表中的分库规则为能够获取到数据源信息的分库规则;拦截调用数据库的方法,读取所述方法使用的注解中配置的业务字段信息;基于所述业务字段信息,从分库规则列表中查找分库规则;获得所述分库规则对应的分片键;基于所述分片键,从分库规则中确定数据源标识;所述数据源标识与当前数据源的标识不一致时,进行切库,绑定确定的数据源标识对应的数据源。在上述过程中,使用分库规则配置不同的数据源,可根据业务动态变化数据库分库使用范围,且与后续的切库步骤解耦;读取所述方法使用的注解中配置的业务字段信息,使得无需对原有的调用数据库的方法进行改造就行取值,整体效率高。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中数据库分库方法的流程图一;
图2为本发明实施例中获取分库规则列表的流程图;
图3为本发明实施例中获取分库规则列表的原理图;
图4为本发明实施例中分库规则绑定的原理图;
图5为本发明实施例中查找分库规则的流程图;
图6为本发明实施例中数据源绑定计算的原理图;
图7为本发明实施例中确定数据源标识的流程图;
图8为本发明实施例中数据库分库方法的流程图二;
图9为本发明实施例中数据库分库装置的示意图一;
图10为本发明实施例中数据库分库装置的示意图二;
图11为本发明实施例中计算机设备的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
在本说明书的描述中,所使用的“包含”、“包括”、“具有”、“含有”等,均为开放性的用语,即意指包含但不限于。参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”等的描述意指结合该实施例或示例描述的具体特征、结构或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。各实施例中涉及的步骤顺序用于示意性说明本申请的实施,其中的步骤顺序不作限定,可根据需要作适当调整。
图1为本发明实施例中数据库分库方法的流程图一,如图1所示,包括:
步骤101,获取分库规则列表,所述分库规则列表中的分库规则为能够获取到数据源信息的分库规则;
步骤102,拦截调用数据库的方法,读取所述方法使用的注解中配置的业务字段信息;
步骤103,基于所述业务字段信息,从分库规则列表中查找分库规则;
步骤104,获得所述分库规则对应的分片键;
步骤105,基于所述分片键,从分库规则中确定数据源标识;
步骤106,在所述数据源标识与当前数据源的标识不一致时,进行切库,绑定确定的数据源标识对应的数据源。
在本发明实施例中,使用分库规则配置不同的数据源,可根据业务动态变化数据库分库使用范围,且与后续的切库步骤解耦;读取所述方法使用的注解中配置的业务字段信息,使得无需对原有的调用数据库的方法进行改造就行取值,整体效率高。
在步骤101中,获取分库规则列表,所述分库规则列表中的分库规则为能够获取到数据源信息的分库规则。
图2为本发明实施例中获取分库规则列表的流程图,在一实施例中,获取分库规则列表,包括:
步骤201,将配置文件中的分库规则以文件流的形式加载到内存中,并封装成对象;
步骤202,对每个分库规则对应的对象,若能够从该对象中获取到数据源信息,将该对象装配至分库规则列表中。
图3为本发明实施例中获取分库规则列表的原理图,与图2对应,步骤201为解析步骤。步骤202既包含了验证步骤也包含了筛选步骤,其中,获取到数据源信息,说明其分库规则与现有的数据源模块中的数据源信息进行了核对,若该数据源信息存在,说明该分库规则为有用分库规则,可进行装配步骤,也就是将筛选出的有用分库规则装配至分库规则列表中,等待绑定。
图4为本发明实施例中分库规则绑定的原理图,具体包括步骤102和步骤103。
在步骤102中,拦截调用数据库的方法,读取所述方法使用的注解中配置的业务字段信息。其中,注解是自定义的注解。步骤102中对应图4中的拦截。
在一实施例中,拦截调用数据库的方法,包括:
使用自定义注解的Dao层方法通过Spring AOP方式拦截调用数据库的方法。
在步骤103中,基于所述业务字段信息,从分库规则列表中查找分库规则,其方法可以有多种,下面给出其中一个实施例。
图5为本发明实施例中查找分库规则的流程图,在一实施例中,基于所述业务字段信息,从分库规则列表中查找分库规则,包括:
步骤501,基于所述业务字段信息,利用反射的方式获取所述方法的入参中业务字段值;
步骤502,查找分库规则列表中所述业务字段值对应的分库规则。
其中,步骤501和步骤502分别对应图4中的反射和绑定。
图6为本发明实施例中数据源绑定计算的原理图,具体包括步骤104-步骤106。
在步骤104中,获得所述分库规则对应的分片键,用于后续获取分片键键值。
在步骤105中,基于所述分片键,从分库规则中确定数据源标识;
图7为本发明实施例中确定数据源标识的流程图,在一实施例中,基于所述分片键,从分库规则中确定数据源标识,包括:
步骤701,基于所述分片键,利用反射的方式获取所述方法的入参中分片键键值;
步骤702,根据分片键键值,从分库规则中确定数据源标识。
步骤701对应图6中的分片键取值,步骤702对应图6中的数据源计算,而步骤106则对应图6中的切库。
在步骤106中,在所述数据源标识与当前数据源的标识不一致时,进行切库,绑定确定的数据源标识对应的数据源。
在一实施例中,进行切库,包括:
利用JDBC提供的切库方法进行切库。
图8为本发明实施例中数据库分库方法的流程图二,在一实施例中,所述方法还包括:
步骤801,接收自定义分库规则和对调用数据库的方法的自定义注解;其中,所述分库规则添加有数据源标识。
综上所述,在本发明实施例提出的方法中,获取分库规则列表,所述分库规则列表中的分库规则为能够获取到数据源信息的分库规则;拦截调用数据库的方法,读取所述方法使用的注解中配置的业务字段信息;基于所述业务字段信息,从分库规则列表中查找分库规则;获得所述分库规则对应的分片键;基于所述分片键,从分库规则中确定数据源标识;所述数据源标识与当前数据源的标识不一致时,进行切库,绑定确定的数据源标识对应的数据源。在上述过程中,使用分库规则配置不同的数据源,可根据业务动态变化数据库分库使用范围,且与后续的切库步骤解耦;读取所述方法使用的注解中配置的业务字段信息,使得无需对原有的调用数据库的方法进行改造就行取值,整体效率高。另外,使用配置文件的方式定义分库规则,符合开发规范,也使得方法及装置轻量化。
本发明还提出一种数据库分库装置,其原理与数据库分库方法相同,这里不再赘述。
图9为本发明实施例中数据库分库装置的示意图一,如图9所示,包括:
分库规则模块901,用于获取分库规则列表,所述分库规则列表中的分库规则为能够获取到数据源信息的分库规则;
注解模块902,用于拦截调用数据库的方法,读取所述方法使用的注解中配置的业务字段信息;基于所述业务字段信息,从分库规则列表中查找分库规则;
分库计算模块903,用于获得所述分库规则对应的分片键;基于所述分片键,从分库规则中确定数据源标识;在所述数据源标识与当前数据源的标识不一致时,进行切库,绑定确定的数据源标识对应的数据源。
在一实施例中,分库规则模块具体用于:
将配置文件中的分库规则以文件流的形式加载到内存中,并封装成对象;
对每个分库规则对应的对象,若能够从该对象中获取到数据源信息,将该对象装配至分库规则列表中。
在一实施例中,注解模块具体用于:
使用自定义注解的Dao层方法通过Spring AOP方式拦截调用数据库的方法。
在一实施例中,注解模块具体用于:
基于所述业务字段信息,利用反射的方式获取所述方法的入参中业务字段值;
查找分库规则列表中所述业务字段值对应的分库规则。
在一实施例中,分库计算模块具体用于:
基于所述分片键,利用反射的方式获取所述方法的入参中分片键键值;
根据分片键键值,从分库规则中确定数据源标识。
在一实施例中,分库计算模块具体用于:
利用JDBC提供的切库方法进行切库。
图10为本发明实施例中数据库分库装置的示意图二,如图10所示,还包括:自定义模块1001,用于接收自定义分库规则和对调用数据库的方法的自定义注解;其中,所述分库规则添加有数据源标识。
综上所述,本发明实施例提出的方法及装置中,分库规则模块,用于获取分库规则列表,所述分库规则列表中的分库规则为能够获取到数据源信息的分库规则;注解模块,用于拦截调用数据库的方法,读取所述方法使用的注解中配置的业务字段信息;基于所述业务字段信息,从分库规则列表中查找分库规则;分库计算模块,用于获得所述分库规则对应的分片键;基于所述分片键,从分库规则中确定数据源标识;在所述数据源标识与当前数据源的标识不一致时,进行切库,绑定确定的数据源标识对应的数据源。在上述过程中,使用分库规则配置不同的数据源,可根据业务动态变化数据库分库使用范围,且与后续的切库步骤解耦;读取所述方法使用的注解中配置的业务字段信息,使得无需对原有的调用数据库的方法进行改造就行取值,整体效率高。另外,使用配置文件的方式定义分库规则,符合开发规范,也使得方法及装置轻量化。
本发明的实施例还提供一种计算机设备,图11为本发明实施例中计算机设备的示意图,该计算机设备能够实现上述实施例中的数据库分库方法中全部步骤,所述计算机设备具体包括如下内容:
处理器(processor)1101、存储器(memory)1102、通信接口(CommunicationsInterface)1103和通信总线1104;
其中,所述处理器1101、存储器1102、通信接口1103通过所述通信总线1104完成相互间的通信;所述通信接口1103用于实现服务器端设备、检测设备以及用户端设备等相关设备之间的信息传输;
所述处理器1101用于调用所述存储器1102中的计算机程序,所述处理器执行所述计算机程序时实现上述实施例中的数据库分库方法中的全部步骤。
本发明的实施例还提供一种计算机可读存储介质,能够实现上述实施例中的数据库分库方法中全部步骤,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的数据库分库方法的全部步骤。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序商品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序商品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序商品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种数据库分库方法,其特征在于,包括:
获取分库规则列表,所述分库规则列表中的分库规则为能够获取到数据源信息的分库规则;
拦截调用数据库的方法,读取所述方法使用的注解中配置的业务字段信息;
基于所述业务字段信息,从分库规则列表中查找分库规则;
获得所述分库规则对应的分片键;
基于所述分片键,从分库规则中确定数据源标识;
在所述数据源标识与当前数据源的标识不一致时,进行切库,绑定确定的数据源标识对应的数据源。
2.如权利要求1所述的数据库分库方法,其特征在于,获取分库规则列表,包括:
将配置文件中的分库规则以文件流的形式加载到内存中,并封装成对象;
对每个分库规则对应的对象,若能够从该对象中获取到数据源信息,将该对象装配至分库规则列表中。
3.如权利要求1所述的数据库分库方法,其特征在于,拦截调用数据库的方法,包括:
使用自定义注解的Dao层方法通过Spring AOP方式拦截调用数据库的方法。
4.如权利要求1所述的数据库分库方法,其特征在于,基于所述业务字段信息,从分库规则列表中查找分库规则,包括:
基于所述业务字段信息,利用反射的方式获取所述方法的入参中业务字段值;
查找分库规则列表中所述业务字段值对应的分库规则。
5.如权利要求1所述的数据库分库方法,其特征在于,基于所述分片键,从分库规则中确定数据源标识,包括:
基于所述分片键,利用反射的方式获取所述方法的入参中分片键键值;
根据分片键键值,从分库规则中确定数据源标识。
6.如权利要求1所述的数据库分库方法,其特征在于,进行切库,包括:
利用JDBC提供的切库方法进行切库。
7.如权利要求1所述的数据库分库方法,其特征在于,还包括:
接收自定义分库规则和对调用数据库的方法的自定义注解;其中,所述分库规则添加有数据源标识。
8.一种数据库分库装置,其特征在于,包括:
分库规则模块,用于获取分库规则列表,所述分库规则列表中的分库规则为能够获取到数据源信息的分库规则;
注解模块,用于拦截调用数据库的方法,读取所述方法使用的注解中配置的业务字段信息;基于所述业务字段信息,从分库规则列表中查找分库规则;
分库计算模块,用于获得所述分库规则对应的分片键;基于所述分片键,从分库规则中确定数据源标识;在所述数据源标识与当前数据源的标识不一致时,进行切库,绑定确定的数据源标识对应的数据源。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至7任一项所述方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111247688.XA CN113961544A (zh) | 2021-10-26 | 2021-10-26 | 数据库分库方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111247688.XA CN113961544A (zh) | 2021-10-26 | 2021-10-26 | 数据库分库方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113961544A true CN113961544A (zh) | 2022-01-21 |
Family
ID=79467103
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111247688.XA Pending CN113961544A (zh) | 2021-10-26 | 2021-10-26 | 数据库分库方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113961544A (zh) |
-
2021
- 2021-10-26 CN CN202111247688.XA patent/CN113961544A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3591510B1 (en) | Method and device for writing service data in block chain system | |
US9778967B2 (en) | Sophisticated run-time system for graph processing | |
CN110334152B (zh) | 一种数据同步方法、装置及服务器 | |
US11481440B2 (en) | System and method for processing metadata to determine an object sequence | |
CN109508326B (zh) | 用于处理数据的方法、装置和系统 | |
CN111209280A (zh) | 一种分库分表方法及设备 | |
CN109408507B (zh) | 多属性数据的处理方法、装置、设备及可读存储介质 | |
CN111355816B (zh) | 服务器选取方法、装置、设备及分布式服务系统 | |
CN110764748B (zh) | 代码调用方法、装置、终端及存储介质 | |
CN109408594B (zh) | 一种基于区块链的跨链数据检索系统 | |
US10671610B2 (en) | Processing window partitioning and ordering for on-line analytical processing (OLAP) functions | |
CN113901083A (zh) | 基于多解析器的异构数据源操作资源解析定位方法和设备 | |
CN114281663A (zh) | 测试处理方法、装置、电子设备和存储介质 | |
CN112765169A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN113961544A (zh) | 数据库分库方法及装置 | |
CN116233254A (zh) | 业务切流方法、装置、计算机设备和存储介质 | |
CN115150413B (zh) | 区块链数据的存储方法、装置、电子设备及存储介质 | |
CN110928941A (zh) | 一种数据分片抽取方法及装置 | |
CN113641678A (zh) | 一种基于多维表单的动态服务配置方法和系统 | |
CN112416865A (zh) | 基于大数据的文件处理方法和装置 | |
CN109933573B (zh) | 数据库业务更新方法、装置及系统 | |
US20240168725A1 (en) | Method and system for identifying microservices in a monolith application | |
CN114328529A (zh) | 一种mybatis拦截器对大数据表分表查询方法和系统 | |
CN113139008A (zh) | 数据查询系统及方法、电子设备、存储介质 | |
CN114090519A (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 |