CN116795296B - 一种数据存储方法、存储设备及计算机可读存储介质 - Google Patents
一种数据存储方法、存储设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN116795296B CN116795296B CN202311031673.9A CN202311031673A CN116795296B CN 116795296 B CN116795296 B CN 116795296B CN 202311031673 A CN202311031673 A CN 202311031673A CN 116795296 B CN116795296 B CN 116795296B
- Authority
- CN
- China
- Prior art keywords
- data
- module
- target data
- writing
- processing module
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 51
- 238000013500 data storage Methods 0.000 title claims abstract description 14
- 238000007726 management method Methods 0.000 claims abstract description 26
- 230000003993 interaction Effects 0.000 claims abstract description 22
- 230000002452 interceptive effect Effects 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 208000000044 Amnesia Diseases 0.000 description 1
- 208000026139 Memory disease Diseases 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000006984 memory degeneration Effects 0.000 description 1
- 208000023060 memory loss Diseases 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种数据存储方法、存储设备及计算机可读存储介质,涉及数据处理技术领域,存储设备包括单机存储引擎和硬盘驱动器HDD,所述单机存储引擎包括数据处理模块、用户态文件***模块和裸设备管理模块,该方法包括:获取目标数据,并将所述目标数据写入内存中;基于所述数据处理模块对所述内存中的所述目标数据进行处理,并基于所述数据处理模块的交互接口模块将处理后的数据写入所述用户态文件***模块中;基于所述裸设备管理模块将所述用户态文件***模块中的数据写入至所述HDD。本申请通过HDD作为存储介质能有效降低成本。
Description
技术领域
本申请涉及数据处理技术领域,具体涉及一种数据存储方法、存储设备及计算机可读存储介质。
背景技术
在存储领域通常使用分布式存储的方式实现对数据的存储。在相关技术中,为满足高吞吐和低延时额需求,通常采用固态硬盘(Solid State Drive,SSD)介质或非易失性存储器(Non-Volatile Memory Express,NVMe)介质作为存储盘对数据进行存储。但在相关技术中,通过SSD或NVMe的单位储存的成本较高,在需要对大量数据进行存储的情况下总存储成本较高。
可见,相关技术中存在存储成本较高的问题。
发明内容
本申请实施例提供一种数据存储方法、存储设备及计算机可读存储介质,以解决相关技术中存在存储成本较高的问题。
为解决上述问题,本申请是这样实现的:
第一方面,本申请实施例提供一种数据存储方法,应用于存储设备,所述存储设备包括单机存储引擎和硬盘驱动器HDD,所述单机存储引擎包括数据处理模块、用户态文件***模块和裸设备管理模块,所述方法包括:
获取目标数据,并将所述目标数据写入内存中;
基于所述数据处理模块对所述内存中的所述目标数据进行处理,并基于所述数据处理模块的交互接口模块将处理后的数据写入所述用户态文件***模块中;
基于所述裸设备管理模块将所述用户态文件***模块中的数据写入至所述HDD。
第二方面,本申请实施例还提供一种存储设备,包括单机存储引擎和硬盘驱动器HDD,所述单机存储引擎包括数据处理模块、用户态文件***模块和裸设备管理模块,所述存储设备还包括:
获取模块,用于获取目标数据,并将所述目标数据写入内存中;
处理模块,用于基于所述数据处理模块对所述内存中的所述目标数据进行处理,并基于所述数据处理模块的交互接口模块将处理后的数据写入所述用户态文件***模块中;
第一写入模块,用于基于所述裸设备管理模块将所述用户态文件***模块中的数据写入至所述HDD。
第三方面,本申请实施例还提供一种存储设备,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序,所述程序被所述处理器执行时实现如上述第一方面所述的数据存储方法的步骤。
第四方面,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述第一方面所述的数据存储方法的步骤。
在本申请实施例中,通过基于数据处理模块对目标数据进行处理,得到中间数据,再将中间数据写入用户态文件***模块,能提高存储效率,应对高吞吐和低延时的数据传输场景;再基于裸设备管理模块将用户态文件***模块中的中间数据写入HDD,提高HDD的存储效率,且HDD的成本较低,在需要存储大量数据的情况下能有效降低存储成本。
附图说明
为更清楚地说明本申请实施例的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种存储设备的结构示意图;
图2是本申请实施例提供的一种存储方法的流程图;
图3是本申请实施例提供的一种存储过程的示意图;
图4是本申请实施例提供的写入速度对比图;
图5是本申请实施例提供的一种存储设备的结构图;
图6是本申请实施例提供的一种存储设备的结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参见图1,图1是本申请实施例提供的存储设备的结构示意图,存储设备包括单机存储引擎和硬盘驱动器(Hard Disk Drive,HDD),其中,单机存储引擎为基于日志结构合并(Log Structured Merge,LSM)树构建的,用于存储键值对数据的单机数据库,可以应用于分布式存储***(例如Ceph)集群的对象存储设备(Object base Storage Device,OSD)内部架构。单机存储引擎包括数据处理模块11、用户态文件***模块12和裸设备管理模块13。单机存储引擎能对数据进行快速存储,以满足高吞吐和低时延的业务需求,具体见后续实施例。
进一步地,单机存储引擎还提供交互接口模块,数据处理模块11通过交互接口模块与用户态文件***模块12进行交互。
其中,数据处理模块11用于对输入至存储设备的数据进行处理,并将处理后的数据写入文件中。用户态文件***模块12用于存储数据处理模块写入的文件,例如排序字符串表(Sorted String Table,SST)文件。裸设备管理模块13用于管理存储硬件,并将用户态文件***模块12中的数据写入存储硬件,例如HDD。
如图2所示,图2是本申请实施例提供的一种数据存储方法的流程图,应用于上述存储设备,如图2所示,包括以下步骤:
步骤201、获取目标数据,并将所述目标数据写入内存中。
上述目标数据为输入至存储设备的数据,在存储设备获取到目标数据后,将目标数据先存储与内存中,再将内存中的目标数据基于数据处理模块写入存储文件中。
其中,目标数据为键值对的结构,按照时间顺序存储在内存中,基于数据处理模块将目标数据的键和目标数据的值按照内存中的顺序写入存储文件。
步骤202、基于所述数据处理模块对所述内存中的所述目标数据进行处理,并基于所述数据处理模块的交互接口模块将处理后的数据写入所述用户态文件***模块中。
应理解,在相关技术中数据存储至HDD中的方法通常为直接将数据写入,对于数据较大的用户数据,写入的速率较慢,难以满足高吞吐和低时延的需求。故在本申请中,先将目标数据通过数据处理模块处理,再进行写入,能提高写入效率。
上述对目标数据进行处理为基于预设策略对目标数据进行处理,例如将目标数据中的键值对分离后存储,得到中间数据,再将中间数据写入用户态文件***模块,能有效提高存储的效率。上述用户态文件***模块为轻量级文件***,用于存放单机存储引擎的文件,包括SST文件和日志文件等文件,在基于数据处理模块对目标数据进行处理后,将处理后的数据写入用户态文件***模块的文件中。
具体的,单机存储引擎提供了用户态文件***模块中文件的读写接口,例如EnvWrapper接口。如图3所示,数据处理模块通过交互接口模块(交互接口模块继承EnvWrapper接口的功能)对用户态文件***模块中的文件进行数据写入。
步骤203、基于所述裸设备管理模块将所述用户态文件***模块中的数据写入至所述HDD。
上述裸设备管理模块用于管理存储硬件,在本申请中具体为HDD介质,通过裸设备管理模块可以将用户态文件***模块中的中间数据写入HDD介质。应理解,存储硬件还可以为SSD介质或NVMe介质,在本申请中选择HDD介质作为存储硬件,在需要存储大量数据时成本更低。
在本申请实施例中,通过基于数据处理模块对目标数据进行处理,得到中间数据,再将中间数据写入用户态文件***模块,能提高存储效率,应对高吞吐和低延时的数据传输场景;再基于裸设备管理模块将用户态文件***模块中的中间数据写入HDD,提高HDD的存储效率,且HDD的成本较低,在需要存储大量数据的情况下能有效降低存储成本。
示例性的,基于本申请的单机存储引擎(KingdomStore)和相关技术中的单机存储引擎(BlueStore)对数据存储的速度进行对比。其中,基于KingdomStore对HDD写入的代码如下:
MON=1 OSD=1 MGR=1 RGW=0 MDS=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能更高效的写入数据,能更好应对高吞吐和低时延的场景。
在一个实施例中,所述基于所述数据处理模块对所述内存中的所述目标数据进行处理,并基于所述数据处理模块的交互接口模块将处理后的数据写入所述用户态文件***模块中,包括:
在所述目标数据的值小于或者等于目标阈值的情况下,基于所述数据处理模块的交互接口模块将所述目标数据的键值对写入所述用户态文件***模块的排序字符串表SST文件中。
应理解,SST文件能高效存储较小的数据,但对于数据较大的数据则无法高效存储,故在本申请实施例中将SST文件作为存储较小数据的文件,如图3所示,在目标数据的值小于或等于目标阈值的情况下,基于数据处理模块调用交互接口模块,将目标数据的键和值写入用户态文件***模块的SST文件中。
其中,目标阈值为根据需求预先配置的阈值,用于对目标数据进行键值处理,可以根据SST文件的存储效果进行调整,通常目标阈值都大于元数据的大小,使得元数据均可以存储至SST中。
将目标数据的键值对存储在SST文件后,在需要读取目标数据的值的情况下,通过在SST文件中检索目标数据的键,即可得到该目标数据的值。
在一个实施例中,所述基于所述数据处理模块对所述内存中的所述目标数据进行处理,并基于所述数据处理模块的交互接口模块将处理后的数据写入所述用户态文件***模块中,包括:
在所述目标数据的值大于目标阈值的情况下,基于所述数据处理模块生成所述目标数据的索引数据,并基于所述数据处理模块的交互接口模块将所述目标数据的值写入所述用户态文件***模块的二进制大对象(Binary Large Object,BLOB)文件中,以及将所述目标数据的键和所述索引数据写入所述用户态文件***模块的SST文件中。
应理解,对于数据较大的用户数据,通过直接写入SST文件的效率较低,需要通过拆分目标数据的键值对再分别进行存储,以提高写入文件的效率。
具体的,如图3所示,在目标数据的值大于目标阈值的情况下,提供BLOB文件对目标数据进行存储。其中,在目标数据的值大于目标阈值的情况下,目标数据属于较大的数据,在该情况下将目标数据的键和目标数据的值分开存储,将目标数据的值存储值BLOB文件中,而将生成的索引数据和目标数据的键存储值SST文件中,以提高对较大数据的存储效率。
其中,索引数据应用指引目标数据的值在BLOB文件中的位置。
将目标数据的键值对存储在SST文件和BLOB文件后,在需要读取目标数据的值的情况下,先基于目标数据的键在SST文件中进行检索,得到索引数据,再基于索引数据指示的位置从BLOB文件中获取目标数据的值。
进一步地,为保证写入BLOB文件的有序性,在将目标数据的值写入BLOB文件过程中,基于内存中目标数据的顺序依次将目标数据的值写入到BLOB文件的尾部。在后续将BLOB文件的数据写入HDD的过程中或者检索数据的过程,若BLOB文件中一个目标数据的值X丢失,则在X之后的数据一定丢失;若目标数据的值X未丢失,则在X之前的数据也一定未丢失。通过BLOB文件的有序性可以实现对数据是否错误进行快速确定和调整。
在一个实施例中,所述基于所述数据处理模块的交互接口模块将所述目标数据的值写入所述用户态文件***模块的二进制大对象BLOB文件中,包括:
基于所述数据处理模块生成所述目标数据的键对应的头部信息;
基于所述数据处理模块将所述目标数据的值和所述头部信息写入所述BLOB文件;
在所述基于所述裸设备管理模块将所述用户态文件***模块中的数据写入至所述HDD之后,所述方法还包括:
在所述单机存储引擎中未查询到所述目标数据的键的情况下,或者,在所述单机存储引擎中所述目标数据的键与所述目标数据的值对应的头部信息不匹配的情况下,基于所述数据处理模块删除所述单机存储引擎中所述目标数据的键。
应理解,由于目标数据的键和值采用分开存储的方式,目标数据的值可能在写入过程中写入错误,在读取到BLOB文件中的目标数据的值之后,目标数据的值存在与目标数据的键不匹配的情况。为避免出现读取到的目标数据的键和目标数据的值存在不匹配的情况,需要对目标数据的键和目标数据的值进行一次验证,通过验证的目标数据的键和目标数据的值匹配,再输出目标数据的值,从而读取到准确的目标数据的值。
具体的,在目标数据的值大于目标阈值的情况下,生成目标数据的键对应得头部信息,并将头部信息和目标数据的值写入BLOB文件。在读取目标数据的情况下,检索到索引数据后,根据索引数据指示的BLOB文件的位置得到目标数据的值和头部信息,通过头部信息确定目标数据的值和目标数据的键是否匹配,在匹配的情况下输出目标数据的值,在不匹配的情况下删除目标数据的键,再根据垃圾回收器(Garbage Collection,GC)算法删除BLOB文件中对应的值,清除错误的数据。
其中,头部信息可以是基于目标数据的键生成的数据,也可以直接采用目标数据的键作为头部信息。
在一个实施例中,在所述基于所述裸设备管理模块将所述用户态文件***模块中的数据写入至所述HDD之后,所述方法还包括:
在所述目标数据的键从所述单机存储引擎中被删除的情况下,基于所述数据处理模块删除所述单机存储引擎中所述目标数据的值。
应理解,在SST文件中目标数据的键被删除的情况下,说明目标数据出现错误,相应的需要根据GC算法删除BLOB文件中对应的值,避免错误数据仍存在于BLOB文件中导致的其他异常。
在一个实施例中,在所述获取目标数据之后,所述基于所述数据处理模块对所述内存中的所述目标数据进行处理,并基于所述数据处理模块的交互接口模块将处理后的数据写入所述用户态文件***模块中之前,所述方法还包括:
基于所述数据处理模块的交互接口模块将所述目标数据的键值对写入所述用户态文件***模块的预写日志(Write Ahead Log,WAL)文件;
在所述基于所述数据处理模块对所述内存中的所述目标数据进行处理,并基于所述数据处理模块的交互接口模块将处理后的数据写入所述用户态文件***模块中之后,所述方法还包括:
基于所述用户态文件***模块释放所述WAL文件。
在将内存中的目标数据写入用户态文件***的过程中,存在设备异常中断写入的情况,由于内存存储数据的不稳定性,设备异常中断后内存的数据可能丢失,导致无法继续写入目标数据,或者写入的目标数据键和值不对应。应理解,为避免出现内存丢失导致的问题,本申请实施例在用户态文件***模块中增加临时存储目标数据的WAL文件,通过WAL文件提高写入SST文件和BLOB文件的准确性。
具体的,在将目标数据写入SST文件和BLOB文件之前,先将目标数据写入至WAL文件;将目标数据写入SST文件和BLOB文件,在目标数据写入SST文件和BLOB文件的情况下,不再需要WAL文件存储目标数据,此时释放WAL文件,WAL文件可以再写入新的数据。
而在内存中的目标数据丢失,无法写入SST文件或BLOB文件失败的情况下,可以基于WAL文件中的目标数据对内存进行恢复,再基于内存中的目标数据写入至SST文件或BLOB文件,从而提高了写入文件的目标数据的准确性。
请参见图5,图5是本申请实施例提供的一种存储设备的结构图,包括单机存储引擎和硬盘驱动器HDD,所述单机存储引擎包括数据处理模块、用户态文件***模块和裸设备管理模块,如图5所示,存储设备500包括:
获取模块501,用于获取目标数据,并将所述目标数据写入内存中;
处理模块502,用于基于所述数据处理模块对所述内存中的所述目标数据进行处理,并基于所述数据处理模块的交互接口模块将处理后的数据写入所述用户态文件***模块中;
第一写入模块503,用于基于所述裸设备管理模块将所述用户态文件***模块中的数据写入至所述HDD。
在一个实施例中,所述处理模块502包括:
第一处理单元,用于在所述目标数据的值小于或者等于目标阈值的情况下,基于所述数据处理模块的交互接口模块将所述目标数据的键值对写入所述用户态文件***模块的排序字符串表SST文件中。
在一个实施例中,所述处理模块502,包括:
第二处理单元,用于在所述目标数据的值大于目标阈值的情况下,基于所述数据处理模块生成所述目标数据的索引数据,并基于所述数据处理模块的交互接口模块将所述目标数据的值写入所述用户态文件***模块的二进制大对象BLOB文件中,以及将所述目标数据的键和所述索引数据写入所述用户态文件***模块的SST文件中。
在一个实施例中,所述第二处理单元包括:
第一处理子单元,用于基于所述数据处理模块生成所述目标数据的键对应的头部信息;
第二处理子单元,用于基于所述数据处理模块将所述目标数据的值和所述头部信息写入所述BLOB文件;
在所述第一写入模块503之后,所述存储设备500还包括:
第一删除模块,用于在所述单机存储引擎中未查询到所述目标数据的键的情况下,或者,在所述单机存储引擎中所述目标数据的键与所述目标数据的值对应的头部信息不匹配的情况下,基于所述数据处理模块删除所述单机存储引擎中所述目标数据的键。
在一个实施例中,在所述第一写入模块503之后,所述存储设备500还包括:
第二删除模块,用于在所述目标数据的键从所述单机存储引擎中被删除的情况下,基于所述数据处理模块删除所述单机存储引擎中所述目标数据的值。
在一个实施例中,在所述获取模块501之后,所述处理模块502之前,所述存储设备500还包括:
第二写入模块,用于基于所述数据处理模块的交互接口模块将所述目标数据的键值对写入所述用户态文件***模块的预写日志WAL文件;
在所述第一写入模块503之后,所述存储设备500还包括:
释放模块,用于基于所述用户态文件***模块释放所述WAL文件。
在一个实施例中,在所述第二写入模块之后,所述存储设备500还包括:
恢复模块,用于在所述内存丢失所述目标数据的情况下,基于所述WAL文件恢复所述内存中的所述目标数据。
存储设备为能实现上述应用于存储设备的数据存储方法的各实施例的各个过程,技术特征一一对应,且能达到相同的技术效果,为避免重复,这里不再赘述。
本发明实施例还提供了一种存储设备,包括:处理器、存储器及存储在存储器上并可在处理器上运行的程序,程序被处理器执行时实现上述数据存储方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
具体的,参见图6,本发明实施例还提供了一种存储设备,包括总线601、收发机602、天线603、总线接口604、处理器605和存储器606。
其中,所述收发机602,用于获取目标数据,并将所述目标数据写入内存中;
所述处理器605,用于基于所述数据处理模块对所述内存中的所述目标数据进行处理,并基于所述数据处理模块的交互接口模块将处理后的数据写入所述用户态文件***模块中;
所述处理器605,还用于基于所述裸设备管理模块将所述用户态文件***模块中的数据写入至所述HDD。
在一个实施例中,所述处理器605,还用于在所述目标数据的值小于或者等于目标阈值的情况下,基于所述数据处理模块的交互接口模块将所述目标数据的键值对写入所述用户态文件***模块的排序字符串表SST文件中。
在一个实施例中,所述处理器605,还用于在所述目标数据的值大于目标阈值的情况下,基于所述数据处理模块生成所述目标数据的索引数据,并基于所述数据处理模块的交互接口模块将所述目标数据的值写入所述用户态文件***模块的二进制大对象BLOB文件中,以及将所述目标数据的键和所述索引数据写入所述用户态文件***模块的SST文件中。
在一个实施例中,所述处理器605,还用于基于所述数据处理模块生成所述目标数据的键对应的头部信息;
所述处理器605,还用于基于所述数据处理模块将所述目标数据的值和所述头部信息写入所述BLOB文件;
所述处理器605,还用于在所述单机存储引擎中未查询到所述目标数据的键的情况下,或者,在所述单机存储引擎中所述目标数据的键与所述目标数据的值对应的头部信息不匹配的情况下,基于所述数据处理模块删除所述单机存储引擎中所述目标数据的键。
在一个实施例中,所述处理器605,还用于在所述目标数据的键从所述单机存储引擎中被删除的情况下,基于所述数据处理模块删除所述单机存储引擎中所述目标数据的值。
在一个实施例中,所述处理器605,还用于基于所述数据处理模块的交互接口模块将所述目标数据的键值对写入所述用户态文件***模块的预写日志WAL文件;
所述处理器605,还用于基于所述用户态文件***模块释放所述WAL文件。
在一个实施例中,所述处理器605,还用于在所述内存丢失所述目标数据的情况下,基于所述WAL文件恢复所述内存中的所述目标数据。
在图6中,总线架构(用总线601来代表),总线601可以包括任意数量的互联的总线和桥,总线601将包括由处理器605代表的一个或多个处理器和存储器606代表的存储器的各种电路链接在一起。总线601还可以将诸如***设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口604在总线601和收发机602之间提供接口。收发机602可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器605处理的数据通过天线603在无线介质上进行传输,进一步,天线603还接收数据并将数据传送给处理器605。
处理器605负责管理总线601和通常的处理,还可以提供各种功能,包括定时,***接口,电压调节、电源管理以及其他控制功能。而存储器606可以被用于存储处理器605在执行操作时所使用的数据。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述数据存储方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,上述的计算机可读存储介质,如只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
Claims (9)
1.一种数据存储方法,应用于存储设备,所述存储设备包括单机存储引擎和硬盘驱动器HDD,所述单机存储引擎包括数据处理模块、用户态文件***模块和裸设备管理模块,其特征在于,所述方法包括:
获取目标数据,并将所述目标数据写入内存中;
基于所述数据处理模块对所述内存中的所述目标数据进行处理,并基于所述数据处理模块的交互接口模块将处理后的数据写入所述用户态文件***模块中;
基于所述裸设备管理模块将所述用户态文件***模块中的数据写入至所述HDD;
其中,所述基于所述数据处理模块对所述内存中的所述目标数据进行处理,并基于所述数据处理模块的交互接口模块将处理后的数据写入所述用户态文件***模块中,包括:
在所述目标数据的值大于目标阈值的情况下,基于所述数据处理模块生成所述目标数据的索引数据,并基于所述数据处理模块的交互接口模块将所述目标数据的值写入所述用户态文件***模块的二进制大对象BLOB文件中,以及将所述目标数据的键和所述索引数据写入所述用户态文件***模块的SST文件中。
2.根据权利要求1所述的方法,其特征在于,所述基于所述数据处理模块对所述内存中的所述目标数据进行处理,并基于所述数据处理模块的交互接口模块将处理后的数据写入所述用户态文件***模块中,包括:
在所述目标数据的值小于或者等于目标阈值的情况下,基于所述数据处理模块的交互接口模块将所述目标数据的键值对写入所述用户态文件***模块的排序字符串表SST文件中。
3.根据权利要求1所述的方法,其特征在于,所述基于所述数据处理模块的交互接口模块将所述目标数据的值写入所述用户态文件***模块的二进制大对象BLOB文件中,包括:
基于所述数据处理模块生成所述目标数据的键对应的头部信息;
基于所述数据处理模块将所述目标数据的值和所述头部信息写入所述BLOB文件;
在所述基于所述裸设备管理模块将所述用户态文件***模块中的数据写入至所述HDD之后,所述方法还包括:
在所述单机存储引擎中未查询到所述目标数据的键的情况下,或者,在所述单机存储引擎中所述目标数据的键与所述目标数据的值对应的头部信息不匹配的情况下,基于所述数据处理模块删除所述单机存储引擎中所述目标数据的键。
4.根据权利要求3所述的方法,其特征在于,在所述基于所述裸设备管理模块将所述用户态文件***模块中的数据写入至所述HDD之后,所述方法还包括:
在所述目标数据的键从所述单机存储引擎中被删除的情况下,基于所述数据处理模块删除所述单机存储引擎中所述目标数据的值。
5.根据权利要求1所述的方法,其特征在于,在所述获取目标数据之后,所述基于所述数据处理模块对所述内存中的所述目标数据进行处理,并基于所述数据处理模块的交互接口模块将处理后的数据写入所述用户态文件***模块中之前,所述方法还包括:
基于所述数据处理模块的交互接口模块将所述目标数据的键值对写入所述用户态文件***模块的预写日志WAL文件;
在所述基于所述数据处理模块对所述内存中的所述目标数据进行处理,并基于所述数据处理模块的交互接口模块将处理后的数据写入所述用户态文件***模块中之后,所述方法还包括:
基于所述用户态文件***模块释放所述WAL文件。
6.根据权利要求5所述的方法,其特征在于,在所述基于所述数据处理模块的交互接口模块将所述目标数据的键值对写入所述用户态文件***模块的预写日志WAL文件之后,所述方法还包括:
在所述内存丢失所述目标数据的情况下,基于所述WAL文件恢复所述内存中的所述目标数据。
7.一种存储设备,包括单机存储引擎和硬盘驱动器HDD,所述单机存储引擎包括数据处理模块、用户态文件***模块和裸设备管理模块,其特征在于,所述存储设备还包括:
获取模块,用于获取目标数据,并将所述目标数据写入内存中;
处理模块,用于基于所述数据处理模块对所述内存中的所述目标数据进行处理,并基于所述数据处理模块的交互接口模块将处理后的数据写入所述用户态文件***模块中;
第一写入模块,用于基于所述裸设备管理模块将所述用户态文件***模块中的数据写入至所述HDD;
其中,所述处理模块包括:
处理单元,用于在所述目标数据的值大于目标阈值的情况下,基于所述数据处理模块生成所述目标数据的索引数据,并基于所述数据处理模块的交互接口模块将所述目标数据的值写入所述用户态文件***模块的二进制大对象BLOB文件中,以及将所述目标数据的键和所述索引数据写入所述用户态文件***模块的SST文件中。
8.一种存储设备,其特征在于,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序,所述程序被所述处理器执行时实现如权利要求1至6中任一项所述的方法的步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6中任一所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311031673.9A CN116795296B (zh) | 2023-08-16 | 2023-08-16 | 一种数据存储方法、存储设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311031673.9A CN116795296B (zh) | 2023-08-16 | 2023-08-16 | 一种数据存储方法、存储设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116795296A CN116795296A (zh) | 2023-09-22 |
CN116795296B true CN116795296B (zh) | 2023-11-21 |
Family
ID=88049956
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311031673.9A Active CN116795296B (zh) | 2023-08-16 | 2023-08-16 | 一种数据存储方法、存储设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116795296B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118170323A (zh) * | 2024-05-11 | 2024-06-11 | 中移(苏州)软件技术有限公司 | 数据读写方法、装置、电子设备、存储介质和程序产品 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101567003A (zh) * | 2009-05-27 | 2009-10-28 | 清华大学 | 并行文件***中资源的管理和分配方法 |
CN101681366A (zh) * | 2007-03-02 | 2010-03-24 | E-曼纽尔***私人有限公司 | 一种数据存储和管理方法 |
CN106874383A (zh) * | 2017-01-10 | 2017-06-20 | 清华大学 | 一种分布式文件***元数据的解耦合分布方法 |
CN111108493A (zh) * | 2017-09-21 | 2020-05-05 | 阿里巴巴集团控股有限公司 | 使用键值存储***简化文件***操作的***、方法和设备 |
CN111209253A (zh) * | 2019-12-30 | 2020-05-29 | 河南创新科信息技术有限公司 | 分布式存储设备性能提升方法、装置及分布式存储设备 |
CN113590020A (zh) * | 2020-04-30 | 2021-11-02 | 伊姆西Ip控股有限责任公司 | 用于数据管理的方法、设备和计算机程序产品 |
CN114741028A (zh) * | 2022-03-18 | 2022-07-12 | 华中科技大学 | 一种基于ocssd的持久键值存储方法、设备及*** |
CN115167786A (zh) * | 2022-09-06 | 2022-10-11 | 浪潮电子信息产业股份有限公司 | 一种数据存储方法、装置、***、设备和介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11042526B2 (en) * | 2018-09-27 | 2021-06-22 | Software Ag | Systems and/or methods for database storage using binary large objects to guarantee reduced complexity |
US11379447B2 (en) * | 2020-02-06 | 2022-07-05 | Alibaba Group Holding Limited | Method and system for enhancing IOPS of a hard disk drive system based on storing metadata in host volatile memory and data in non-volatile memory using a shared controller |
-
2023
- 2023-08-16 CN CN202311031673.9A patent/CN116795296B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101681366A (zh) * | 2007-03-02 | 2010-03-24 | E-曼纽尔***私人有限公司 | 一种数据存储和管理方法 |
CN101567003A (zh) * | 2009-05-27 | 2009-10-28 | 清华大学 | 并行文件***中资源的管理和分配方法 |
CN106874383A (zh) * | 2017-01-10 | 2017-06-20 | 清华大学 | 一种分布式文件***元数据的解耦合分布方法 |
CN111108493A (zh) * | 2017-09-21 | 2020-05-05 | 阿里巴巴集团控股有限公司 | 使用键值存储***简化文件***操作的***、方法和设备 |
CN111209253A (zh) * | 2019-12-30 | 2020-05-29 | 河南创新科信息技术有限公司 | 分布式存储设备性能提升方法、装置及分布式存储设备 |
CN113590020A (zh) * | 2020-04-30 | 2021-11-02 | 伊姆西Ip控股有限责任公司 | 用于数据管理的方法、设备和计算机程序产品 |
CN114741028A (zh) * | 2022-03-18 | 2022-07-12 | 华中科技大学 | 一种基于ocssd的持久键值存储方法、设备及*** |
CN115167786A (zh) * | 2022-09-06 | 2022-10-11 | 浪潮电子信息产业股份有限公司 | 一种数据存储方法、装置、***、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116795296A (zh) | 2023-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9280487B2 (en) | Methods and apparatus for data processing using data compression, linked lists and de-duplication techniques | |
US10303363B2 (en) | System and method for data storage using log-structured merge trees | |
US7457934B2 (en) | Method and apparatus for reducing the amount of data in a storage system | |
CN108460045B (zh) | 一种快照的处理方法及分布式块存储*** | |
CN102880663B (zh) | 部分去重复的文件的优化 | |
US7890716B2 (en) | Method of managing time-based differential snapshot | |
KR102564170B1 (ko) | 데이터 객체 저장 방법, 장치, 및 이를 이용한 컴퓨터 프로그램이 저장되는 컴퓨터 판독가능한 저장 매체 | |
US20120110287A1 (en) | Snapshots in a hybrid storage device comprising a magnetic disk and a solid state disk | |
US7933938B2 (en) | File storage system, file storing method and file searching method therein | |
US11232073B2 (en) | Method and apparatus for file compaction in key-value store system | |
US20120296878A1 (en) | File set consistency verification system, file set consistency verification method, and file set consistency verification program | |
CN116795296B (zh) | 一种数据存储方法、存储设备及计算机可读存储介质 | |
US8850148B2 (en) | Data copy management for faster reads | |
US20080320062A1 (en) | Method of transferring file system, file system transference program, and file system transference device | |
US20210303404A1 (en) | Systems and methods for database migration | |
US8683121B2 (en) | Storage system | |
US9875046B2 (en) | Tape backup and restore in a disk storage environment with intelligent data placement | |
US20150261454A1 (en) | Database device, computer program product and data processing method | |
KR101666440B1 (ko) | 환형큐 기반의 인-메모리 데이터베이스 시스템에서의 데이터 처리방법 | |
US9575679B2 (en) | Storage system in which connected data is divided | |
US10430115B2 (en) | System and method for optimizing multiple packaging operations in a storage system | |
CN102495838B (zh) | 数据处理方法及装置 | |
CN112346771B (zh) | 升级文件生成方法及装置 | |
US8527481B2 (en) | Methods and systems for obtaining and correcting an index record for a virtual storage access method keyed sequential data set | |
CN107491363A (zh) | 一种基于Linux内核的存储卷的快照方法及装置 |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40095856 Country of ref document: HK |