数据处理方法和数据处理装置与流程

文档序号:20264389发布日期:2020-04-03 18:12阅读:157来源:国知局
数据处理方法和数据处理装置与流程

本发明涉及信息系统技术领域,具体而言,涉及一种数据处理方法和一种数据处理装置。



背景技术:

随着信息系统的快速发展、应用,各种系统中存储的数据量达到oltp(在线业务处理)数据库处理能力瓶颈的情况越来越频繁。这时就需要对存储系统做数据分片。数据分片是将整体数据分摊在多个存储设备上,这样每个存储设备的数据量相对就会小很多,以此满足系统的性能需求。数据分片可以分为两大模式。

(1)静态分片模式,即分片键是静态分配的,一般使用范围或哈希函数,例如编号为0096开头的员工放到一个分片,编号为0199开头的员工放到另外一个分片,静态分片模式虽然实现简单,但存在数据不均匀的情况,如果数据量持续增长,不利于二次分片、扩容的需求。

(2)动态分片模式,即分区函数将从字典中查找分区键,然后定位具体分片号。动态分片模式相比于静态模式更加灵活,但是需要一个集中存储来存放字典,每次查找数据都需要执行2次查询,并且集中存储本身还可能存在单点故障。



技术实现要素:

本发明旨在至少解决现有技术或相关技术中存在的技术问题之一。

为此,本发明第一方面在于提出了一种数据处理方法。

本发明的第二方面在于提出了一种数据处理装置。

有鉴于此,根据本发明的第一方面,提出了一种数据处理方法,包括:对数据进行数据分片处理,得到数据的第一数据表名称和第二数据表名称;对第一数据表名称和第二数据表名称进行笛卡尔积运算,得到数据的目标数据表名称;根据目标数据表名称导入数据。

本发明提供的数据处理方法,分别对数据进行静态分片和动态分片,得到数据的第一数据表名称和第二数据表名称,对第一数据表名称和第二数据表名称进行笛卡尔积运算,以将第一数据表名称和第二数据表名称进行结合,得到目标数据表名称,再根据目标数据表名称将数据导入数据库,从而结合静态分片模式与动态分片模式,实现了数据分表,即将数据分别存储在不同的位置,不仅避免了数据长时间累积的不均匀情况,而且能够快速扩容,无需数据迁移,在进行数据查询时,无需进行二次查询,最大程度的降低了数据分片后导致的查询无效分片的情况。

进一步地,若数据的数据增长量较大,还可以通过静态分片模式与动态分片模式进行分库。

另外,根据本发明提供的上述技术方案中的数据处理方法,还可以具有如下附加技术特征:

在上述技术方案中,进一步地,对数据进行数据分片处理的步骤,具体包括:获取数据的属性信息和数据增长量;根据属性信息和数据增长量,创建并命名数据的数据表。

在该技术方案中,获取数据的属性信息和数据增长量,根据属性信息进行静态分片,根据数据增长量与时间分片的关系进行动态分片,从而创建并命名数据的数据表,得到第一数据表名称和第二数据表名称,一方面,根据当前的数据信息实时更新分片配置,配置灵活,不需要修改代码中的分库分表规则,即无需重启分片服务,接入简单,避免了分片键变化导致的重新设置整体分片逻辑的情况,对原有代码的侵入性低,在新增分片需求等场景下,解决了服务中断的问题,提升生产效率,另一方面,能够通过对第一数据表名称和第二数据表名称进行笛卡尔积运算,将静态分片模式与动态分片模式结合,不仅避免了数据长时间累积的不均匀情况,而且能够快速扩容,无需数据迁移,在进行数据查询时,无需进行二次查询,最大程度的降低了数据分片后导致的查询无效分片的情况。

具体地,根据数据库历史的数据存储情况确定数据增长量。

在上述任一技术方案中,进一步地,根据属性信息,创建并命名数据的数据表的步骤,具体包括:根据数据的属性信息确定数据的第一密钥;对第一密钥进行取模运算,得到第一密钥的取模值;根据取模值,创建第一数据表并确定第一数据表名称。

