CN110674132A - 简化数据库中间件配置并自动转入的方法 - Google Patents
简化数据库中间件配置并自动转入的方法 Download PDFInfo
- Publication number
- CN110674132A CN110674132A CN201910821535.8A CN201910821535A CN110674132A CN 110674132 A CN110674132 A CN 110674132A CN 201910821535 A CN201910821535 A CN 201910821535A CN 110674132 A CN110674132 A CN 110674132A
- Authority
- CN
- China
- Prior art keywords
- database
- configuration
- configuration object
- data source
- automatic
- 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
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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
-
- 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/217—Database tuning
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)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及简化数据库中间件配置并自动转入的方法,包括:A.建立数据库配置对象和数据库自动配置对象;B.建立表配置对象和表自动配置对象;C.建立公共自动配置对象;D.建立数据源自动载入对象,该对象实现了基于sharding‑jdbc的多数据源分库及分表的数据源初始化,将所述的数据库自动配置对象、表自动配置对象和公共自动配置对象作为数据源自动载入对象的属性,并通过在数据源自动载入对象中定义的方法解析配置信息是否有效、然后创建基于sharding‑jdbc的多数据源分库及分表的数据源。本发明通过自动加载机制,使风险在内部可控,并且不需要进行繁琐复杂的规则配置,大幅度降低了开发成本和运维的成本,防止了配置错乱而出现不必要的风险。
Description
技术领域
本发明涉及数据库优化的方法,具体讲是简化数据库中间件配置并自动转入的方法。
背景技术
在目前的分布式高并发场景下,为了提高应用系统的处理能力,大部分应用系统都对数据库进行了垂直分库和水平分表的操作,其中主要以sharidng-jdbc技术为主。sharidng-jdbc是一个开源的适用于微服务的分布式数据访问基础类库,属于一种数据库中间件。
sharding-jdbc主要提供了以下功能:
1.分库/分表;
2.数据库的读、写分离;
3.分片策略定制化;
4.无中心化分布式主键;
5.支持JDBC规范的数据库;
6.支持任何第三方的数据库连接池;
7.适用于基于java的ORM框架;
更详尽的说明可以参考:https://shardingsphere.apache.org/document/current/cn/overview/
虽然sharding-jdbc提供了完整的一整套分布式数据库中间件解决方案,然而在实际应用过程中,在分库/分表很大的时候,让运维人员和开发人员进行相关规则的配置是非常困难的,几乎难以实现,并且越多的配置也会造成线上业务操作风险越高、越难排查等问题。
综上所述,现有sharding-jdbc在分库/分表很大的时候存在以下不足:
1.需要配置大量近似重复的配置条目;
2.过多的配置对开发人员和运维人员来说都是不可操作的;
3.越多的配置造成业务风险和排查问题难度都呈指数级增加;
发明内容
本发明提供了一种简化数据库中间件配置并自动转入的方法,以使风险内部可控,降低开发成本和运维的成本,不需要进行繁琐复杂的规则配置,防止配置错乱而出现不必要的风险。
本发明简化数据库中间件配置并自动转入的方法,包括:
A.建立数据库配置对象和数据库自动配置对象;
所述的数据库配置对象用于存储数据库的连接配置信息和分片策略;数据库自动配置对象用于记录多个数据源与所述数据库配置对象之间的键-值关系,其中键是数据源名称,值是数据库配置对象;
B.建立表配置对象和表自动配置对象;
所述的表配置对象用于存储表的分片策略;表自动配置对象用于记录多表与表配置对象之间的键-值关系,其中键是表名,值是表配置对象;
C.建立公共自动配置对象,以键-值关系方式记录公共配置,其中键是配置名称,值是配置值;
D.建立数据源自动载入对象,该对象实现了基于sharding-jdbc的多数据源分库及分表的数据源初始化,将所述的数据库自动配置对象、表自动配置对象和公共自动配置对象作为数据源自动载入对象的属性,并通过在数据源自动载入对象中定义的方法解析配置信息是否有效、然后创建基于sharding-jdbc的多数据源分库及分表的数据源。
通过基于sharding-jdbc的自动加载,不需要运维人员和开发人员再进行大量繁琐类似的规则配置,由此降低了操作风险和业务风险,同时在后续开发过程中,开发人员也不用关心多数据源的存在,对开发人员来说多个数据源其实就是一个数据源,降低了开发难度和运维难度。
进一步的,步骤D包括:
D1.根据Spring IOC原理从Spring容器中将所述的数据库自动配置对象、表自动配置对象和公共自动配置对象载入到所述的数据源自动载入对象中,得到相关配置信息;Spring Boot的相关文档可以参阅:https://spring.io/projects/spring-boot/。
D2.判断数据库自动配置对象是否配置了数据库的相关信息,如没有配置对外抛出异常,否则继续执行;
D3.遍历数据库自动配置对象记录的所述键-值关系,并验证相关配置是否设置,如果有至少一项没有配置则对外抛出异常,否则根据每条键-值关系分别创建数据源;
D4.分别连接所述的各数据源,并获得各数据源中的所有表名;
D5.遍历所有的表名,生成表分片规则配置;
D6.将所述的数据源、表分片规则配置和公共配置对象传入sharding-jdbc内置的创建数据源方法中,得到基于sharding-jdbc的多数据源分库及分表的数据源。
其中所述的数据库的相关信息,以及需要验证的相关配置,根据实际情况,可以分别包括有数据库连接协议、数据库IP地址、数据库名称、数据库用户、数据库密文、数据库秘钥、数据库分片字段、数据库分片策略、连接池初始化连接数、连接池最小空闲连接数、连接池最大连接数、连接池获取连接最大等待时间、连接池连接生存时间、连接池连接有效性检查语句、连接池连接有效性检查时机等各种配置参数。由于这些配置参数没有默认值的设置,因此有可能会出现在开发人员或运维人员忘记配置的情况下没有设置的情况。
优选的,步骤D3中的验证顺序为:连接池类型-->驱动类型-->连接地址-->数据库名称-->用户名-->密码。
进一步的,步骤D3中所述的创建数据源为:先调用连接池中的创建数据源的方法,建立数据源对象,然后设置该数据源对象的属性。
在此基础上,步骤D5所述的生成表分片规则配置为:
D51.新建表分片规则配置对象,在所述的表分片规则配置对象中包括逻辑表名、各实际数据节点、数据库分片策略和表分片策略属性;
D52.设置表分片规则配置对象中所有的逻辑表名分别与步骤D4得到的各个表名对应相同;
D53.设置所述的实际数据节点,通过分隔符分隔各实际数据节点;
D54.设置所述的数据库分片策略为步骤A中数据库自动配置对象中的数据库分片策略;
D55.设置所述的表分片策略为步骤A中数据库自动配置对象中的表分片策略。
具体的,步骤D54中,如果步骤B的表自动配置对象也设置了数据库分片策略,则设置所述的数据库分片策略为步骤B中的数据库分片策略。
同理的,步骤D55中,如果步骤B的表自动配置对象也设置了表分片策略,则设置所述的表分片策略为步骤B中的表分片策略。
本发明简化数据库中间件配置并自动转入的方法,通过在sharding-jdbc的基础上结合了Spring boot自动加载机制,以及默认缺省表分片策略配置和sharding-jdbc内置的分片策略,使风险在内部可控,并且不需要进行繁琐复杂的规则配置,大幅度降低了开发成本和运维的成本,防止了配置错乱而出现不必要的风险。
以下结合实施例的具体实施方式,对本发明的上述内容再作进一步的详细说明。但不应将此理解为本发明上述主题的范围仅限于以下的实例。在不脱离本发明上述技术思想情况下,根据本领域普通技术知识和惯用手段做出的各种替换或变更,均应包括在本发明的范围内。
附图说明
图1为本发明简化数据库中间件配置并自动转入的方法的流程图。
具体实施方式
如图1所示本发明简化数据库中间件配置并自动转入的方法,包括:
A.建立数据库配置对象和数据库自动配置对象;
所述的数据库配置对象用于存储数据库的连接配置信息和分片策略,包含:连接池类型、驱动类型、连接地址、数据库名称、用户名、密码、秘钥、初始化连接数、最大连接数、空闲连接数、连接超时时间、数据库分片策略、表分片策略等;
数据库自动配置对象用于记录多个数据源与所述数据库配置对象之间的键-值关系,采用java map的方式进行存储,其中键是数据源名称,值是数据库配置对象;
B.建立表配置对象和表自动配置对象;
所述的表配置对象用于存储表的分片策略,包含:数据库分片策略、表分片策略;
表自动配置对象用于记录多表与表配置对象之间的键-值关系,采用java map的方式进行存储,其中键是表名,值是表配置对象;
C.建立公共自动配置对象,包含:初始化连接数、最大连接数、空闲连接数、连接超时时间、其他配置参数。以键-值关系方式记录公共配置,采用java map的方式进行存储,其中键是配置名称,值是配置值;
D.建立数据源自动载入对象,该对象实现了基于sharding-jdbc的多数据源分库及分表的数据源初始化,并创建基于sharding-jdbc的多数据源分库及分表的数据源。具体为:
D1.根据Spring IOC原理从Spring容器中将所述的数据库自动配置对象、表自动配置对象和公共自动配置对象载入到所述的数据源自动载入对象中,得到相关配置信息。
D2.判断数据库自动配置对象是否配置了数据库的相关信息,如没有配置对外抛出java运行异常,否则继续执行。
D3.遍历数据库自动配置对象的java map中记录的所述键-值记录,并验证相关配置是否设置,验证顺序为:连接池类型-->驱动类型-->连接地址-->数据库名称-->用户名-->密码。如果有至少一项没有配置则对外抛出java运行异常,否则根据数据库自动配置对象的java map中每条键-值关系分别调用连接池中的创建数据源的方法(如javaClass.forName(连接池类型).newInstance()方法),建立数据源对象,然后设置该数据源对象的属性,所述属性包括:驱动类型、连接地址、数据库名称、用户名、密码。其中步骤D2中所述的数据库的相关信息,以及本步骤中所述需要验证的相关配置,根据实际情况,可以分别包括有数据库连接协议、数据库IP地址、数据库名称、数据库用户、数据库密文、数据库秘钥、数据库分片字段、数据库分片策略、连接池初始化连接数、连接池最小空闲连接数、连接池最大连接数、连接池获取连接最大等待时间、连接池连接生存时间、连接池连接有效性检查语句、连接池连接有效性检查时机等各种配置参数。
D4.分别连接所述的各数据源,通过执行SHOW TABLES语句获得各数据源中所有的表名。
D5.遍历所有的表名,生成表分片规则配置:
D51.新建表分片规则配置对象,在所述的表分片规则配置对象中包括逻辑表名、各实际数据节点、数据库分片策略和表分片策略属性;
D52.设置表分片规则配置对象中所有的逻辑表名分别与步骤D4得到的各个表名对应相同;
D53.设置所述的实际数据节点,通过英文逗号形式的分隔符分隔各实际数据节点,例如:数据库名1.table,数据库名2.table,数据库名3.table;
D54.设置所述的数据库分片策略为步骤A中数据库自动配置对象中的数据库分片策略;如果步骤B的表自动配置对象也设置了数据库分片策略,则设置所述的数据库分片策略为步骤B中的数据库分片策略。
D55.设置所述的表分片策略为步骤A中数据库自动配置对象中的表分片策略;如果步骤B的表自动配置对象也设置了表分片策略,则设置所述的表分片策略为步骤B中的表分片策略。
D6.将所述的数据源、表分片规则配置和公共配置对象传入sharding-jdbc内置的ShardingDataSourceFactory类中的createDataSource方法中,得到基于sharding-jdbc的多数据源分库及分表的数据源。
Claims (7)
1.简化数据库中间件配置并自动转入的方法,其特征包括:
A.建立数据库配置对象和数据库自动配置对象;
所述的数据库配置对象用于存储数据库的连接配置信息和分片策略;数据库自动配置对象用于记录多个数据源与所述数据库配置对象之间的键-值关系,其中键是数据源名称,值是数据库配置对象;
B.建立表配置对象和表自动配置对象;
所述的表配置对象用于存储表的分片策略;表自动配置对象用于记录多表与表配置对象之间的键-值关系,其中键是表名,值是表配置对象;
C.建立公共自动配置对象,以键-值关系方式记录公共配置,其中键是配置名称,值是配置值;
D.建立数据源自动载入对象,该对象实现了基于sharding-jdbc的多数据源分库及分表的数据源初始化,将所述的数据库自动配置对象、表自动配置对象和公共自动配置对象作为数据源自动载入对象的属性,并通过在数据源自动载入对象中定义的方法解析配置信息是否有效、然后创建基于sharding-jdbc的多数据源分库及分表的数据源。
2.如权利要求1所述的简化数据库中间件配置并自动转入的方法,其特征为:步骤D包括:
D1.根据Spring IOC原理从Spring容器中将所述的数据库自动配置对象、表自动配置对象和公共自动配置对象载入到所述的数据源自动载入对象中,得到相关配置信息;
D2.判断数据库自动配置对象是否配置了数据库的相关信息,如没有配置对外抛出异常,否则继续执行;
D3.遍历数据库自动配置对象记录的所述键-值关系,并验证相关配置是否设置,如果有至少一项没有配置则对外抛出异常,否则根据每条键-值关系分别创建数据源;
D4.分别连接所述的各数据源,并获得各数据源中的所有表名;
D5.遍历所有的表名,生成表分片规则配置;
D6.将所述的数据源、表分片规则配置和公共配置对象传入sharding-jdbc内置的创建数据源方法中,得到基于sharding-jdbc的多数据源分库及分表的数据源。
3.如权利要求2所述的简化数据库中间件配置并自动转入的方法,其特征为:步骤D3中的验证顺序为:连接池类型-->驱动类型-->连接地址-->数据库名称-->用户名-->密码。
4.如权利要求2所述的简化数据库中间件配置并自动转入的方法,其特征为:步骤D3中所述的创建数据源为:先调用连接池中的创建数据源的方法,建立数据源对象,然后设置该数据源对象的属性。
5.如权利要求2所述的简化数据库中间件配置并自动转入的方法,其特征为:步骤D5所述的生成表分片规则配置为:
D51.新建表分片规则配置对象,在所述的表分片规则配置对象中包括逻辑表名、各实际数据节点、数据库分片策略和表分片策略属性;
D52.设置表分片规则配置对象中所有的逻辑表名分别与步骤D4得到的各个表名对应相同;
D53.设置所述的实际数据节点,通过分隔符分隔各实际数据节点;
D54.设置所述的数据库分片策略为步骤A中数据库自动配置对象中的数据库分片策略;
D55.设置所述的表分片策略为步骤A中数据库自动配置对象中的表分片策略。
6.如权利要求5所述的简化数据库中间件配置并自动转入的方法,其特征为:步骤D54中,如果步骤B的表自动配置对象也设置了数据库分片策略,则设置所述的数据库分片策略为步骤B中的数据库分片策略。
7.如权利要求5所述的简化数据库中间件配置并自动转入的方法,其特征为:步骤D55中,如果步骤B的表自动配置对象也设置了表分片策略,则设置所述的表分片策略为步骤B中的表分片策略。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910821535.8A CN110674132B (zh) | 2019-09-02 | 2019-09-02 | 简化数据库中间件配置并自动转入的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910821535.8A CN110674132B (zh) | 2019-09-02 | 2019-09-02 | 简化数据库中间件配置并自动转入的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110674132A true CN110674132A (zh) | 2020-01-10 |
CN110674132B CN110674132B (zh) | 2022-04-08 |
Family
ID=69076660
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910821535.8A Active CN110674132B (zh) | 2019-09-02 | 2019-09-02 | 简化数据库中间件配置并自动转入的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110674132B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106909597A (zh) * | 2016-06-30 | 2017-06-30 | 阿里巴巴集团控股有限公司 | 一种数据库迁移方法和装置 |
CN107180081A (zh) * | 2017-04-28 | 2017-09-19 | 广东亿迅科技有限公司 | 海量关系型数据库的调用方法及装置 |
CN107423387A (zh) * | 2017-07-19 | 2017-12-01 | 北京北信源软件股份有限公司 | 一种基于中间件的分库分表的方法与装置 |
CN108628986A (zh) * | 2018-04-27 | 2018-10-09 | 深圳市牛鼎丰科技有限公司 | 数据查询方法、装置、计算机设备和存储介质 |
-
2019
- 2019-09-02 CN CN201910821535.8A patent/CN110674132B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106909597A (zh) * | 2016-06-30 | 2017-06-30 | 阿里巴巴集团控股有限公司 | 一种数据库迁移方法和装置 |
CN107180081A (zh) * | 2017-04-28 | 2017-09-19 | 广东亿迅科技有限公司 | 海量关系型数据库的调用方法及装置 |
CN107423387A (zh) * | 2017-07-19 | 2017-12-01 | 北京北信源软件股份有限公司 | 一种基于中间件的分库分表的方法与装置 |
CN108628986A (zh) * | 2018-04-27 | 2018-10-09 | 深圳市牛鼎丰科技有限公司 | 数据查询方法、装置、计算机设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
李文杰 等: "分布式应用层中间件的设计", 《微型机与应用》 * |
Also Published As
Publication number | Publication date |
---|---|
CN110674132B (zh) | 2022-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108847989B (zh) | 基于微服务架构的日志处理方法、业务服务系统以及电子设备 | |
CN107193490B (zh) | 一种基于区块链的分布式数据存储系统及方法 | |
US7734585B2 (en) | Updateable fan-out replication with reconfigurable master association | |
CN102289617B (zh) | 反恶意软件装置、服务器和匹配恶意软件模式的方法 | |
JP2024038272A (ja) | ファイル共有のための技術 | |
KR102376713B1 (ko) | 복합 파티션 함수 제공 기법 | |
US20180063055A1 (en) | Repartitioning a topic in a publish-subscribe message system | |
WO2018133662A1 (zh) | 一种数据重分布方法、装置及数据库集群 | |
CN104580395B (zh) | 一种基于现存云存储平台的多云协同存储中间件系统 | |
CN104838620A (zh) | 电信网中的事件管理 | |
CN107273440A (zh) | 计算机应用、数据存储方法、微服务和微数据库 | |
WO2022048357A1 (zh) | 交易背书方法、装置及存储介质 | |
CN105635311A (zh) | 一种云管理平台中资源池信息同步的方法 | |
CN109977170A (zh) | 一种政务内外网数据同步的方法及系统 | |
CN110289975A (zh) | 公众号消息群发管理系统及方法 | |
EP2811437A1 (en) | Computer system, computer-implemented method and computer program product for sequencing incoming messages for processing at an application | |
CN107580032A (zh) | 数据处理方法、装置及设备 | |
CN103503388B (zh) | 一种分布式队列消息读取方法及设备、系统 | |
CN116489214A (zh) | 一种基于微服务网关的统一服务调度方法、装置、介质及设备 | |
WO2007054007A1 (fr) | Méthode et système d’implémentation d’une configuration de données de service | |
CN102932443A (zh) | 基于hdfs集群的分布式云存储系统 | |
CN104022896B (zh) | 一种配置管理方法、装置及网络设备 | |
CN110674132B (zh) | 简化数据库中间件配置并自动转入的方法 | |
CN102638569B (zh) | 一种文件分发同步方法及系统 | |
CN104462108A (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 |