CN115794815A - 分表方法及装置 - Google Patents
分表方法及装置 Download PDFInfo
- Publication number
- CN115794815A CN115794815A CN202211379387.7A CN202211379387A CN115794815A CN 115794815 A CN115794815 A CN 115794815A CN 202211379387 A CN202211379387 A CN 202211379387A CN 115794815 A CN115794815 A CN 115794815A
- Authority
- CN
- China
- Prior art keywords
- character code
- sub
- data
- character
- tables
- 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
- Storage Device Security (AREA)
Abstract
本发明公开了一种分表方法及装置,其中该方法包括:获取目标表的数据记录;对数据记录中分区键的取值进行加密,得到密文数据;根据密文数据,从多个分表中选取目标分表;将数据记录存储至目标分表。本发明可以提高读写效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及分表方法及装置。
背景技术
本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
在目前的大数据时代,一般采用数据库对海量的数据进行存储和管理。随着数据的累积,数据库中数据表的数据量也随之增大。当数据库中一张数据表的数据量过大时,数据表的读写效率会下降,甚至有可能无法进行正常的读写。例如,当数据库中一张表的数据量过大时,对该表进行查询操作所需要的时间会增加,甚至因数据量过大而使查询操作超时,最终导致查询操作无法完成。
发明内容
本发明实施例提供一种分表方法及装置,用以提高读写效率。
本发明实施例提供一种分表方法,包括:
获取目标表的数据记录;
对数据记录中分区键的取值进行加密,得到密文数据;
根据密文数据,从多个分表中选取目标分表;
将数据记录存储至目标分表。
本发明实施例还提供一种分表装置,包括:
获取单元,用于获取目标表的数据记录;
加密单元,用于对数据记录中分区键的取值进行加密,得到密文数据;
选取单元,用于根据密文数据,从多个分表中选取目标分表;
存储单元,用于将数据记录存储至目标分表。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述分表方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述分表方法。
本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述分表方法。
本说明书实施例的技术方案,可以获取目标表的数据记录;可以对数据记录中分区键的取值进行加密,得到密文数据;可以根据密文数据,从多个分表中选取目标分表;可以将数据记录存储至目标分表。通过对目标表进行分表,可以提高读写效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中分表过程的示意图;
图2为本发明实施例中分表方法的流程图;
图3为本发明实施例中计算划分标识的示意图;
图4为本发明实施例中分表装置的功能结构示意图;
图5为本发明实施例中计算机设备的功能结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
在本发明实施例中:
记录一般指数据表中的行。在数据表中,每一行一般称为一个记录。
字段一般指数据表中的列。在数据表中,每一列一般称为一个字段。
本发明实施例提供一种分表方法。所述分表方法可以应用于计算机设备。所述计算机设备包括但不限于个人计算机、服务器、包含多个服务器的服务器集群等。请参阅图1和图2。所述分表方法可以包括以下步骤。
步骤S11:获取目标表的数据记录。
在一些实施例中,数据库中可以包含一个或多个数据表。所述目标表可以为数据库中数据量较大或数据增长速度较快的数据表。所述目标表的读写效率降低,因而需要进行分表。所述分表可以是指由目标表存储管理的数据拆分为由多个分表存储管理。
在一些实施例中,所述目标表可以包括一个或多个字段。所述目标表还可以包括一条或多条数据记录。每条数据记录可以包括所述一个或多个字段的取值。
例如,所述目标表可以包括字段fieldA、fieldB、fieldC。则每条数据记录可以包括字段fieldA的取值、字段fieldB的取值、字段fieldC的取值。
在一些实施例中,可以获取目标中的一条或多条数据记录。
步骤S13:对数据记录中分区键的取值进行加密,得到密文数据。
在一些实施例中,前已述及,所述目标表可以包括一个或多个字段。所述分区键可以包括所述一个或多个字段中用于进行分表的字段。在实际应用中,可以从所述一个或多个字段中,选择取值能够唯一标识一条数据记录的字段,作为分区键。当然,还可以采用其他方式从所述一个或多个字段中选择字段,作为分区键。
在一些实施例中,可以从数据记录中选取分区键的取值;可以对分区键的取值进行加密,得到密文数据。例如,可以计算分区键的取值的哈希值,作为密文数据。所述哈希值包括但不限于MD5、SHA1、SHA256、SHA384、SHA512、CRC32等。再比如,可以采用加密算法对分区键的取值进行加密,得到密文数据。所述加密算法可以包括对称加密算法和非对称加密算法。所述对称加密算法包括但不限于DES算法、AES算法和IDEA算法等,所述非对称加密算法包括但不限于RSA算法和ECC(Elliptic Curve Cryptography,椭圆曲线加密算法)等。所述加密算法可以包括同态加密算法。所述同态加密算法可以包括Paillier算法、Okamoto-Uchiyama算法、Damgard-Jurik算法等。同态加密是一种加密技术。它允许直接对密文数据进行运算得到仍是加密的结果,将其解密所得到的结果与对明文数据进行同样运算的结果相同。所述同态加密算法可以包括加法同态加密算法和乘法同态加密算法等。
步骤S15:根据密文数据,从多个分表中选取目标分表。
在一些实施例中,所述多个分表的数量可以为经验值。或者,还可以根据目标表的记录数以及分表能够容纳的记录数,计算分表数量。使得,在对目标表进行分表后,分表的记录数小于或等于能够容纳的记录数。分表能够容纳的记录数可以根据分表的读写效率灵活设定。在分表需要较高的读写效率时,可以将分表能够容纳的记录数设置的大一些。在分表需要较低的读写效率时,可以将分表能够容纳的记录数设置的小一些。例如,可以根据公式n=N/m计算分表数量。n表示分表数量,N表示目标表的记录数,m表示分表能够容纳的记录数。可以理解的是,在实际中分表数量也可以不等于所述n,例如还可以大于所述n。当然,还可以采用其他方式计算分表数量。
在一些实施例中,所述多个分表中的每个分表可以对应有表标识。所述表标识用于标识分表,例如可以为分表的名称、分表的编号等等。所述多个分表中的每个分表与所述目标表可以具有相同的结构。所述结构可以包括字段数量、字段的定义等。
在一些实施例中,可以根据密文数据和分表数量,计算划分标识;可以将划分标识与所述多个分表中各分表的表标识进行匹配;可以将匹配到的表标识所对应的分表,作为目标分表。其中,所述划分标识用于对密文数据所对应的数据记录进行划分。
可以将密文数据与分表数量进行诸如相加、相减、相乘、相除等运算,得到划分标识。例如,可以将密文数据与分表数量相除,可以将相除后的余数作为划分标识。具体的,例如,可以根据公式ID=data mod n计算划分标识。mod表示取模运算。
或者,请参阅图3。还可以对密文数据中的字符进行编码,得到字符编码序列。设定字符编码序列中首个字符编码的特征值。可以从字符编码序列中选取首个字符编码的下一个字符编码,作为当前字符编码。可以迭代执行以下步骤,直至当前字符编码为字符编码序列中的最后一个字符编码:将上一个字符编码的特征值与预设值相乘;将相乘结果与当前字符编码相加,得到当前字符编码的特征值;从字符编码序列中选取当前字符编码的下一个字符编码,作为新的当前字符编码。在迭代结束以后,将最后一个字符编码的特征值与分表数量相除,得到余数作为划分标识。
所述密文数据可以包括一个或多个字符,每个字符在所述密文数据对应一个位置。可以对密文数据中的字符进行编码,得到字符编码序列。所述字符编码序列可以包括所述一个或多个字符的编码。字符的编码可以包括unicode码、ASCII码、GB2312码等。字符在密文数据中的位置,可以与该字符的编码在字符编码序列中的位置一致。例如,所述密文数据可以包括733,则相应的字符编码序列可以包括[55,51,51]。在所述字符编码序列中,字符编码55为密文数据中字符7的ASCII码,字符编码51为密文数据中字符3的ASCII码。再比如,所述密文数据可以包括1175,则相应的字符编码序列可以包括[49,49,55,53]。在所述字符编码序列中,字符编码49为密文数据中字符1的ASCII码,字符编码55为密文数据中字符7的ASCII码,字符编码53为密文数据中字符5的ASCII码。
可以将首个字符编码的特征值设定为该字符编码自身。字符编码序列中的首个字符编码,可以为密文数据中最高位字符的编码;字符编码序列中的最后一个字符编码,可以为密文数据中最低位字符的编码。或者,字符编码序列中的首个字符编码,也可以为密文数据中最低位字符的编码;字符编码序列中的最后一个字符编码,可以为密文数据中最高位字符的编码。例如,所述密文数据可以包括733,相应的字符编码序列可以包括[55,51,51]。所述字符编码序列中的首个字符编码可以为55。首个字符编码55的特征值可以为55。再比如,所述密文数据可以包括1175,相应的字符编码序列可以包括[49,49,55,53]。所述字符编码序列中的首个字符编码可以为49。首个字符编码49的特征值可以为49。当然,还可以将其他值设定为首个字符编码的特征值。
前已述及,字符编码序列中的首个字符编码,可以为密文数据中最高位字符的编码。则相应地,首个字符编码的下一个字符编码,可以为密文数据中次高位字符的编码。当前字符编码的下一个字符编码,可以为密文数据中第一指定字符的编码。所述第一指定字符可以包括密文数据中与当前字符编码所对应字符相邻、并且位置比当前字符编码所对应字符低的字符。当前字符编码的上一个字符编码,可以为密文数据中第二指定字符的编码。所述第二指定字符可以包括密文数据中与当前字符编码所对应字符相邻、并且位置比当前字符编码所对应字符高的字符。或者,前已述及,字符编码序列中的首个字符编码,也可以为密文数据中最低位字符的编码。则相应地,首个字符编码的下一个字符编码,也可以为密文数据中次低位字符的编码。当前字符编码的下一个字符编码,也可以为密文数据中第三指定字符的编码。所述第三指定字符可以包括密文数据中与当前字符编码所对应字符相邻、并且位置比当前字符编码所对应字符高的字符。当前字符编码的上一个字符编码,也可以为密文数据中第四指定字符的编码。所述第四指定字符可以包括密文数据中与当前字符编码所对应字符相邻、并且位置比当前字符编码所对应字符低的字符。
所述预设数值可以包括32。当然,所述预设数值还可以为其他数值,例如64。
例如,所述密文数据为733,相应的字符编码序列为[55,51,51]。首个字符编码55的特征值可以为55。第二个字符编码51的特征值可以为55×32+51。第三个字符编码51的特征值可以为(55×32+51)×32+51。可以将(55×32+51)×32+51与分表数量相除,可以将相除后的余数作为划分标识。再比如,所述密文数据为1175,相应的字符编码序列为[49,49,55,53]。首个字符编码49的特征值可以为49。第二个字符编码的特征值可以为49×32+49。第三个字符编码55的特征值可以为(49×32+49)×32+55。第四个字符编码53的特征值可以为[(49×32+49)×32+55]×32+53。可以将[(49×32+49)×32+55]×32+53与分表数量相除,可以将相除后的余数作为划分标识。
可以将划分标识与所述多个分表中各分表的表标识进行匹配;可以将匹配到的表标识所对应的分表,作为目标分表。所述匹配到的表标识可以为与所述划分标识相等的表标识。例如,所述密文数据为733,相应的字符编码序列为[55,51,51]。分表数量可以为13。所述13个分表的表标识包括0、1、2、3、4、5、6、7、8、9、10、11、12。可以将(55×32+51)×32+51=58003与分表数量13相除,可以将相除后的余数10作为划分标识。可以从所述13个分表中选取表标识为13的分表作为目标分表。再比如,所述密文数据为1175,相应的字符编码序列为[49,49,55,53]。分表数量可以为13。所述13个分表的表标识包括0、1、2、3、4、5、6、7、8、9、10、11、12。可以将[(49×32+49)×32+55]×32+53=1657621与分表数量13相除,可以将相除后的余数4作为划分标识。可以从所述13个分表中选取表标识为4的分表作为目标分表。
当然,所述匹配到的表标识还可以为与所述划分标识满足一定条件的表标识。例如,所述匹配到的表标识还可以为与所述划分标识之间的差值最小的表标识。
步骤S17:将数据记录存储至目标分表。
在一些实施例中,可以将从目标表中获取的数据记录存储至目标分表。可以迭代执行步骤S11-步骤S17,直至将目标表中的所有数据记录保持到所述多个分表中。
在一些实施例中,还可以接收终端设备发送的业务数据。所述终端设备可以为面向用户的设备,包括但不限于智能手机、平板电脑、个人计算机等。所述业务数据可以理解为一条数据记录。使得,可以采用与步骤S13-步骤S17相类似的方式,将业务数据存储至所述多个分表中的某个分表。
在一些实施例中,所述分表方法可以通过脚本实现。所述脚本采用的编写语言包括以下任意一种:PERL脚本语言、SHELL脚本语言、PYTHON脚本语言。这样,对于数据库中需要进行分表的目标表,可以通过调用该脚本即可实现分表。从而无需编写并安装JDK等外部程序,实现了轻量化改造。
本说明书实施例的分表方法,可以获取目标表的数据记录;可以对数据记录中分区键的取值进行加密,得到密文数据;可以根据密文数据,从多个分表中选取目标分表;可以将数据记录存储至目标分表。通过对目标表进行分表,可以提高读写效率。
请参阅图4。本发明实施例中还提供了一种分表装置,如下面的实施例所述。由于该装置解决问题的原理与分表方法相似,因此该装置的实施可以参见分表方法的实施,重复之处不再赘述。
获取单元21,用于获取目标表的数据记录;
加密单元23,用于对数据记录中分区键的取值进行加密,得到密文数据;
选取单元25,用于根据密文数据,从多个分表中选取目标分表;
存储单元27,用于将数据记录存储至目标分表。
请参阅图5。本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述分表方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述分表方法。
本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述分表方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种分表方法,其特征在于,包括:
获取目标表的数据记录;
对数据记录中分区键的取值进行加密,得到密文数据;
根据密文数据,从多个分表中选取目标分表;
将数据记录存储至目标分表。
2.如权利要求1所述的方法,其特征在于,所述密文数据包括哈希值。
3.如权利要求1所述的方法,其特征在于,所述多个分表中的每个分表对应有表标识;所述从多个分表中选取目标分表,包括:
根据密文数据和分表数量,计算划分标识;将划分标识与所述多个分表中各分表的表标识进行匹配,将匹配到的表标识所对应的分表,作为目标分表。
4.如权利要求3所述的方法,其特征在于,所述计算划分标识,包括:
将密文数据与分表数量相除,将相除后的余数作为划分标识。
5.如权利要求3所述的方法,其特征在于,所述计算划分标识,包括:
对密文数据中的字符进行编码,得到字符编码序列;
设定字符编码序列中首个字符编码的特征值;
从字符编码序列中选取首个字符编码的下一个字符编码,作为当前字符编码;
迭代执行以下步骤,直至当前字符编码为字符编码序列中的最后一个字符编码:
将上一个字符编码的特征值与预设值相乘;
将相乘结果与当前字符编码相加,得到当前字符编码的特征值;
从字符编码序列中选取当前字符编码的下一个字符编码,作为新的当前字符编码;
在迭代结束以后,将最后一个字符编码的特征值与分表数量相除,将相除后的余数作为划分标识。
6.如权利要求5所述的方法,其特征在于,所述字符编码包括ASCII码,所述预设值包括32;所述设定字符编码序列中首个字符编码的特征值,包括:
将首个字符编码的特征值设定为该字符编码自身。
7.一种分表装置,其特征在于,包括:
获取单元,用于获取目标表的数据记录;
加密单元,用于对数据记录中分区键的取值进行加密,得到密文数据;
选取单元,用于根据密文数据,从多个分表中选取目标分表;
存储单元,用于将数据记录存储至目标分表。
8.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6任一所述方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至6任一所述方法。
10.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现权利要求1至6任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211379387.7A CN115794815A (zh) | 2022-11-04 | 2022-11-04 | 分表方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211379387.7A CN115794815A (zh) | 2022-11-04 | 2022-11-04 | 分表方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115794815A true CN115794815A (zh) | 2023-03-14 |
Family
ID=85435678
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211379387.7A Pending CN115794815A (zh) | 2022-11-04 | 2022-11-04 | 分表方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115794815A (zh) |
-
2022
- 2022-11-04 CN CN202211379387.7A patent/CN115794815A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Al Badawi et al. | Implementation and performance evaluation of RNS variants of the BFV homomorphic encryption scheme | |
US10089487B2 (en) | Masking query data access pattern in encrypted data | |
KR101921354B1 (ko) | 비디오 서명 | |
CN110262773B (zh) | 一种计算机数据处理方法及装置 | |
US20150039885A1 (en) | Conjunctive search in encrypted data | |
CN110941598A (zh) | 一种数据去重方法、装置、终端及存储介质 | |
CN105005624A (zh) | 一种生成索引文档id的方法及装置 | |
CN109815226B (zh) | 基于区块链的数据存储方法、装置、设备和存储介质 | |
CN110634052A (zh) | 分布式架构生成订单号的方法及装置 | |
CN112771525A (zh) | 松散耦合的分布式系统中个人数据的模糊和删除 | |
CN110312054B (zh) | 图像的加解密方法、及相关装置、存储介质 | |
CN105281898B (zh) | 密钥生成装置及方法 | |
CN111966631A (zh) | 一种可快速分发的镜像文件生成方法、系统、设备和介质 | |
CN112199698A (zh) | 一种健壮的可搜索对称加密方法与系统 | |
CN112182109A (zh) | 基于区块链的分布式数据编码存储方法和电子设备 | |
US10505739B2 (en) | Prefix fingerprint | |
US20160098442A1 (en) | Verifying analytics results | |
CN114168976A (zh) | 切片文件加密方法、解密方法、存储介质及电子设备 | |
CN110362540B (zh) | 一种数据存储、访客数获取方法及装置 | |
CN112579591B (zh) | 数据校验方法、装置、电子设备及计算机可读存储介质 | |
CN117194756A (zh) | 数据处理方法、装置及存储介质 | |
CN115794815A (zh) | 分表方法及装置 | |
CN115168499B (zh) | 数据库表的分片方法、装置、计算机设备和存储介质 | |
CN115567212A (zh) | 文件处理方法、装置、计算机设备和计算机可读存储介质 | |
CN112181974B (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 |