在该技术方案中,根据数据的属性信息确定数据的第一密钥,即静态分片的分片键,对第一密钥进行取模运算,得到第一密钥的取模值,再根据取模值,创建第一数据表并确定第一数据表名称,从而完成数据的静态分片建表,无需进行二次查询,有效解决的动态分片时单点故障的问题。

在上述任一技术方案中,进一步地,根据数据增长量,创建并命名数据的数据表的步骤,具体包括:根据数据增长量、预设数据增长量与时间分片等级之间的对应关系,确定数据的第二密钥;根据第二密钥创建第二数据表并确定第二数据表名称。

在该技术方案中,根据数据增长量、预设数据增长量与时间分片等级之间的对应关系,确定数据的第二密钥,即动态分片的分片键,并根据第二密钥创建第二数据表并确定第二数据表名称,从而完成数据的动态分片建表,利用时间维度的分片键避免使用静态分片时数据长时间累积的不均匀情况,并且实现动态扩容,避免二次分片导致的数据迁移工作。

具体地,可根据数据处理系统的运行配置,合理设置预设数据增长量与时间分片等级之间的对应关系,从而保证动态分片后,每个表的数据量不会超出数据库处理能力,并且尽可能减少分片数量。

在上述任一技术方案中,进一步地,创建第二数据表的步骤之前,还包括:比较第二密钥和预设时间分片等级;基于第二密钥小于或等于预设时间分片等级的情况,创建第二数据表。

在该技术方案中,比较第二密钥和预设时间分片等级,若第二密钥小于或等于预设时间分片等级,则说明分片周期较小,数据库需要创建大量数据表,此时,启用动态建表模式,自动创建第二数据表,无需运维维护支持,另外,在新增分片需求等场景下解决了服务中断的问题,提升数据处理效率。

根据本发明的第二方面,提出了一种数据处理装置,包括:存储器、处理器,存储器存储有计算机程序,处理器执行计算机程序时实现:对数据进行数据分片处理,得到数据的第一数据表名称和第二数据表名称;对第一数据表名称和第二数据表名称进行笛卡尔积运算,得到数据的目标数据表名称;根据目标数据表名称导入数据。

在该技术方案中,分别对数据进行静态分片和动态分片,得到数据的第一数据表名称和第二数据表名称,对第一数据表名称和第二数据表名称进行笛卡尔积运算,以将第一数据表名称和第二数据表名称进行结合,得到目标数据表名称,再根据目标数据表名称将数据导入数据库,从而结合静态分片模式与动态分片模式,实现了数据分表,即将数据分别存储在不同的位置,不仅避免了数据长时间累积的不均匀情况,而且能够快速扩容,无需数据迁移,在进行数据查询时,无需进行二次查询,最大程度的降低了数据分片后导致的查询无效分片的情况。

进一步地,若数据的数据增长量较大,还可以通过静态分片模式与动态分片模式进行分库。

在上述任一技术方案中,进一步地,处理器执行计算机程序时具体实现对数据进行数据分片处理的步骤,具体包括:获取数据的属性信息和数据增长量;根据属性信息和数据增长量,创建并命名数据的数据表。

在该技术方案中,获取数据的属性信息和数据增长量,根据属性信息进行静态分片,根据数据增长量与时间分片的关系进行动态分片,从而创建并命名数据的数据表,得到第一数据表名称和第二数据表名称,一方面,根据当前的数据信息实时更新分片配置,配置灵活,不需要修改代码中的分库分表规则,即无需重启分片服务,接入简单,避免了分片键变化导致的重新设置整体分片逻辑的情况,对原有代码的侵入性低,在新增分片需求等场景下,解决了服务中断的问题,提升生产效率,另一方面,能够通过对第一数据表名称和第二数据表名称进行笛卡尔积运算,将静态分片模式与动态分片模式结合,不仅避免了数据长时间累积的不均匀情况,而且能够快速扩容,无需数据迁移,在进行数据查询时,无需进行二次查询,最大程度的降低了数据分片后导致的查询无效分片的情况。

