CN114519125A - 数据写入方法、装置及服务器 - Google Patents
数据写入方法、装置及服务器 Download PDFInfo
- Publication number
- CN114519125A CN114519125A CN202011306756.0A CN202011306756A CN114519125A CN 114519125 A CN114519125 A CN 114519125A CN 202011306756 A CN202011306756 A CN 202011306756A CN 114519125 A CN114519125 A CN 114519125A
- Authority
- CN
- China
- Prior art keywords
- written
- content
- identification data
- sets
- writing
- 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
- 238000000034 method Methods 0.000 title claims abstract description 37
- 238000013507 mapping Methods 0.000 claims description 6
- 238000012545 processing Methods 0.000 description 10
- 238000013500 data storage Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/325—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/38—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/51—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/58—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
- G06F16/5866—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using information manually generated, e.g. tags, keywords, comments, manually generated location and time information
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/907—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开关于一种数据写入方法、装置及服务器,该数据写入方法包括:获取待写入内容的标识数据,确定所述待写入内容的标识数据在N个一级集合中的第一哈希码,N为正整数;读取目标集合所存储的数据,并得到第一读取结果,所述目标集合为所述N个一级集合中与所述第一哈希码对应的一级集合;根据所述第一读取结果,将所述待写入内容的标识数据写入与所述第一哈希码关联的集合中。这样可以降低数据的读取量,并提升待写入内容的标识数据的写入效率。
Description
技术领域
本公开涉及数据处理技术领域,尤其涉及一种数据写入方法、装置及服务器。
背景技术
在千亿文章数据库中检索相似文章的使用场景中,数据实时高效更新、快速检索是分析师经常关心的问题。由于HBase(分布式数据库,Hadoop DateBase)适合海量数据的存储,并且相似文章的集合可以根据行键做快速检索,因此业界往往采用HBase作为存储引擎。
相关技术中,一般采用一行多列的方式实现数据的读写,比如通过将相似文章的标识数据作为一个数据单元存入同一行的不同列中,逻辑上一行为一个集合。然而,随着写入的数据单元的增多,集合中的数据单元数量也越来越多,在需要检索并读取该集合时,Hbase引擎层会做大量的数据单元比对工作,进而影响数据的处理效率。
发明内容
本公开提供一种数据写入方法、装置及服务器,以至少解决相关技术中,一行多列的数据读写方案存在的处理效率差的问题。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种数据写入方法,包括:
获取待写入内容的标识数据,确定所述待写入内容的标识数据在N个一级集合中的第一哈希码,N为正整数;
读取目标集合所存储的数据,并得到第一读取结果,所述目标集合为所述N个一级集合中与所述第一哈希码对应的一级集合;
根据所述第一读取结果,将所述待写入内容的标识数据写入与所述第一哈希码关联的集合中。
可选的,所述根据所述第一读取结果,将所述待写入内容的标识数据写入与所述第一哈希码关联的集合中的步骤,包括:
在所述第一读取结果指示满足第一条件的情况下,将所述待写入内容的标识数据写入所述目标集合中;其中,所述第一条件为所述目标集合中数据的存储量大于零且小于预设存储量。
可选的,所述根据所述第一读取结果,将所述待写入内容的标识数据写入与所述第一哈希码关联的集合中的步骤,包括:
在所述第一读取结果指示满足第二条件的情况下,将所述目标集合拆分成N个二级集合,并确定所述待写入内容的标识数据在所述N个二级集合中的第二哈希码;其中,所述第二条件为所述目标集合中数据的存储量大于或等于预设存储量;
将所述待写入内容的标识数据写入所述N个二级集合中与所述第二哈希码对应的二级集合中。
可选的,所述根据所述第一读取结果,将所述待写入内容的标识数据写入与所述第一哈希码关联的集合中的步骤,包括:
在所述第一读取结果指示满足第三条件的情况下,获取分布式数据库的元信息;其中,所述第三条件为所述目标集合中数据的存储量为零;
基于所述元信息,将所述待写入内容的标识数据写入与所述第一哈希码关联的集合中。
可选的,所述基于所述元信息,将所述待写入内容的标识数据写入与所述第一哈希码关联的集合中的步骤,包括:
在所述元信息指示所述目标集合未被拆分的情况下,将所述待写入内容的标识数据写入所述目标集合中。
可选的,所述基于所述元信息,将所述待写入内容的标识数据写入与所述第一哈希码关联的集合中的步骤,包括:
在所述元信息指示所述目标集合被拆分成N个二级集合的情况下,确定所述待写入内容的标识数据在所述N个二级集合中的第三哈希码;
读取所述N个二级集合中与所述第三哈希码对应的二级集合的内容,得到第二读取结果;
根据所述第二读取结果,将所述待写入内容的标识数据写入与所述第三哈希码关联的集合中。
可选的,所述将所述目标集合拆分成N个二级集合的步骤,包括:
在所述N个一级集合所在的目标行中确定N个列集合,所述N个列集合为所述目标行中除所述N个一级集合对应的列集合之外的N个列集合;
将所述目标集合拆分成N个二级集合,并建立所述N个二级集合与所述N个列集合的映射关系。
根据本公开实施例的第二方面,提供一种数据写入装置,包括:
确定模块,被配置为执行获取待写入内容的标识数据,确定所述待写入内容的标识数据在N个一级集合中的第一哈希码,N为正整数;
读取模块,被配置为执行读取目标集合所存储的数据,并得到第一读取结果,所述目标集合为所述N个一级集合中与所述第一哈希码对应的一级集合;
写入模块,被配置为执行根据所述第一读取结果,将所述待写入内容的标识数据写入与所述第一哈希码关联的集合中。
可选的,所述写入模块,被配置为执行在所述第一读取结果指示满足第一条件的情况下,将所述待写入内容的标识数据写入所述目标集合中;其中,所述第一条件为所述目标集合中数据的存储量大于零且小于预设存储量。
可选的,所述写入模块包括:
确定单元,被配置为执行在所述第一读取结果指示满足第二条件的情况下,将所述目标集合拆分成N个二级集合,并确定所述待写入内容的标识数据在所述N个二级集合中的第二哈希码;其中,所述第二条件为所述目标集合中数据的存储量大于或等于预设存储量;
第一写入单元,被配置为执行将所述待写入内容的标识数据写入所述N个二级集合中与所述第二哈希码对应的二级集合中。
可选的,所述写入模块包括:
获取单元,被配置为执行在所述第一读取结果指示满足第三条件的情况下,获取分布式数据库的元信息;其中,所述第三条件为所述目标集合中数据的存储量为零;
第二写入单元,被配置为执行基于所述元信息,将所述待写入内容的标识数据写入与所述第一哈希码关联的集合中。
可选的,所述第二写入单元,被配置为执行在所述元信息指示所述目标集合未被拆分的情况下,将所述待写入内容的标识数据写入所述目标集合中。
可选的,所述第二写入单元包括:
确定子单元,被配置为执行在所述元信息指示所述目标集合被拆分成N个二级集合的情况下,确定所述待写入内容的标识数据在所述N个二级集合中的第三哈希码;
读取子单元,被配置为执行读取所述N个二级集合中与所述第三哈希码对应的二级集合的内容,得到第二读取结果;
写入子单元,被配置为执行根据所述第二读取结果,将所述待写入内容的标识数据写入与所述第三哈希码关联的集合中。
可选的,所述确定单元包括:
确定子单元,被配置为执行在所述N个一级集合所在的目标行中确定N个列集合,所述N个列集合为所述目标行中除所述N个一级集合对应的列集合之外的N个列集合;
建立子单元,被配置为执行将所述目标集合拆分成N个二级集合,并建立所述N个二级集合与所述N个列集合的映射关系。
根据本公开实施例的第三方面,提供一种服务器,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现第一方面中任一项所述的数据写入方法。
根据本公开实施例的第四方面,提供一种存储介质,当所述存储介质中的指令由第一方面中任一项所述的数据写入方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,包括:可执行指令,当所述可执行指令在计算机上运行时,使得计算机能够执行第一方面中任一项所述的数据写入方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
通过将标识数据集合拆分成N个一级集合,标识数据集合为分布式数据库中用于存储待写入内容的标识数据的集合,并通过确定待写入内容的标识数据在N个一级集合中的第一哈希码,以确定N个一级集合中与第一哈希码对应的目标集合,即确定与待写入内容的标识数据待写入的目标集合,以便读取目标集合中存储的内容,实现对待写入内容的标识数据的查重读取,相较于直接在标识数据集合中进行待写入内容的标识数据的查重读取,可以有效降低数据的读取量,并提升待写入内容的标识数据的写入效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种数据写入方法的流程图。
图2是根据一示例性实施例示出的一种数据处理方法的流程图。
图3是根据一示例性实施例示出的一种数据写入装置的框图。
图4是根据一示例性实施例示出的一种服务器的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的一种数据写入方法的流程图,参照图1,该数据写入方法可以应用于服务器,该服务器可以作为分布式数据库,图1所示方法并包括以下步骤:
步骤101、获取待写入内容的标识数据,确定所述待写入内容的标识数据在N个一级集合中的第一哈希码。
该步骤中,待写入内容可以是文章、图片等内容,标识数据可以是文章或者图片的标识或者标记。
比如,在千亿级文章数据中检索相似文章的使用场景中,待写入内容可以是待写入文章,标识数据可以是该待写入文章的标识或者标记。
其中,一级集合可以是标识数据集合经拆分处理得到的,标识数据集合为分布式数据库中用于存储待写入内容的标识数据的集合。一个实施例中,可以基于分桶技术拆分标识数据集合,得到一级集合。比如,可以按照N个分桶个数,对标识数据集合进行拆分,以得到N个一级集合。
其中,第一哈希码用于确定待写入内容的标识数据在N个一级集合中对应的集合;比如,待写入内容的标识数据的数值为M,则则可以将待写入内容的标识数据的第一哈希码确定为M/N的余值。即可以通过求模取余的方式,确定待写入内容的标识数据在N个一级集合中的第一哈希码。
比如,基于分桶技术,将集合A拆分成四个一级集合,或者将集合B拆分成五个一级集合,则在求模取余之后,集合A的余数包括0,1,2,3;集合B的余数包括0,1,2,3,4;其中,余数即为每一一级集合对应的哈希码,即基于集合A拆分成的四个一级集合包括的哈希码为0,1,2,3,而基于集合B拆分成的五个一级集合包括的哈希码为0,1,2,3,4。
比如,待写入内容的标识数据写入N个一级集合中的编号为8,即待写入内容为第8个写入N个一级集合中的内容,通过求模取余,可以确定待写入内容的标识数据在集合A中的余数为0,即待写入内容的标识数据的在集合A中的四个一级集合中的第一哈希码为0;相应的,可以确定待写入内容的标识数据在集合B中的余数为3,即待写入内容的标识数据的在集合B中的五个一级集合中的第一哈希码为3。
其中,当集合A包括的四个一级集合,分别为第一一级集合、第二一级集合、第三一级集合和第四一级集合,并将第一一级集合对应的哈希码设置为0,将第二一级集合对应的哈希码设置为1,将第三一级集合对应的哈希码设置为2,将第四一级集合对应的哈希码设置为3,则可以确定待写入内容的标识数据对应的集合为哈希码为0的第一一级集合。
步骤102、读取目标集合所存储的数据,并得到第一读取结果。
该步骤中,目标集合为N个一级集合中与第一哈希码对应的一级集合,即可以是待写入内容的标识数据待写入的集合。
其中,读取目标集合所存储数据,可以读取目标集合中数据的存储量,还可以读取目标集合中是否存储有该待写入内容的标识数据相同的标识数据,避免重复写入;即第一读取结果至少包括目标集合中数据的存储量和查重信息,查重信息用于表示目标集合中是否存储有该待写入内容的标识数据相同的标识数据。而且,通过查重信息的读取,可以避免待写入内容的标识数据重复写入的问题。
步骤103、根据所述第一读取结果,将所述待写入内容的标识数据写入所述第一哈希码关联的集合中。
该步骤中,可以根据第一读取结果,确定待写入内容的标识数据对应的集合,并将其写入待写入内容的标识数据对应的集合中,从而实现标识数据的写入。
比如,当第一读取结果指示为目标集合中数据的存储量大于零且小于预设存储量时,且目标集合中未存储有与该待写入内容的标识数据相同的标识数据,即待写入内容的标识数据的第一次写入,则可以将待写入内容的标识数据写入目标集合中,从而实现待写入内容的标识数据的写入。
本公开中,通过将标识数据集合拆分成N个一级集合,并通过确定待写入内容的标识数据在N个一级集合中的第一哈希码,以确定N个一级集合中与第一哈希码对应的目标集合,即确定与待写入内容的标识数据待写入的目标集合,以便读取目标集合中存储的内容,实现对待写入内容的标识数据的查重读取,相较于直接在标识数据集合中进行待写入内容的标识数据的查重读取,可以有效降低数据的读取量,并提升待写入内容的标识数据的写入效率。
可选的,所述根据所述第一读取结果,将所述待写入内容的标识数据写入与所述第一哈希码关联的集合中的步骤,包括:
在所述第一读取结果指示满足第一条件的情况下,将所述待写入内容的标识数据写入所述目标集合中;其中,所述第一条件为所述目标集合中数据的存储量大于零且小于预设存储量。
本实施方式中,在第一读取结果指示目标集合中数据的存储量大于零且小于预设存储量的情况下,则说明目标集合中还可以写入数据;且第一读取结果还指示目标集合中未存储有与该待写入内容的标识数据相同的标识数据,即待写入内容的标识数据的第一次写入,则可以将待写入内容的标识数据写入目标集合中,从而实现待写入内容的标识数据的写入。
可选的,所述根据所述第一读取结果,将所述待写入内容的标识数据写入与所述第一哈希码关联的集合中的步骤,包括:
在所述第一读取结果指示满足第二条件的情况下,将所述目标集合拆分成N个二级集合,并确定所述待写入内容的标识数据在所述N个二级集合中的第二哈希码;其中,所述第二条件为所述目标集合中数据的存储量大于或等于预设存储量;
将所述待写入内容的标识数据写入所述N个二级集合中与所述第二哈希码对应的二级集合中。
本实施方式中,在第一读取结果指示目标集合中的存储的数据已经满了的情况下,通过将目标集合拆分成N个二级集合,以提升目标集合关联的N个二级集合的数据存储量,从而实现数据存储的动态扩展能力。
其中,在第一读取结果指示目标集合中数据的存储量大于或等于预设存储量的情况下,即目标集合中存储的数据已经满了,即目标集合中已经不能在存储新的数据了;且第一读取结果还指示目标集合中未存储有与该待写入内容的标识数据相同的标识数据,即待写入内容的标识数据的第一次写入;则可以将目标集合拆分成N个二级集合,并确定待写入内容的标识数据在N个二级集合中的第二哈希码,以便将待写入内容的标识数据写入N个二级集合中的第二哈希码对应的二级集合中,从而实现待写入内容的标识数据的写入。
比如,目标集合的数据存储上限为1MB,即1024KB,在每个待写入内容的标识数据的大小均在50KB以上的情况下,可以将目标集合的预设存储量可以设置为1000KB,即当目标集合中数据的存储量大于或者等于1000KB,则说明目标集合中已经不能存储新的数据。
其中,在将目标集合拆分成N个二级集合过程中,可以建立目标集合和N个二级集合的映射关系,且每个二级集合的数据存储量也可以设置为1MB,即相当于将存储上限为1MB的目标集合映射成N个存储上限为1MB的二级集合,从而实现数据存储的动态扩展能力。
其中,在确定待写入内容的标识数据在N个二级集合中的第二哈希码的过程中,可以先确定目标集合中已经存储的数据的数量,以及每一数据的写入编号,还有待写入内容的标识数据的编号;然后基于每一数据的编号,确定每一数据在N个二级集合中的哈希码,并将其写入对应的二级集合中。
比如,目标集合中存储的数据数量为100个,则可以确定待写入内容的标识数据的编号为101,在N为5的情况下,则可以将目标集合中存储的100个数据,分别写入5个二级集合中,并可以确定待写入内容的标识数据在5个二级集合中的第二哈希码,以便将待写入内容的标识数据写入N个二级集合中的第二哈希码对应的二级集合中,从而实现待写入内容的标识数据的写入。
其中,5个二级集合包括第一二级集合、第二二级集合、第三二级集合、第四二级集合和第五二级集合,并将第一二级集合对应的哈希码设置为0,将第二二级集合对应的哈希码设置为1,将第三二级集合对应的哈希码设置为2,将第四二级集合对应的哈希码设置为3,将第五二级集合对应的哈希码设置为4;则可以确定编号为101的待写入内容的标识数据对应的第二哈希码为0,即可以确定待写入内容的标识数据对应的集合为第一二级集合,即第一二级集合为待写入内容的标识数据待写入的集合,从而实现待写入内容的标识数据的待写入集合的确定。
另外,需要说明的是,N个一级集合可以是目标行中的N个列集合,即N个一级集合可以是目标行中的不同的列集合,N个列集合为目标行中除N一级集合对应的列集合之外的N个列集合;并通过将目标集合拆分成N个二级集合,并建立N个二级集合与N个列集合的映射关系,从而实现将目标集合拆分成N个二级集合,即实现目标集合的拆分,实现数据存储的动态扩展能力。
其中,N个一级集合和N个二级集合均未目标行中的列集合,即N个一级集合和N个二级集合为同一行的不同列,通过这样设置,可以提高分布式数据库的数据处理效率,进而提高数据的读写速度。
可选的,所述根据所述第一读取结果,将所述待写入内容的标识数据写入与所述第一哈希码关联的集合中的步骤,包括:
在所述第一读取结果指示满足第三条件的情况下,获取分布式数据库的元信息;其中,所述第三条件为所述目标集合中数据的存储量为零;
基于所述元信息,将所述待写入内容的标识数据写入与所述第一哈希码关联的集合中。
本实施方式中,目标集合中数据的存储量为零存在两种情况,其一是目标集合中还未存储数据,其二是目标集合已经被拆分过了,即目标集合的内容为空;在这种情况下,可以通过获取元信息,比如数据的写入记录,将待写入内容的标识数据写入与第一哈希码关联的集合中,从而实现待写入内容的标识数据的写入。
其中,在元信息指示目标集合未被拆分的情况下,则可以将待写入内容的标识数据直接写入目标集合中,从而实现待写入内容的标识数据的写入。
其中,在元信息指示目标集合被拆分成N个二级集合的情况下,则确定待写入内容的表述数据在N个二级集合中的第三哈希码;然后读取N个二级集合中与第三哈希码对应的二级集合的内容,得到第二读取结果;再根据第二读取结果,将待写入内容的标识数据写入第三哈希码关联的集合中,从而实现待写入内容的标识数据的写入。
其中,第二读取结果至少包括N个二级集合中与第三哈希码对应的二级集合中数据的存储量和查重信息,查重信息用于表示N个二级集合中与第三哈希码对应的二级集合中是否存储有该待写入内容的标识数据相同的标识数据。而且,通过查重信息的读取,可以避免待写入内容的标识数据重复写入的问题。
另外,在基于第二读取结果,将待写入内容的标识数据写入第三哈希码关联的集合中,可以基于第二读取结果的指示,实现待写入内容的标识数据的写入。比如,当第二读取结果指示N个二级集合中与第三哈希码对应的二级集合中数据的存储量大于零且小于预设存储量时,则将待写入内容的标识数据写入N个二级集合中与第三哈希码对应的二级集合中;当第二读取结果指示N个二级集合中与第三哈希码对应的二级集合中数据的存储量大于或等于预设存储量,则将N个二级集合中与第三哈希码对应的二级集合进行拆分,得到N个三级集合,并确定待写入内容的标识数据在N个三级集合中的第四哈希码,并将待写入内容的标识数据写入N个三级集合中与第四哈希码对应的三级集合中,以实现待写入内容的标识数据的写入。
本公开实施例提供的数据写入方法,通过获取待写入内容的标识数据,确定所述待写入内容的标识数据在N个一级集合中的第一哈希码,N为正整数;读取目标集合所存储的数据,并得到第一读取结果,所述目标集合为所述N个一级集合中与所述第一哈希码对应的一级集合;根据所述第一读取结果,将所述待写入内容的标识数据写入与所述第一哈希码关联的集合中。这样可以降低数据的读取量,并提升待写入内容的标识数据的写入效率。
图2是根据一示例性实施例示出的一种数据处理方法的流程图。参照图2,该数据处理方法可以应用于文章内容的读写,具体包括以下步骤:
步骤201、HBase的协处理器调用插入请求,向目标集合中插入待写入文章的标识数据。
步骤202、HBase的协处理器接收插入请求,并按照16个分桶长度计算的标识数据的哈希码。
步骤203、HBase的协处理器,以哈希码作为列名,查询对应的子集合是否已经存在。
步骤204、若是对应的子集合存在,且其存储的标识数据数量小于其存储上限值,则将待插入文章的标识数据写入该子集合中。
步骤205、若是对应的子集合存在,且其存储的标识数据数量达到其存储上限值,则将该子集合进行二次哈希处理。
其中,二次哈希处理的逻辑如下:
a)、解析该子集合,对其中每一个文章标识数据按照16个分桶长度做二次哈希,得到新的哈希码;
b)、以新的哈希码为列名,重新向HBase中插入经过二次哈希拆解后的更小的子集合;
c)、写入二次哈希元信息到Meta表中,表明对该子集合已做了二次哈希分桶的拆解;
d)、删除哈希码对应的列中的数据,即清理哈希码对应的分桶中的旧数据。
步骤206、若是对应的子集合不存在,且Meta表中未标记有做过二次哈希,则直接将待插入文章的标识数据写入到该子集合中。
步骤207、若是对应的子集合不存在,且Meta表中已标记做过二次哈希,那么获取待插入文章的标识数据的新哈希码,并继续步骤203。
在数据的查询过程中,HBase的协处理器读取整个目标集合中的数据;然后读取一行所有多列中的子集合,进而实现数据的读取。
这样,在存储相似文章的场景中,通过哈希避免了一行动态多列方案带来的读写效率差的问题,同时可以通过二次哈希技术保障数据的动态扩展能力,且无额外空间消耗。
图3是根据一示例性实施例示出的一种数据写入装置的框图。参照图3,该装置300包括确定模块301、读取模块302和写入模块303,其中:
确定模块301,被配置为执行获取待写入内容的标识数据,确定所述待写入内容的标识数据在N个一级集合中的第一哈希码,N为正整数;
读取模块302,被配置为执行读取目标集合所存储的数据,并得到第一读取结果,所述目标集合为所述N个一级集合中与所述第一哈希码对应的一级集合;
写入模块303,被配置为执行根据所述第一读取结果,将所述待写入内容的标识数据写入与所述第一哈希码关联的集合中。
可选的,所述写入模块303,被配置为执行在所述第一读取结果指示满足第一条件的情况下,将所述待写入内容的标识数据写入所述目标集合中;其中,所述第一条件为所述目标集合中数据的存储量大于零且小于预设存储量。
可选的,所述写入模块303包括:
确定单元,被配置为执行在所述第一读取结果指示满足第二条件的情况下,将所述目标集合拆分成N个二级集合,并确定所述待写入内容的标识数据在所述N个二级集合中的第二哈希码;其中,所述第二条件为所述目标集合中数据的存储量大于或等于预设存储量;
第一写入单元,被配置为执行将所述待写入内容的标识数据写入所述N个二级集合中与所述第二哈希码对应的二级集合中。
可选的,所述写入模块303包括:
获取单元,被配置为执行在所述第一读取结果指示满足第三条件的情况下,获取分布式数据库的元信息;其中,所述第三条件为所述目标集合中数据的存储量为零;
第二写入单元,被配置为执行基于所述元信息,将所述待写入内容的标识数据写入与所述第一哈希码关联的集合中。
可选的,所述第二写入单元,被配置为执行在所述元信息指示所述目标集合未被拆分的情况下,将所述待写入内容的标识数据写入所述目标集合中。
可选的,所述第二写入单元包括:
确定子单元,被配置为执行在所述元信息指示所述目标集合被拆分成N个二级集合的情况下,确定所述待写入内容的标识数据在所述N个二级集合中的第三哈希码;
读取子单元,被配置为执行读取所述N个二级集合中与所述第三哈希码对应的二级集合的内容,得到第二读取结果;
写入子单元,被配置为执行根据所述第二读取结果,将所述待写入内容的标识数据写入与所述第三哈希码关联的集合中。
可选的,所述确定单元包括:
确定子单元,被配置为执行在所述N个一级集合所在的目标行中确定N个列集合,所述N个列集合为所述目标行中除所述N个一级集合对应的列集合之外的N个列集合;
建立子单元,被配置为执行将所述目标集合拆分成N个二级集合,并建立所述N个二级集合与所述N个列集合的映射关系。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图4是根据一示例性实施例示出的一种用于数据写入的装置400的框图。例如,装置400可以被提供为一服务器。参照图4,装置400包括处理组件422,其进一步包括一个或多个处理器,以及由存储器432所代表的存储器资源,用于存储可由处理组件422的执行的指令,例如应用程序。存储器432中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件422被配置为执行指令,以执行上述方法数据写入方法。
装置400还可以包括一个电源组件426被配置为执行装置400的电源管理,一个有线或无线网络接口450被配置为将装置400连接到网络,和一个输入输出(I/O)接口458。装置400可以操作基于存储在存储器432的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
Claims (10)
1.一种数据写入方法,其特征在于,包括:
获取待写入内容的标识数据,确定所述待写入内容的标识数据在N个一级集合中的第一哈希码,N为正整数;
读取目标集合所存储的数据,并得到第一读取结果,所述目标集合为所述N个一级集合中与所述第一哈希码对应的一级集合;
根据所述第一读取结果,将所述待写入内容的标识数据写入与所述第一哈希码关联的集合中。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一读取结果,将所述待写入内容的标识数据写入与所述第一哈希码关联的集合中的步骤,包括:
在所述第一读取结果指示满足第一条件的情况下,将所述待写入内容的标识数据写入所述目标集合中;其中,所述第一条件为所述目标集合中数据的存储量大于零且小于预设存储量。
3.根据权利要求1所述的方法,其特征在于,所述根据所述第一读取结果,将所述待写入内容的标识数据写入与所述第一哈希码关联的集合中的步骤,包括:
在所述第一读取结果指示满足第二条件的情况下,将所述目标集合拆分成N个二级集合,并确定所述待写入内容的标识数据在所述N个二级集合中的第二哈希码;其中,所述第二条件为所述目标集合中数据的存储量大于或等于预设存储量;
将所述待写入内容的标识数据写入所述N个二级集合中与所述第二哈希码对应的二级集合中。
4.根据权利要求1所述的方法,其特征在于,所述根据所述第一读取结果,将所述待写入内容的标识数据写入与所述第一哈希码关联的集合中的步骤,包括:
在所述第一读取结果指示满足第三条件的情况下,获取分布式数据库的元信息;其中,所述第三条件为所述目标集合中数据的存储量为零;
基于所述元信息,将所述待写入内容的标识数据写入与所述第一哈希码关联的集合中。
5.根据权利要求4所述的方法,其特征在于,所述基于所述元信息,将所述待写入内容的标识数据写入与所述第一哈希码关联的集合中的步骤,包括:
在所述元信息指示所述目标集合未被拆分的情况下,将所述待写入内容的标识数据写入所述目标集合中。
6.根据权利要求4所述的方法,其特征在于,所述基于所述元信息,将所述待写入内容的标识数据写入与所述第一哈希码关联的集合中的步骤,包括:
在所述元信息指示所述目标集合被拆分成N个二级集合的情况下,确定所述待写入内容的标识数据在所述N个二级集合中的第三哈希码;
读取所述N个二级集合中与所述第三哈希码对应的二级集合的内容,得到第二读取结果;
根据所述第二读取结果,将所述待写入内容的标识数据写入与所述第三哈希码关联的集合中。
7.根据权利要求3所述的方法,其特征在于,所述将所述目标集合拆分成N个二级集合的步骤,包括:
在所述N个一级集合所在的目标行中确定N个列集合,所述N个列集合为所述目标行中除所述N个一级集合对应的列集合之外的N个列集合;
将所述目标集合拆分成N个二级集合,并建立所述N个二级集合与所述N个列集合的映射关系。
8.一种数据写入装置,其特征在于,包括:
确定模块,被配置为执行获取待写入内容的标识数据,确定所述待写入内容的标识数据在N个一级集合中的第一哈希码,N为正整数;
读取模块,被配置为执行读取目标集合所存储的数据,并得到第一读取结果,所述目标集合为所述N个一级集合中与所述第一哈希码对应的一级集合;
写入模块,被配置为执行根据所述第一读取结果,将所述待写入内容的标识数据写入与所述第一哈希码关联的集合中。
9.一种服务器,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至7中任一项所述的数据写入方法。
10.一种存储介质,当所述存储介质中的指令由服务器的处理器执行时,使得服务器能够执行如权利要求1至7中任一项所述的数据写入方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011306756.0A CN114519125A (zh) | 2020-11-19 | 2020-11-19 | 数据写入方法、装置及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011306756.0A CN114519125A (zh) | 2020-11-19 | 2020-11-19 | 数据写入方法、装置及服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114519125A true CN114519125A (zh) | 2022-05-20 |
Family
ID=81594295
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011306756.0A Pending CN114519125A (zh) | 2020-11-19 | 2020-11-19 | 数据写入方法、装置及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114519125A (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105518790A (zh) * | 2014-07-14 | 2016-04-20 | 华为技术有限公司 | 数据写入的方法及装置 |
CN106227794A (zh) * | 2016-07-20 | 2016-12-14 | 北京航空航天大学 | 时态图数据中动态属性数据的存储方法和装置 |
CN107315806A (zh) * | 2017-06-26 | 2017-11-03 | 杭州时趣信息技术有限公司 | 一种基于文件系统的嵌入式存储方法和装置 |
CN109600315A (zh) * | 2017-09-30 | 2019-04-09 | 阿里巴巴集团控股有限公司 | 数据通道的流控方法和调整方法 |
CN109800270A (zh) * | 2019-01-22 | 2019-05-24 | 青岛聚好联科技有限公司 | 一种数据存储和查询的方法及物联网系统 |
CN111177476A (zh) * | 2019-12-05 | 2020-05-19 | 北京百度网讯科技有限公司 | 数据查询方法、装置、电子设备及可读存储介质 |
CN111241195A (zh) * | 2020-01-02 | 2020-06-05 | 腾讯云计算(北京)有限责任公司 | 分布式系统的数据库处理方法、装置、设备及存储介质 |
CN111381779A (zh) * | 2020-03-05 | 2020-07-07 | 深信服科技股份有限公司 | 数据处理方法、装置、设备及存储介质 |
-
2020
- 2020-11-19 CN CN202011306756.0A patent/CN114519125A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105518790A (zh) * | 2014-07-14 | 2016-04-20 | 华为技术有限公司 | 数据写入的方法及装置 |
CN106227794A (zh) * | 2016-07-20 | 2016-12-14 | 北京航空航天大学 | 时态图数据中动态属性数据的存储方法和装置 |
CN107315806A (zh) * | 2017-06-26 | 2017-11-03 | 杭州时趣信息技术有限公司 | 一种基于文件系统的嵌入式存储方法和装置 |
CN109600315A (zh) * | 2017-09-30 | 2019-04-09 | 阿里巴巴集团控股有限公司 | 数据通道的流控方法和调整方法 |
CN109800270A (zh) * | 2019-01-22 | 2019-05-24 | 青岛聚好联科技有限公司 | 一种数据存储和查询的方法及物联网系统 |
CN111177476A (zh) * | 2019-12-05 | 2020-05-19 | 北京百度网讯科技有限公司 | 数据查询方法、装置、电子设备及可读存储介质 |
CN111241195A (zh) * | 2020-01-02 | 2020-06-05 | 腾讯云计算(北京)有限责任公司 | 分布式系统的数据库处理方法、装置、设备及存储介质 |
CN111381779A (zh) * | 2020-03-05 | 2020-07-07 | 深信服科技股份有限公司 | 数据处理方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107247808B (zh) | 一种分布式NewSQL数据库系统及图片数据查询方法 | |
CN104794123B (zh) | 一种为半结构化数据构建NoSQL数据库索引的方法及装置 | |
US7650326B2 (en) | Fast aggregation of compressed data using full table scans | |
CN113568995B (zh) | 基于检索条件的动态瓦片地图制作方法及瓦片地图系统 | |
CN110888837B (zh) | 对象存储小文件归并方法及装置 | |
CN104794228A (zh) | 一种搜索结果提供方法及装置 | |
CN106874348A (zh) | 文件存储和索引方法、装置及读取文件的方法 | |
CN105373541A (zh) | 数据库的数据操作请求的处理方法和系统 | |
CN112579595A (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
CN114911830A (zh) | 基于时序数据库的索引缓存方法、装置、设备及存储介质 | |
CN111914020A (zh) | 数据同步方法及装置、数据查询方法及装置 | |
US20110179013A1 (en) | Search Log Online Analytic Processing | |
CN100527131C (zh) | 一种ims数据库互动式访问方法和工具 | |
CN110020001A (zh) | 字符串数据的存储、查询方法以及相应的设备 | |
CN109271097A (zh) | 数据处理方法、数据处理装置和服务器 | |
CN111782886A (zh) | 元数据管理的方法和装置 | |
CN111125216A (zh) | 数据导入Phoenix的方法及装置 | |
CN114519125A (zh) | 数据写入方法、装置及服务器 | |
CN112860712B (zh) | 一种基于区块链的交易数据库构建方法、系统及电子设备 | |
CN111221814A (zh) | 二级索引的构建方法、装置及设备 | |
CN115809268A (zh) | 一种基于分片索引的自适应查询方法和装置 | |
CN114416741A (zh) | 基于多级索引的kv数据写入读取方法、装置及存储介质 | |
EP3995972A1 (en) | Metadata processing method and apparatus, and computer-readable storage medium | |
CN114564501A (zh) | 一种数据库数据存储、查询方法、装置、设备及介质 | |
CN114490737A (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 |