CN114297185A - 数据库数据打散的方法、装置、电子设备及存储介质 - Google Patents
数据库数据打散的方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114297185A CN114297185A CN202111646222.7A CN202111646222A CN114297185A CN 114297185 A CN114297185 A CN 114297185A CN 202111646222 A CN202111646222 A CN 202111646222A CN 114297185 A CN114297185 A CN 114297185A
- Authority
- CN
- China
- Prior art keywords
- data
- scattering
- data table
- strategy
- preset
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种数据库数据打散的方法、装置、电子设备及存储介质。该方法包括:确定数据库中数据表的业务逻辑;根据数据表的业务逻辑,在预设打散策略中确定数据表的目标打散策略;根据目标打散策略对数据表中的数据进行存储分区,并将数据表的数据按照存储分区进行打散。本申请的方法,实现了对数据库的数据进行分布式存储,相比于现有技术中的采用单点部署,降低了数据存储的成本。
Description
技术领域
本申请涉及通信技术,尤其涉及一种数据库数据打散的方法、装置、电子设备及存储介质。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Finteh)转变,数据库技术也不例外,但由于金融行业的安全性、实时性要求,也对技术提出的更高的要求。
贷款核心系统每天需要对亿级数据流水进行加工,功能比较复杂,时效要求严格,非常多的功能依赖核心系统的数据。现有技术中的贷款核心系统,通常使用Oracle数据库,Oracle数据库采用单点部署,性能较高,但单个数据中心节点(Data Center Node;DCN)的数据量已经达到瓶颈,无法继续对DCN的数据库进行扩容。
然而,现有技术中的贷款核心系统使用Oracle数据库服务器的成本昂贵,并且针对更高的数据量存储需求,只能通过成本更加高的服务器实现,成本更高。
发明内容
本申请提供一种数据库数据打散的方法、装置、电子设备及存储介质,用以解决现有技术中数据量存储较大时,数据库服务器成本较高的技术问题。
第一方面,本申请提供一种数据库数据打散的方法,包括:
确定数据库中数据表的业务逻辑;根据数据表的业务逻辑,在预设打散策略中确定数据表的目标打散策略;根据目标打散策略对数据表中的数据进行存储分区,并将数据表的数据按照存储分区进行打散。
本申请实施例中,通过根据数据库中数据表的业务逻辑,在预设打散策略中选择合适的打散策略作为目标打散策略,然后根据目标打散策略对数据表中的数据进行存储分区并打散,实现了对数据库的数据进行分布式存储,相比于现有技术中的采用单点部署,降低了数据存储的成本。
在一种可能的实施方式中,本申请实施例提供的数据库数据打散的方法,在将数据表的数据按照存储分区进行打散之后,还包括:
分析数据表的数据在每个分区内的分布情况;若存在任意两个区域内存储的数据量之间的差值,超过预设数量或预设比例,则利用数据表的数据和目标打散策略的确定方式,更新目标打散策略。
本申请实施例中,通过在对数据表的数据进行打散之后,对存储分区内的数据分布情况进行分析,在分布情况未达到均匀预期时,利用数据表的数据,更新目标打散策略,保证了目标打散策略的可靠性。
在一种可能的实施方式中,本申请实施例提供的数据库数据打散的方法,预设打散策略包括基于存量数据分布的打散策略、基于上游数据分布的打散策略和基于昨日数据分布的打散策略;根据数据表的业务逻辑,在预设打散策略中确定数据表的目标打散策略,包括:
若数据表的数据分布情况与存量数据的数据分布情况之间的相似度达到第一预设相似度,则在预设打散策略中确定基于存量数据分布的打散策略作为目标打散策略。
若数据表存在上游数据,且上游数据与数据表的数据量之间成比例关系,则在预设打散策略中确定基于上游数据分布的打散策略作为目标打散策略。
若数据表存在昨日数据,且昨日数据与数据表中的数据之间的相似度达到第二预设相似度,则在预设打散策略中确定基于昨日数据分布的打散策略作为目标打散策略。
本申请实施例中,设置了多个预设打散策略,并通过数据表的业务逻辑,在多个预设打散策略中选择合适的打散策略对数据表的数据进行打散,提高了数据打散的可靠性。
在一种可能的实施方式中,本申请实施例提供的数据库数据打散的方法,基于存量数据分布的打散策略,包括:
对存量数据按照索引进行去重处理,得到索引的去重索引数量;
确定存量数据的行数与去重索引数量的比值,为索引的因子倍数;利用去重索引数量与因子倍数生成新数组;对新数组按照索引进行排序,并利用新数组的行数以及预设区域数量,确定每个区域可存放的索引数量和索引范围。
在一种可能的实施方式中,本申请实施例提供的数据库数据打散的方法,基于上游数据分布的打散策略,包括:
根据上游数据中的索引数据量和索引的区域数,确定每个区域可存放的索引数据量;根据数据表的行数以及每个区域可存放的索引数据量,确定数据表的区域数量;对上游数据按照索引进行去重处理,生成索引的去重索引数量;按照去重索引数量和区域数量,确定每个区域存储的索引数量和索引范围。
在一种可能的实施方式中,本申请实施例提供的数据库数据打散的方法,基于昨日数据分布的打散策略,包括:
对昨日数据按照索引进行去重处理,得到索引的去重索引数量;根据去重索引数量和预设区域数量,确定每个区域可存放的索引数量和索引范围。
在一种可能的实施方式中,本申请实施例提供的数据库数据打散的方法,在根据数据表的业务逻辑,在预设打散策略中选择数据表的目标打散策略之前,还包括:
确定数据表的主键类型;若主键类型为数字类型,则按照数字自增方式对数据表划分为多个不同的主键区间段。
下面介绍本申请实施例提供的数据库数据打散的装置、电子设备、计算机可读存储介质以及计算机程序产品,其内容和效果可参考本申请实施例提供的数据库数据打散的方法,不再赘述。
第二方面,本申请提供一种数据库数据打散的装置,包括:
确定模块,用于确定数据库中数据表的业务逻辑。
确定模块,还用于根据数据表的业务逻辑,在预设打散策略中确定数据表的目标打散策略。
处理模块,用于根据目标打散策略对数据表中的数据进行存储分区,并将数据表的数据按照存储分区进行打散。
在一种可能的实施方式中,本申请实施例提供的数据库数据打散的装置,还包括更新模块,
更新模块用于:分析数据表的数据在每个分区内的分布情况;若存在任意两个区域内存储的数据量之间的差值,超过预设数量或预设比例,则利用数据表的数据和目标打散策略的确定方式,更新目标打散策略。
在一种可能的实施方式中,本申请实施例提供的数据库数据打散的装置,预设打散策略包括基于存量数据分布的打散策略、基于上游数据分布的打散策略和基于昨日数据分布的打散策略。
确定模块,具体用于:
若数据表的数据分布情况与存量数据的数据分布情况之间的相似度达到第一预设相似度,则在预设打散策略中确定基于存量数据分布的打散策略作为目标打散策略。
若数据表存在上游数据,且上游数据与数据表的数据量之间成比例关系,则在预设打散策略中确定基于上游数据分布的打散策略作为目标打散策略。
若数据表存在昨日数据,且昨日数据与数据表中的数据之间的相似度达到第二预设相似度,则在预设打散策略中确定基于昨日数据分布的打散策略作为目标打散策略。
在一种可能的实施方式中,本申请实施例提供的数据库数据打散的装置,基于存量数据分布的打散策略,包括:
对存量数据按照索引进行去重处理,得到索引的去重索引数量;
确定存量数据的行数与去重索引数量的比值,为索引的因子倍数;利用去重索引数量与因子倍数生成新数组;对新数组按照索引进行排序,并利用新数组的行数以及预设区域数量,确定每个区域可存放的索引数量和索引范围。
在一种可能的实施方式中,本申请实施例提供的数据库数据打散的装置,基于上游数据分布的打散策略,包括:
根据上游数据中的索引数据量和索引的区域数,确定每个区域可存放的索引数据量;根据数据表的行数以及每个区域可存放的索引数据量,确定数据表的区域数量;对上游数据按照索引进行去重处理,生成索引的去重索引数量;按照去重索引数量和区域数量,确定每个区域存储的索引数量和索引范围。
在一种可能的实施方式中,本申请实施例提供的数据库数据打散的装置,基于昨日数据分布的打散策略,包括:
对昨日数据按照索引进行去重处理,得到索引的去重索引数量;根据去重索引数量和预设区域数量,确定每个区域可存放的索引数量和索引范围。
在一种可能的实施方式中,本申请实施例提供的数据库数据打散的装置,确定模块,还用于:
确定数据表的主键类型;若主键类型为数字类型,则按照数字自增方式对数据表划分为多个不同的主键区间段。
第三方面,本申请实施例提供一种电子设备,包括:
处理器,以及与处理器通信连接的存储器;
存储器存储计算机执行指令;
处理器执行存储器存储的计算机执行指令,以实现第一方面或第一方面可实现方式提供数据库数据打散的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,计算机执行指令被处理器执行时用于实现如第一方面或第一方面可实现方式提供的数据库数据打散的方法。
第五方面,本申请实施例提供一种计算机程序产品,包括计算机执行指令,该计算机执行指令被处理器执行时用于实现如第一方面或第一方面可实现方式提供的数据库数据打散的方法。
本申请提供的数据库数据打散的方法、装置、电子设备及存储介质,通过首先确定数据库中数据表的业务逻辑;然后根据数据表的业务逻辑,在预设打散策略中确定数据表的目标打散策略;最后根据目标打散策略对数据表中的数据进行存储分区,并将数据表的数据按照存储分区进行打散。由于通过根据数据库中数据表的业务逻辑,在预设打散策略中选择合适的打散策略作为目标打散策略,然后根据目标打散策略对数据表中的数据进行存储分区并打散,实现了对数据库的数据进行分布式存储,相比于现有技术中的采用单点部署,降低了数据存储的成本。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1是本申请实施例提供的一示例性应用场景架构图;
图2是本申请一实施例提供的数据库数据打散的方法的流程示意图;
图3是本申请另一实施例提供的数据库数据打散的方法的流程示意图;
图4是本申请一实施例提供的基于存量数据分布的打散策略的流程示意图;
图5是本申请一实施例提供的基于上游数据分布的打散策略的流程示意图;
图6是本申请一实施例提供的基于昨日数据分布的打散策略的流程示意图;
图7是本申请一实施例提供的数据库数据打散的装置的结构示意图;
图8是本申请另一实施例提供的数据库数据打散的装置的结构示意图;
图9是本申请实施例提供的电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Finteh)转变,数据库技术也不例外,但由于金融行业的安全性、实时性要求,也对技术提出的更高的要求。贷款核心系统每天需要对亿级数据流水进行加工,功能比较复杂,时效要求严格。现有技术中,亿级贷款核心系统通常使用Oracle数据库,Oracle数据库采用单点部署,性能较高,单个数据中心节点(Data Center Node;DCN)的数据量已经达到瓶颈,无法继续对DCN的数据库进行扩容,针对更高的数据量存储需求,只能通过成本更加高的服务器实现,成本更高。
为了解决上述技术问题,本申请实施例提供的数据库数据打散的方法、装置、电子设备及存储介质的发明构思在于,通过根据数据库中数据表的业务逻辑,在预设打散策略中选择合适的打散策略作为目标打散策略,然后根据目标打散策略对数据表中的数据进行存储分区并打散,实现了对数据库的数据进行分布式存储,相比于现有技术中采用的单点部署,降低了数据存储的成本。
以下,对本申请实施例的示例性应用场景进行介绍。
本申请实施例提供的数据库数据打散的方法可以通过本申请实施例提供的数据库数据打散的装置执行,本申请实施例提供的数据库数据打散的装置可以集成在服务器或服务器集群上,或者该数据库数据打散的装置可以为服务器或服务器集群本身。也可以是安装在终端设备上的应用(Application,APP)等,在一种可能的实施方式中,本申请实施例的服务器可以是会产生热点数据,并需要对这些热点数据进行处理的平台的服务器,本申请实施例对服务器的具体类型、数量等不做限制。
示例性的,图1是本申请实施例提供的一示例性应用场景架构图,如图1所示,该架构主要包括:终端设备11(个人电脑)和服务器12。通过终端设备11的网页或者客户端获取数据流水,数据流水可以是银行贷款业务数据、存取现金流数据、理财产品交易数据等,本申请实施例对此不做限制。终端设备11将数据流水发送至服务器12,存储在服务器12中的TIDB数据库中,本申请实施例对终端设备11的具体类型不做限制,例如,终端设备可以是如图1所示的个人电脑,还可以是平板电脑、智能手机等其他终端,本申请实施例不限于此。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图2是本申请一实施例提供的数据库数据打散的方法的流程示意图,该方法可以由数据库数据打散的装置执行,该装置可以通过软件和/或硬件的方式实现,下面以服务器为执行主体对数据库数据打散的方法进行说明。如图2所示,本申请实施例提供的数据库数据打散的方法可以包括:
步骤S101:确定数据库中数据表的业务逻辑。
数据库中的数据通常通过多个数据表存储,数据表中存储的数据中包括数据表的主键和索引,通过主键可以唯一确定数据表中的一条记录,通过索引可以提高数据查询速度。
数据表中存储的数据可能与存量数据、上游数据以及昨日数据之间存在一定的业务逻辑。例如,数据表中数据的分布情况与存量数据的分布情况基本一致,且每天新增加的数据较少;再例如,数据表中的数据存在明确的上游数据,并且上游数据与下游数据之间的数据量存在比例关系;又例如,数据表中的数据与昨日数据类似等等。本申请实施例仅以此为例,并不限于此,例如,数据表还可能存在其他业务逻辑等,具体可以根据实际情况进行设置。
步骤S102:根据数据表的业务逻辑,在预设打散策略中确定数据表的目标打散策略。
在确定数据表的业务逻辑之后,针对数据表不同的业务逻辑,可以在预设打散策略中选择合适的打散策略作为数据表的目标打散策略。其中,预设打散策略可以是针对数据表的索引的打散策略。在一种可能的实施方式中,若数据库的数据表中包括多个索引,则预设打散策略用于分别根据数据表不同的索引将数据表进行打散。
本申请实施例对预设打散策略的具体策略以及形式不做限制,在一种可能的实施方式中,预设打散策略是针对数据表不同的业务逻辑分别制定的打散策略,在选择目标打散策略时,可以通过业务逻辑与打散策略之间的对应关系,确定该业务逻辑的目标打散策略。在一种可能的实施方式中,预设打散策略可以通过多个脚本实现,则根据数据表的业务逻辑,在预设打散策略中确定数据表的目标打散策略,可以通过服务器调用数据表的业务逻辑对应的目标打散策略的脚本来实现。
步骤S103:根据目标打散策略对数据表中的数据进行存储分区,并将数据表的数据按照存储分区进行打散。
根据数据表的业务逻辑,在预设打散策略中确定数据表的目标打散策略之后,服务器根据目标打散策略对数据表中的数据进行存储分区,并将数据表的数据按照存储分区进行打散。
目标打散策略中包括对数据表的区域数量以及每个区域内的索引数量和索引范围。通过按照目标打散策略中的区域数量对数据表中的数据进行存储分区,并按照每个区域内的索引数量和索引范围,将数据表中的数据分别写入每个区域内,实现了对数据库中数据表的打散。
示例性的,表一是本申请一实施例示例性的分区表,通过提前预估数据表的数据量,例如数据量超过100万(W),为数据表分配1000个区域,并对每个区域的索引进行划分,具体划分如表一所示。
表一是本申请一实施例示例性的分区表
区域编号 | 索引最小值 | 索引最大值 |
1 | 1 | 10000 |
2 | 10001 | 20000 |
3 | 20001 | 30000 |
… | … | … |
… | … | … |
N | (N-1)*10000+1 | N*10000 |
998 | 9970001 | 9980000 |
999 | 9980001 | 9990000 |
1000 | 9990001 | 10000000 |
如表一所示,区域数量为1000个,分别采用阿拉伯数字对每个区域进行编号,每个区域内的索引数量为10000个。以区域1为例,区域1的索引最小值为1,索引最大值为10000,则区域1的索引范围是1-10000,其他区域与区域1类似,具体内容可参考表一,不再一一赘述。在程序启动时,根据表一对数据表中的数据进行存储分区,并将数据表的数据按照每个区域的索引数量和索引范围进行打散。
预设打散策略是对数据表的索引的打散方式,在一种可能的实施方式中,还可以根据数据表的主键对数据表进行打散。本申请实施例提供的数据库数据打散的方法,在根据数据表的业务逻辑,在预设打散策略中选择数据表的目标打散策略之前,还可以包括:
确定数据表的主键类型;若主键类型为数字类型,则按照数字自增方式对数据表划分为多个不同的主键区间段。
针对不同主键类型,可以采用不同的主键打散方式。当数据表的主键类型为数字类型时,可以采用数字自增方式对数据表划分为多个不同的主键区间段,其中,每个主键区间段相互独立且互不相同。当数据表的主键类型为字符串时,可采用SHADOW_ROW_BITS算法对字符串进行打散,将数据表划分为多个不同的主键区间段,并且,每个主键区间段相互独立且互不相同。
本申请实施例中,通过根据数据库中数据表的业务逻辑,在预设打散策略中选择合适的打散策略作为目标打散策略,然后根据目标打散策略对数据表中的数据进行存储分区并打散,实现了对数据库的数据进行分布式存储,相比于现有技术中的采用单点部署,降低了数据存储的成本。
在图2所示的实施例的基础上,在一种可能的实施方式中,图3是本申请另一实施例提供的数据库数据打散的方法的流程示意图,该方法可以由数据库数据打散的装置执行,该装置可以通过软件和/或硬件的方式实现,下面以服务器为执行主体对数据库数据打散的方法进行说明,如图3所示,本申请实施例提供的数据库数据打散的方法,在步骤S103将数据表的数据按照存储分区进行打散之后,还可以包括:
步骤S201:分析数据表的数据在每个区域内的分布情况。
步骤S202:若存在任意两个区域内存储的数据量之间的差值,超过预设数量或预设比例,则利用数据表的数据和目标打散策略的确定方式,更新目标打散策略。
数据表的数据进行分区并按照每个区域内的索引数量和索引范围将数据表中的数据进行打散,本申请实施例通过获取并分析数据表的数据在每个区域内的分布情况,可以判断数据表的数据在区域内分布是否均匀。例如,区域数量为3个,分别为区域A、区域B和区域C,预设数量为2000,在将数据表的数据按照存储分区进行打散之后,区域A中存在10000条数据,区域B中存在9957条数据,而区域C中存在2000条数据,则区域A和区域B之间的数据量在预设数量范围内,区域A和区域C之间的数据量超过了预设数量,区域B和区域C之间的数据量也超过了预设数量,则数据表在每个区域分布并不均匀。再例如,区域数量为3个,分别为区域A、区域B和区域C,预设比例为20%,在将数据表的数据按照存储分区进行打散之后,区域A中存在10000条数据,区域B中存在9957条数据,而区域C中存在2000条数据,则区域A和区域B之间的数据量的差值在预设比例范围内,区域A和区域C之间的数据量的差值超过了预设比例,区域B和区域C之间的数据量的差值也超过了预设比例,则数据表在每个区域分布并不均匀。
如果数据表的数据在每个区域内的分布差距较大,可能会导致某些区域内的数据处理压力过大,而某些区域内的数据处理较少,导致资源分配不合理。因此,在分布情况未达到均匀预期时,即,若存在任意两个区域内存储的数据量之间的差值,超过预设数量或预设比例,可以利用数据表中的数据和目标打散策略的确定方式,更新目标打散策略。
在一种可能的实施方式中,预设打散策略包括基于存量数据分布的打散策略、基于上游数据分布的打散策略和基于昨日数据分布的打散策略。本申请实施例提供的方法,利用数据表中的数据和目标打散策略的确定方式,更新目标打散策略,以目标打散策略为基于存量数据分布的打散策略为例,则利用数据表中的数据和基于存量数据分布的打散策略的确定方式,更新基于存量数据分布的打散策略。其中,基于存量数据分布的打散策略是通过对存量数据进行分析并通过一定的确定方式,生成基于存量数据分布的打散策略,而更新基于存量数据分布的打散策略时,是通过对数据表中的数据进行分析,并通过上述确定方式,重新生成基于存量数据分布的打散策略,其中,该确定方式的具体方案可参考本申请图4所示实施例,此处不做具体。
本申请实施例中,通过在对数据表的数据进行打散之后,对存储分区内的数据分布情况进行分析,在分布情况未达到均匀预期时,利用数据表的数据,更新目标打散策略,保证了目标打散策略的可靠性。
在图2或图3所示实施例的基础上,在一种可能的实施方式中,本申请实施例提供的数据库数据打散的方法,预设打散策略包括基于存量数据分布的打散策略、基于上游数据分布的打散策略和基于昨日数据分布的打散策略。下面分别对各预设打散策略的具体实现方式进行介绍。
在一种可能的实施方式中,本申请实施例提供的数据库数据打散的方法,图4是本申请一实施例提供的基于存量数据分布的打散策略的流程示意图,如图4所示,本申请实施例基于存量数据分布的打散策略,包括:
步骤S301:对存量数据按照索引进行去重处理,得到索引的去重索引数量。
本申请实施例中,以存量数据中的索引为借据号为例,对存量数据按照借据号进行去重处理,每个借据号可能存在一条或多条数据,通过对借据号进行去重处理,可以得到存量数据中的借据号的数量,即得到索引的去重索引数量。
步骤S302:根据去重索引数量和预设区域数量,确定每个区域可存放的索引数量和索引范围。
在得到存量数据中索引的去重索引数量之后,根据去重索引数量和预设区域数量,确定每个区域可存放的索引数量和索引范围。本申请实施例对如何根据去重索引数量和预设区域数量,确定每个区域可存放的索引数量和索引范围的具体实现方式不做限制。其中,预设区域数量可以通过对数据表中的数据量进行预估确定,在一种可能的实施方式中,预设区域数量为1000个,本申请实施例仅以此为例,并不限于此,具体可以根据实际业务需求确定预设区域数量。
在一种可能的实施方式中,本申请实施例将去重索引数据量与预设区域数量之比,作为每个区域可存放的索引数量,然后可以通过对索引进行编号,确定每个区域存放的索引范围。示例性的,预设区域数量为1000个,每个区域可存放的索引数量为10000个,则第一个区域存放的索引范围可以为0-10000,以此类推,本申请实施例不再赘述。
在另一种可能的实施方式中,本申请实施例提供的数据库数据打散的方法,根据去重索引数量和预设区域数量,确定每个区域可存放的索引数量和索引范围,包括:确定存量数据的行数与去重索引数量的比值,为索引的因子倍数;利用去重索引数量与因子倍数生成新数组;对新数组按照索引进行排序,并利用新数组的行数以及预设区域数量,确定每个区域可存放的索引数量和索引范围。
为了便于介绍,示例性的,对存量数据按照索引进行去重后,得到去重数组[1,2,3],去重索引数量为3,存量数据的行数为9,则索引的因子倍数为9/3=3,将去重数组[1,2,3]扩大因子倍数并排序,得到新数组[1,1,1,2,2,2,3,3,3],然后利用新数组的行数9与预设区域数量的比值,作为每个区域可存放的索引数据,例如预设区域数量为3,则每个区域可存放的索引数量为1,可存放的索引数据为3,比如:第一个区域可存放索引1的3条索引数据,第二个区域可存放索引2的3条索引数据,第三个区域可存放索引3的3条索引数据。
在确定每个区域可存放的索引数量以及索引范围之后,按照预设区域数量对数据表进行存储分区,然后按照每个区域内的索引数量和索引范围对数据表进行打散。
基于此,在一种可能的实施方式中,本申请实施例提供的数据库数据打散的方法的步骤S102,根据数据表的业务逻辑,在预设打散策略中确定数据表的目标打散策略,可以包括:
若数据表的数据分布情况与存量数据的数据分布情况之间的相似度达到第一预设相似度,则在预设打散策略中确定基于存量数据分布的打散策略作为目标打散策略。
数据表的数据分布情况与存量数据的数据分布情况基本相同,例如,相似度达到第一预设相似度,本申请实施例对第一预设相似度的具体数值不做限制。将基于存量数据分布的打散策略作为数据表的目标打散策略。
目标打散策略为基于存量数据分布的打散策略,则根据目标打散策略对数据表中的数据进行存储分区,利用基于存量数据分布的打散策略,确定区域数量以及每个区域可存放的索引数量以及索引范围,并按照该预设区域数量对数据表进行存储分区,并将数据表的数据按照每个区域内的索引数量和索引范围进行打散。
在另一种可能的实施方式中,本申请实施例提供的数据库数据打散的方法,图5是本申请一实施例提供的基于上游数据分布的打散策略的流程示意图,如图5所示,本申请实施例基于上游数据分布的打散策略,包括:
步骤S401:根据上游数据中的索引数据量和索引的区域数,确定每个区域可存放的索引数据量。
步骤S402:根据数据表的行数以及每个区域可存放的索引数据量,确定数据表的区域数量。
步骤S403:对上游数据按照索引进行去重处理,生成索引的去重索引数量。
步骤S404:按照去重索引数量和区域数量,确定每个区域存储的索引数量和索引范围。
在一种可能的实施方式中,将上游数据中的索引数据量和索引的区域数的比值,作为每个区域可存放的索引数据量,然后将数据表的行数与每个区域可存放的索引数据量的比值,作为数据表的区域数量。
然后通过对上游数据按照索引进行去重处理,生成索引的去重索引数量,进而按照去重索引数量与区域数量的比值,作为每个区域存储的索引数量,按照索引的顺序以及每个区域的顺序,确定每个区域的索引范围。最后按照该区域数量对数据表进行存储分区,并将数据表的数据按照每个区域内的索引数量和索引范围进行打散。
基于此,在另一种可能的实施方式中,本申请实施例提供的数据库数据打散的方法的步骤S102,根据数据表的业务逻辑,在预设打散策略中确定数据表的目标打散策略,可以包括:
若数据表存在上游数据,且上游数据与数据表的数据量之间成比例关系,则在预设打散策略中确定基于上游数据分布的打散策略作为目标打散策略。
数据表的上游数据与数据表的数据量之间成比例关系时,将基于上游数据分布的打散策略作为数据表的目标打散策略,数据表按照基于上游数据分布的打散策略确定的区域数量对数据表进行存储分区,并将数据表的数据按照基于上游数据分布的打散策略确定的索引数量和索引范围进行打散。
在又一种可能的实施方式中,本申请实施例提供的数据库数据打散的方法,图6是本申请一实施例提供的基于昨日数据分布的打散策略的流程示意图,如图6所示,本申请实施例基于昨日数据分布的打散策略,包括:
步骤S501:对昨日数据按照索引进行去重处理,得到索引的去重索引数量。
步骤S502:根据去重索引数量和预设区域数量,确定每个区域可存放的索引数量和索引范围。
基于昨日数据分布的打散策略与基于存量数据分布的打散策略的具体方式类似,其区别在于,基于昨日数据分布的打散策略以数据表的昨日数据为参考,而基于存量数据分布的打散策略以数据表的存量数据为参考,其具体方式可参考图4所示实施例,本申请实施例不再赘述。
在又一种可能的实施方式中,本申请实施例提供的数据库数据打散的方法的步骤S102,根据数据表的业务逻辑,在预设打散策略中确定数据表的目标打散策略,可以包括:
若数据表存在昨日数据,且昨日数据与数据表中的数据之间的相似度达到第二预设相似度,则在预设打散策略中确定基于昨日数据分布的打散策略作为目标打散策略。
本申请实施例中,设置了多个预设打散策略,并通过数据表的业务逻辑,在多个预设打散策略中选择合适的打散策略对数据表的数据进行打散,提高了数据打散的可靠性。
本申请实施例通过采用本申请实施例提供的数据库数据打散的方法进行了压测,压测结果显示,与现有技术相比,针对相同数据量的数据库,存储的时间大大降低,则其效率大大提升,并且,在数据量增加且服务器资源不变时,耗时符合线性增长,在数据量增加且服务器资源同比增加时,耗时基本不变,因此,本申请实施例提供的的数据库数据打散的方法具备可靠性。并且,在数据库存在热点数据时,服务器依然可以稳定的工作。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图7是本申请一实施例提供的数据库数据打散的装置的结构示意图,该装置可以通过软件和/或硬件的方式实现,例如可以通过服务器实现,如图7所示,本申请实施例提供的数据库数据打散的装置可以包括:确定模块61和处理模块62。
确定模块61,用于确定数据库中数据表的业务逻辑。
确定模块61,还用于根据数据表的业务逻辑,在预设打散策略中确定数据表的目标打散策略。
处理模块62,用于根据目标打散策略对数据表中的数据进行存储分区,并将数据表的数据按照存储分区进行打散。
在一种可能的实施方式中,本申请实施例提供的数据库数据打散的装置,确定模块61,还用于:
确定数据表的主键类型;若主键类型为数字类型,则按照数字自增方式对数据表划分为多个不同的主键区间段。
本实施例的装置可以执行上述图2所示的方法实施例,其技术原理和技术效果与上述实施例相似,此处不再赘述。
在图7所示实施例的基础上,进一步地,图8是本申请另一实施例提供的数据库数据打散的装置的结构示意图,该装置可以通过软件和/或硬件的方式实现,例如可以通过服务器实现,如图8所示,本申请实施例提供的数据库数据打散的装置,还可以包括更新模块63。
更新模块63用于:分析数据表的数据在存储分区内的分布情况;若存在任意两个区域内存储的数据量之间的差值,超过预设数量或预设比例,则利用数据表的数据和目标打散策略的确定方式,更新目标打散策略。
本实施例的装置可以执行上述图3所示的方法实施例,其技术原理和技术效果与上述实施例相似,此处不再赘述。
在上述实施例的基础上,在一种可能的实施方式中,本申请实施例提供的数据库数据打散的装置,预设打散策略包括基于存量数据分布的打散策略、基于上游数据分布的打散策略和基于昨日数据分布的打散策略。
确定模块61,具体用于:
若数据表的数据分布情况与存量数据的数据分布情况之间的相似度达到第一预设相似度,则在预设打散策略中确定基于存量数据分布的打散策略作为目标打散策略。
若数据表存在上游数据,且上游数据与数据表的数据量之间成比例关系,则在预设打散策略中确定基于上游数据分布的打散策略作为目标打散策略。
若数据表存在昨日数据,且昨日数据与数据表中的数据之间的相似度达到第二预设相似度,则在预设打散策略中确定基于昨日数据分布的打散策略作为目标打散策略。
在一种可能的实施方式中,本申请实施例提供的数据库数据打散的装置,基于存量数据分布的打散策略,包括:
对存量数据按照索引进行去重处理,得到索引的去重索引数量;根据去重索引数量和预设区域数量,确定每个区域可存放的索引数量和索引范围。
在一种可能的实施方式中,本申请实施例提供的数据库数据打散的装置,根据去重索引数量和预设区域数量,确定每个区域可存放的索引数量和索引范围,包括:
确定存量数据的行数与去重索引数量的比值,为索引的因子倍数;利用去重索引数量与因子倍数生成新数组;对新数组按照索引进行排序,并利用数据表的行数以及预设区域数量,确定每个区域可存放的索引数量和索引范围。
在一种可能的实施方式中,本申请实施例提供的数据库数据打散的装置,基于上游数据分布的打散策略,包括:
根据上游数据中的索引数据量和索引的区域数,确定每个区域可存放的索引数据量;根据数据表的行数以及每个区域可存放的索引数据量,确定数据表的区域数量;对上游数据按照索引进行去重处理,生成索引的去重索引数量;按照去重索引数量和区域数量,确定每个区域存储的索引数量和索引范围。
在一种可能的实施方式中,本申请实施例提供的数据库数据打散的装置,基于昨日数据分布的打散策略,包括:
对昨日数据按照索引进行去重处理,得到索引的去重索引数量;根据去重索引数量和预设区域数量,确定每个区域可存放的索引数量和索引范围。
本申请所提供的装置实施例仅仅是示意性的,图7和图8中的模块划分仅仅是一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个模块可以结合或者可以集成到另一个系统。各个模块相互之间的耦合可以是通过一些接口实现,这些接口通常是电性通信接口,但是也不排除可能是机械接口或其它的形式接口。因此,作为分离部件说明的模块可以是或者也可以不是物理上分开的,既可以位于一个地方,也可以分布到同一个或不同设备的不同位置上。
图9是本申请实施例提供的电子设备的结构示意图,电子设备可以为服务器,如图9所示,该电子设备包括:
接收器70、发送器71、处理器72和存储器73以及计算机程序;其中,接收器70和发送器71,实现与其他设备之间的数据传输,计算机程序被存储在存储73中,并且被配置为由处理器72执行,计算机程序包括用于执行上述数据库数据打散的方法的指令,其内容及效果请参考方法实施例。
此外,本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当用户设备的至少一个处理器执行该计算机执行指令时,用户设备执行上述各种可能的方法。
其中,计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于用户设备中。当然,处理器和存储介质也可以作为分立组件存在于通信设备中。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
本申请实施例还提供一种计算机程序产品,包括计算机指令,该计算机指令被处理器执行时实现上述实施例中数据库数据打散的方法中的各个步骤。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。
Claims (10)
1.一种数据库数据打散的方法,其特征在于,包括:
确定数据库中数据表的业务逻辑;
根据所述数据表的所述业务逻辑,在预设打散策略中确定所述数据表的目标打散策略;
根据所述目标打散策略对所述数据表中的数据进行存储分区,并将所述数据表的数据按照所述存储分区进行打散。
2.根据权利要求1所述的方法,其特征在于,在将所述数据表的数据按照所述存储分区进行打散之后,还包括:
分析所述数据表的数据在每个区域内的分布情况;
若存在任意两个区域内存储的数据量之间的差值,超过预设数量或预设比例,则利用所述数据表的数据和所述目标打散策略的确定方式,更新所述目标打散策略。
3.根据权利要求1或2所述的方法,其特征在于,
所述预设打散策略包括基于存量数据分布的打散策略、基于上游数据分布的打散策略和基于昨日数据分布的打散策略;
所述根据所述数据表的所述业务逻辑,在预设打散策略中确定所述数据表的目标打散策略,包括:
若所述数据表的数据分布情况与存量数据的数据分布情况之间的相似度达到第一预设相似度,则在所述预设打散策略中确定所述基于存量数据分布的打散策略作为所述目标打散策略;
若所述数据表存在上游数据,且所述上游数据与所述数据表的数据量之间成比例关系,则在所述预设打散策略中确定所述基于上游数据分布的打散策略作为所述目标打散策略;
若所述数据表存在昨日数据,且所述昨日数据与所述数据表中的数据之间的相似度达到第二预设相似度,则在所述预设打散策略中确定所述基于昨日数据分布的打散策略作为所述目标打散策略。
4.根据权利要求3所述的方法,其特征在于,所述基于存量数据分布的打散策略,包括:
对所述存量数据按照索引进行去重处理,得到所述索引的去重索引数量;
确定所述存量数据的行数与所述去重索引数量的比值,为所述索引的因子倍数;
利用所述去重索引数量与所述因子倍数生成新数组;
对所述新数组按照所述索引进行排序,并利用所述新数组的行数以及所述预设区域数量,确定每个区域可存放的索引数量和索引范围。
5.根据权利要求3所述的方法,其特征在于,所述基于上游数据分布的打散策略,包括:
根据所述上游数据中的索引数据量和索引的区域数,确定每个区域可存放的索引数据量;
根据所述数据表的行数以及每个区域可存放的索引数据量,确定所述数据表的区域数量;
对所述上游数据按照所述索引进行去重处理,生成所述索引的去重索引数量;
按照所述去重索引数量和所述区域数量,确定每个区域存储的索引数量和索引范围。
6.根据权利要求3所述的方法,其特征在于,所述基于昨日数据分布的打散策略,包括:
对所述昨日数据按照索引进行去重处理,得到所述索引的去重索引数量;
根据所述去重索引数量和预设区域数量,确定每个区域可存放的索引数量和索引范围。
7.根据权利要求1或2所述的方法,其特征在于,在所述根据所述数据表的所述业务逻辑,在预设打散策略中选择所述数据表的目标打散策略之前,还包括:
确定所述数据表的主键类型;
若所述主键类型为数字类型,则按照数字自增方式对所述数据表划分为多个不同的主键区间段。
8.一种数据库数据打散的装置,其特征在于,包括:
确定模块,用于确定数据库中数据表的业务逻辑;
所述确定模块,还用于根据所述数据表的所述业务逻辑,在预设打散策略中确定所述数据表的目标打散策略;
处理模块,用于根据所述目标打散策略对所述数据表中的数据进行存储分区,并将所述数据表的数据按照所述存储分区进行打散。
9.一种电子设备,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111646222.7A CN114297185A (zh) | 2021-12-29 | 2021-12-29 | 数据库数据打散的方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111646222.7A CN114297185A (zh) | 2021-12-29 | 2021-12-29 | 数据库数据打散的方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114297185A true CN114297185A (zh) | 2022-04-08 |
Family
ID=80972498
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111646222.7A Pending CN114297185A (zh) | 2021-12-29 | 2021-12-29 | 数据库数据打散的方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114297185A (zh) |
-
2021
- 2021-12-29 CN CN202111646222.7A patent/CN114297185A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9135071B2 (en) | Selecting processing techniques for a data flow task | |
KR101959153B1 (ko) | 데이터베이스에서의 계좌와 관련된 거래 요청의 효율적인 처리를 위한 시스템 | |
KR20190099087A (ko) | 서비스 데이터를 블록체인에 기입하기 위한 방법 및 장치, 그리고 서비스 하위세트를 결정하기 위한 방법 | |
CN111813805A (zh) | 一种数据处理方法及装置 | |
CN112395293B (zh) | 分库分表方法、分库分表装置、分库分表设备及存储介质 | |
CN104112008A (zh) | 一种多表数据关联查询优化方法和装置 | |
CN103473365A (zh) | 一种基于hdfs的文件存储方法、装置及分布式文件系统 | |
CN104216893A (zh) | 多租户共享数据表的分区管理方法、服务器与系统 | |
CN106095589A (zh) | 一种分配分区的方法、装置及系统 | |
CN107070645B (zh) | 比较数据表的数据的方法和系统 | |
WO2017118335A1 (zh) | 一种映射方法和设备 | |
JPWO2010044131A1 (ja) | リソース割り当て装置及びリソース割り当てプログラム及び記録媒体及びリソース割り当て方法 | |
CN108270581A (zh) | 共享资源计费处理方法及装置 | |
CN108399102A (zh) | 一种资源分配方法和装置 | |
CN110750517B (zh) | 一种本地存储引擎系统的数据处理方法、装置以及设备 | |
EP2662783A1 (en) | Data archiving approach leveraging database layer functionality | |
CN117896686A (zh) | 一种话单累积量优惠计算方法、装置、设备及存储介质 | |
CN114297185A (zh) | 数据库数据打散的方法、装置、电子设备及存储介质 | |
KR101858593B1 (ko) | 단일 머신 기반의 대용량 희소행렬 곱셈을 위한 메모리 할당 장치 및 방법 | |
Alrahwan et al. | ASCF: Optimization of the Apriori Algorithm Using Spark‐Based Cuckoo Filter Structure | |
CN113656046A (zh) | 一种应用部署方法和装置 | |
CN106940725A (zh) | 一种征信数据存储调度方法及系统 | |
CN112799820A (zh) | 数据处理方法、装置、电子设备、存储介质及程序产品 | |
CN112163024A (zh) | 一种基于层级关联结构的配置信息导出和导入方法 | |
CN113535410B (zh) | 用于gis空间矢量分布式计算的负载均衡方法及系统 |
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 |