具体地,根据数据库历史的数据存储情况确定数据增长量。

在上述任一技术方案中,进一步地,处理器执行计算机程序时具体实现根据属性信息,创建并命名数据的数据表的步骤,具体包括:根据数据的属性信息确定数据的第一密钥;对第一密钥进行取模运算,得到第一密钥的取模值;根据取模值,创建第一数据表并确定第一数据表名称。

在该技术方案中,根据数据的属性信息确定数据的第一密钥,即静态分片的分片键,对第一密钥进行取模运算,得到第一密钥的取模值,再根据取模值,创建第一数据表并确定第一数据表名称,从而完成数据的静态分片建表,无需进行二次查询,有效解决的动态分片时单点故障的问题。

在上述任一技术方案中,进一步地,处理器执行计算机程序时具体实现根据数据增长量,创建并命名数据的数据表的步骤,具体包括:根据数据增长量、预设数据增长量与时间分片等级之间的对应关系,确定数据的第二密钥;根据第二密钥创建第二数据表并确定第二数据表名称。

在该技术方案中,根据数据增长量、预设数据增长量与时间分片等级之间的对应关系,确定数据的第二密钥,即动态分片的分片键,并根据第二密钥创建第二数据表并确定第二数据表名称,从而完成数据的动态分片建表,利用时间维度的分片键避免使用静态分片时数据长时间累积的不均匀情况,并且实现动态扩容,避免二次分片导致的数据迁移工作。

具体地,可根据数据处理系统的运行配置,合理设置预设数据增长量与时间分片等级之间的对应关系,从而保证动态分片后,每个表的数据量不会超出数据库处理能力,并且尽可能减少分片数量。

在上述任一技术方案中,进一步地,处理器执行计算机程序时具体还实现:比较第二密钥和预设时间分片等级;基于第二密钥小于或等于预设时间分片等级的情况,创建第二数据表。

在该技术方案中,比较第二密钥和预设时间分片等级,若第二密钥小于或等于预设时间分片等级,则说明分片周期较小,数据库需要创建大量数据表,此时,启用动态建表模式,自动创建第二数据表,无需运维维护支持,另外,在新增分片需求等场景下解决了服务中断的问题,提升数据处理效率。

本发明的附加方面和优点将在下面的描述部分中变得明显,或通过本发明的实践了解到。

附图说明

本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:

图1示出了本发明一个实施例的数据处理方法流程示意图;

图2示出了本发明又一个实施例的数据处理方法流程示意图;

图3示出了本发明又一个实施例的数据处理方法流程示意图;

图4示出了本发明又一个实施例的数据处理方法流程示意图;

图5示出了本发明一个实施例的数据处理装置示意框图;

图6示出了本发明一个具体实施例的数据处理装置示意框图;

图7示出了本发明一个具体实施例的表名计算方法流程示意图。

具体实施方式

为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不限于下面公开的具体实施例的限制。

下面参照图1至图7描述根据本发明一些实施例的数据处理方法和数据处理装置500。

实施例一

如图1所示,根据本发明第一方面的实施例,提出了一种数据处理方法,该方法包括:

步骤102,对数据进行数据分片处理,得到数据的第一数据表名称和第二数据表名称;

步骤104,对第一数据表名称和第二数据表名称进行笛卡尔积运算,得到数据的目标数据表名称;

步骤106,根据目标数据表名称导入数据。

在该实施例中,分别对数据进行静态分片和动态分片,得到数据的第一数据表名称和第二数据表名称,对第一数据表名称和第二数据表名称进行笛卡尔积运算,以将第一数据表名称和第二数据表名称进行结合,得到目标数据表名称,再根据目标数据表名称将数据导入数据库,从而结合静态分片模式与动态分片模式,实现了数据分表,即将数据分别存储在不同的位置,不仅避免了数据长时间累积的不均匀情况,而且能够快速扩容,无需数据迁移,在进行数据查询时,无需进行二次查询,最大程度的降低了数据分片后导致的查询无效分片的情况。

具体地,若数据的数据增长量较大,还可以通过静态分片模式与动态分片模式进行分库。

实施例二

如图2所示,根据本发明的一个实施例,提出了一种数据处理方法,该方法包括:

步骤202,获取数据的属性信息和数据增长量;

步骤204,根据属性信息和数据增长量,创建并命名数据的数据表,得到数据的第一数据表名称和第二数据表名称;

步骤206,对第一数据表名称和第二数据表名称进行笛卡尔积运算,得到数据的目标数据表名称;

步骤208,根据目标数据表名称导入数据。

在该实施例中,获取数据的属性信息和数据增长量,根据属性信息进行静态分片,根据数据增长量与时间分片的关系进行动态分片,从而创建并命名数据的数据表,得到第一数据表名称和第二数据表名称,一方面,根据当前的数据信息实时更新分片配置,配置灵活,不需要修改代码中的分库分表规则,即无需重启分片服务,接入简单,避免了分片键变化导致的重新设置整体分片逻辑的情况,对原有代码的侵入性低,在新增分片需求等场景下,解决了服务中断的问题,提升生产效率,另一方面,能够通过对第一数据表名称和第二数据表名称进行笛卡尔积运算,将静态分片模式与动态分片模式结合,不仅避免了数据长时间累积的不均匀情况,而且能够快速扩容,无需数据迁移,在进行数据查询时,无需进行二次查询,最大程度的降低了数据分片后导致的查询无效分片的情况。

具体地,根据数据库历史的数据存储情况确定数据增长量。

实施例三

如图3所示,根据本发明的一个实施例,提出了一种数据处理方法,该方法包括:

步骤302,获取数据的属性信息和数据增长量;

步骤304,根据数据的属性信息确定数据的第一密钥;

步骤306,对第一密钥进行取模运算,得到第一密钥的取模值;

步骤308,根据取模值,创建第一数据表并确定第一数据表名称;

步骤310,根据数据增长量、预设数据增长量与时间分片等级之间的对应关系,确定数据的第二密钥;

步骤312,根据第二密钥创建第二数据表并确定第二数据表名称;

步骤314,对第一数据表名称和第二数据表名称进行笛卡尔积运算,得到数据的目标数据表名称;

步骤316,根据目标数据表名称导入数据。

在该实施例中,根据数据的属性信息确定数据的第一密钥,即静态分片的分片键,对第一密钥进行取模运算,得到第一密钥的取模值,再根据取模值,创建第一数据表并确定第一数据表名称,从而完成数据的静态分片建表,无需进行二次查询,有效解决的动态分片时单点故障的问题,根据数据增长量、预设数据增长量与时间分片等级之间的对应关系,确定数据的第二密钥,即动态分片的分片键,并根据第二密钥创建第二数据表并确定第二数据表名称,从而完成数据的动态分片建表,利用时间维度的分片键避免使用静态分片时数据长时间累积的不均匀情况,并且实现动态扩容,避免二次分片导致的数据迁移工作。

具体地,可根据数据处理系统的运行配置,合理设置预设数据增长量与时间分片等级之间的对应关系,从而保证动态分片后,每个表的数据量不会超出数据库处理能力,并且尽可能减少分片数量。

实施例四

如图4所示,根据本发明的一个实施例,提出了一种数据处理方法,该方法包括:

步骤402,获取数据的属性信息和数据增长量;

步骤404,根据数据的属性信息确定数据的第一密钥;

步骤406,对第一密钥进行取模运算,得到第一密钥的取模值;

步骤408,根据取模值,创建第一数据表并确定第一数据表名称;

步骤410,根据数据增长量、预设数据增长量与时间分片等级之间的对应关系,确定数据的第二密钥;

步骤412,第二密钥是否小于或等于预设时间分片等级,若是,进入步骤414,若否,进入步骤416;

步骤414,根据第二密钥创建第二数据表并确定第二数据表名称,进入步骤418;

步骤416,接收到建表指令,根据第二密钥创建第二数据表并确定第二数据表名称;

步骤418,对第一数据表名称和第二数据表名称进行笛卡尔积运算,得到数据的目标数据表名称;

步骤420,根据目标数据表名称导入数据。

在该实施例中,比较第二密钥和预设时间分片等级,若第二密钥小于或等于预设时间分片等级,说明分片周期较小,数据库需要创建大量数据表,此时,启用动态建表模式,自动创建第二数据表,无需运维维护支持,另外,在新增分片需求等场景下解决了服务中断的问题,提升数据处理效率,若第二密钥大于预设时间分片等级,说明分片周期较长,用户可根据需求手动创建数据表。例如,预设时间分片等级为按月建表,若当前第二密钥(时间分片键)为1天,则系统自动进行创建数据表,若当前第二密钥(时间分片键)为1年,根据用户指令随时创建数据表。

实施例五

如图5所示,根据本发明第二方面的实施例,提出了一种数据处理装置500,包括存储器502、处理器504,存储器502储存有计算机程序,处理器504执行计算机程序时实现:对数据进行数据分片处理,得到数据的第一数据表名称和第二数据表名称;对第一数据表名称和第二数据表名称进行笛卡尔积运算,得到数据的目标数据表名称;根据目标数据表名称导入数据。

在该实施例中,分别对数据进行静态分片和动态分片,得到数据的第一数据表名称和第二数据表名称,对第一数据表名称和第二数据表名称进行笛卡尔积运算,以将第一数据表名称和第二数据表名称进行结合,得到目标数据表名称,再根据目标数据表名称将数据导入数据库,从而结合静态分片模式与动态分片模式,实现了数据分表,即将数据分别存储在不同的位置,不仅避免了数据长时间累积的不均匀情况,而且能够快速扩容,无需数据迁移,在进行数据查询时,无需进行二次查询,最大程度的降低了数据分片后导致的查询无效分片的情况。

进一步地,若数据的数据增长量较大,还可以通过静态分片模式与动态分片模式进行分库。

实施例六

根据本发明的一个实施例,除上述实施例限定的特征之外,还进一步限定了:处理器执行计算机程序时具体实现对数据进行数据分片处理的步骤,具体包括:获取数据的属性信息和数据增长量;根据属性信息和数据增长量,创建并命名数据的数据表。

在该实施例中,获取数据的属性信息和数据增长量,根据属性信息进行静态分片,根据数据增长量与时间分片的关系进行动态分片,从而创建并命名数据的数据表,得到第一数据表名称和第二数据表名称,一方面,根据当前的数据信息实时更新分片配置,不需要修改代码中的分库分表规则,即无需重启分片服务,避免了分片键变化导致的重新设置整体分片逻辑的情况,在新增分片需求等场景下,解决了服务中断的问题,提升生产效率,另一方面,能够通过对第一数据表名称和第二数据表名称进行笛卡尔积运算,将静态分片模式与动态分片模式结合,不仅避免了数据长时间累积的不均匀情况,而且能够快速扩容,无需数据迁移,在进行数据查询时,无需进行二次查询,最大程度的降低了数据分片后导致的查询无效分片的情况。

实施例七

根据本发明的一个实施例,除上述实施例限定的特征之外,还进一步限定了:处理器执行计算机程序时具体实现根据属性信息和数据增长量,创建并命名数据的数据表的步骤,具体包括:根据数据的属性信息确定数据的第一密钥;对第一密钥进行取模运算,得到第一密钥的取模值;根据取模值,创建第一数据表并确定第一数据表名称;根据数据增长量、预设数据增长量与时间分片等级之间的对应关系,确定数据的第二密钥;根据第二密钥创建第二数据表并确定第二数据表名称。

在该实施例中,根据数据的属性信息确定数据的第一密钥,即静态分片的分片键,对第一密钥进行取模运算,得到第一密钥的取模值,再根据取模值,创建第一数据表并确定第一数据表名称,从而完成数据的静态分片建表,无需进行二次查询,有效解决的动态分片时单点故障的问题,根据数据增长量、预设数据增长量与时间分片等级之间的对应关系,确定数据的第二密钥,即动态分片的分片键,并根据第二密钥创建第二数据表并确定第二数据表名称,从而完成数据的动态分片建表,利用时间维度的分片键避免使用静态分片时数据长时间累积的不均匀情况,并且实现动态扩容,避免二次分片导致的数据迁移工作。

