数据的存储方法、读取方法及计算机设备技术

技术编号:30429684 阅读:23 留言:0更新日期:2021-10-24 17:20
本申请适用于计算机技术领域,提供了数据的存储方法、读取方法及计算机设备,包括:获取需存储的数据,所述需存储的数据所对应的表为临时表;在日志结构合并树中存储所述需存储的数据,或,在内存中存储所述需存储的数据;在日志结构合并树中记录已存储的数据的索引。通过上述方法能够提高计算机设备的响应速度。上述方法能够提高计算机设备的响应速度。上述方法能够提高计算机设备的响应速度。

【技术实现步骤摘要】
数据的存储方法、读取方法及计算机设备


[0001]本申请属于计算机
,尤其涉及数据的存储方法、读取方法、存储装置、计算机设备及计算机可读存储介质。

技术介绍

[0002]目前,日志结构合并树(Log

Structured Merge Tree,LSMTree)是一种用于开发存储引擎的主流存储方式之一。
[0003]LSMTree主要由预写式日志(Write

Ahead logging,WAL)、内存表(Memtable)、只读内存表(Immutable Memtable)、有序字符串表(Sorted String Table,SSTable)组成。其中:
[0004]WAL:WAL是一种数据库中常用的用于保证持久性的手段。在LSMTree结构中,若数据先写入Memtable,在内存中进行排序,等到写入一定量后再顺序的写入硬盘,形成SSTable文件,则在Memtable还未转换为SSTable的过程中,若系统崩溃,将导致Memtable中的数据丢失。为了保证数据的持久性,LSMTree会先将数据顺序写入日志(Log),然后再将数据写入Memtable。这样即使系统崩溃了,也可以通过Log恢复Memtable中的数据。
[0005]Memtable:位于内存中。
[0006]Immutable Memtable:Immutable Memtable结构与Memtable结构完全相同,也是存在内存中,只是它不可写,只可读。当写入Memtable的数据达到阈值后,Memtable会转换为Immutable Memtable,该Immutable Memtable将交由后台线程异步的写入文件,生成SSTable。
[0007]SSTable:SSTable由Immutable Memtable生成的有序的存储写入的记录。
[0008]虽然LSMTree通过将随机输入/输出(Input/Output,I/O)转换为顺序I/O,已大大提升了写入性能,但其仍需占用一定的I/O资源,而I/O资源被占用将影响计算机设备的性能。故,可结合实际的应用场景进一步优化,以通过减少I/O来提升性能。

技术实现思路

[0009]本申请实施例提供了数据的存储方法,可以解决计算机设备响应速度过慢的问题。
[0010]第一方面,本申请实施例提供了一种数据的存储方法,包括:
[0011]获取需存储的数据,所述需存储的数据所对应的表为临时表;
[0012]在日志结构合并树中存储所述需存储的数据,或,在内存中存储所述需存储的数据;
[0013]在所述日志结构合并树中记录已存储的数据的索引。
[0014]第二方面,本申请实施例提供了一种数据的读取方法,包括:
[0015]接收数据的读取指令,所述读取指令携带需读取的数据对应的表的类型标识,以及,携带所述需读取的数据的索引值;
[0016]根据所述表的类型标识识别所述表是否为临时表;
[0017]若所述表为临时表,则根据所述需读取的数据的索引值和日志结构合并树,从所述日志结构合并树中读取对应的数据或者从内存和硬盘中读取对应的数据,其中,所述日志结构合并树记录了其存储的数据或存储在内存中的数据的索引。
[0018]第三方面,本申请实施例提供了一种数据的存储装置,包括:
[0019]需存储的数据获取模块,用于获取需存储的数据,所述需存储的数据所对应的表为临时表;
[0020]数据存储模块,用于在日志结构合并树中存储所述需存储的数据,或,在内存中存储所述需存储的数据;
[0021]对应关系记录模块,用于在所述日志结构合并树中记录已存储的数据的索引。
[0022]第四方面,本申请实施例提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面或第二方面所述的方法。
[0023]第五方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面或第二方面所述的方法。
[0024]第六方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在计算机设备上运行时,使得计算机设备执行上述第一方面或第二方面所述的方法。
[0025]本申请实施例与现有技术相比存在的有益效果是:
[0026]本申请实施例中,若需要在临时表中存入数据,则在日志结构合并树中存储该数据,或者在内存中存储该数据,再在日志结构合并树中记录其存储的数据或已存储在内存中的数据的索引。由于在基于日志结构合并树进行数据存储时,均没有对需存储的数据执行预写式日志的操作,而是直接执行数据存储的操作,因此,能够减少由于执行预写式日志的操作所占用的I/O资源,从而提高了计算机设备的写性能。此外,由于本申请实施例针对的表是临时表,而临时表中的数据是不需要保证持久性,因此,即使不执行预写式日志也不会产生不好的影响。
附图说明
[0027]为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
[0028]图1是本申请一实施例提供的一种数据的存储方法的流程图;
[0029]图2是本申请一实施例提供的另一种数据的存储方法的流程图;
[0030]图3是本申请一实施例提供的数据的存储方法的应用示意图;
[0031]图4是本申请一实施例提供的一种数据的读取方法的流程图;
[0032]图5是本申请另一实施例提供的数据的存储装置的结构框图;
[0033]图6是本申请一实施例提供的一种数据的读取装置的结构框图;
[0034]图7是本申请一实施例提供的一种计算机设备的结构示意图。
具体实施方式
[0035]以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
[0036]应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
[0037]还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
[0038]另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0039]在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据的存储方法,其特征在于,包括:获取需存储的数据,所述需存储的数据所对应的表为临时表;在日志结构合并树中存储所述需存储的数据,或,在内存中存储所述需存储的数据;在所述日志结构合并树中记录已存储的数据的索引。2.如权利要求1所述的数据的存储方法,其特征在于,若在内存中存储所述需存储的数据,则所述数据的存储方法,还包括:提取存储在所述内存中的数据的位置信息;所述在所述日志结构合并树中记录已存储的数据的索引,包括:在所述日志结构合并树的内存表中,记录所述存储在所述内存中的数据的索引值与所述存储在所述内存中的数据的位置信息的对应关系。3.如权利要求2所述的数据的存储方法,其特征在于,所述数据的存储方法,还包括:设置日志结构合并树的第一内存表阈值,所述第一内存表阈值用于指示所述内存表当前能够存储的数据量的最大值;所述在内存中存储所述需存储的数据,包括:确定所述内存中已存储的数据的大小以及所述内存表的大小之和,得到一和值;若所述和值不大于预设的临时表大小,则在内存中存储所述需存储的数据,所述预设的临时表大小小于所述第一内存表阈值。4.如权利要求3所述的数据的存储方法,其特征在于,所述数据的存储方法,还包括:若所述和值大于预设的临时表大小,则将所述第一内存表阈值降低到第二内存表阈值,以及,在硬盘中存储未存储的数据,并提取存储在所述硬盘的数据的位置信息,其中,所述第二内存表阈值小于所述预设的临时表大小,所述未存储的数据是指还没有被存储的所述需存储的数据;在日志结构合并树新建一个内存表,在所述新建的内存表中,记录所述存储在所述硬盘的数据的索引值与所述存储在所述硬盘的数据的位置信息的对应关系。5.如权利要求4所述的数据的存储方法,其特征在于,所述数据的存储方法,还包括:若所述和值...

【专利技术属性】
技术研发人员:熊志强
申请(专利权)人:深圳市汉云科技有限公司
类型:发明
国别省市:

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

1