数据存储方法及装置、数据查找方法及装置制造方法及图纸

技术编号:33276054 阅读:11 留言:0更新日期:2022-04-30 23:34
本说明书实施例提供了数据存储方法及装置、数据查询方法及装置,数据存储方法应用于数据库引擎,数据库引擎通过N层的结构以文件的形式存储数据,N为大于1的正整数,方法包括:确定待存储至N层中第i层的第一数据,第一数据具有第一数据标识;根据预设的映射函数和所述第i层的文件的第一数目对第一数据标识进行映射,以确定第一数据标识在第i层的文件中的第一文件编号;将第一数据存储至第一文件编号对应的第一文件。通过本说明书实施例提供的技术方案,基于映射函数和层的文件数目,快速精准的实现同一层的数据分割,进一步降低数据查找时层的文件定位的时间。时层的文件定位的时间。时层的文件定位的时间。

【技术实现步骤摘要】
数据存储方法及装置、数据查找方法及装置


[0001]本说明书一个或多个实施例涉及数据存储
,尤其涉及数据存储方法及装置、数据查找方法及装置。

技术介绍

[0002]在LSM(Log Structured Merge)的存储方式中,为了提升写入性能,通常会采用数据分层的组织方式,在任意一层中,通过对主键key排序后划分的方式将数据切割为多个文件进行存储。同时,该层的数据积累到一定量之后,将该层的数据存储到下一层;通常,随着层数的升高,数据规模变大。
[0003]目前,上述数据分割的方式导致数据查找时文件定位的时间较长。

技术实现思路

[0004]本说明书一个或多个实施例描述了一种数据存储的方法及装置、数据查找的方法及装置,可以基于映射函数和层的文件数目,快速精准的实现同一层的数据分割,进一步降低数据查找时层的文件定位的时间。
[0005]根据第一方面,提供了一种数据存储方法,应用于数据库引擎,所述数据库引擎通过N层的结构以文件的形式存储数据,所述N为大于1的正整数,所述方法包括:确定待存储至所述N层中第i层的第一数据,所述第一数据具有第一数据标识;根据预设的映射函数和所述第i层的文件的第一数目对所述第一数据标识进行映射,以确定所述第一数据标识在所述第i层的文件中的第一文件编号;将所述第一数据存储至所述第一文件编号对应的第一文件中。
[0006]根据一种可能的实施方式,所述映射函数包括第一函数和第二函数,所述根据预设的映射函数和所述第i层的文件的第一数目对所述第一数据标识进行映射,以确定所述第一数据标识在所述第i层的文件中的第一文件编号,包括:利用第一函数,对所述第一数据标识进行第一映射,得到所述第一数据标识对应的第一映射数值;利用第二函数,对所述第一数目和所述第一映射数值进行计算,得到所述第一文件编号。
[0007]在一个实施例中,所述第一函数为哈希函数;所述第二函数为针对所述第一数目的取模函数。
[0008]根据一种可能的实施方式,确定待存储至所述N层中第i层的第一数据,包括:响应于预设触发条件,从第i

1层的第二文件中确定所述第一数据,其中第i

1层包含第二数目的文件,所述第二数目小于所述第一数目。
[0009]在一个实施例中,所述预设触发条件包括以下之一:所述第i

