CN107818115A - 一种处理数据表的方法及装置 - Google Patents

一种处理数据表的方法及装置 Download PDF

Info

Publication number
CN107818115A
CN107818115A CN201610825538.5A CN201610825538A CN107818115A CN 107818115 A CN107818115 A CN 107818115A CN 201610825538 A CN201610825538 A CN 201610825538A CN 107818115 A CN107818115 A CN 107818115A
Authority
CN
China
Prior art keywords
point
divide
data
storehouse
major key
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
Application number
CN201610825538.5A
Other languages
English (en)
Other versions
CN107818115B (zh
Inventor
卢启祯
章程
罗群
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing Xingyun Digital Technology Co Ltd
Original Assignee
Suning Commerce Group Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Suning Commerce Group Co Ltd filed Critical Suning Commerce Group Co Ltd
Priority to CN201610825538.5A priority Critical patent/CN107818115B/zh
Publication of CN107818115A publication Critical patent/CN107818115A/zh
Application granted granted Critical
Publication of CN107818115B publication Critical patent/CN107818115B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof

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

本发明实施例公开了一种处理数据表的方法及装置,涉及互联网技术领域,能够降低服务器的运行的负载。本发明包括:将待存储的数据导入数据库实例,并根据当前时间段对应的分表规则,在所述数据库实例中拆分出至少两张分表;生成所得分表的主键I D,并导入分表索引表,所述主键I D中包括:用于表示数据被存储时的时间维度的信息;当接收到查询请求时,查询主键I D并确定分表对应的时间段,并根据所确定的时间段的分表规则访问数据。本发明适用于关系型数据库的数据分表管理。

Description

一种处理数据表的方法及装置
技术领域
本发明涉及互联网技术领域,尤其涉及一种处理数据表的方法及装置。
背景技术
随着互联网技术的发展,在线支付业务的交易量逐年剧增,目前采用了大规模关系型数据库用于支撑在线支付业务发展。
在关系型数据库中,接收到新的数据后,需要按照既定的规则对更新后的数据进行重新拆分、哈希处理和数据整理等维护流程。由于关系型数据库中传统的单表的数据量已达实际应用的极限,继续增加会遇到性能瓶颈,因此,目前也出现了把现有数据按比例拆分到多张分表中的方案,从而通过提高并发处理能力和表容量来应对性能瓶颈的问题。
但是,由于表的数量增加,数据库又需要跟踪表中的数据并动态刷新,相对于传统的单表方案极大地增加了数据更新频率,数据库需要占用很多服务器的计算、存储资源频繁地刷新数据库、表,而在每一次刷新后都需要重新执行维护流程,导致维护流程的频率也同步提高了,因此极大地增加了服务器运行的负载。
发明内容
本发明的实施例提供一种处理数据表的方法及装置,能够降低服务器的运行的负载。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,本发明的实施例提供的方法,包括:将待存储的数据导入数据库实例,并根据当前时间段对应的分表规则,在所述数据库实例中拆分出至少两张分表;生成所得分表的主键ID,并导入分表索引表,所述主键ID中包括:用于表示数据被存储时的时间维度的信息;当接收到查询请求时,查询主键ID并确定分表对应的时间段,并根据所确定的时间段的分表规则访问数据。
结合第一方面,在第一方面的第一种可能的实现方式中,所述将待存储的数据导入数据库实例,包括:将待存储的数据按照预设比例拆分并导入至少两个数据库实例,其中,一个数据库实例对应一个用户单号。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述生成所得分表的主键ID并导入分表索引表,包括:根据数据被存储时的时间段得到时间字段;生成包括了所述时间字段、分库索引字段和识别字段的主键ID,所述分库索引字段包括:会员ID或订单号,所述识别字段包括分表创建时的唯一性标识。
结合第一方面的第一种可能的实现方式,在第三种可能的实现方式中,所述查询主键ID并确定分表对应的时间段,并根据所确定的时间段的分表规则访问数据,包括:根据所述主键ID查询所述分表索引表得到分表名,并根据所述分表名确定所述分表所在分库的分库序号;根据所述主键ID确定所述分表对应的时间段,并从分表配置表中查询所述分表对应的时间段的分表规则,所述分表配置表用于记录各分表的分表名和分表规则;依据查询得到的分表规则设置分库会话,执行所述分库会话,并访问所述分表所在分库的数据。
结合第一方面的第一种可能的实现方式,在第四种可能的实现方式中,所述查询主键ID并确定分表对应的时间段,并根据所确定的时间段的分表规则访问数据,包括:获取所述时间段内对应的各分表的主键ID,并查询所述分表索引表得到所述时间段内对应的各分表的分表名,并根据所述各分表的分表名确定各分表所在分库的分库序号;从分表配置表中查询所述时间段的分表规则,所述分表配置表用于记录各分表的分表名和分表规则;遍历分表名数组和分库数组,并依据查询得到的分表规则设置分库会话,执行所述分库会话,并访问所述时间段内对应的各分表所在分库中的数据。
结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,所述获取所述时间段内对应的各分表的主键ID,包括:确定分页对应的时间段,并获取所述分页对应的时间段内对应的各分表的主键ID;所述遍历分表名数组和分库数组,包括:按照所述分页遍历分表名数组和分库数组。
结合第一方面,在第一方面的第六种可能的实现方式中,还包括:将已存储的数据迁移至所述数据库实例;利用所述已存储的数据被存储时的时间段和对应的分表规则,更新所述已存储的数据的分表的主键ID,并在更新后导入分表索引表。
第二方面,本发明的实施例提供的装置,包括:
分库分表模块,用于将待存储的数据导入数据库实例,并根据当前时间段对应的分表规则,在所述数据库实例中拆分出至少两张分表;
主键管理模块,用于生成所得分表的主键ID,并导入分表索引表,所述主键ID中包括:用于表示数据被存储时的时间维度的信息;
访问管理模块,用于当接收到查询请求时,查询主键ID并确定分表对应的时间段,并根据所确定的时间段的分表规则访问数据。
结合第二方面,在第二方面的第一种可能的实现方式中,所述分库分表模块,具体用于将待存储的数据按照预设比例拆分并导入至少两个数据库实例,其中,一个数据库实例对应一个用户单号;
所述主键管理模块,用于根据数据被存储时的时间段得到时间字段;并生成包括了所述时间字段、分库索引字段和识别字段的主键ID,所述分库索引字段包括:会员ID或订单号,所述识别字段包括分表创建时的唯一性标识;
所述访问管理模块,用于根据所述主键ID查询所述分表索引表得到分表名,并根据所述分表名确定所述分表所在分库的分库序号;并根据所述主键ID确定所述分表对应的时间段,并从分表配置表中查询所述分表对应的时间段的分表规则,所述分表配置表用于记录各分表的分表名和分表规则;再依据查询得到的分表规则设置分库会话,执行所述分库会话,并访问所述分表所在分库的数据;
所述访问管理模块,还用于获取所述时间段内对应的各分表的主键ID,并查询所述分表索引表得到所述时间段内对应的各分表的分表名,并根据所述各分表的分表名确定各分表所在分库的分库序号;并从分表配置表中查询所述时间段的分表规则,所述分表配置表用于记录各分表的分表名和分表规则;再遍历分表名数组和分库数组,并依据查询得到的分表规则设置分库会话,执行所述分库会话,并访问所述时间段内对应的各分表所在分库中的数据。
结合第二方面或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述分库分表模块,还用于将已存储的数据迁移至所述数据库实例;并利用所述已存储的数据被存储时的时间段和对应的分表规则,更新所述已存储的数据的分表的主键ID,并在更新后导入分表索引表。
本发明实施例提供的处理数据表的方法及装置,当读取新存入的数据时,可以根据新存入的数据的存入时间获取新存入数据的分表规则;当读取老数据时,可以根据老数据的存入时间获取老数据的分表规则,即实现了不同的数据通过各自对应的分表规则进行读取,由于数据格式可能存在不同,因此不同的数据各自对应的分表规则可以互不相同。而不需要采用现有技术中:为了使得不同的数据统一分表规则,在每一次刷新后关系型数据库需根据最新的分表规则重新执行维护流程的方案,从而实现了对于不同的数据格式以及不同种类数据格式、分表策略的兼容。提高了关系型数据库中,数据库表的并发处理能力以及表容量,也降低数据维护的成本。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例提供的处理数据表的方法的流程示意图;
图2为本发明实施例提供的一种分库分表方式示例的示意图;
图3、图4、图5、图6为本发明实施例提供的具体实例的架构示意图;
图7为本发明实施例提供的处理数据表的装置的结构示意图。
具体实施方式
为使本领域技术人员更好地理解本发明的技术方案,下面结合附图和具体实施方式对本发明作进一步详细描述。下文中将详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的任一单元和全部组合。本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。
本发明实施例的方法流程,具体可以在关系型数据库中执行,该关系型数据库具体可组建在服务器、工作站、超级计算机等设备上,或者可组建在由多个服务器组成的服务器集群上。本实施例提供一种处理数据表的方法,如图1所示,包括:
S1、将待存储的数据导入数据库实例,并根据当前时间段对应的分表规则,在所述数据库实例中拆分出至少两张分表。
其中,待存储的数据可以理解为新存储如入关系型数据库中的数据,这些数据可以来源于与关系型数据库建立了信息传输通道的在线购物平台、在线金融交易平台、物流关系系统等用于在线业务服务的系统,也可以是具备其他业务功能的业务系统。
在本实施例中,所述将待存储的数据导入数据库实例的具体方式,包括:将待存储的数据按照预设比例拆分并导入至少两个数据库实例,其中,一个数据库实例对应一个用户单号。其中用户单号可以理解为对应了一个用户的单号,单号具体可以是一种用于表示订单编号、物流编号、或者交易编号等识别性编号。例如:参照本实施例,可以在epp-core核心库基础上,增加分库分表相关读写功能,从而得到如图2所示的一种数据库分表设计,其中各字段的定义与功能如表1所示。
表1
从而将待存储的数据按预设比例拆分到多个数据库实例,每个实例拆分为多张分表,其中,预设比例可以根据关系型数据库的负载情况设定,从而通过多库多表的方式极大地提高了并发处理能力以及表容量。分表规则基于不同的时间段对应不同的分表规则,并在数据查询时,按照不同时间段的分表规则进行读取,从而实现在不对数据进行重新整理的情况下,依然完成数据的更新、存储和读取的过程。
S2、生成所得分表的主键ID,并导入分表索引表。
其中,所述主键ID中包括:用于表示数据被存储时的时间维度的信息。
S3、当接收到查询请求时,查询主键ID并确定分表对应的时间段,并根据所确定的时间段的分表规则访问数据。
其中,访问请求可以来自与关系型数据库通信的外部设备,也可以是由关系型数据库中的用于数据维护的服务器或者其他设备发出,访问数据的方式具体包括:通过主键ID访问数据,并进行读/写指定的数据内容的操作。需要说明的是,在确认了数据的分表规则后,可以通过常用的手段依据分表规则访问数据。其中,读/写操作至少包括了查询/更新/删除等操作。
本发明实施例提供的处理数据表的方法,当读取新存入的数据时,可以根据新存入的数据的存入时间获取新存入数据的分表规则;当读取老数据时,可以根据老数据的存入时间获取老数据的分表规则,即实现了不同的数据通过各自对应的分表规则进行读取,由于数据格式可能存在不同,因此不同的数据各自对应的分表规则可以互不相同。而不需要采用现有技术中:为了使得不同的数据统一分表规则,在每一次刷新后关系型数据库需根据最新的分表规则重新执行维护流程的方案,从而实现了对于不同的数据格式以及不同种类数据格式、分表策略的兼容。提高了关系型数据库中,数据库表的并发处理能力以及表容量,也降低数据维护的成本。
在本实施例中,提供一种生成所得分表的主键ID并导入分表索引表的具体方式,以及提供一种本实施例方案中一种可能的主键ID的具体格式,其中包括:根据数据被存储时的时间段得到时间字段。并生成包括了所述时间字段、分库索引字段和识别字段的主键ID。
其中,所述分库索引字段包括:会员ID或订单号,所述识别字段包括分表创建时的唯一性标识。例如:
主键ID格式:主键ID为指定位数的数字或字符,格式为:{yymmdd}{user4}{sequence9},其中:
1、yymmdd:6位年月日,如140620,作为主键ID中表示时间维度的信息。
2、user4:会员ID的后四位,作为分库索引字段,也可以使用其他大于4位的平均分布数据,如业务订单ID。
3、sequence9:原表的sequence后9位,每个分表使用各自的sequence,这些sequence随着分表一起创建,用于保证单号唯一。
例如:如图3所示的,单笔数据(或称单份数据)进行新增操作时,DAO(Data AccessObject,数据访问对象)层调用数据访问工具(比如表2所示的单笔数据访问分表工具),传入时间字段,用来作为分表的依据,其中,时间字段用于表示当前时刻,并传入分库索引字段,如会员ID,作为分库依据。数据访问工具触发分表索引组件生成主键ID,并查询分表信息。并由分表索引组件向数据访问工具返回生成的主键ID、分库序号(比如表1中的DataBase1、DataBase2的序号“1,2”)以及分表名。之后由数据访问工具设置用于数据插入的分库会话,执行分库会话并将单笔数据插入关系型数据库,执行完毕后,由数据访问工具向DAO层返回执行结果。本实施例中所述的DAO层,可以理解为与数据库表结构直接对应的一层,并在DAO层实现对数据库的增加、删除、更改,查询的CRUD功能。
再例如:如图4所示的,批量数据进行新增操作时,DAO层调用数据访问工具(比如表2所示的批量数据访问分表工具),传入时间字段,用来作为分表的依据,其中,时间字段用于表示当前时刻,并传入分库索引字段,如会员ID,作为分库依据。数据访问工具触发分表索引组件批量生成主键ID,并查询分表信息。并由分表索引组件向数据访问工具返回生成的主键ID组(包括批量生成的多个主键ID)、分库序号以及分表名,其中,若无起始主键ID或存在更小的主键ID,则维护分表索引。之后由数据访问工具遍历多个分库并在相应的分库中设置用于数据插入的分库会话,执行各个分库会话并将批量数据分别插入关系型数据库的分库中,执行完毕后,由数据访问工具向DAO层返回执行结果。其中,批量数据可以异步执行插入各分库中的过程,并等所有批量数据插入完毕后由数据访问工具向DAO层返回执行结果。
其中,批量数据可以理解为包括了多个单笔数据(或称单份数据)的数据的集合。在批量新增数据时,由分表索引组件批量生成主键ID数组,并返回至批量数据访问工具,批量访问工具执行预编译的批量SQL(Structured Query Language,结构化查询语言),从而保证事务一致性和高性能。批量数据访问分表工具可以索引时间段为关键字,跨多张分表数据库执行CRUD操作,其中CRUD操作可以理解为访问数据库时进行的增加、删除、更改,查询等操作。通过时间段(从每张分表对应的开始时间至结束时间),并且依据相关的分表索引信息,查询出需要执行的多张分表,例如:由于分表是按照时间进行,每张分表都有对应的开始时间和结束时间,通过当前数据的时间字段,确认这条数据所在的分表。再依据分库索引字段,找到对应的分库,并且在工具中按顺序执行相关SQL,统一汇总结果信息并返回。在本实施例中,分表索引组件用于依据分表配置表和分表索引表执行相关操作,分表配置表中记录并维护了分库分表相关的分表表名和分表规则,分表索引表中记录并维护了每个分表的日期范围等信息。分表索引组件同时还用于定期检查是否存在空闲的分表,并且按照规则创建分表索引数据,对分表进行业务监控,并及时发现新的分表,以便及时维护新的分表。
在实际应用中,分表索引组件可以实现在原有的Dao层的Mybatis实现中,通过增加分表工具类,提供相关分表的增、删、改、查功能,动态判断数据所在的分表,实现对分表的数据访问和读写操作。分库索引组件和分表索引组件也可以集成在分库分表索引组件中,例如:分库分表索引组件,以及上述的单笔数据访问分表工具和批量数据访问分表工具的功能和执行方式,如表2所示:
表2
在本实施例中,查询主键ID并确定分表对应的时间段,并根据所确定的时间段的分表规则访问数据的具体方式,包括:
根据所述主键ID查询所述分表索引表得到分表名,并根据所述分表名确定所述分表所在分库的分库序号。并根据所述主键ID确定所述分表对应的时间段,并从分表配置表中查询所述分表对应的时间段的分表规则。再依据查询得到的分表规则设置分库会话,执行所述分库会话,并访问所述分表所在分库的数据。
其中,所述分表配置表用于记录各分表的分表名和分表规则。
例如:如图5所示的,单笔数据(或称单份数据)访问时,DAO层调用数据访问工具,数据访问工具通过主键ID查询并获取分表名;由分表索引组件根据分表名确定分表所在分库的分库序号,并将分库序号和分表名传回数据访问工具。之后根据主键ID确定分表对应的时间段,并从分表配置表中查询分表对应的时间段的分表规则。再依据查询得到的分表规则,由数据访问工具设置用于数据查询、更新或删除的分库会话,执行分库会话并执行数据查询、更新或删除操作,执行完毕后,由数据访问工具向DAO层返回执行结果。
可选的,在本实施例中,查询主键ID并确定分表对应的时间段,并根据所确定的时间段的分表规则访问数据的具体方式,还包括:
获取所述时间段内对应的各分表的主键ID,并查询所述分表索引表得到所述时间段内对应的各分表的分表名,并根据所述各分表的分表名确定各分表所在分库的分库序号。
从分表配置表中查询所述时间段的分表规则,所述分表配置表用于记录各分表的分表名和分表规则。
遍历分表名数组和分库数组,并依据查询得到的分表规则设置分库会话,执行所述分库会话,并访问所述时间段内对应的各分表所在分库中的数据。
例如:如图6所示的,批量修改数据时,DAO层调用数据访问工具,获取所述时间段内对应的各分表的主键ID,数据访问工具通过查询所述分表索引表得到所述时间段内对应的各分表的分表名,由分表索引组件根据所述各分表的分表名确定各分表所在分库的分库序号。并将分库序号和分表名数组(分表名数组包括了各分表的分表名)传回数据访问工具。由数据访问工具遍历分表名数组和分库数组,并依据查询得到的分表规则设置用于数据查询、更新或删除的分库会话,执行所述分库会话并执行数据查询、更新或删除等修改操作。执行完毕后,由数据访问工具向DAO层返回执行结果。其中,与分页查询类似,批量查询、更新或删除,需要依据时间段来计算需要执行SQL的多张分表。并且,同一批次进行批量查询、更新或删除操作的所有数据保持在一个事务中。例如:本实施例中,执行预编译的批量SQL的具体方式可以采用关系型数据库的事务特性,每个数据库连接可以开启一个事务,在单个数据库中,连续执行多条SQL语句,并一次性提交,结束事务,若提交失败则会全部回滚。
进一步的,考虑到代码的健壮性,以及时间业务场景,批量查询可以通过分页查询的方式实现,从而降低批量查询带来的大数据量的内存溢出风险。在本实施例中,所述获取所述时间段内对应的各分表的主键ID,具体可以实现为:确定分页对应的时间段,并获取所述分页对应的时间段内对应的各分表的主键ID。
所述遍历分表名数组和分库数组,具体可以实现为:按照所述分页遍历分表名数组和分库数组。其中,在执行分页查询时,通过时间段来计算涉及的多张分表,通过分库索引字段来计算所在的分库(或称为数据库实例)。在批量数据访问工具中,依次执行计数SQL,计算总数据量。再按照当前请求的数据,执行相关的数据查询,汇总结果集并返回。在本实施例中,在查询列表时,可以先查询列表的长度,然后按照分页大小和页数,查询指定条数的数据。
在本实施例中,还包括对已存储的数据的处理方式,其中,已存储的数据在本实施例中可以简称为老数据,所述的待存储的数据可以理解为当前准备存储的数据且会在生成的主键ID中包括了上述的数据被存储时的时间维度的信息。对已存储的数据的处理方式包括:
将已存储的数据迁移至所述数据库实例。并利用所述已存储的数据被存储时的时间段和对应的分表规则,更新所述已存储的数据的分表的主键ID,并在更新后导入分表索引表。
在本实施例中,若老数据迁移之后,可以维护老数据的相关主键ID信息到分表索引表中。其中,老数据可以理解为已在关系型数据库中存储,且并为按照本实施例中的主键ID格式生成相应的主键ID,比如上述示例中的格式{yymmdd}{user4}{sequence9},以便于在访问数据时,能够通过主键ID确认时间段并获取老数据在存储时的分表规则读取老数据。而新存入的数据,比如所述待存储的数据,可以在得到分表后,分表索引组件统一生成所得分表的主键ID,并可以通过单号来识别分表,从而实现了对新老数据格式以及分表策略进行兼容。
当读取新存入的数据时,可以根据新存入的数据的存入时间获取新存入数据的分表规则;当读取老数据时,可以根据老数据的存入时间获取老数据的分表规则,即实现了新/老数据通过各自对应的分表规则进行读取,由于数据格式可能存在不同,因此新/老数据各自对应的分表规则可以互不相同。而不需要采用现有技术中:为了使得新/老数据统一分表规则,在每一次刷新后关系型数据库需根据最新的分表规则重新执行维护流程的方案,从而实现了对于新/老数据格式以及不同种类数据格式、分表策略的兼容。提高了关系型数据库中,数据库表的并发处理能力以及表容量,也降低数据维护的成本。
本发明实施例还提供一种处理数据表的装置,如图7所示,包括:
分库分表模块,用于将待存储的数据导入数据库实例,并根据当前时间段对应的分表规则,在所述数据库实例中拆分出至少两张分表。
主键管理模块,用于生成所得分表的主键ID,并导入分表索引表,所述主键ID中包括:用于表示数据被存储时的时间维度的信息。
访问管理模块,用于当接收到查询请求时,查询主键ID并确定分表对应的时间段,并根据所确定的时间段的分表规则访问数据。
其中:所述分库分表模块,具体用于将待存储的数据按照预设比例拆分并导入至少两个数据库实例,其中,一个数据库实例对应一个用户单号。
所述主键管理模块,用于根据数据被存储时的时间段得到时间字段。并生成包括了所述时间字段、分库索引字段和识别字段的主键ID,所述分库索引字段包括:会员ID或订单号,所述识别字段包括分表创建时的唯一性标识。
所述访问管理模块,用于根据所述主键ID查询所述分表索引表得到分表名,并根据所述分表名确定所述分表所在分库的分库序号。并根据所述主键ID确定所述分表对应的时间段,并从分表配置表中查询所述分表对应的时间段的分表规则,所述分表配置表用于记录各分表的分表名和分表规则。再依据查询得到的分表规则设置分库会话,执行所述分库会话,并访问所述分表所在分库的数据。
所述访问管理模块,还用于获取所述时间段内对应的各分表的主键ID,并查询所述分表索引表得到所述时间段内对应的各分表的分表名,并根据所述各分表的分表名确定各分表所在分库的分库序号。并从分表配置表中查询所述时间段的分表规则,所述分表配置表用于记录各分表的分表名和分表规则。再遍历分表名数组和分库数组,并依据查询得到的分表规则设置分库会话,执行所述分库会话,并访问所述时间段内对应的各分表所在分库中的数据。
进一步的,所述分库分表模块,还用于将已存储的数据迁移至所述数据库实例。并利用所述已存储的数据被存储时的时间段和对应的分表规则,更新所述已存储的数据的分表的主键ID,并在更新后导入分表索引表。
本发明实施例提供的处理数据表的装置,当读取新存入的数据时,可以根据新存入的数据的存入时间获取新存入数据的分表规则。当读取老数据时,可以根据老数据的存入时间获取老数据的分表规则,即实现了不同的数据通过各自对应的分表规则进行读取,由于数据格式可能存在不同,因此不同的数据各自对应的分表规则可以互不相同。而不需要采用现有技术中:为了使得不同的数据统一分表规则,在每一次刷新后关系型数据库需根据最新的分表规则重新执行维护流程的方案,从而实现了对于不同的数据格式以及不同种类数据格式、分表策略的兼容。提高了关系型数据库中,数据库表的并发处理能力以及表容量,也降低数据维护的成本。
本说明书中的各实施例均采用递进的方式描述,各实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

Claims (10)

1.一种处理数据表的方法,其特征在于,包括:
将待存储的数据导入数据库实例,并根据当前时间段对应的分表规则,在所述数据库实例中拆分出至少两张分表;
生成所得分表的主键ID,并导入分表索引表,所述主键ID中包括:用于表示数据被存储时的时间维度的信息;
当接收到查询请求时,查询主键ID并确定分表对应的时间段,并根据所确定的时间段的分表规则访问数据。
2.根据权利要求1所述的方法,其特征在于,所述将待存储的数据导入数据库实例,包括:
将待存储的数据按照预设比例拆分并导入至少两个数据库实例,其中,一个数据库实例对应一个用户单号。
3.根据权利要求2所述的方法,其特征在于,所述生成所得分表的主键I D并导入分表索引表,包括:
根据数据被存储时的时间段得到时间字段;
生成包括了所述时间字段、分库索引字段和识别字段的主键ID,所述分库索引字段包括:会员ID或订单号,所述识别字段包括分表创建时的唯一性标识。
4.根据权利要求3所述的方法,其特征在于,所述查询主键ID并确定分表对应的时间段,并根据所确定的时间段的分表规则访问数据,包括:
根据所述主键ID查询所述分表索引表得到分表名,并根据所述分表名确定所述分表所在分库的分库序号;
根据所述主键ID确定所述分表对应的时间段,并从分表配置表中查询所述分表对应的时间段的分表规则,所述分表配置表用于记录各分表的分表名和分表规则;
依据查询得到的分表规则设置分库会话,执行所述分库会话,并访问所述分表所在分库的数据。
5.根据权利要求3所述的方法,其特征在于,所述查询主键ID并确定分表对应的时间段,并根据所确定的时间段的分表规则访问数据,包括:
获取所述时间段内对应的各分表的主键ID,并查询所述分表索引表得到所述时间段内对应的各分表的分表名,并根据所述各分表的分表名确定各分表所在分库的分库序号;
从分表配置表中查询所述时间段的分表规则,所述分表配置表用于记录各分表的分表名和分表规则;
遍历分表名数组和分库数组,并依据查询得到的分表规则设置分库会话,执行所述分库会话,并访问所述时间段内对应的各分表所在分库中的数据。
6.根据权利要求5所述的方法,其特征在于,所述获取所述时间段内对应的各分表的主键ID,包括:确定分页对应的时间段,并获取所述分页对应的时间段内对应的各分表的主键ID;
所述遍历分表名数组和分库数组,包括:按照所述分页遍历分表名数组和分库数组。
7.根据权利要求1所述的方法,其特征在于,还包括:
将已存储的数据迁移至所述数据库实例;
利用所述已存储的数据被存储时的时间段和对应的分表规则,更新所述已存储的数据的分表的主键ID,并在更新后导入分表索引表。
8.一种处理数据表的装置,其特征在于,包括:
分库分表模块,用于将待存储的数据导入数据库实例,并根据当前时间段对应的分表规则,在所述数据库实例中拆分出至少两张分表;
主键管理模块,用于生成所得分表的主键ID,并导入分表索引表,所述主键ID中包括:用于表示数据被存储时的时间维度的信息;
访问管理模块,用于当接收到查询请求时,查询主键ID并确定分表对应的时间段,并根据所确定的时间段的分表规则访问数据。
9.根据权利要求1所述的装置,其特征在于,所述分库分表模块,具体用于将待存储的数据按照预设比例拆分并导入至少两个数据库实例,其中,一个数据库实例对应一个用户单号;
所述主键管理模块,用于根据数据被存储时的时间段得到时间字段;并生成包括了所述时间字段、分库索引字段和识别字段的主键ID,所述分库索引字段包括:会员ID或订单号,所述识别字段包括分表创建时的唯一性标识;
所述访问管理模块,用于根据所述主键ID查询所述分表索引表得到分表名,并根据所述分表名确定所述分表所在分库的分库序号;并根据所述主键ID确定所述分表对应的时间段,并从分表配置表中查询所述分表对应的时间段的分表规则,所述分表配置表用于记录各分表的分表名和分表规则;再依据查询得到的分表规则设置分库会话,执行所述分库会话,并访问所述分表所在分库的数据;
所述访问管理模块,还用于获取所述时间段内对应的各分表的主键ID,并查询所述分表索引表得到所述时间段内对应的各分表的分表名,并根据所述各分表的分表名确定各分表所在分库的分库序号;并从分表配置表中查询所述时间段的分表规则,所述分表配置表用于记录各分表的分表名和分表规则;再遍历分表名数组和分库数组,并依据查询得到的分表规则设置分库会话,执行所述分库会话,并访问所述时间段内对应的各分表所在分库中的数据。
10.根据权利要求8或9所述的装置,其特征在于,所述分库分表模块,还用于将已存储的数据迁移至所述数据库实例;并利用所述已存储的数据被存储时的时间段和对应的分表规则,更新所述已存储的数据的分表的主键ID,并在更新后导入分表索引表。
CN201610825538.5A 2016-09-14 2016-09-14 一种处理数据表的方法及装置 Active CN107818115B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610825538.5A CN107818115B (zh) 2016-09-14 2016-09-14 一种处理数据表的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610825538.5A CN107818115B (zh) 2016-09-14 2016-09-14 一种处理数据表的方法及装置

Publications (2)

Publication Number Publication Date
CN107818115A true CN107818115A (zh) 2018-03-20
CN107818115B CN107818115B (zh) 2022-04-26

Family

ID=61600344

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610825538.5A Active CN107818115B (zh) 2016-09-14 2016-09-14 一种处理数据表的方法及装置

Country Status (1)

Country Link
CN (1) CN107818115B (zh)

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108829790A (zh) * 2018-06-01 2018-11-16 阿里巴巴集团控股有限公司 一种数据批处理方法、装置及系统
CN109522313A (zh) * 2018-10-15 2019-03-26 深圳云天励飞技术有限公司 搜索服务器刷索引的方法、装置、设备及可读存储介质
CN109783543A (zh) * 2019-01-14 2019-05-21 广州虎牙信息科技有限公司 数据查询方法、装置、设备和存储介质
CN110489426A (zh) * 2019-08-26 2019-11-22 杭州安恒信息技术股份有限公司 一种数据库表的自动化分区方法、装置及设备
CN110597829A (zh) * 2019-11-12 2019-12-20 深圳竹云科技有限公司 主键生成方法、装置及设备
CN110727702A (zh) * 2019-09-16 2020-01-24 平安科技(深圳)有限公司 数据查询方法、装置、终端和计算机可读存储介质
CN110795419A (zh) * 2019-10-08 2020-02-14 中国建设银行股份有限公司 动态分库路由的方法和装置
CN110865883A (zh) * 2019-09-23 2020-03-06 平安科技(深圳)有限公司 一种大批量数据导入方法、装置、计算机设备及存储介质
CN110866002A (zh) * 2018-08-27 2020-03-06 北京京东尚科信息技术有限公司 分表数据处理的方法和装置
CN110909266A (zh) * 2019-11-25 2020-03-24 北京金山云网络技术有限公司 深度分页的方法、装置及服务器
CN110928665A (zh) * 2019-12-06 2020-03-27 深圳乐信软件技术有限公司 数据处理方法、装置、存储介质及终端
CN112445822A (zh) * 2019-08-30 2021-03-05 拉扎斯网络科技(上海)有限公司 数据查询方法、装置、电子设备及计算机可读存储介质
CN113032439A (zh) * 2021-05-20 2021-06-25 广州宸祺出行科技有限公司 一种分库分表结构数据库的查询方法、装置及系统
CN113407811A (zh) * 2021-07-06 2021-09-17 广州汇思信息科技股份有限公司 一种学习平台的分表方法、装置、计算机设备和存储介质
CN113449226A (zh) * 2021-07-19 2021-09-28 杭州每刻科技有限公司 一种表格创建方法
CN113641670A (zh) * 2021-07-09 2021-11-12 北京百度网讯科技有限公司 数据存储及数据检索方法、装置、电子设备及存储介质
CN117931896A (zh) * 2024-02-29 2024-04-26 双一力(宁波)电池有限公司 一种数据库查询方法、装置及数据库查询系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103455608A (zh) * 2013-09-05 2013-12-18 广东医药价格协会 一种基于药品编码的管理及查询系统
CN103714097A (zh) * 2012-10-09 2014-04-09 阿里巴巴集团控股有限公司 一种访问数据库的方法和装置
CN104965873A (zh) * 2015-06-10 2015-10-07 努比亚技术有限公司 一种分页查询方法及装置
CN105095393A (zh) * 2015-06-30 2015-11-25 努比亚技术有限公司 一种数据存储方法及装置
CN105488050A (zh) * 2014-09-17 2016-04-13 阿里巴巴集团控股有限公司 一种数据库多索引方法、装置及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103714097A (zh) * 2012-10-09 2014-04-09 阿里巴巴集团控股有限公司 一种访问数据库的方法和装置
CN103455608A (zh) * 2013-09-05 2013-12-18 广东医药价格协会 一种基于药品编码的管理及查询系统
CN105488050A (zh) * 2014-09-17 2016-04-13 阿里巴巴集团控股有限公司 一种数据库多索引方法、装置及系统
CN104965873A (zh) * 2015-06-10 2015-10-07 努比亚技术有限公司 一种分页查询方法及装置
CN105095393A (zh) * 2015-06-30 2015-11-25 努比亚技术有限公司 一种数据存储方法及装置

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108829790A (zh) * 2018-06-01 2018-11-16 阿里巴巴集团控股有限公司 一种数据批处理方法、装置及系统
CN110866002A (zh) * 2018-08-27 2020-03-06 北京京东尚科信息技术有限公司 分表数据处理的方法和装置
CN109522313A (zh) * 2018-10-15 2019-03-26 深圳云天励飞技术有限公司 搜索服务器刷索引的方法、装置、设备及可读存储介质
CN109522313B (zh) * 2018-10-15 2020-11-24 深圳云天励飞技术有限公司 搜索服务器刷索引的方法、装置、设备及可读存储介质
CN109783543A (zh) * 2019-01-14 2019-05-21 广州虎牙信息科技有限公司 数据查询方法、装置、设备和存储介质
CN110489426A (zh) * 2019-08-26 2019-11-22 杭州安恒信息技术股份有限公司 一种数据库表的自动化分区方法、装置及设备
CN112445822A (zh) * 2019-08-30 2021-03-05 拉扎斯网络科技(上海)有限公司 数据查询方法、装置、电子设备及计算机可读存储介质
CN112445822B (zh) * 2019-08-30 2022-09-16 拉扎斯网络科技(上海)有限公司 数据查询方法、装置、电子设备及计算机可读存储介质
CN110727702B (zh) * 2019-09-16 2024-01-26 平安科技(深圳)有限公司 数据查询方法、装置、终端和计算机可读存储介质
CN110727702A (zh) * 2019-09-16 2020-01-24 平安科技(深圳)有限公司 数据查询方法、装置、终端和计算机可读存储介质
CN110865883A (zh) * 2019-09-23 2020-03-06 平安科技(深圳)有限公司 一种大批量数据导入方法、装置、计算机设备及存储介质
CN110865883B (zh) * 2019-09-23 2022-06-03 平安科技(深圳)有限公司 一种大批量数据导入方法、装置、计算机设备及存储介质
CN110795419A (zh) * 2019-10-08 2020-02-14 中国建设银行股份有限公司 动态分库路由的方法和装置
CN110597829A (zh) * 2019-11-12 2019-12-20 深圳竹云科技有限公司 主键生成方法、装置及设备
CN110909266B (zh) * 2019-11-25 2022-09-02 北京金山云网络技术有限公司 深度分页的方法、装置及服务器
CN110909266A (zh) * 2019-11-25 2020-03-24 北京金山云网络技术有限公司 深度分页的方法、装置及服务器
CN110928665A (zh) * 2019-12-06 2020-03-27 深圳乐信软件技术有限公司 数据处理方法、装置、存储介质及终端
CN110928665B (zh) * 2019-12-06 2023-06-06 深圳乐信软件技术有限公司 数据处理方法、装置、存储介质及终端
CN113032439A (zh) * 2021-05-20 2021-06-25 广州宸祺出行科技有限公司 一种分库分表结构数据库的查询方法、装置及系统
CN113407811A (zh) * 2021-07-06 2021-09-17 广州汇思信息科技股份有限公司 一种学习平台的分表方法、装置、计算机设备和存储介质
CN113641670A (zh) * 2021-07-09 2021-11-12 北京百度网讯科技有限公司 数据存储及数据检索方法、装置、电子设备及存储介质
CN113641670B (zh) * 2021-07-09 2023-08-11 北京百度网讯科技有限公司 数据存储及数据检索方法、装置、电子设备及存储介质
CN113449226A (zh) * 2021-07-19 2021-09-28 杭州每刻科技有限公司 一种表格创建方法
CN113449226B (zh) * 2021-07-19 2023-06-09 杭州每刻科技有限公司 一种表格创建方法
CN117931896A (zh) * 2024-02-29 2024-04-26 双一力(宁波)电池有限公司 一种数据库查询方法、装置及数据库查询系统

Also Published As

Publication number Publication date
CN107818115B (zh) 2022-04-26

Similar Documents

Publication Publication Date Title
CN107818115A (zh) 一种处理数据表的方法及装置
CN103049556B (zh) 一种海量医疗数据的快速统计查询方法
Sadalage et al. NoSQL distilled: a brief guide to the emerging world of polyglot persistence
CN103744936B (zh) 一种数据库中的多版本并发控制方法及数据库系统
CN103299267B (zh) 用于执行多租户存储中的交叉存储连接的方法和系统
US10846278B2 (en) Dynamic updates to a semantic database using fine-grain locking
Holzschuher et al. Performance of graph query languages: comparison of cypher, gremlin and native access in Neo4j
US8924365B2 (en) System and method for range search over distributive storage systems
CN103902698B (zh) 一种数据存储系统和存储方法
CN103177061B (zh) 分区表中的唯一值估计
CN103793493B (zh) 一种处理车载终端海量数据的方法和系统
CN107122443A (zh) 一种基于Spark SQL的分布式全文检索系统及方法
CN105701200B (zh) 一种内存云计算平台上的数据仓库安全olap方法
CN102918494A (zh) 基于数据库模型不可知论、纲要不可知论且工作负载不可知论的数据存储和存取模型的数据存储和/或检索
Celko Joe Celko’s complete guide to NoSQL: What every SQL professional needs to know about non-relational databases
CN104281717B (zh) 一种建立海量id映射关系的方法
Fotache et al. NoSQL and SQL Databases for Mobile Applications. Case Study: MongoDB versus PostgreSQL.
US20070288425A1 (en) Complex data assembly identifier thesaurus
CN103886109A (zh) 一种实现数据库行锁的方法及装置
CN104021210B (zh) 以GeoJSON格式半结构化方式存储地理数据的MongoDB集群的地理数据读写方法
US20220253419A1 (en) Multi-record index structure for key-value stores
CN109669975A (zh) 一种工业大数据处理系统及方法
CN101963993B (zh) 一种数据库单表记录快速查找的方法
CN109388635A (zh) 一种多值数据基于二进制和字典表的数据存储法
CN110134511A (zh) 一种OpenTSDB共享存储优化方法

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
CB02 Change of applicant information

Address after: 210000, 1-5 story, Jinshan building, 8 Shanxi Road, Nanjing, Jiangsu.

Applicant after: SUNING.COM Co.,Ltd.

Address before: 210042 Suning Headquarters, No. 1 Suning Avenue, Xuanwu District, Nanjing City, Jiangsu Province

Applicant before: SUNING COMMERCE GROUP Co.,Ltd.

CB02 Change of applicant information
TA01 Transfer of patent application right

Effective date of registration: 20210803

Address after: Room 834, Yingying building, 99 Tuanjie Road, yanchuangyuan, Jiangbei new district, Nanjing, Jiangsu 210000

Applicant after: Nanjing Xingyun Digital Technology Co.,Ltd.

Address before: 210000, 1-5 story, Jinshan building, 8 Shanxi Road, Nanjing, Jiangsu.

Applicant before: SUNING.COM Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant