一种数据存储方法、存储设备及计算机可读存储介质与流程

未命名 09-29 阅读:94 评论:0
1.本技术涉及数据处理
技术领域
:,具体涉及一种数据存储方法、存储设备及计算机可读存储介质。
背景技术
::2.在存储领域通常使用分布式存储的方式实现对数据的存储。在相关技术中,为满足高吞吐和低延时额需求,通常采用固态硬盘(solidstatedrive,ssd)介质或非易失性存储器(non-volatilememoryexpress,nvme)介质作为存储盘对数据进行存储。但在相关技术中,通过ssd或nvme的单位储存的成本较高,在需要对大量数据进行存储的情况下总存储成本较高。3.可见,相关技术中存在存储成本较高的问题。技术实现要素:4.本技术实施例提供一种数据存储方法、存储设备及计算机可读存储介质,以解决相关技术中存在存储成本较高的问题。5.为解决上述问题,本技术是这样实现的:第一方面,本技术实施例提供一种数据存储方法,应用于存储设备,所述存储设备包括单机存储引擎和硬盘驱动器hdd,所述单机存储引擎包括数据处理模块、用户态文件系统模块和裸设备管理模块,所述方法包括:获取目标数据,并将所述目标数据写入内存中;基于所述数据处理模块对所述内存中的所述目标数据进行处理,并基于所述数据处理模块的交互接口模块将处理后的数据写入所述用户态文件系统模块中;基于所述裸设备管理模块将所述用户态文件系统模块中的数据写入至所述hdd。6.第二方面,本技术实施例还提供一种存储设备,包括单机存储引擎和硬盘驱动器hdd,所述单机存储引擎包括数据处理模块、用户态文件系统模块和裸设备管理模块,所述存储设备还包括:获取模块,用于获取目标数据,并将所述目标数据写入内存中;处理模块,用于基于所述数据处理模块对所述内存中的所述目标数据进行处理,并基于所述数据处理模块的交互接口模块将处理后的数据写入所述用户态文件系统模块中;第一写入模块,用于基于所述裸设备管理模块将所述用户态文件系统模块中的数据写入至所述hdd。7.第三方面,本技术实施例还提供一种存储设备,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序,所述程序被所述处理器执行时实现如上述第一方面所述的数据存储方法的步骤。8.第四方面,本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述第一方面所述的数据存储方法的步骤。9.在本技术实施例中,通过基于数据处理模块对目标数据进行处理,得到中间数据,再将中间数据写入用户态文件系统模块,能提高存储效率,应对高吞吐和低延时的数据传输场景;再基于裸设备管理模块将用户态文件系统模块中的中间数据写入hdd,提高hdd的存储效率,且hdd的成本较低,在需要存储大量数据的情况下能有效降低存储成本。附图说明10.为更清楚地说明本技术实施例的技术方案,下面将对本技术实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。11.图1是本技术实施例提供的一种存储设备的结构示意图;图2是本技术实施例提供的一种存储方法的流程图;图3是本技术实施例提供的一种存储过程的示意图;图4是本技术实施例提供的写入速度对比图;图5是本技术实施例提供的一种存储设备的结构图;图6是本技术实施例提供的一种存储设备的结构图。具体实施方式12.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。13.请参见图1,图1是本技术实施例提供的存储设备的结构示意图,存储设备包括单机存储引擎和硬盘驱动器(harddiskdrive,hdd),其中,单机存储引擎为基于日志结构合并(logstructuredmerge,lsm)树构建的,用于存储键值对数据的单机数据库,可以应用于分布式存储系统(例如ceph)集群的对象存储设备(objectbasestoragedevice,osd)内部架构。单机存储引擎包括数据处理模块11、用户态文件系统模块12和裸设备管理模块13。单机存储引擎能对数据进行快速存储,以满足高吞吐和低时延的业务需求,具体见后续实施例。14.进一步地,单机存储引擎还提供交互接口模块,数据处理模块11通过交互接口模块与用户态文件系统模块12进行交互。15.其中,数据处理模块11用于对输入至存储设备的数据进行处理,并将处理后的数据写入文件中。用户态文件系统模块12用于存储数据处理模块写入的文件,例如排序字符串表(sortedstringtable,sst)文件。裸设备管理模块13用于管理存储硬件,并将用户态文件系统模块12中的数据写入存储硬件,例如hdd。16.如图2所示,图2是本技术实施例提供的一种数据存储方法的流程图,应用于上述存储设备,如图2所示,包括以下步骤:步骤201、获取目标数据,并将所述目标数据写入内存中。17.上述目标数据为输入至存储设备的数据,在存储设备获取到目标数据后,将目标数据先存储与内存中,再将内存中的目标数据基于数据处理模块写入存储文件中。18.其中,目标数据为键值对的结构,按照时间顺序存储在内存中,基于数据处理模块将目标数据的键和目标数据的值按照内存中的顺序写入存储文件。19.步骤202、基于所述数据处理模块对所述内存中的所述目标数据进行处理,并基于所述数据处理模块的交互接口模块将处理后的数据写入所述用户态文件系统模块中。20.应理解,在相关技术中数据存储至hdd中的方法通常为直接将数据写入,对于数据较大的用户数据,写入的速率较慢,难以满足高吞吐和低时延的需求。故在本技术中,先将目标数据通过数据处理模块处理,再进行写入,能提高写入效率。21.上述对目标数据进行处理为基于预设策略对目标数据进行处理,例如将目标数据中的键值对分离后存储,得到中间数据,再将中间数据写入用户态文件系统模块,能有效提高存储的效率。上述用户态文件系统模块为轻量级文件系统,用于存放单机存储引擎的文件,包括sst文件和日志文件等文件,在基于数据处理模块对目标数据进行处理后,将处理后的数据写入用户态文件系统模块的文件中。22.具体的,单机存储引擎提供了用户态文件系统模块中文件的读写接口,例如envwrapper接口。如图3所示,数据处理模块通过交互接口模块(交互接口模块继承envwrapper接口的功能)对用户态文件系统模块中的文件进行数据写入。23.步骤203、基于所述裸设备管理模块将所述用户态文件系统模块中的数据写入至所述hdd。24.上述裸设备管理模块用于管理存储硬件,在本技术中具体为hdd介质,通过裸设备管理模块可以将用户态文件系统模块中的中间数据写入hdd介质。应理解,存储硬件还可以为ssd介质或nvme介质,在本技术中选择hdd介质作为存储硬件,在需要存储大量数据时成本更低。25.在本技术实施例中,通过基于数据处理模块对目标数据进行处理,得到中间数据,再将中间数据写入用户态文件系统模块,能提高存储效率,应对高吞吐和低延时的数据传输场景;再基于裸设备管理模块将用户态文件系统模块中的中间数据写入hdd,提高hdd的存储效率,且hdd的成本较低,在需要存储大量数据的情况下能有效降低存储成本。26.示例性的,基于本技术的单机存储引擎(kingdomstore)和相关技术中的单机存储引擎(bluestore)对数据存储的速度进行对比。其中,基于kingdomstore对hdd写入的代码如下:mon=1osd=1mgr=1rgw=0mds=0../src/vstart.shꢀ‑nꢀ‑x\ꢀ‑o"kingdomstore_block_path=/dev/sde"\ꢀ‑o"kingdomstore_block_db_path=\"\""\ꢀ‑o"kingdomstore_block_db_size=0"\ꢀ‑o"kingdomstore_block_wal_path=\"\""\ꢀ‑o"kingdomstore_block_wal_size=0"\ꢀ‑o"kingdomstore_default_stripe_size=1048576"\ꢀ‑o"kingdomstore_max_ops=10240"\ꢀ‑o"kingdomstore_max_bytes=1024_m"\ꢀ‑o"kingdomstore_rocksdb_options=\"compression=knocompression,write_buffer_size=268435456,max_write_buffer_number=16,min_write_buffer_number_to_merge=1,target_file_size_base=8388608,max_bytes_for_level_base=83886080,recycle_log_file_num=4,writable_file_max_buffer_size=0,compaction_readahead_size=2097152,max_background_jobs=16,enable_blob_files=true,blob_file_size=268435456,min_blob_size=8192,enable_blob_garbage_collection=true,blob_compression_type=klz4compression\""\ꢀ‑k通过对单机存储引擎kingdomstore和bluestore进行负载测试,测试负载为4kb(256并发)、256kb(64并发)、700kb(64并发)、4mb(64并发)写入测试,其结果如图4所示,从图4可知,在数据较大的情况下,本技术的单机存储引擎kingdomstore能更高效的写入数据,能更好应对高吞吐和低时延的场景。27.在一个实施例中,所述基于所述数据处理模块对所述内存中的所述目标数据进行处理,并基于所述数据处理模块的交互接口模块将处理后的数据写入所述用户态文件系统模块中,包括:在所述目标数据的值小于或者等于目标阈值的情况下,基于所述数据处理模块的交互接口模块将所述目标数据的键值对写入所述用户态文件系统模块的排序字符串表sst文件中。28.应理解,sst文件能高效存储较小的数据,但对于数据较大的数据则无法高效存储,故在本技术实施例中将sst文件作为存储较小数据的文件,如图3所示,在目标数据的值小于或等于目标阈值的情况下,基于数据处理模块调用交互接口模块,将目标数据的键和值写入用户态文件系统模块的sst文件中。29.其中,目标阈值为根据需求预先配置的阈值,用于对目标数据进行键值处理,可以根据sst文件的存储效果进行调整,通常目标阈值都大于元数据的大小,使得元数据均可以存储至sst中。30.将目标数据的键值对存储在sst文件后,在需要读取目标数据的值的情况下,通过在sst文件中检索目标数据的键,即可得到该目标数据的值。31.在一个实施例中,所述基于所述数据处理模块对所述内存中的所述目标数据进行处理,并基于所述数据处理模块的交互接口模块将处理后的数据写入所述用户态文件系统模块中,包括:在所述目标数据的值大于目标阈值的情况下,基于所述数据处理模块生成所述目标数据的索引数据,并基于所述数据处理模块的交互接口模块将所述目标数据的值写入所述用户态文件系统模块的二进制大对象(binarylargeobject,blob)文件中,以及将所述目标数据的键和所述索引数据写入所述用户态文件系统模块的sst文件中。32.应理解,对于数据较大的用户数据,通过直接写入sst文件的效率较低,需要通过拆分目标数据的键值对再分别进行存储,以提高写入文件的效率。33.具体的,如图3所示,在目标数据的值大于目标阈值的情况下,提供blob文件对目标数据进行存储。其中,在目标数据的值大于目标阈值的情况下,目标数据属于较大的数据,在该情况下将目标数据的键和目标数据的值分开存储,将目标数据的值存储值blob文件中,而将生成的索引数据和目标数据的键存储值sst文件中,以提高对较大数据的存储效率。34.其中,索引数据应用指引目标数据的值在blob文件中的位置。35.将目标数据的键值对存储在sst文件和blob文件后,在需要读取目标数据的值的情况下,先基于目标数据的键在sst文件中进行检索,得到索引数据,再基于索引数据指示的位置从blob文件中获取目标数据的值。36.进一步地,为保证写入blob文件的有序性,在将目标数据的值写入blob文件过程中,基于内存中目标数据的顺序依次将目标数据的值写入到blob文件的尾部。在后续将blob文件的数据写入hdd的过程中或者检索数据的过程,若blob文件中一个目标数据的值x丢失,则在x之后的数据一定丢失;若目标数据的值x未丢失,则在x之前的数据也一定未丢失。通过blob文件的有序性可以实现对数据是否错误进行快速确定和调整。37.在一个实施例中,所述基于所述数据处理模块的交互接口模块将所述目标数据的值写入所述用户态文件系统模块的二进制大对象blob文件中,包括:基于所述数据处理模块生成所述目标数据的键对应的头部信息;基于所述数据处理模块将所述目标数据的值和所述头部信息写入所述blob文件;在所述基于所述裸设备管理模块将所述用户态文件系统模块中的数据写入至所述hdd之后,所述方法还包括:在所述单机存储引擎中未查询到所述目标数据的键的情况下,或者,在所述单机存储引擎中所述目标数据的键与所述目标数据的值对应的头部信息不匹配的情况下,基于所述数据处理模块删除所述单机存储引擎中所述目标数据的键。38.应理解,由于目标数据的键和值采用分开存储的方式,目标数据的值可能在写入过程中写入错误,在读取到blob文件中的目标数据的值之后,目标数据的值存在与目标数据的键不匹配的情况。为避免出现读取到的目标数据的键和目标数据的值存在不匹配的情况,需要对目标数据的键和目标数据的值进行一次验证,通过验证的目标数据的键和目标数据的值匹配,再输出目标数据的值,从而读取到准确的目标数据的值。39.具体的,在目标数据的值大于目标阈值的情况下,生成目标数据的键对应得头部信息,并将头部信息和目标数据的值写入blob文件。在读取目标数据的情况下,检索到索引数据后,根据索引数据指示的blob文件的位置得到目标数据的值和头部信息,通过头部信息确定目标数据的值和目标数据的键是否匹配,在匹配的情况下输出目标数据的值,在不匹配的情况下删除目标数据的键,再根据垃圾回收器(garbagecollection,gc)算法删除blob文件中对应的值,清除错误的数据。40.其中,头部信息可以是基于目标数据的键生成的数据,也可以直接采用目标数据的键作为头部信息。41.在一个实施例中,在所述基于所述裸设备管理模块将所述用户态文件系统模块中的数据写入至所述hdd之后,所述方法还包括:在所述目标数据的键从所述单机存储引擎中被删除的情况下,基于所述数据处理模块删除所述单机存储引擎中所述目标数据的值。42.应理解,在sst文件中目标数据的键被删除的情况下,说明目标数据出现错误,相应的需要根据gc算法删除blob文件中对应的值,避免错误数据仍存在于blob文件中导致的其他异常。43.在一个实施例中,在所述获取目标数据之后,所述基于所述数据处理模块对所述内存中的所述目标数据进行处理,并基于所述数据处理模块的交互接口模块将处理后的数据写入所述用户态文件系统模块中之前,所述方法还包括:基于所述数据处理模块的交互接口模块将所述目标数据的键值对写入所述用户态文件系统模块的预写日志(writeaheadlog,wal)文件;在所述基于所述数据处理模块对所述内存中的所述目标数据进行处理,并基于所述数据处理模块的交互接口模块将处理后的数据写入所述用户态文件系统模块中之后,所述方法还包括:基于所述用户态文件系统模块释放所述wal文件。44.在将内存中的目标数据写入用户态文件系统的过程中,存在设备异常中断写入的情况,由于内存存储数据的不稳定性,设备异常中断后内存的数据可能丢失,导致无法继续写入目标数据,或者写入的目标数据键和值不对应。应理解,为避免出现内存丢失导致的问题,本技术实施例在用户态文件系统模块中增加临时存储目标数据的wal文件,通过wal文件提高写入sst文件和blob文件的准确性。45.具体的,在将目标数据写入sst文件和blob文件之前,先将目标数据写入至wal文件;将目标数据写入sst文件和blob文件,在目标数据写入sst文件和blob文件的情况下,不再需要wal文件存储目标数据,此时释放wal文件,wal文件可以再写入新的数据。46.而在内存中的目标数据丢失,无法写入sst文件或blob文件失败的情况下,可以基于wal文件中的目标数据对内存进行恢复,再基于内存中的目标数据写入至sst文件或blob文件,从而提高了写入文件的目标数据的准确性。47.请参见图5,图5是本技术实施例提供的一种存储设备的结构图,包括单机存储引擎和硬盘驱动器hdd,所述单机存储引擎包括数据处理模块、用户态文件系统模块和裸设备管理模块,如图5所示,存储设备500包括:获取模块501,用于获取目标数据,并将所述目标数据写入内存中;处理模块502,用于基于所述数据处理模块对所述内存中的所述目标数据进行处理,并基于所述数据处理模块的交互接口模块将处理后的数据写入所述用户态文件系统模块中;第一写入模块503,用于基于所述裸设备管理模块将所述用户态文件系统模块中的数据写入至所述hdd。48.在一个实施例中,所述处理模块502包括:第一处理单元,用于在所述目标数据的值小于或者等于目标阈值的情况下,基于所述数据处理模块的交互接口模块将所述目标数据的键值对写入所述用户态文件系统模块的排序字符串表sst文件中。49.在一个实施例中,所述处理模块502,包括:第二处理单元,用于在所述目标数据的值大于目标阈值的情况下,基于所述数据处理模块生成所述目标数据的索引数据,并基于所述数据处理模块的交互接口模块将所述目标数据的值写入所述用户态文件系统模块的二进制大对象blob文件中,以及将所述目标数据的键和所述索引数据写入所述用户态文件系统模块的sst文件中。50.在一个实施例中,所述第二处理单元包括:第一处理子单元,用于基于所述数据处理模块生成所述目标数据的键对应的头部信息;第二处理子单元,用于基于所述数据处理模块将所述目标数据的值和所述头部信息写入所述blob文件;在所述第一写入模块503之后,所述存储设备500还包括:第一删除模块,用于在所述单机存储引擎中未查询到所述目标数据的键的情况下,或者,在所述单机存储引擎中所述目标数据的键与所述目标数据的值对应的头部信息不匹配的情况下,基于所述数据处理模块删除所述单机存储引擎中所述目标数据的键。51.在一个实施例中,在所述第一写入模块503之后,所述存储设备500还包括:第二删除模块,用于在所述目标数据的键从所述单机存储引擎中被删除的情况下,基于所述数据处理模块删除所述单机存储引擎中所述目标数据的值。52.在一个实施例中,在所述获取模块501之后,所述处理模块502之前,所述存储设备500还包括:第二写入模块,用于基于所述数据处理模块的交互接口模块将所述目标数据的键值对写入所述用户态文件系统模块的预写日志wal文件;在所述第一写入模块503之后,所述存储设备500还包括:释放模块,用于基于所述用户态文件系统模块释放所述wal文件。53.在一个实施例中,在所述第二写入模块之后,所述存储设备500还包括:恢复模块,用于在所述内存丢失所述目标数据的情况下,基于所述wal文件恢复所述内存中的所述目标数据。54.存储设备为能实现上述应用于存储设备的数据存储方法的各实施例的各个过程,技术特征一一对应,且能达到相同的技术效果,为避免重复,这里不再赘述。55.本发明实施例还提供了一种存储设备,包括:处理器、存储器及存储在存储器上并可在处理器上运行的程序,程序被处理器执行时实现上述数据存储方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。56.具体的,参见图6,本发明实施例还提供了一种存储设备,包括总线601、收发机602、天线603、总线接口604、处理器605和存储器606。57.其中,所述收发机602,用于获取目标数据,并将所述目标数据写入内存中;所述处理器605,用于基于所述数据处理模块对所述内存中的所述目标数据进行处理,并基于所述数据处理模块的交互接口模块将处理后的数据写入所述用户态文件系统模块中;所述处理器605,还用于基于所述裸设备管理模块将所述用户态文件系统模块中的数据写入至所述hdd。58.在一个实施例中,所述处理器605,还用于在所述目标数据的值小于或者等于目标阈值的情况下,基于所述数据处理模块的交互接口模块将所述目标数据的键值对写入所述用户态文件系统模块的排序字符串表sst文件中。59.在一个实施例中,所述处理器605,还用于在所述目标数据的值大于目标阈值的情况下,基于所述数据处理模块生成所述目标数据的索引数据,并基于所述数据处理模块的交互接口模块将所述目标数据的值写入所述用户态文件系统模块的二进制大对象blob文件中,以及将所述目标数据的键和所述索引数据写入所述用户态文件系统模块的sst文件中。60.在一个实施例中,所述处理器605,还用于基于所述数据处理模块生成所述目标数据的键对应的头部信息;所述处理器605,还用于基于所述数据处理模块将所述目标数据的值和所述头部信息写入所述blob文件;所述处理器605,还用于在所述单机存储引擎中未查询到所述目标数据的键的情况下,或者,在所述单机存储引擎中所述目标数据的键与所述目标数据的值对应的头部信息不匹配的情况下,基于所述数据处理模块删除所述单机存储引擎中所述目标数据的键。61.在一个实施例中,所述处理器605,还用于在所述目标数据的键从所述单机存储引擎中被删除的情况下,基于所述数据处理模块删除所述单机存储引擎中所述目标数据的值。62.在一个实施例中,所述处理器605,还用于基于所述数据处理模块的交互接口模块将所述目标数据的键值对写入所述用户态文件系统模块的预写日志wal文件;所述处理器605,还用于基于所述用户态文件系统模块释放所述wal文件。63.在一个实施例中,所述处理器605,还用于在所述内存丢失所述目标数据的情况下,基于所述wal文件恢复所述内存中的所述目标数据。64.在图6中,总线架构(用总线601来代表),总线601可以包括任意数量的互联的总线和桥,总线601将包括由处理器605代表的一个或多个处理器和存储器606代表的存储器的各种电路链接在一起。总线601还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口604在总线601和收发机602之间提供接口。收发机602可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器605处理的数据通过天线603在无线介质上进行传输,进一步,天线603还接收数据并将数据传送给处理器605。65.处理器605负责管理总线601和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器606可以被用于存储处理器605在执行操作时所使用的数据。66.本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述数据存储方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,上述的计算机可读存储介质,如只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等。67.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。68.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例的方法。69.上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。当前第1页12当前第1页12
技术特征:
1.一种数据存储方法,应用于存储设备,所述存储设备包括单机存储引擎和硬盘驱动器hdd,所述单机存储引擎包括数据处理模块、用户态文件系统模块和裸设备管理模块,其特征在于,所述方法包括:获取目标数据,并将所述目标数据写入内存中;基于所述数据处理模块对所述内存中的所述目标数据进行处理,并基于所述数据处理模块的交互接口模块将处理后的数据写入所述用户态文件系统模块中;基于所述裸设备管理模块将所述用户态文件系统模块中的数据写入至所述hdd。2.根据权利要求1所述的方法,其特征在于,所述基于所述数据处理模块对所述内存中的所述目标数据进行处理,并基于所述数据处理模块的交互接口模块将处理后的数据写入所述用户态文件系统模块中,包括:在所述目标数据的值小于或者等于目标阈值的情况下,基于所述数据处理模块的交互接口模块将所述目标数据的键值对写入所述用户态文件系统模块的排序字符串表sst文件中。3.根据权利要求1所述的方法,其特征在于,所述基于所述数据处理模块对所述内存中的所述目标数据进行处理,并基于所述数据处理模块的交互接口模块将处理后的数据写入所述用户态文件系统模块中,包括:在所述目标数据的值大于目标阈值的情况下,基于所述数据处理模块生成所述目标数据的索引数据,并基于所述数据处理模块的交互接口模块将所述目标数据的值写入所述用户态文件系统模块的二进制大对象blob文件中,以及将所述目标数据的键和所述索引数据写入所述用户态文件系统模块的sst文件中。4.根据权利要求3所述的方法,其特征在于,所述基于所述数据处理模块的交互接口模块将所述目标数据的值写入所述用户态文件系统模块的二进制大对象blob文件中,包括:基于所述数据处理模块生成所述目标数据的键对应的头部信息;基于所述数据处理模块将所述目标数据的值和所述头部信息写入所述blob文件;在所述基于所述裸设备管理模块将所述用户态文件系统模块中的数据写入至所述hdd之后,所述方法还包括:在所述单机存储引擎中未查询到所述目标数据的键的情况下,或者,在所述单机存储引擎中所述目标数据的键与所述目标数据的值对应的头部信息不匹配的情况下,基于所述数据处理模块删除所述单机存储引擎中所述目标数据的键。5.根据权利要求3所述的方法,其特征在于,在所述基于所述裸设备管理模块将所述用户态文件系统模块中的数据写入至所述hdd之后,所述方法还包括:在所述目标数据的键从所述单机存储引擎中被删除的情况下,基于所述数据处理模块删除所述单机存储引擎中所述目标数据的值。6.根据权利要求1所述的方法,其特征在于,在所述获取目标数据之后,所述基于所述数据处理模块对所述内存中的所述目标数据进行处理,并基于所述数据处理模块的交互接口模块将处理后的数据写入所述用户态文件系统模块中之前,所述方法还包括:基于所述数据处理模块的交互接口模块将所述目标数据的键值对写入所述用户态文件系统模块的预写日志wal文件;在所述基于所述数据处理模块对所述内存中的所述目标数据进行处理,并基于所述数
据处理模块的交互接口模块将处理后的数据写入所述用户态文件系统模块中之后,所述方法还包括:基于所述用户态文件系统模块释放所述wal文件。7.根据权利要求6所述的方法,其特征在于,在所述基于所述数据处理模块的交互接口模块将所述目标数据的键值对写入所述用户态文件系统模块的预写日志wal文件之后,所述方法还包括:在所述内存丢失所述目标数据的情况下,基于所述wal文件恢复所述内存中的所述目标数据。8.一种存储设备,包括单机存储引擎和硬盘驱动器hdd,所述单机存储引擎包括数据处理模块、用户态文件系统模块和裸设备管理模块,其特征在于,所述存储设备还包括:获取模块,用于获取目标数据,并将所述目标数据写入内存中;处理模块,用于基于所述数据处理模块对所述内存中的所述目标数据进行处理,并基于所述数据处理模块的交互接口模块将处理后的数据写入所述用户态文件系统模块中;第一写入模块,用于基于所述裸设备管理模块将所述用户态文件系统模块中的数据写入至所述hdd。9.一种存储设备,其特征在于,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序,所述程序被所述处理器执行时实现如权利要求1至7中任一项所述的方法的步骤。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一所述方法的步骤。

技术总结
本申请提供一种数据存储方法、存储设备及计算机可读存储介质,涉及数据处理技术领域,存储设备包括单机存储引擎和硬盘驱动器HDD,所述单机存储引擎包括数据处理模块、用户态文件系统模块和裸设备管理模块,该方法包括:获取目标数据,并将所述目标数据写入内存中;基于所述数据处理模块对所述内存中的所述目标数据进行处理,并基于所述数据处理模块的交互接口模块将处理后的数据写入所述用户态文件系统模块中;基于所述裸设备管理模块将所述用户态文件系统模块中的数据写入至所述HDD。本申请通过HDD作为存储介质能有效降低成本。申请通过HDD作为存储介质能有效降低成本。申请通过HDD作为存储介质能有效降低成本。


技术研发人员:刘岚 任家英 杨红刚
受保护的技术使用者:中国移动通信集团有限公司
技术研发日:2023.08.16
技术公布日:2023/9/23
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

航空商城 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

评论

相关推荐