[go: up one dir, main page]

CN115114282A - 数据存储方法、装置、电子设备及存储介质 - Google Patents

数据存储方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN115114282A
CN115114282A CN202110931395.7A CN202110931395A CN115114282A CN 115114282 A CN115114282 A CN 115114282A CN 202110931395 A CN202110931395 A CN 202110931395A CN 115114282 A CN115114282 A CN 115114282A
Authority
CN
China
Prior art keywords
field
record
value
node
data
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
CN202110931395.7A
Other languages
English (en)
Other versions
CN115114282B (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.)
China Mobile Communications Group Co Ltd
China Mobile Hangzhou Information Technology Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
China Mobile Hangzhou Information Technology 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 China Mobile Communications Group Co Ltd, China Mobile Hangzhou Information Technology Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN202110931395.7A priority Critical patent/CN115114282B/zh
Publication of CN115114282A publication Critical patent/CN115114282A/zh
Application granted granted Critical
Publication of CN115114282B publication Critical patent/CN115114282B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/2228Indexing structures
    • G06F16/2255Hash tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种数据存储方法、装置、电子设备及存储介质,其中,数据存储方法包括:为第一记录生成第一字段的第一字段值;所述第一字段值表征基于第一数值确定出的字段值;所述第一数值基于第二记录的第二字段的字段值生成,用于指示存储所述第二记录的第一节点;基于所述第一字段值,将处理后的第一记录存储至所述第一节点;其中,所述第一记录表征与所述第二记录归属不同数据表且存在关联的记录。

Description