具体地,可根据数据处理系统的运行配置,合理设置预设数据增长量与时间分片等级之间的对应关系,从而保证动态分片后,每个表的数据量不会超出数据库处理能力,并且尽可能减少分片数量。

进一步地,处理器执行计算机程序时具体还实现:比较第二密钥和预设时间分片等级;基于第二密钥小于或等于预设时间分片等级的情况,创建第二数据表。

在该实施例中,若第二密钥小于或等于预设时间分片等级,则说明分片周期较小,数据库需要创建大量数据表,此时,启用动态建表模式,自动创建第二数据表,从而降低代码侵入率,且无需运维维护支持,另外,在新增分片需求等场景下解决了服务中断的问题,提升数据处理效率。

实施例八

如图6所示,根据本发明的一个具体实施例,提出了一种数据处理装置,包括:配置解析装置、自动建表装置、分片装置。

具体地,配置解析装置的algorithmexpression(算法表达式)中静态分片键由bizkey(业务密钥)指定,由modulonum(取模运算)指定取模值;动态分片键由timekey(时间密钥)指定,由level(等级运算)指定时间分片级别;autocrete(自动创建运算)指定是否启用动态建表。使得mysql(数据库管理系统)配置中心可以做到实时更新分片配置,无需重启服务。在新增分片需求等场景下解决了服务中断的问题,提升生产效率。

自动建表装置由定时任务触发执行,如图7所示,根据配置解析装置提供的配置信息创建数据表,并进入表名计算流程,将静态片段名(第一数据表名称)与动态片段名(第二数据表名称)做笛卡尔积计算,得到最终的待创建表名列表(目标数据表名称)。

分片装置用于进行sql(结构化查询语句)解析、查询优化、sql路由、sql改写、sql执行、输出结果,假设场景为日志表t_log,业务维度(业务密钥)按对象id分4个表,时间维度(时间密钥)按月分12个表,如下:

t_log_1_201901,t_log_2_201901,t_log_3_201901,t_log_4_201901,以此类推。

在进入查询场景后,可进行3种查询方式:

1.只按对象id精确查询,假设落入分片2,则最终组合后分片为:

t_log_2_201901;

t_log_2_201902;

2.只按时间串范围查询,假设落入分片201901、201902,则最终组合后分片为:

t_log_1_201901;

t_log_1_201902;

t_log_2_201901;

t_log_2_201902;

t_log_3_201901;

t_log_3_201902;

t_log_4_201901;

t_log_4_201902;

3.按对象id精确查询、时间串范围查询,假设对象id落入分片1,时间串落入201901、201902,则最终组合后分片为:

t_log_1_201901;

t_log_1_201902。

在该实施例中,利用静态与动态分片模式结合,避免使用静态分片时数据长时间累积的不均匀情况,以及避免现有动态分片模式造成的二次查询、单点故障等问题,而且能够可平滑扩容,避免二次分片导致的数据迁移工作,进一步地,分片规则配置灵活,根据规则自动建表,接入简单,对原有代码的侵入性低,无需运维维护支持,动态配置中心、自动建表服务等比较完善的解决了不同场景下涉及的各种问题,实现了业务中根据业务键或者时间查询数据的场景,提升数据存储系统性能,最大程度的降低了数据分片后导致的查询无效分片的情况。

在本说明书的描述中,术语“第一”、“第二”仅用于描述的目的,而不能理解为指示或暗示相对重要性,除非另有明确的规定和限定;术语“连接”、“安装”、“固定”等均应做广义理解,例如,“连接”可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。

在本说明书的描述中,术语“一个实施例”、“一些实施例”、“具体实施例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或实例。而且,描述的具体特征、结构、材料或特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1