CN111881323B - 基于排序字段与时间路由的表分离方法 - Google Patents
基于排序字段与时间路由的表分离方法 Download PDFInfo
- Publication number
- CN111881323B CN111881323B CN202010567383.6A CN202010567383A CN111881323B CN 111881323 B CN111881323 B CN 111881323B CN 202010567383 A CN202010567383 A CN 202010567383A CN 111881323 B CN111881323 B CN 111881323B
- Authority
- CN
- China
- Prior art keywords
- data
- database
- list
- xml file
- scene
- 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.)
- Active
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/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/81—Indexing, e.g. XML tags; Data structures therefor; Storage structures
-
- 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
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/02—Banking, e.g. interest calculation or account maintenance
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Finance (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及基于排序字段与时间路由的表分离方法,包括步骤:A.根据数据库中不同类型的表分离场景对需要的数据库参数进行的配置,并设置操作数据库的配置文件;B.根据配置的表名读取该表的列信息;C.如果是热表分离场景则查询出表中配置的保存天数之前的数据;如果是冷表分离场景则查询出表的数据;D.将查询出的数据保存在相应的参数中;E.按照配置的日期和时间划分粒度,将所述参数中的数据保存到指定对象中;F.将所述指定对象中的数据逐条写入以分离表中,将写入成功的数据从所述配置的数据库表名对应的数据库表中删除。本发明能够对分表代码进行复用和统一管理,大幅度减少了重复劳动,数据表分离不需要新的开发、测试和上线。
Description
技术领域
本发明涉及对数据库中的数据处理方法,具体讲是基于排序字段与时间路由的表分离方法。
背景技术
在银行***的数据库中,通常有热表和冷表两种类型的数据库表。热表指的是有数据不断写入的表,冷表指的是具有很多行数据,而且没有新数据再写入的表,例如一张有两三亿行数据的mysql的表。当热表或冷表中的数据过大时,要查询表中的数据是很慢的,因此需要将热表或冷表按时间拆分成若干个小表,这样查询起来就会更快。
目前在银行的各个***中,都是基于自身的业务需要,对各自需要分离的表进行开发、测试和上线,而没有一个通用的设计方案和通用库,这就造成大量的重复劳动。同时,目前这种方式,还具有的缺点包括:
1、由于不同***之间分表的代码不通用,造成了大量冗余代码和重复劳动,也浪费l开发、测试、维护的时间,而且不可统一维护。例如莫天技术人员发现A表过大,需要分离,然后写了一段分表代码分离A表,测试上线。过了一段时间,又发现B表需要分离,又需要开发新的分表代码,再测试上线。
2、不可配置化,缺乏灵活性。例如之前的A表,每天数据量进入比较少,分离的时候按半年为粒度分离表数据,后来业务增长,A表需要按季度分离表。又或者使用A表的业务已经停止了,没有数据,需要关闭分离A表数据的任务,可能需要改代码重新上线,或者修改配置,然后重启程序等。都需要开发新的代码来实现这些功能,费事费力,造成各种资源浪费。
发明内容
本发明提供了一种基于排序字段与时间路由的表分离方法,以能够对分表代码进行复用和统一管理,减少重复劳动。
本发明基于排序字段与时间路由的表分离方法,包括步骤:
A.根据数据库中的热表分离场景和冷表分离场景,对需要的数据库参数进行的配置,以及设置用于操作数据库的xml文件和具有该xml文件中数据库操作语言所需要的参数来源的TableInfo对象中的各属性;
B.通过所述的xml文件,根据配置的数据库表名读取该表的列信息,包括每个列名和每个列名对应的列值;
C.如果是热表分离场景,则通过所述的xml文件,查询出所述数据库表名对应表中配置的保存天数之前的数据;如果是冷表分离场景,则通过所述的xml文件,查询出所述数据库表名对应表中的数据;
D.将查询出的数据保存在TableInfo对象中的List<Map<String,Object>>结构的mapList参数中,其中的Map<String,Object>结构表示查询出的数据中的一行数据,其中键为查询出的数据的列名,值为所述列名对应的值;
E.按照配置的日期和时间划分粒度,将mapList参数中的数据保存到Map<String,TableInfo>结构的insterMap对象中,其中键为(所述的数据库表名+配置的日期+时间划分粒度标识),在值为TableInfo对象,将mapList参数中与所述日期和时间划分粒度对应的数据保存在该TableInfo对象的mapList参数里;
F.通过所述的xml文件,将insterMap对象的TableInfo对象类型的值中的mapList参数里的数据逐条写入以所述insterMap对象中的键为表名的分离表中,最后通过所述的xml文件,将写入成功的数据从所述配置的数据库表名对应的数据库表中删除。
本发明是通过配置的方式来对数据库进行操作和分表,配置对象具有通用性,具有模板的作用。不同的银行***只需要在配置对象中设置相应的值就可以,由此统一了分表的方式和代码,也达到代码复用、提高灵活性的目的,并且无需修改代码和重新上线等步骤。
进一步的,步骤F中,如果所述分离表不存在,则先通过所述的xml文件,以所述insterMap对象中的键为表名在数据库中创建新的分离表后,在进行所述的数据写入。以保证在写入数据时不会因为没有对应的分离表而造成数据写入异常。
优选的,在所有通过所述的xml文件进行数据库查询的步骤均间隔查询3次,以防止网络波动造成的数据查询异常。
优选的,通过设置定时任务,自动执行步骤B至步骤F,进一步简化了人工操作。
在此基础上,在通过所述xml文件对数据库的操作中出现数据异常的情况时,提示出相应的异常信息。
本发明基于排序字段与时间路由的表分离方法,能够对分表代码进行复用和统一管理,大幅度减少了重复劳动,节约了人力成本,而且方便接入,数据表分离不需要新的开发、测试和上线,只需要配置参数开启定时任务即可。
以下结合实施例的具体实施方式,对本发明的上述内容再作进一步的详细说明。但不应将此理解为本发明上述主题的范围仅限于以下的实例。在不脱离本发明上述技术思想情况下,根据本领域普通技术知识和惯用手段做出的各种替换或变更,均应包括在本发明的范围内。
附图说明
图1为本发明基于排序字段与时间路由的表分离方法的流程图。
具体实施方式
如图1所示本发明基于排序字段与时间路由的表分离方法,包括步骤:
A.根据数据库中的热表分离场景、冷表分离场景和数据清理场景,对需要的数据库参数进行的配置,以及设置用于操作数据库的xml文件和具有该xml文件中数据库操作语言所需要的参数来源的TableInfo对象中的各属性。根据需要的场景设置执行本方法的定时任务。所述的数据清理场景指的是在数据库中的数据不需要存很久,例如两个月以前的数据就直接删除掉,以保证数据库表的间接性,提高查询效率,较少无用的冗余数据。上述三种场景的配置参数和xml文件分别包括有:
热表分离场景的配置参数:
冷表分离场景的配置参数:
冷表分离和热表分离的不同之处是冷表的数据量已经很大了,不能通过时间过滤,只能通过id主键过滤,因此没有keepDays参数。
数据清理场景的配置参数:
TableInfo对象参数定义:
该对象的属性就是xml文件(TableSplit.xml)中sql语句所需要的参数来源。xml文件中sql语句里的${}或者#{}里面的参数就是来自该对象:
xml文件:TableSplit.xml配置:
上述三个场景中的sqlSessionTemplate参数通过mybatis(apache的一个开源项目)和TableSplit.xml结合后,就能使用xml文件中的配置的sql语句操作数据库,引入各自的项目时需要改成项目的包名。不同数据库要配置不同的sqlSessionTemplate参数,每个sqlSessionTemplate参数的配置都需要引入TableSplit.xml。以下以一个实际应用的TableSplit.xml为例进行展示:
B.通过所述的xml文件,根据配置的数据库表名读取该表的列信息,包括每个列名和每个列名对应的列值。
C.如果是热表分离场景,则通过所述的xml文件,查询出所述数据库表名对应表中配置的保存天数之前的数据;如果是冷表分离场景,则通过所述的xml文件,查询出所述数据库表名对应表中的数据。
D.将查询出的数据保存在TableInfo对象中的List<Map<String,Object>>结构的mapList参数中,其中的Map<String,Object>结构表示查询出的数据中的一行数据,其中键为查询出的数据的列名,值为所述列名对应的值。
E.按照配置的日期和时间划分粒度,将mapList参数中的数据保存到Map<String,TableInfo>结构的insterMap对象中,其中键为(所述的数据库表名+配置的日期+时间划分粒度标识),在值为TableInfo对象,将mapList参数中与所述日期和时间划分粒度对应的数据保存在该TableInfo对象的mapList参数里。
F.通过所述的xml文件,将insterMap对象的TableInfo对象类型的值中的mapList参数里的数据逐条写入以所述insterMap对象中的键为表名的分离表中。如果所述分离表不存在,则先通过所述的xml文件,以所述insterMap对象中的键为表名在数据库中创建新的分离表后,在进行所述的数据写入。最后通过所述的xml文件,将写入成功的数据从所述配置的数据库表名对应的数据库表中删除。
在上述所有通过所述的xml文件进行数据库查询的步骤均间隔查询3次,每次间隔10秒,以防止网络波动造成的数据查询异常。并且,通过设置所述的定时任务,自动执行步骤B至步骤F,进一步简化了人工操作。
上述步骤中如果有任何异常将进行提示。
本发明是通过配置的方式来对数据库进行操作和分表,配置对象具有通用性,具有模板的作用。不同的银行***只需要在配置对象中设置相应的值就可以,由此统一了分表的方式和代码,也达到代码复用、提高灵活性的目的,并且无需修改代码和重新上线等步骤。
实施例1:
热表分离场景:在设备指纹(Java语言开发的一个web应用***)中有一张js_access_log数据库表,每天进入几十万的数据,一个月数据就有上千万。数据量大之后会影响表的读写性能,因此需要按季度将js_access_log表中的数据超过60天的数据分离到冷表之中,每晚凌晨一点触发一次。通过上述本发明的表分离方法对js_access_log数据库表分离后,形成的冷表格式为:js_access_log_his_2020_1_3(2020是年份,对应的是dateFieldName参数,1_3表示jss_access_log表中超过60天1到3月的数据都存在js_access_log_his_2020_1_3这张表中)、js_access_log_his_2020_4_5等表名的冷表中。
实施例2:
冷表分离场景:同样是对于设备指纹中的js_access_log数据库表,以前有个写死的定时任务将js_access_log数据库表中超过60天的数据写入js_access_log_his冷表中,两年之后js_access_log_his这张冷表的数据超过了上亿行,达到300多个G,查询数据及其缓慢,基本无法使用,这时就需要将该冷表拆分为多个小冷表,防止单表过大,没法使用和维护。配置定时任务之后,通过上述本发明的表分离方法,这张大的冷表就可以拆分成若干小的冷表,可供查询使用。
实施例3:
数据清理场景:数据库中有一个临时数据表oper_ilog_con,每天进入几十万数据,数据库性能也不好,所以为了达到所需性能,在oper_ilog_con表中只需要保留七天的数据,配置定时任务之后,进行步骤:
S1.从tableName参数对应的数据库表(即oper_ilog_con表)中根据数据清理场景中配置的keepDays参数(即七天),查询出对应数据的id列表,并通过xml文件中的sql语句将该id列表保存到TableInfo对象的List<Object>idList参数中。
S2.通过xml文件中的sql语句,按照idList参数中保存的id,从oper_ilog_con表中删除掉对应的数据。
上述步骤中如果有任何异常将进行提示。
通过上述步骤,oper_ilog_con表中超过七天的数据就被清理掉了。
以上三种场景基本上涵盖了对数据库表数据分离的所有场景,其他满足这些场景的数据库表也只需要配置相应的参数和设置定时任务就可以实现表分离。
Claims (5)
1.基于排序字段与时间路由的表分离方法,其特征为,包括步骤:
A.根据数据库中的热表分离场景和冷表分离场景,对需要的数据库参数进行的配置,以及设置用于操作数据库的xml文件和具有该xml文件中数据库操作语言所需要的参数来源的TableInfo对象中的各属性,所述数据库参数中包括排序字段和排序字段指定字段的排序类型;
B.通过所述的xml文件,根据配置的数据库表名读取该表的列信息,包括每个列名和每个列名对应的列值;
C.如果是热表分离场景,则通过所述的xml文件,查询出所述数据库表名对应表中配置的保存天数之前的数据;如果是冷表分离场景,则通过所述的xml文件,查询出所述数据库表名对应表中的数据;
D.将查询出的数据保存在TableInfo对象中的List<Map<String,Object>>结构的mapList参数中,其中的Map<String,Object>结构表示查询出的数据中的一行数据,其中键为查询出的数据的列名,值为所述列名对应的值;
E.按照配置的日期和时间划分粒度,将mapList参数中的数据保存到Map<String,TableInfo>结构的insterMap对象中,其中键为(所述的数据库表名+配置的日期+时间划分粒度标识),值为TableInfo对象,将mapList参数中与所述日期和时间划分粒度对应的数据保存在该TableInfo对象的mapList参数里;
F.通过所述的xml文件,将insterMap对象的TableInfo对象类型的值中的mapList参数里的数据逐条写入以所述insterMap对象中的键为表名的分离表中,最后通过所述的xml文件,将写入成功的数据从所述配置的数据库表名对应的数据库表中删除。
2.如权利要求1所述的基于排序字段与时间路由的表分离方法,其特征为:步骤F中,如果所述分离表不存在,则先通过所述的xml文件,以所述insterMap对象中的键为表名在数据库中创建新的分离表后,再进行所述的数据写入。
3.如权利要求1所述的基于排序字段与时间路由的表分离方法,其特征为:在所有通过所述的xml文件进行数据库查询的步骤均间隔查询3次,以防止网络波动造成的数据查询异常。
4.如权利要求1所述的基于排序字段与时间路由的表分离方法,其特征为:通过设置定时任务,自动执行步骤B至步骤F。
5.如权利要求1至4之一所述的基于排序字段与时间路由的表分离方法,其特征为:在通过所述xml文件对数据库的操作中出现数据异常的情况时,提示出相应的异常信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010567383.6A CN111881323B (zh) | 2020-06-19 | 2020-06-19 | 基于排序字段与时间路由的表分离方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010567383.6A CN111881323B (zh) | 2020-06-19 | 2020-06-19 | 基于排序字段与时间路由的表分离方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111881323A CN111881323A (zh) | 2020-11-03 |
CN111881323B true CN111881323B (zh) | 2022-05-20 |
Family
ID=73157846
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010567383.6A Active CN111881323B (zh) | 2020-06-19 | 2020-06-19 | 基于排序字段与时间路由的表分离方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111881323B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113448966B (zh) * | 2021-07-17 | 2022-06-21 | 绿漫科技有限公司 | 一种订单类数据多维度分表*** |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104714972A (zh) * | 2013-12-17 | 2015-06-17 | ***股份有限公司 | 数据库分表建立及查询方法 |
CN104794123A (zh) * | 2014-01-20 | 2015-07-22 | 阿里巴巴集团控股有限公司 | 一种为半结构化数据构建NoSQL数据库索引的方法及装置 |
CN108153849A (zh) * | 2017-12-20 | 2018-06-12 | 杭州登虹科技有限公司 | 一种数据库表切分方法、装置、***和介质 |
CN110659393A (zh) * | 2019-09-12 | 2020-01-07 | 河南九商科技有限公司 | 一种xml代码生成方法和*** |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140108421A1 (en) * | 2012-10-04 | 2014-04-17 | Codefutures Corporation | Partitioning database data in a sharded database |
US10747814B2 (en) * | 2017-09-29 | 2020-08-18 | Oracle International Corporation | Handling semi-structured and unstructured data in a sharded database environment |
US10915475B2 (en) * | 2017-10-12 | 2021-02-09 | Western Digital Technologies, Inc. | Methods and apparatus for variable size logical page management based on hot and cold data |
-
2020
- 2020-06-19 CN CN202010567383.6A patent/CN111881323B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104714972A (zh) * | 2013-12-17 | 2015-06-17 | ***股份有限公司 | 数据库分表建立及查询方法 |
CN104794123A (zh) * | 2014-01-20 | 2015-07-22 | 阿里巴巴集团控股有限公司 | 一种为半结构化数据构建NoSQL数据库索引的方法及装置 |
CN108153849A (zh) * | 2017-12-20 | 2018-06-12 | 杭州登虹科技有限公司 | 一种数据库表切分方法、装置、***和介质 |
CN110659393A (zh) * | 2019-09-12 | 2020-01-07 | 河南九商科技有限公司 | 一种xml代码生成方法和*** |
Non-Patent Citations (2)
Title |
---|
基于冷热数据的MongoDB自动分片机制;冯超政 等;《计算机工程》;20170331;第43卷(第3期);7-10,17 * |
支持分库分表和读写分离的ORM框架的设计与实现;严成武;《中国优秀硕士学位论文全文数据库 信息科技辑》;20170215(第(2017)02期);I138-2507 * |
Also Published As
Publication number | Publication date |
---|---|
CN111881323A (zh) | 2020-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107958057B (zh) | 一种用于异构数据库中数据迁移的代码生成方法及装置 | |
CN101477486B (zh) | 一种基于扇区重组的文件备份恢复方法 | |
CN109871373B (zh) | 一种数据存储方法和装置、计算机可读存储介质 | |
CA3176450A1 (en) | Method and apparatus for implementing incremental data consistency | |
CN105787058B (zh) | 一种用户标签***及基于用户标签***的数据推送*** | |
CN101452487B (zh) | 一种数据加载的方法、***及数据加载装置 | |
CN101421725A (zh) | 用于关联企业实体的方法与*** | |
CN101490675A (zh) | 用于重用数据访问和呈现元素的方法和装置 | |
US20090055418A1 (en) | Automatic cascading copy operations in a database with referential integrity | |
CN109885642B (zh) | 面向全文检索的分级存储方法及装置 | |
US7020656B1 (en) | Partition exchange loading technique for fast addition of data to a data warehousing system | |
CN110929120B (zh) | 管理技术元数据的方法和装置 | |
CN114416703A (zh) | 数据完整性自动监控方法、装置、设备及介质 | |
CN115858513A (zh) | 数据治理方法、装置、计算机设备和存储介质 | |
CN110879799B (zh) | 标注技术元数据的方法和装置 | |
CN111881323B (zh) | 基于排序字段与时间路由的表分离方法 | |
US20210216516A1 (en) | Management of a secondary vertex index for a graph | |
CN113537943A (zh) | 一种通用工作流引擎及其构建方法 | |
KR20100092981A (ko) | 업무 흐름 처리 방법 및 장치 | |
CN117609181A (zh) | 一种用于TChouse数据库迁移方法和*** | |
CN107291938A (zh) | 订单查询***及方法 | |
CN113590651B (zh) | 一种基于hql的跨集群数据处理***及方法 | |
CN113010616B (zh) | 数据处理方法和数据处理*** | |
CN113032385B (zh) | 一种易扩展可配置化的数据备份***及方法 | |
US7043491B1 (en) | Partition exchange technique for operating a data warehousing system |
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 |