数据存储方法、装置、电子设备及存储介质
技术领域
本申请涉及数据库技术领域,尤其涉及一种数据存储方法、装置、电子设备及存储介质。
背景技术
随着系统所涉及到的数据量越来越大,系统通常采用分布式存储的方式,将数据存储在多个电子设备上,并通过数据分片确定数据在多个电子设备上的分布。
相关技术中,为了实现单一的读取操作,需要并发请求到所有符合路由规则的分片,并对所有请求返回的结果进行归并,增加了分布式操作的次数,导致系统的读取效率不高。
发明内容
有鉴于此,本申请实施例提供一种数据存储方法、装置、电子设备及存储介质,以至少解决相关技术系统的读取效率不高的问题。
本申请实施例的技术方案是这样实现的:
本申请实施例提供了一种数据存储方法,所述方法包括:
为第一记录生成第一字段的第一字段值;所述第一字段值表征基于第一数值确定出的字段值;所述第一数值基于第二记录的第二字段的字段值生成,用于指示存储所述第二记录的第一节点;
基于所述第一字段值,将处理后的第一记录存储至所述第一节点;其中,
所述第一记录表征与所述第二记录归属不同数据表且存在关联的记录。
其中,上述方案中,所述为第一记录生成第一字段的第一字段值,包括:
在所述第一记录的第三字段的字段值中嵌入所述第一数值,得到所述第一记录的第一字段的第一字段值。
上述方案中,所述在所述第一记录的第三字段的字段值中嵌入所述第一数值,包括:
将所述第一记录的第三字段的字段值与所述第一数值进行拼接。
上述方案中,所述基于所述第一字段值,将处理后的第一记录存储至所述第一节点,包括:
基于所述第一字段值对应的第一数值,确定所述第一记录对应的第一槽位;
根据设定的映射关系,将所述第一记录存储至所述第一槽位对应的第一节点;所述映射关系表征每个节点和对应的槽位的关系。
上述方案中,所述方法还包括:
更新至少一个节点对应的设定的映射关系;
基于更新后的映射关系,将至少一个槽位的记录迁入至对应的节点。
上述方案中,在所述为第一记录生成第一字段的第一字段值之前,所述方法还包括:
基于所述第一记录归属的第一数据表的至少一个字段,在第二数据表的字段中确定第二字段;
基于所述第二记录的第二字段的字段值,生成所述第一数值。
上述方案中,所述基于所述第二记录的第二字段的字段值,生成所述第一数值,包括:
基于所述第二记录的第二字段的字段值,生成第一哈希值;
对所述第一哈希值取余数,得到所述第一数值。
本申请实施例还提供了一种数据存储装置,包括:
第一生成单元,用于为第一记录生成第一字段的第一字段值;所述第一字段值表征基于第一数值确定出的字段值;所述第一数值基于第二记录的第二字段的字段值生成,用于指示存储所述第二记录的第一节点;
存储单元,用于基于所述第一字段值,将处理后的第一记录存储至所述第一节点;其中,
所述第一记录表征与所述第二记录归属不同数据表且存在关联的记录。
本申请实施例还提供了一种电子设备,包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器,
其中,所述处理器用于运行所述计算机程序时,执行上述数据存储方法的步骤。
本申请实施例还提供了一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述数据存储方法的步骤。
在本申请实施例中,基于第一数值为第一记录生成第一字段的第一字段值,基于第一字段值将处理后的第一记录存储至存有第二记录的第一节点,其中,基于第二记录的第二字段的字段值生成第一数值,第一数值用于指示存储第二记录的第一节点,第一记录表征与第二记录归属不同数据表且存在关联的记录。这样,通过为记录生成的字段值,能够将记录存储至存有关联记录的节点上,提高了关联记录存储的集中性,基于以上数据存储方案,在读取数据时,能够减少对不同节点的读取操作次数,从而提升了读取操作的读取效率。
附图说明
图1为相关技术提供的跨分片查询的示意图;
图2为本申请实施例提供的数据存储方法的流程示意图;
图3为本申请实施例提供的基于第一数据表确定第二数据表的第二字段的示意图;
图4为本申请实施例提供的存储层次关系的示意图;
图5为本申请实施例提供的存储对应关系的示意图;
图6为本申请实施例提供的槽位和节点映射关系的示意图;
图7为本申请应用实施例提供的基因法生成分片键键值的流程示意图;
图8为本申请应用实施例提供的生成分片键键值的示意图;
图9为本申请应用实施例提供的分片存储数据示意图;
图10为本申请应用实施例提供的分片键键值的示意图;
图11为本申请应用实施例提供的分片存储数据示意图;
图12为本申请应用实施例提供的数据拷贝示意图;
图13为本申请应用实施例提供的扩容前后数据映射关系示意图;
图14为本申请实施例提供的一种数据存储装置的结构示意图;
图15为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
随着系统所涉及到的数据量越来越大,系统通常采用分布式存储的方式,将数据存储在多个电子设备上,从而提升系统可用性、降低数据库响应时间。为了将数据存储在多个电子设备上,需要通过数据分片确定数据在多个电子设备上的分布。这样,能够实现数据分布均匀、负载均衡和扩缩容时尽可能少的数据迁移。
常见的数据分片的方法包括划分号段、取模、检索表、一致性哈希等。划分号段方法是指每个电子设备上存放相同大小的号段区间,适用于字段值为整型的情况,存在数据分布不均匀的问题。取模方法通过计算字段值的哈希值,再对数据库分片数量取模,确定数据所在的电子设备编号,对系统进行扩缩容时会产生大量的数据迁移。检索表方法是指在检索表中存储字段值和电子设备的映射关系,通过查找检索表确定数据分布,检索表需要占用的大量存储空间。一致性哈希方法通过是将键值映射到0~232的环形hash空间,采用同样的方法得到存储数据的键名的哈希值,也映射到环形hash空间上,然后从数据映射到的位置开始顺时针查找,将数据保存到找到的第一个服务器上,在扩缩容时需要重新计算节点,并产生大量的数据迁移。
相关技术中,如图1示出的跨分片查询的示意图,相关数据分布在不同的分片上,为了实现单一操作,需要并发请求到所有符合路由规则的分片,并对所有结果进行归并,产生大量的跨分片查询,而跨分片查询的表连接需要在网络中传输大量的数据,在读取数据时,对不同节点的读取操作次数增加,导致系统的读取效率不高,降低了分布式存储系统的性能。同时,在对系统扩容或缩容时,也存在数据迁移量较大的问题,需要较长的维护时间,降低了电子设备的可用性。
基于此,在本申请实施例中,基于第一数值为第一记录生成第一字段的第一字段值,基于第一字段值将处理后的第一记录存储至存有第二记录的第一节点,其中,基于第二记录的第二字段的字段值生成第一数值,第一数值用于指示存储第二记录的第一节点,第一记录表征与第二记录归属不同数据表且存在关联的记录。这样,通过为记录生成的字段值,能够将记录存储至存有关联记录的节点上,提高了关联记录存储的集中性,基于以上数据存储方案,在读取数据时,能够减少对不同节点的读取操作次数,从而提升了读取操作的读取效率。
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
图2为本申请实施例提供的数据存储方法的实现流程示意图,其中,流程的执行主体为执行数据存储的电子设备,包括但不限于终端、服务器等电子设备。
如图2示出的,数据存储方法包括:
步骤201:为第一记录生成第一字段的第一字段值。
其中,所述第一字段值表征基于第一数值确定出的字段值;所述第一数值基于第二记录的第二字段的字段值生成,用于指示存储所述第二记录的第一节点。
这里,第二字段的字段值表征第二记录在归属的数据表中的一个设定字段的字段值。这里的设定字段可以根据设定场景下数据表的特性确定,通常选取可以标识记录身份唯一性的字段,包括但不限于电话号码、身份证号码等。
基于第二字段的字段值生成的第一数值,还可以用于指示第二记录存储至对应的第一节点,这样,第一数值能够指示将第一记录存储至存有第二记录的第一节点。
第一字段表征第一记录归属的数据表中的一个设定字段,通常第一字段的字段值为身份标识号(ID,Identity Document)值。
步骤202:基于所述第一字段值,将处理后的第一记录存储至所述第一节点。
其中,所述第一记录表征与所述第二记录归属不同数据表且存在关联的记录
这里,基于第一数值为第一记录生成第一字段值,能够将第一记录存储至第一数值指示的第一节点。这里,第二记录可以是和第一记录同时存储至第一节点,也可以是在存储第一记录之前就先存储第一节点。
基于第一数值为第一记录生成第一字段值,能将第一记录存储至第一数值指示的第一节点,而第一节点上存储有第二记录,实现将关联的第一记录和第二记录存储至同一节点,这样,提高了关联记录存储的集中性,基于以上数据存储方案,在读取数据时,能够减少对不同节点的读取操作次数,从而提升了读取操作的读取效率。
其中,在一实施例中,在所述为第一记录生成第一字段的第一字段值之前,所述方法还包括:
基于所述第一记录归属的第一数据表的至少一个字段,在第二数据表的字段中确定第二字段;
基于所述第二记录的第二字段的字段值,生成所述第一数值。
这里,基于第一数据表的至少一个字段,在第二数据表的字段中确定第二字段,基于第二记录确定出的第二字段的字段值,生成第一数值。第一字段的至少一个字段的字段值和第二字段的字段值在设定场景下强相关。第一数据表和第二数据表表征为不同的数据表,且在设定场景下第一数据表和第二数据表存在关联。
第二字段通常是第二数据表中价值最高的字段,这里的字段价值,可以理解为通过这个字段的字段值能够区分不同的第二记录。对字段价值的评估,可以采用以下至少一种评估方式:基于各第二记录的该字段的字段值的缺失比例、该字段的字段值在对应的第二记录的使用频率、该字段的字段值能否用于区分各第二记录。基于第一数据表的至少一个字段,在第二数据表的字段中确定第二字段,并基于第二记录的第二字段的字段值生成第一数值,这样,基于第二记录能够得到唯一对应的第一数值,建立第一数值和第二记录的对应关系,从而实现关联的第一记录和第二记录存储在同一节点。
例如,如图3示出的基于第一数据表确定第二数据表的第二字段的示意图,第一数据表为订单表,包括订单ID、商品名、价格三个字段,第一数据表中每条第一记录表征一个订单的信息。第二数据表为用户表,包括电话号码、住址、备注三个字段,第二数据表中每条第二记录表征一个用户的信息。由于用户的消费观念差异较大,不同用户购买的商品类型存在差异,即使在购买相同商品时价格也有差异。可见,订单表的商品名、价格等字段的字段值与对应的用户强相关,而第二数据表中的电话号码可以较好地区分用户,能够实现标识用户的身份的效果,因而基于第一数据表中的至少一个字段,在第二数据表的字段中确定第二字段。
在一实施例中,所述基于所述第二记录的第二字段的字段值,生成所述第一数值,包括:
基于所述第二记录的第二字段的字段值,生成第一哈希值;
对所述第一哈希值取余数,得到所述第一数值。
第一数值可以通过如下公式1计算得到:
a=crc16(key)mod n (1)
这里,a表征第一数值,key表征第二字段的字段值,n可以设置为设定系统可扩容最大节点数。
这里,计算第二字段的字段值的哈希值以循环冗余校验(CRC,Cyclic RedundancyCheck)算法中的CRC16的为例,在实际应用中还可以使用CRC8、CRC16等哈希算法。
通过哈希算法生成第一数值,保证第一数值能够均匀分布在可取值范围空间内,这样,在将处理后的第一记录存储至第一数值指示的第一节点时,能够使记录均匀地存储在各节点中,提高了记录分布的均匀性。
在一实施例中,所述为第一记录生成第一字段的第一字段值,包括:
在所述第一记录的第三字段的字段值中嵌入所述第一数值,得到所述第一记录的第一字段的第一字段值。
通过在第一记录的第三字段的字段值中嵌入第一数值,得到第一记录的第一字段的字段值。
这里,第三字段和第一字段可以是同一字段,换句话说,可以在处理前的第一字段的字段值中嵌入第一数值,得到处理后的第一字段的字段值。处理前的第一字段的字段值可以是根据分布式ID生成算法生成的长整型数值,这里的分布式ID生成算法包括但不限于Snowflake算法。
这里,第三字段和第一字段也可以不是同一字段,也就是说,利用第一字段记录第三字段的字段值和第一数值,处理后的第一字段的字段值用于存储第三字段的字段值和第一数值。
在第三字段的字段值中嵌入第一数值时,将第一数值对应的第一文本嵌入第三字段的字段值对应的第二文本,再将处理后的文本转化得到第一字段值。例如,基于第一数值1234确定对应的第一文本为“2222”,第三字段的字段值对应的第二文本为“1111222233334444555”,处理后的文本为“11112222333344441234555”,将处理后的文本转化得到第一字段值为11112222333344441234555。
这样,基于第一字段的字段值中包含的第一数值的信息,能够将第一记录对应存储至第一数值指示的第二记录所在的第一节点,从而使关联记录存储在同一节点上,提高了关联记录存储的集中性,基于以上数据存储方案,在读取数据时,能够减少对不同节点的读取操作次数,从而提升了读取操作的读取效率。
在一实施例中,所述在所述第一记录的第三字段的字段值中嵌入所述第一数值,包括:
将所述第一记录的第三字段的字段值与所述第一数值进行拼接。
这里,通过将第一记录的第三字段的字段值与第一数值进行拼接,得到第一记录的第一字段的字段值。在拼接时,可以将第一数值对应的第一文本拼接在第三字段的字段值对应的第二文本之前,也可以将第一数值对应的第一文本拼接在第三字段的字段值对应的第二文本之后。
这样,基于第一字段的字段值中包含的第一数值的信息,能够将第一记录对应存储至第一数值指示的第二记录所在的第一节点,从而使关联记录存储在同一节点上,提高了关联记录存储的集中性,基于以上数据存储方案,在读取数据时,能够减少对不同节点的读取操作次数,从而提升了读取操作的读取效率。
在一实施例中,可以在第一数据表中确定一个第一字段,第一数据表中的所有第一记录在第一字段的字段值为空,将生成的第一数值写入第一记录的第一字段。也就是说,第一字段主要用于存储第一数值。这样,根据第一字段的字段值即第一数值,在存储第一记录时,可以根据第一字段的字段值直接确定第一节点。
在一实施例中,所述基于所述第一字段值,将处理后的第一记录存储至所述第一节点,包括:
基于所述第一字段值对应的第一数值,确定所述第一记录对应的第一槽位;
根据设定的映射关系,将所述第一记录存储至所述第一槽位对应的第一节点;所述映射关系表征每个节点和对应的槽位的关系。
在需要将第一记录存储至节点时,根据处理后的第一记录的第一字段值对应的第一数值,确定第一记录对应的第一槽位,并根据设定的节点和对应槽位的映射关系,将第一记录存储至第一槽位对应的第一节点。这里,槽位为虚拟槽分区,槽位的数量一般设置为远大于节点的数量,从而方便数据拆分和系统集群扩展。
如图4示出的存储层次关系的示意图,对于系统中的集群,基于第二记录的第二字段生成第一数值,基于生成的第一数值为第一记录生成第一字段的第一字段值,根据第一字段值对应的第一数值确定第一记录对应的槽位,并根据设定的映射关系将第一记录存储至对应的第一节点。
基于第一数值将第二记录存储于第一节点,在需要将第一记录存储至节点时,基于第一字段值对应的第一数值,将第一记录存储至存有第二记录的第一节点,能够将记录存储至存有关联记录的节点上,提高了关联记录存储的集中性,基于以上数据存储方案,在读取数据时,能够减少对不同节点的读取操作次数,从而提升了读取操作的读取效率。同时,利用节点和槽位的对应关系,将不关联的记录均匀地分配到各节点上,而关联记录存储在同一节点上,在进行扩容或缩容时能够尽可能少的数据迁移。
在实际应用中,如图5示出的存储对应关系的示意图,在数据表的记录和节点之间引入槽位,记录与槽位之间存在多对一的对应关系,槽位和节点之间存在实现多对一关系。可以根据分布式系统最大的扩容节点数进行槽位数量的设定,例如将槽位设置n=2048,代表分布式系统最大的扩容节点数为2048个。基于选定的第二字段计算出用于分片的第一数值,使用关联的数据表的第一字段值中的第一数值映射到槽位,每个第一数值映射到一个具体的槽位,第一数值相同的关联的记录会映射到同一槽位中。系统中各节点与槽位的对应关系可以根据需要设定分配,根据节点的设备的实际情况配置槽位对应的节点,拥有高配置设备的节点可以多分配槽位。根据配置的槽位和节点映射关系,对应到槽位的记录会对应存储至对应的实际节点上。
如图6示出的槽位和节点映射关系的示意图,设定的最大的扩容节点数n=2048,通过公式1计算出第一记录映射到的槽位a,槽位到节点的映射规则为平均分配到4个节点上,节点1对应的槽位区间范围为0到511,节点2对应的槽位区间范围为512到1023,节点3对应的槽位区间范围为1024到1535,节点4对应的槽位区间范围为2048。由于关联的记录的第一字段值对应相同的第一数值,记录会映射到相同的槽位,最终存储在同一个节点上。
由于分布式系统涉及到的数据量变化,分布式系统需要增加或减少节点,在对系统扩容或缩容时,也存在数据迁移量较大的问题,需要较长的维护时间,降低了电子设备的可用性。在一实施例中,所述方法还包括:
更新至少一个节点对应的设定的映射关系;
基于更新后的映射关系,将至少一个槽位的记录迁入至对应的节点。
这里,对设定的节点和对应槽位的映射关系进行更新,基于更新后的映射关系,将至少一个槽位对应的记录迁入对应的节点。这样,在扩容或缩容时将记录迁移映射为对槽位的迁移,在扩缩容时只需要对关联记录迁移,不关联的记录不受影响,通过关联记录和不关联记录的区别处理,降低扩缩容对记录的影响,从而实现记录的高效迁移。
下面结合应用实施例对本申请再作进一步的详细描述。
相关技术中,根据类型键值将数据映射到不同的分片上,导致关联的数据分散到不同的分片,为了实现单一操作,需要并发请求到所有符合路由规则的分片,并对所有结果进行归并,产生大量的跨分片查询,而跨分片查询的表连接需要在网络中传输大量的数据,在读取数据时,对不同节点的读取操作次数增加,导致系统的读取效率不高,降低了分布式存储系统的性能。同时,由于关联数据在分片的存储分散,在对系统扩容或缩容时,也存在数据迁移量较大的问题,需要较长的维护时间,可能需要停服迁移,降低了电子设备的可用性,甚至可能引发故障。
基于此,在本申请应用实施例提供了一种基因法数据分片方法,将存在关联的数据的共同相关属性作为数据基因的生成依据,根据数据基因划分分片节点,并将相关记录存储在同一节点上,这样,提高了关联数据存储的集中性,增加了读取数据时对单一节点的读取操作概率,减少对不同节点的读取操作次数,提升了读取效率。同时基于节点和对应槽位的映射关系,将数据迁移映射为槽的迁移,实现平滑的扩容或缩容。
结合图7,对应的基因法生成分片键键值的流程示意图,包括以下步骤:
步骤701:确定基因字段。
通常根据对应场景下确定第二数据表中价值最高的字段,将价值最高的字段作为产生数据基因的基因字段。
这里,影响字段价值的因素,包括但不限于字段的字段值的缺失比例、字段的字段值的使用频率、字段的字段值能否用于区分记录数据。
步骤702:计算数据基因。
根据基因字段,根据公式1计算出数据基因的数值。
这里,根据CRC16算法来取模得到数据基因,通过数据基因映射数据所分配的槽位。
步骤703:确定分片键字段。
确定数据表之间的关联关系,并确定与第二数据表关联的第一数据表的分片键字段。
步骤704:生成分片键键值。
根据关联的数据基因生成第一数据表的分片键键值,通常分片键键值为ID值,生成的分片键键值可以是设定位数的。
在实际应用中,如图8示出的分片键键值示意图,前19位为Snowflake算法生成的长整型数值,不足19位的在最前端用0补齐,后4位为关联的数据基因,不足四位的在最前端用0补齐。
步骤705:确定数据分片。
基因字段的数据被切分到一个分片,根据数据基因生成分片键键值的关联数据也会切分到同一个分片,从而使存在关联的数据存放在相同的分片上。
这里,在根据分片键键值做分片操作时,只需要根据分片键键值最后四位表征的数据基因,便可路由至对应的基因字段的数据所在的分片。
这样,基于数据基因的分片存储方法,基于数据的关联关系进行数据分片,将关联数据存储于同一分片节点,提高了关联数据存储的集中性,能够减少场景中的关联数据的跨分片查询的操作,从而减少跨分片操作开销,减少了读取操作的次数,提升了分布式系统的性能。
在实际应用中,如图9示出的分片存储数据示意图,用户表的电话号码字段作为基因字段,订单表的订单ID和家庭表的家庭ID作为分片键,如图10示出的分片键键值示意图,嵌入根据对应电话号码字段生成的数据基因,前19位为Snowflake算法生成的长整型数值,后4位为关联的数据基因。
这样,基于同一分片上的用户对应的家庭表数据和订单表数据,就可以实现数据的进行关联查询,这种基于关联关系生成数据基因的方法,能够减少场景中的跨分片查询的操作,从而减少跨分片操作开销,提升分布式存储系统的性能。
结合图11,对应的系统扩容方法,包括以下步骤:
步骤1101:为新增的节点分配节点对应的槽位区间范围,并对应修改原有节点槽位区间范围。
步骤1102:根据槽位区间范围确定需要迁移到新增节点的数据,将原有节点中对应槽位区间范围的数据拷贝到新增节点。
此时原有节点上还保留保存这部分数据。
步骤1103:更新节点和对应槽位的映射关系,将更新后的映射关系修改至配置中生效。
此时,在新增节点的槽位区间范围的新请求会到达新增节点,原有节点的对应槽位区间范围的数据已失效。
步骤1104:删除原有节点中对应槽位区间范围的数据。
在实际应用中,如图6示出的槽位和节点映射关系的示意图,系统中原有4个节点平均分配,此时在系统中新增节点5,并平均分配原有节点中的数据,节点4的槽位区间范围改为1536到1971,节点5的槽位区间范围为1972到2048,那么只需要将节点4上原有的1972到2048槽位对应的数据拷贝到节点5上,如图12所示出的数据拷贝示意图,完成后再更新节点和对应槽位的映射关系,这时基于数据基因映射的槽位不会发生变化,而槽位会映射到新节点5上,此时可以删除节点4上槽位1972到2048对应的数据。例如,如图13所示出的扩容前后数据映射关系示意图,槽位为1984和2005的数据从节点4拷贝到节点5。
这样,通过将数据到节点的映射关系转换为槽位的映射关系,在扩缩容时只需要对关联记录迁移,不关联的记录不受影响,通过关联记录和不关联记录的区别处理,降低扩缩容时数据迁移对系统的影响,从而避免在扩缩容时造成系统阻塞,实现记录的高效迁移。
在实际应用中,在千万级的用户量下,数据库平均响应时间仅为1ms,能够提升分布式存储系统的性能。
为了实现本申请实施例的方法,本申请实施例还提供了一种数据存储装置,设置在第一电子设备上,如图14所示,该装置包括:
第一生成单元1401,用于为第一记录生成第一字段的第一字段值;所述第一字段值表征基于第一数值确定出的字段值;所述第一数值基于第二记录的第二字段的字段值生成,用于指示存储所述第二记录的第一节点;
存储单元1402,用于基于所述第一字段值,将处理后的第一记录存储至所述第一节点;其中,
所述第一记录表征与所述第二记录归属不同数据表且存在关联的记录。
其中,在一实施例中,所述第一生成单元1401,用于:
在所述第一记录的第三字段的字段值中嵌入所述第一数值,得到所述第一记录的第一字段的第一字段值。
在一实施例中,所述第一生成单元1401,用于:
将所述第一记录的第三字段的字段值与所述第一数值进行拼接。
在一实施例中,所述存储单元1402,用于:
基于所述第一字段值对应的第一数值,确定所述第一记录对应的第一槽位;
根据设定的映射关系,将所述第一记录存储至所述第一槽位对应的第一节点;所述映射关系表征每个节点和对应的槽位的关系。
在一实施例中,所述装置还包括:
更新单元,用于更新至少一个节点对应的设定的映射关系;
迁移单元,用于基于更新后的映射关系,将至少一个槽位的记录迁入至对应的节点。
在一实施例中,所述装置还包括:
确定单元,用于基于所述第一记录归属的第一数据表的至少一个字段,在第二数据表的字段中确定第二字段;
第二生成单元,用于基于所述第二记录的第二字段的字段值,生成所述第一数值。
在一实施例中,所述第二生成单元,用于:
基于所述第二记录的第二字段的字段值,生成第一哈希值;
对所述第一哈希值取余数,得到所述第一数值。
实际应用时,所述第一生成单元1401、所述存储单元1402、所述更新单元、所述迁移单元、所述确定单元、所述第二生成单元可由基于数据存储装置中的处理器,比如中央处理器(CPU,Central Processing Unit)、数字信号处理器(DSP,Digital SignalProcessor)、微控制单元(MCU,Microcontroller Unit)或可编程门阵列(FPGA,Field-Programmable Gate Array)等实现。
需要说明的是:上述实施例提供的数据存储装置在进行数据存储时,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的程序模块完成,即将装置的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的数据存储装置与数据存储方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
基于上述程序模块的硬件实现,且为了实现本申请实施例的数据存储方法,本申请实施例还提供了一种电子设备,如图15所示,电子设备1500包括:
通信接口1510,能够与其它设备比如网络设备等进行信息交互;
处理器1520,与所述通信接口1510连接,以实现与其它设备进行信息交互,用于运行计算机程序时,执行上述一个或多个技术方案提供的方法。而所述计算机程序存储在存储器1530上。
具体地,所述处理器1520,用于:
为第一记录生成第一字段的第一字段值;所述第一字段值表征基于第一数值确定出的字段值;所述第一数值基于第二记录的第二字段的字段值生成,用于指示存储所述第二记录的第一节点;
基于所述第一字段值,将处理后的第一记录存储至所述第一节点;其中,
所述第一记录表征与所述第二记录归属不同数据表且存在关联的记录。
其中,在一个实施例中,所述处理器1520,用于:
在所述第一记录的第三字段的字段值中嵌入所述第一数值,得到所述第一记录的第一字段的第一字段值。
在一个实施例中,所述处理器1520,用于:
将所述第一记录的第三字段的字段值与所述第一数值进行拼接。
在一个实施例中,所述处理器1520,用于:
基于所述第一字段值对应的第一数值,确定所述第一记录对应的第一槽位;
根据设定的映射关系,将所述第一记录存储至所述第一槽位对应的第一节点;所述映射关系表征每个节点和对应的槽位的关系。
在一个实施例中,所述处理器1520,用于:
更新至少一个节点对应的设定的映射关系;
基于更新后的映射关系,将至少一个槽位的记录迁入至对应的节点。
在一个实施例中,所述处理器1520,用于:
基于所述第一记录归属的第一数据表的至少一个字段,在第二数据表的字段中确定第二字段;
基于所述第二记录的第二字段的字段值,生成所述第一数值。
在一个实施例中,所述处理器1520,用于:
基于所述第二记录的第二字段的字段值,生成第一哈希值;
对所述第一哈希值取余数,得到所述第一数值。
当然,实际应用时,电子设备1500中的各个组件通过总线系统1540耦合在一起。可理解,总线系统1540用于实现这些组件之间的连接通信。总线系统1540除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图15中将各种总线都标为总线系统1540。
本申请实施例中的存储器1530用于存储各种类型的数据以支持电子设备1500的操作。这些数据的示例包括:用于在电子设备1500上操作的任何计算机程序。
可以理解,存储器1530可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read OnlyMemory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory)、磁性随机存取存储器(FRAM,ferromagnetic random access memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,Random AccessMemory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static Random Access Memory)、同步静态随机存取存储器(SSRAM,Synchronous Static Random Access Memory)、动态随机存取存储器(DRAM,Dynamic Random Access Memory)、同步动态随机存取存储器(SDRAM,SynchronousDynamic Random Access Memory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double Data Rate Synchronous Dynamic Random Access Memory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous Dynamic Random Access Memory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic Random Access Memory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus Random Access Memory)。本申请实施例描述的存储器1530旨在包括但不限于这些和任意其它适合类型的存储器。
上述本申请实施例揭示的方法可以应用于处理器1520中,或者由处理器1520实现。处理器1520可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1520中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1520可以是通用处理器、DSP,或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器1520可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器1530,处理器1520读取存储器1530中的程序,结合其硬件完成前述方法的步骤。
可选地,所述处理器1520执行所述程序时实现本申请实施例的各个方法中由电子设备实现的相应流程,为了简洁,在此不再赘述。
在示例性实施例中,本申请实施例还提供了一种存储介质,即计算机存储介质,具体为计算机可读存储介质,例如包括存储计算机程序的存储器1530,上述计算机程序可由电子设备的处理器1520执行,以完成前述方法所述步骤。计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、Flash Memory、磁表面存储器、光盘、或CD-ROM等存储器。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置、电子设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,本申请实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。除非另有说明和限定,术语“连接”应做广义理解,例如,可以是电连接,也可以是两个元件内部的连通,可以是直接相连,也可以通过中间媒介间接相连,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。
另外,在本申请实例中,“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解“第一\第二\第三”区分的对象在适当情况下可以互换,以使这里描述的本申请的实施例可以除了在这里图示或描述的那些以外的顺序实施。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
在具体实施方式中所描述的各个实施例中的各个具体技术特征,在不矛盾的情况下,可以进行各种组合,例如通过不同的具体技术特征的组合可以形成不同的实施方式,为了避免不必要的重复,本申请中各个具体技术特征的各种可能的组合方式不再另行说明。