1层的数据数量达到第一阈值;所述第二文件中的数据数量达到第二阈值。
[0010]在一个实施例中,所述方法还包括:根据所述第二文件的第二文件编号和层间文件重叠关系,确定所述第i层中与所述第二文件存在重叠关系的重叠文件编号;基于所述第二文件编号和重叠文件编号,进行文件数据管理。
[0011]根据一种实施方式,所述重叠文件编号与所述第二文件编号之差,为所述第二数目的倍数。
[0012]根据一种实施方式,所述文件数据管理包括以下中至少一项:文件合并,文件垃圾回收。
[0013]在一个实施例中,所述第二文件中还包括具有第二数据标识的第二数据,所述第二数据标识经所述映射函数映射为所述第一文件编号:所述将所述第一数据存储至所述第一文件编号对应的第一文件中,包括:至少将所述第一数据和第二数据,批量存储至所述第一文件。
[0014]在上述实施方式的一个实施例中,所述第一数据标识为所述第一数据的主键。
[0015]根据第二方面,提供了一种数据查询方法,应用于数据库引擎,所述数据库引擎通过N层的结构以文件的形式存储数据,包括:确定待查询的第一数据标识;按照从上层到下层的顺序对所述N层进行逐层查询,其中针对任意当前层,根据预设的映射函数和当前层的文件数目对所述第一数据标识进行映射,将映射结果作为当前层中待查询的文件编号,直到查找到第i层的第一文件编号,所述第i层的第一文件编号对应的第一文件中存储有所述第一数据标识对应的第一数据;从所述第一文件中提取出所述第一数据。
[0016]根据一种可能的实施方式,所述映射函数包括第一函数和第二函数,所述根据预设的映射函数和当前层的文件数目对所述第一数据标识进行映射,包括:利用第一函数,对所述第一数据标识进行第一映射,得到所述第一数据标识对应的第一映射数值;利用第二函数,对所述当前层的文件数目和所述第一映射数值进行计算,得到所述当前层中待查询的文件编号。
[0017]在一个实施例中,所述第一函数为哈希函数;所述第二函数为针对所述第一数目的取模函数。
[0018]根据第三方面,提供了一种数据存储装置,部署在数据库引擎中,所述数据库引擎通过N层的结构以文件的形式存储数据,所述N为大于1的正整数,装置包括:数据确定模块,配置为确定待存储至所述N层中第i层的第一数据,所述第一数据具有第一数据标识;映射模块,配置为根据预设的映射函数和所述第i层的文件数目对所述第一数据标识进行映射,以确定所述第一数据标识在所述第i层的文件中的第一文件编号;存储模块,配置为将所述第一数据存储至所述第一文件编号对应的第一文件中。
[0019]根据第四方面,提供了一种数据查找装置,部署在数据库引擎中,所述数据库引擎通过N层的结构以文件的形式存储数据,装置包括:标识确定单元,配置为确定待查询的第一数据标识;查找单元,配置为按照从上层到下层的顺序对所述N层进行逐层查询,其中针对任意当前层,根据预设的映射函数和当前层的文件数目对所述第一数据标识进行映射,将映射结果作为当前层中待查询的文件编号,直到查找到第i层的第一文件编号,所述第i层的第一文件编号所对应的第一文件中存储有所述第一数据标识对应的第一数据;提取单元,配置为从所述第一文件中提取出所述第一数据。
[0020]根据第五方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面或第二方面所述的方法。
[0021]根据第六方面,提供了一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面或第二方面的方法。
[0022]在本说明书的实施例中,针对任意层,通过预设的映射函数和层的文件数目,快速精准的实现同一层的数据分割。进一步地,基于如此形成的N层的结构,可以快速精准地实现在数据查找时层的文件定位以及层间重叠文件合并时的重叠文件定位。
附图说明
[0023]为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
[0024]图1示出数据库的N层结构的示意图;图2a示出N层结构的初始层间数据存储的示意图;图2b示出N层结构的同一层的数据分割的示意图;图2c示出N层结构的层间重叠文件合并的示意图;图3示出在一个实施例中N层结构的示意图;图4a示出一个实施例中的同一层的数据分割的示例图;图4b示出一个实施例中的初始层间数本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据存储方法,应用于数据库引擎,所述数据库引擎通过N层的结构以文件的形式存储数据,所述N为大于1的正整数,所述方法包括:确定待存储至所述N层中第i层的第一数据,所述第一数据具有第一数据标识;根据预设的映射函数和所述第i层的文件的第一数目对所述第一数据标识进行映射,以确定所述第一数据标识在所述第i层的文件中的第一文件编号;将所述第一数据存储至所述第一文件编号对应的第一文件中。2.根据权利要求1所述的方法,其中,所述映射函数包括第一函数和第二函数,所述根据预设的映射函数和所述第i层的文件的第一数目对所述第一数据标识进行映射,以确定所述第一数据标识在所述第i层的文件中的第一文件编号,包括:利用第一函数,对所述第一数据标识进行第一映射,得到所述第一数据标识对应的第一映射数值;利用第二函数,对所述第一数目和所述第一映射数值进行计算,得到所述第一文件编号。3.根据权利要求2所述的方法,其中,所述第一函数为哈希函数;所述第二函数为针对所述第一数目的取模函数。4.根据权利要求1所述的方法,其中,确定待存储至所述N层中第i层的第一数据,包括:响应于预设触发条件,从第i

1层的第二文件中确定所述第一数据,其中第i

1层包含第二数目的文件,所述第二数目小于所述第一数目。5.根据权利要求4所述的方法,其中,所述预设触发条件包括以下之一:所述第i

1层的数据数量达到第一阈值;所述第二文件中的数据数量达到第二阈值。6.根据权利要求4所述的方法,其中,所述方法还包括:根据所述第二文件的第二文件编号和层间文件重叠关系,确定所述第i层中与所述第二文件存在重叠关系的重叠文件编号;基于所述第二文件编号和重叠文件编号,进行文件数据管理。7.根据权利要求6所述的方法,其中,所述重叠文件编号与所述第二文件编号之差,为所述第二数目的倍数。8.根据权利要求6所述的方法,其中,所述文件数据管理包括以下中至少一项:文件合并,文件垃圾回收。9.根据权利要求4所述的方法,其中,所述第二文件中还包括具有第二数据标识的第二数据,所述第二数据标识经所述映射函数映射为所述第一文件编号:所述将所述第一数据存储至所述第一文件编号对应的第一文件中,包括:至少将所述第一数据和第二数据,批量存储至所述第一文件。10.根据权利要求1所述的方法,其中,所述第一数据标识为所述第一数据的主键。11.一种数据查询方法,应用于数据库引擎,所述数据库引擎通过N层的结构以文件的形式存储数据;所述方法包括:确定待查询的第一数...

【专利技术属性】
技术研发人员:黄华江进宋杰刘静怡
申请(专利权)人:支付宝杭州信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1