CN108228848A - 一种可扩展的业务数据分库实现方法 - Google Patents
一种可扩展的业务数据分库实现方法 Download PDFInfo
- Publication number
- CN108228848A CN108228848A CN201810022143.0A CN201810022143A CN108228848A CN 108228848 A CN108228848 A CN 108228848A CN 201810022143 A CN201810022143 A CN 201810022143A CN 108228848 A CN108228848 A CN 108228848A
- Authority
- CN
- China
- Prior art keywords
- library
- database
- point
- divides
- parameter
- 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 42
- 238000007792 addition Methods 0.000 claims description 6
- 238000012217 deletion Methods 0.000 claims description 5
- 230000037430 deletion Effects 0.000 claims description 5
- 238000010276 construction Methods 0.000 claims description 2
- 235000013399 edible fruits Nutrition 0.000 claims description 2
- 238000012546 transfer Methods 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 238000013068 supply chain management Methods 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- 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
Abstract
本发明提供了一种可扩展的业务数据分库实现方法,所述方法通过配置分库策略,通过业务表实现跟分库的关联,针对需要分库的业务表选择对应的分库策略,选择完分库策略后,对选择的分库策略设置参数,供业务功能开发选择。本发明以满足系统数据库的横向扩展为出发点,提供了一种方便的、基于配置的、可扩展的业务数据分库实现方式,内置了通用的分库实现方案,并且支持不同的业务功能,根据实际场景扩展分库方案,适用于大型分布式系统,尤其是对系统性能、稳定性以及可扩展性要求高的系统。
Description
技术领域
本发明涉及业务系统的数据分库存储技术领域,具体涉及一种可扩展的业务数据分库实现方法,特别是数据量、数据访问频率大的企业级业务系统。
背景技术
ERP系统是企业资源计划(Enterprise Resource Planning )的简称,是指建立在信息技术基础上,集信息技术与先进管理思想于一身,以系统化的管理思想,为企业员工及决策层提供决策手段的管理平台。它是从MRP(物料需求计划)发展而来的新一代集成化管理信息系统,它扩展了MRP的功能,其核心思想是供应链管理。它跳出了传统企业边界,从供应链范围去优化企业的资源,优化了现代企业的运行模式,反映了市场对企业合理调配资源的要求。它对于改善企业业务流程、提高企业核心竞争力具有显著作用。
随着ERP系统的客户规模壮大,海量数据的存储和访问成了系统设计的瓶颈。对于一个大型的系统,高频率的数据库访问对数据库造成了相当高的负载,对系统的稳定性和扩展性造成了极大的问题。
要解决此问题,一般通过提升数据库服务器性能,这种方法能解决部分问题,但是总是会有上限,并且性能高的服务器价格也很高,成本很大。
第二种方法,将对系统对一个数据库的压力转移到多个数据库中,根据不同的业务规则,将业务数据存储到不同的库中,在数据库出现瓶颈时,通过增加数据库来达到提升系统性能的目的。
发明内容
为了解决以上技术问题,本发明提出了一种可扩展的业务数据分库实现方法,可以提供多种不同的分库实现,不同的业务功能可以选择不同的分库配置实现分库。在内置的分库实现不能满足业务需求的情况下,可以自定义分库实现注册到ERP系统中。
本发明的技术方案是:
一种可扩展的业务数据分库实现方法,所述方法通过配置分库策略,通过业务表实现跟分库的关联,针对需要分库的业务表选择对应的分库策略,选择完分库策略后,对选择的分库策略设置参数,供业务功能开发选择。
所述业务表的内容包括字段名称、字段类型和含义,其中字段名称包括:
编号,字段类型为可变长字符型,含义为分库配置的编号;
描述,字段类型为可变长字符型,含义为分库配置的描述信息;
分库参数定义,字段类型为长文本,含义为分库配置的参数,在选择分库配置时,需要选择分库所需参数信息;
分库扩展实现,字段类型为长文本,含义为用来配置分库扩展实现逻辑对应的类信息。
所述分库参数定义,负责为分库配置提供所需要的参数,包括字段名称、字段类型和含义,其中字段名称包括:
编号,字段类型为可变长字符型,含义为参数的编号;
描述,字段类型为可变长字符型,含义为参数的描述信息;
参数输入方式,字段类型为长文本,含义为参数的输入方式,提供不同的界面参数输入,用来方便使用者选择参数值,支持上下文变量、业务表字段选择。
所述分库扩展实现,负责配置分库数据库查找逻辑实现类需要实现的统一的接口,包含实现类所在程序集、实现类命名空间以及实现类类名。
所述方法提供数据库注册功能,为每一个数据库分库分配一个顺序号和主键。
所述方法提供数据库路由功能,在数据增删改查过程中,根据分库配置进行数据库查找,在进行数据库路由时,根据业务表所选择的分库配置,构造分库配置所需的参数,然后调用对应的分页扩展实现中的数据库路由查找方法查找对应的数据库主键,并根据数据库主键创建对应数据库连接执行数据增删改查操作。
所述方法提供数据库扩容功能,在增加数据库时,根据数据库分库配置进行数据重新分库,将已有数据根据新的数据库分布进行数据转移,执行对应的分库配置中的分库扩展实现逻辑,进行数据的重新分配。
所述方法提供基于主键的数据库查找逻辑:根据主键的值,获取其对应的哈希;如果当前主键值是整数类型,则不用取哈希,直接使用;除以当前系统中数据库的数目,然后取模,根据得到的结果确定对应的数据库。
所述方法内容还包括:在增加新数据库时,其数据重新分配逻辑如下:遍历现有的每一个库,获取出所有的主键值,根据主键值的哈希,除以新的数据库数量取模,得到的值为这条数据新的数据库编号,找到对应的数据库,将当前的数据从当前库导入到新库,然后删除当前库数据。
所述方法通过在主键分库配置中增加参数:主键列,在数据库路由组件进行数据库查找时,解析出主键列的值传递给数据库查找模块;在进行数据重新分配时,将主键列的列名传递给数据重新分配模块。
本发明的有益效果为:
本发明以满足系统数据库的横向扩展为出发点,提供了一种方便的、基于配置的、可扩展的业务数据分库实现方式,内置了通用的分库实现方案,并且支持不同的业务功能,根据实际场景扩展分库方案,适用于大型分布式系统,尤其是对系统性能、稳定性以及可扩展性要求高的系统。
具体实施方式
下面结合具体实施例,对本发明的内容进行更加详细的阐述:
开发人员自定义扩展策略:
新建代码文件,添加类,实现分库扩展策略接口,实现分库逻辑:数据库获取和重新分配数据;
添加自定义的分库策略配置,完善参数、扩展类信息等。
开发人员使用扩展策略:
通过业务表的设置功能,选择配置好的分库策略。
业务用户的使用过程:
业务用户在进行数据查询或者保存时,系统根据当前的分库策略和设置好的策略参数,进行数据库查找,找到对应数据库之后,使用该数据库进行数据的增删改查。
项目运维人员添加新的数据库扩展:
某项目上由于当前数据库压力大,需要增加一部分数据库,打开数据库配置,点击添加数据库,然后点击重新分配业务数据按钮,系统根据各个业务表的分库策略自动将业务数据重新导到不同的数据库中。
以上所述仅为本发明的优选实现方法,但并不限于此,对本领域技术人员来说,本发明实现方法可以有各种变化。凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种可扩展的业务数据分库实现方法,其特征在于,所述方法通过配置分库策略,通过业务表实现跟分库的关联,针对需要分库的业务表选择对应的分库策略,选择完分库策略后,对选择的分库策略设置参数,供业务功能开发选择。
2.根据权利要求1所述的一种可扩展的业务数据分库实现方法,其特征在于,所述业务表的内容包括字段名称、字段类型和含义,其中字段名称包括:
编号,字段类型为可变长字符型,含义为分库配置的编号;
描述,字段类型为可变长字符型,含义为分库配置的描述信息;
分库参数定义,字段类型为长文本,含义为分库配置的参数,在选择分库配置时,需要选择分库所需参数信息;
分库扩展实现,字段类型为长文本,含义为用来配置分库扩展实现逻辑对应的类信息。
3.根据权利要求2所述的一种可扩展的业务数据分库实现方法,其特征在于,所述分库参数定义,负责为分库配置提供所需要的参数,包括字段名称、字段类型和含义,其中字段名称包括:
编号,字段类型为可变长字符型,含义为参数的编号;
描述,字段类型为可变长字符型,含义为参数的描述信息;
参数输入方式,字段类型为长文本,含义为参数的输入方式,提供不同的界面参数输入,支持上下文变量、业务表字段选择。
4.根据权利要求2所述的一种可扩展的业务数据分库实现方法,其特征在于,所述分库扩展实现,负责配置分库数据库查找逻辑实现类需要实现的统一的接口,包含实现类所在程序集、实现类命名空间以及实现类类名。
5.根据权利要求1所述的一种可扩展的业务数据分库实现方法,其特征在于,所述方法提供数据库注册功能,为每一个数据库分库分配一个顺序号和主键。
6.根据权利要求5所述的一种可扩展的业务数据分库实现方法,其特征在于,所述方法提供数据库路由功能,在数据增删改查过程中,根据分库配置进行数据库查找,在进行数据库路由时,根据业务表所选择的分库配置,构造分库配置所需的参数,然后调用对应的分页扩展实现中的数据库路由查找方法查找对应的数据库主键,并根据数据库主键创建对应数据库连接执行数据增删改查操作。
7.根据权利要求1所述的一种可扩展的业务数据分库实现方法,其特征在于,所述方法提供数据库扩容功能,在增加数据库时,根据数据库分库配置进行数据重新分库,将已有数据根据新的数据库分布进行数据转移,执行对应的分库配置中的分库扩展实现逻辑,进行数据的重新分配。
8.根据权利要求5所述的一种可扩展的业务数据分库实现方法,其特征在于,所述方法提供基于主键的数据库查找逻辑:根据主键的值,获取其对应的哈希;如果当前主键值是整数类型,则不用取哈希,直接使用;除以当前系统中数据库的数目,然后取模,根据得到的结果确定对应的数据库。
9.根据权利要求5所述的一种可扩展的业务数据分库实现方法,其特征在于,所述方法内容还包括:在增加新数据库时,其数据重新分配逻辑如下:遍历现有的每一个库,获取出所有的主键值,根据主键值的哈希,除以新的数据库数量取模,得到的值为这条数据新的数据库编号,找到对应的数据库,将当前的数据从当前库导入到新库,然后删除当前库数据。
10.根据权利要求6所述的一种可扩展的业务数据分库实现方法,其特征在于,所述方法通过在主键分库配置中增加参数:主键列,在数据库路由组件进行数据库查找时,解析出主键列的值传递给数据库查找模块;在进行数据重新分配时,将主键列的列名传递给数据重新分配模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810022143.0A CN108228848A (zh) | 2018-01-10 | 2018-01-10 | 一种可扩展的业务数据分库实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810022143.0A CN108228848A (zh) | 2018-01-10 | 2018-01-10 | 一种可扩展的业务数据分库实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108228848A true CN108228848A (zh) | 2018-06-29 |
Family
ID=62640756
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810022143.0A Pending CN108228848A (zh) | 2018-01-10 | 2018-01-10 | 一种可扩展的业务数据分库实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108228848A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109271376A (zh) * | 2018-11-30 | 2019-01-25 | 北京锐安科技有限公司 | 数据库升级方法、装置、设备及存储介质 |
CN110795419A (zh) * | 2019-10-08 | 2020-02-14 | 中国建设银行股份有限公司 | 动态分库路由的方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105045816A (zh) * | 2015-06-26 | 2015-11-11 | 上海斐讯数据通信技术有限公司 | 一种大量数据的存取方法及系统 |
US20170083566A1 (en) * | 2015-09-17 | 2017-03-23 | Microsoft Technology Licensing, Llc | Partitioning advisor for online transaction processing workloads |
CN106874424A (zh) * | 2017-01-25 | 2017-06-20 | 杭州淘淘搜科技有限公司 | 一种基于MongoDB和Redis的网页数据采集处理方法及系统 |
CN107423387A (zh) * | 2017-07-19 | 2017-12-01 | 北京北信源软件股份有限公司 | 一种基于中间件的分库分表的方法与装置 |
-
2018
- 2018-01-10 CN CN201810022143.0A patent/CN108228848A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105045816A (zh) * | 2015-06-26 | 2015-11-11 | 上海斐讯数据通信技术有限公司 | 一种大量数据的存取方法及系统 |
US20170083566A1 (en) * | 2015-09-17 | 2017-03-23 | Microsoft Technology Licensing, Llc | Partitioning advisor for online transaction processing workloads |
CN106874424A (zh) * | 2017-01-25 | 2017-06-20 | 杭州淘淘搜科技有限公司 | 一种基于MongoDB和Redis的网页数据采集处理方法及系统 |
CN107423387A (zh) * | 2017-07-19 | 2017-12-01 | 北京北信源软件股份有限公司 | 一种基于中间件的分库分表的方法与装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109271376A (zh) * | 2018-11-30 | 2019-01-25 | 北京锐安科技有限公司 | 数据库升级方法、装置、设备及存储介质 |
CN110795419A (zh) * | 2019-10-08 | 2020-02-14 | 中国建设银行股份有限公司 | 动态分库路由的方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1318956C (zh) | 软件构件插件程序结构的系统和方法 | |
US11341139B2 (en) | Incremental and collocated redistribution for expansion of online shared nothing database | |
CN100541493C (zh) | 用于结构化文档管理的装置和方法 | |
US7886028B2 (en) | Method and system for system migration | |
CN109325078A (zh) | 基于结构数据的数据血缘确定方法及装置 | |
US20070276861A1 (en) | Table Substitution | |
US20020095408A1 (en) | Method and apparatus for deleting data in a database | |
US7974981B2 (en) | Multi-value property storage and query support | |
JP2003500741A (ja) | 単一の集計プロセスで複数のデータマートを実装するための方法および装置 | |
CN109840256A (zh) | 一种基于业务实体的查询实现方法 | |
KR20150106365A (ko) | 계층적인 룰 구조를 가지고 있는 비즈니스 룰 관리 시스템 및 그 표현 방법 | |
US11036709B2 (en) | Single-level, multi-dimension, hash-based table partitioning | |
CN105808753A (zh) | 一种区域性数字资源系统 | |
US20080294673A1 (en) | Data transfer and storage based on meta-data | |
CN105677751A (zh) | 关系型数据库的调度方法及系统 | |
CN105373376A (zh) | 用于配置软件应用的方法和装置 | |
CN108228848A (zh) | 一种可扩展的业务数据分库实现方法 | |
CN102253967B (zh) | 数据查找系统和数据查找方法 | |
CN108197187A (zh) | 查询语句的优化方法、装置、存储介质和计算机设备 | |
US7689631B2 (en) | Method for utilizing audience-specific metadata | |
US7653731B2 (en) | Management of connections to external data | |
US7912861B2 (en) | Method for testing layered data for the existence of at least one value | |
KR20180077830A (ko) | 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법, 이를 수행하기 위한 기록 매체 및 장치 | |
Maran et al. | Alternative approaches to data storing and processing | |
CN108399188A (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 |
Application publication date: 20180629 |
|
RJ01 | Rejection of invention patent application after publication |