Claims (10)

1.一种数据存储方法,其特征在于,所述方法包括:
为第一记录生成第一字段的第一字段值;所述第一字段值表征基于第一数值确定出的字段值;所述第一数值基于第二记录的第二字段的字段值生成,用于指示存储所述第二记录的第一节点;
基于所述第一字段值,将处理后的第一记录存储至所述第一节点;其中,
所述第一记录表征与所述第二记录归属不同数据表且存在关联的记录。
2.根据权利要求1所述的数据存储方法,其特征在于,所述为第一记录生成第一字段的第一字段值,包括:
在所述第一记录的第三字段的字段值中嵌入所述第一数值,得到所述第一记录的第一字段的第一字段值。
3.根据权利要求2所述的数据存储方法,其特征在于,所述在所述第一记录的第三字段的字段值中嵌入所述第一数值,包括:
将所述第一记录的第三字段的字段值与所述第一数值进行拼接。
4.根据权利要求1所述的数据存储方法,其特征在于,所述基于所述第一字段值,将处理后的第一记录存储至所述第一节点,包括:
基于所述第一字段值对应的第一数值,确定所述第一记录对应的第一槽位;
根据设定的映射关系,将所述第一记录存储至所述第一槽位对应的第一节点;所述映射关系表征每个节点和对应的槽位的关系。
5.根据权利要求4所述的数据存储方法,其特征在于,所述方法还包括:
更新至少一个节点对应的设定的映射关系;
基于更新后的映射关系,将至少一个槽位的记录迁入至对应的节点。
6.根据权利要求1所述的数据存储方法,其特征在于,在所述为第一记录生成第一字段的第一字段值之前,所述方法还包括:
基于所述第一记录归属的第一数据表的至少一个字段,在第二数据表的字段中确定第二字段;
基于所述第二记录的第二字段的字段值,生成所述第一数值。
7.根据权利要求6所述的数据存储方法,其特征在于,所述基于所述第二记录的第二字段的字段值,生成所述第一数值,包括:
基于所述第二记录的第二字段的字段值,生成第一哈希值;
对所述第一哈希值取余数,得到所述第一数值。
8.一种数据存储装置,其特征在于,包括:
第一生成单元,用于为第一记录生成第一字段的第一字段值;所述第一字段值表征基于第一数值确定出的字段值;所述第一数值基于第二记录的第二字段的字段值生成,用于指示存储所述第二记录的第一节点;
存储单元,用于基于所述第一字段值,将处理后的第一记录存储至所述第一节点;其中,
所述第一记录表征与所述第二记录归属不同数据表且存在关联的记录。
9.一种电子设备,其特征在于,包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器,
其中,所述处理器用于运行所述计算机程序时,执行权利要求1至7任一项所述的数据存储方法的步骤。
10.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的数据存储方法的步骤。
CN202110931395.7A 2021-08-13 2021-08-13 数据存储方法、装置、电子设备及存储介质 Active CN115114282B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110931395.7A CN115114282B (zh) 2021-08-13 2021-08-13 数据存储方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110931395.7A CN115114282B (zh) 2021-08-13 2021-08-13 数据存储方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN115114282A true CN115114282A (zh) 2022-09-27
CN115114282B CN115114282B (zh) 2025-11-14

Family

ID=83325140

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110931395.7A Active CN115114282B (zh) 2021-08-13 2021-08-13 数据存储方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN115114282B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116737830A (zh) * 2023-06-13 2023-09-12 中国银行股份有限公司 批量数据同步方法、装置、电子设备和存储介质
CN117877171A (zh) * 2024-01-10 2024-04-12 中国工商银行股份有限公司 自助机管理方法、装置、计算机设备和存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104376025A (zh) * 2013-08-16 2015-02-25 华为技术有限公司 分布式数据库的数据存储方法和装置
CN109697066A (zh) * 2018-12-28 2019-04-30 第四范式(北京)技术有限公司 实现数据表拼接及自动训练机器学习模型的方法和系统
CN109739855A (zh) * 2018-12-28 2019-05-10 第四范式(北京)技术有限公司 实现数据表拼接及自动训练机器学习模型的方法和系统
CN111309734A (zh) * 2020-02-20 2020-06-19 第四范式(北京)技术有限公司 自动生成表数据的方法及系统
CN112347076A (zh) * 2020-11-05 2021-02-09 中国平安人寿保险股份有限公司 分布式数据库的数据存储方法、装置和计算机设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104376025A (zh) * 2013-08-16 2015-02-25 华为技术有限公司 分布式数据库的数据存储方法和装置
CN109697066A (zh) * 2018-12-28 2019-04-30 第四范式(北京)技术有限公司 实现数据表拼接及自动训练机器学习模型的方法和系统
CN109739855A (zh) * 2018-12-28 2019-05-10 第四范式(北京)技术有限公司 实现数据表拼接及自动训练机器学习模型的方法和系统
CN111309734A (zh) * 2020-02-20 2020-06-19 第四范式(北京)技术有限公司 自动生成表数据的方法及系统
CN112347076A (zh) * 2020-11-05 2021-02-09 中国平安人寿保险股份有限公司 分布式数据库的数据存储方法、装置和计算机设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116737830A (zh) * 2023-06-13 2023-09-12 中国银行股份有限公司 批量数据同步方法、装置、电子设备和存储介质
CN117877171A (zh) * 2024-01-10 2024-04-12 中国工商银行股份有限公司 自助机管理方法、装置、计算机设备和存储介质

Also Published As

Publication number Publication date
CN115114282B (zh) 2025-11-14

Similar Documents

Publication Publication Date Title
RU2658886C1 (ru) Способ управления файлами, распределенная система хранения и узел управления
US8793227B2 (en) Storage system for eliminating duplicated data
US11003625B2 (en) Method and apparatus for operating on file
CN110895445B (zh) 数据处理方法和系统
EP3825866A1 (en) Partition merging method and database server
WO2020253406A1 (zh) 一种数据处理方法、装置及计算机可读存储介质
CN104636286B (zh) 用于数据访问的方法和设备
CN107092439A (zh) 一种数据存储的方法及设备
CN110908609B (zh) 一种磁盘处理的方法、系统、设备及可读存储介质
TW201025114A (en) File system for storage device which uses different cluster sizes
CN112417036A (zh) 分布式存储系统中处理对象的元数据的方法及装置
JP2008225765A (ja) ネットワークストレージ・システムとその管理方法及び制御プログラム
CN106796588B (zh) 索引表的更新方法和设备
CN103473298B (zh) 数据归档方法和装置以及存储系统
CN110147203B (zh) 一种文件管理方法、装置、电子设备及存储介质
WO2019165763A1 (zh) 一种用于查询数据的方法
WO2021174836A1 (zh) 差分包生成方法方法、装置、计算机设备及存储介质
US20240160528A1 (en) Data Storage Method and Apparatus in Storage System
CN116991897A (zh) 一种基于磁盘存储的查询方法及装置
CN115114282B (zh) 数据存储方法、装置、电子设备及存储介质
CN107798063B (zh) 快照处理方法和快照处理装置
CN115857801A (zh) 一种数据迁移方法、装置、电子设备及存储介质
JP2011215835A (ja) 全文検索機能を備えるストレージ装置
CN107423425B (zh) 一种对k/v格式的数据快速存储和查询方法
CN115481103A (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
GR01 Patent grant
GR01 Patent grant