CN117573675A - 一种数据存储方法、装置、电子设备、芯片及介质 - Google Patents
一种数据存储方法、装置、电子设备、芯片及介质 Download PDFInfo
- Publication number
- CN117573675A CN117573675A CN202311596622.0A CN202311596622A CN117573675A CN 117573675 A CN117573675 A CN 117573675A CN 202311596622 A CN202311596622 A CN 202311596622A CN 117573675 A CN117573675 A CN 117573675A
- Authority
- CN
- China
- Prior art keywords
- key value
- storage
- data
- key
- determining
- 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 67
- 238000013500 data storage Methods 0.000 title claims abstract description 34
- 238000012545 processing Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 9
- 230000003321 amplification Effects 0.000 abstract description 13
- 238000003199 nucleic acid amplification method Methods 0.000 abstract description 13
- 230000007246 mechanism Effects 0.000 abstract description 12
- 238000000926 separation method Methods 0.000 abstract description 12
- 239000002699 waste material Substances 0.000 abstract description 8
- 230000006870 function Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 235000019800 disodium phosphate Nutrition 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000011435 rock Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供一种数据存储方法、装置、电子设备、芯片及介质,涉及数据存储技术领域,该方法包括:通过存储引擎的存储数据库,确定数据和元数据对应的键值对;确定键值对中键值对应的键值数据的大小;判断键值数据的大小与预设阈值之间的关系,并根据判断结果,确定键值数据对应的存储位置,存储位置包括存储数据库的日志结构归并树和存储数据库的二进制存储文件;将键值数据存储至存储位置,通过在存储引擎的存储数据库中统一对数据和元数据进行处理,并且采样键值分离机制,根据键值数据的大小动态确定键值数据的存储位置,提高了数据写入性能,避免产生严重的写放大现象以及造成性能的浪费的问题。
Description
技术领域
本公开涉及数据存储技术领域,尤其涉及一种数据存储方法、装置、电子设备、芯片及介质。
背景技术
在大规模分布式存储系统中,实现一个高性能、低延迟、稳定可靠的单机存储引擎是必不可少的需求。作为当前主流的分布式存储系统Ceph,其后端存储支持多种存储引擎,如FileStore、KVStore、MemStore、BlueStore、SeaStore(Crimson-OSD)等。近年来,随着SSD/NVMe在存储领域的大规模使用,BlueStore因其对SSD的针对性设计逐渐成为主流存储引擎,目前,Ceph默认使用的存储引擎是BlueStore。
但是,相关技术中使用BlueStore存储引擎通过将数据和元数据采用键值对的形式分开存储,即将数据的键值对写到裸盘中,元数据的键值对单独存储到存储数据库(RocksDB)中。由于数据分散在不同的存储位置,因此需要多次的磁盘I/O操作,容易产生严重的写放大现象,造成性能的浪费。
发明内容
本公开提供一种数据存储方法、装置、电子设备、芯片及介质,以解决相关技术中的问题,通过在存储引擎的存储数据库中统一对数据和元数据进行处理,并且采样键值分离机制,根据键值数据的大小动态确定键值数据的存储位置,提高了数据写入性能,避免产生严重的写放大现象以及造成性能的浪费的问题。
本公开的第一方面实施例提出了一种数据存储方法,该方法包括:通过存储引擎的存储数据库,确定数据和元数据对应的键值对;确定键值对中键值对应的键值数据的大小;判断键值数据的大小与预设阈值之间的关系,并根据判断结果,确定键值数据对应的存储位置,存储位置包括存储数据库的日志结构归并树和存储数据库的二进制存储文件;将键值数据存储至存储位置。
在本公开的一些实施例中,判断键值数据的大小与预设阈值之间的关系,并根据判断结果,确定键值数据对应的存储位置包括:若键值数据的大小大于或等于预设阈值,确定键值数据的存储位置为存储数据库的二进制存储文件;若键值数据的大小小于预设阈值,确定键值数据的存储位置为存储数据库的日志结构归并树。
在本公开的一些实施例中,键值对包括数据键值对和元数据键值对,通过存储引擎的存储数据库,确定数据和元数据对应的键值对包括:通过存储引擎的存储数据库,接收数据和元数据;对数据和元数据进行键值处理,确定数据键值对和元数据键值对。
在本公开的一些实施例中,确定键值对中键值对应的键值数据的大小包括:确定数据键值对和元数据键值对中键值对应的键值数据的字节长度;根据字节长度,确定键值数据的大小。
在本公开的一些实施例中,若键值数据的大小大于或等于预设阈值,确定键值数据的存储位置为存储数据库的二进制存储文件,还包括:生成索引信息,索引信息包括键值数据在二进制存储文件中的位置,索引信息与键值对应;将索引信息存储至存储数据库的日志结构归并树。
在本公开的一些实施例中,该方法还包括:将键值存储至存储数据库的日志结构归并树。
本公开的第二方面实施例提出了一种数据存储装置,该装置包括:数据处理单元,用于通过存储引擎的存储数据库,确定数据和元数据对应的键值对;确定单元,用于确定键值对中键值对应的键值数据的大小;判断单元,用于判断键值数据的大小与预设阈值之间的关系,并根据判断结果,确定键值数据对应的存储位置,存储位置包括存储数据库的日志结构归并树和存储数据库的二进制存储文件;存储单元,用于将键值数据存储至存储位置。
本公开的第三方面实施例提出了一种电子设备,包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器,其中,处理器用于运行计算机程序时,执行本公开第一方面实施例中描述的方法。
本公开的第四方面实施例提出了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行本公开第一方面实施例中描述的方法。
本公开的第五方面实施例提出了一种芯片,该芯片包括一个或多个接口电路和一个或多个处理器;接口电路用于从电子设备的存储器接收信号,并向处理器发送信号,信号包括存储器中存储的计算机指令,当处理器执行计算机指令时,使得电子设备执行本公开第一方面实施例中描述的方法。
综上,根据本公开提出的数据存储方法,通过存储引擎的存储数据库,确定数据和元数据对应的键值对;确定键值对中键值对应的键值数据的大小;判断键值数据的大小与预设阈值之间的关系,并根据判断结果,确定键值数据对应的存储位置,存储位置包括存储数据库的日志结构归并树和存储数据库的二进制存储文件;将键值数据存储至存储位置,通过在存储引擎的存储数据库中统一对数据和元数据进行处理,并且采样键值分离机制,根据键值数据的大小动态确定键值数据的存储位置,提高了数据写入性能,避免产生严重的写放大现象以及造成性能的浪费的问题。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1为本公开实施例提供的一种数据存储方法的流程图;
图2为本公开实施例提供的一种数据存储方法的流程图;
图3为本公开实施例提供的一种存储引擎的架构图;
图4为本公开实施例提供的一种具体的数据存储方法的示意图
图5为本公开实施例提供的一种数据存储装置的结构示意图;
图6为本公开实施例提供的电子设备的结构示意图。
具体实施方式
下面详细描述本公开的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实。
在大规模分布式存储系统中,实现一个高性能、低延迟、稳定可靠的单机存储引擎是必不可少的需求。单机存储是对单机存储引擎的封装,使其对外提供文件、键值、表格和关系模型的存储服务。对于一个存储系统来说,存储引擎可以决定其功能以及性能上限,是存储系统的核心。
单机存储系统的基本功能主要包括:增、删、改、查。因此,对于单机引擎的设计主要考虑一下几点。首先是索引方式,当前主流的索引组织方式有哈希和B+树,哈希索引基于键值对的进行存储,查询效率高,B+树索引主要基于二分查找法,可以进行顺序查找,但是查询效率低。其次是数据组织方式,目前分为内存存储和磁盘存储,内存存储需要考虑内存管理和分配算法以及读写一致性对性能的影响,磁盘存储则分为行存和列存。在确定基础数据组织方式后,单机存储需要考虑数据一致性以及读写性能等。
作为当前主流的分布式存储系统Ceph,其后端存储支持多种存储引擎,如FileStore、KVStore、MemStore、BlueStore、SeaStore(Crimson-OSD)等。近年来,随着SSD/NVMe在存储领域的大规模使用,BlueStore因其对SSD的针对性设计逐渐成为主流存储引擎,目前,Ceph默认使用的存储引擎是BlueStore。
但是,相关技术中使用BlueStore存储引擎通过将数据和元数据采用键值对的形式分开存储,即将数据的键值对写到裸盘中,元数据的键值对单独存储到RocksDB数据库中。由于数据分散在不同的存储位置,因此需要多次的磁盘I/O操作,容易产生严重的写放大现象,造成性能的浪费。
为了解决相关技术中存在的问题,本公开采用存储引擎的存储数据库(例如:RocksDB)统一管理数据和元数据,且都以键值对的形式写入到RocksDB中。同时本公开通过key-value存储分离机制,设置预设阈值(min_blob_size),当键值数据(value)小于min_blob_size时,将value正常写入到RocksDB中,当value大于min_blob_size时,将value分离到二进制存储文件(BlobFile)中单独进行存储,并且生成index写入日志结构归并树的SST文件中,提高了数据写入性能,避免产生严重的写放大现象以及造成性能的浪费的问题。
本公开提出的方法能够高效、可靠的进行数据的写入操作,主要可以应用于分布式存储系统的存储引擎的存储数据库中。
下面结合附图对本申请所提供的数据存储方法进行详细介绍。
图1为本公开实施例提供的一种数据存储方法的流程图。如图1所示,该数据存储方法包括步骤101-104。
步骤101,通过存储引擎的存储数据库,确定数据和元数据对应的键值对。
在本公开的实施例中,存储引擎为本公开预先构建的存储引擎。本公开中的存储引擎包括存储数据库、交互接口、轻量级文件系统以及存取设备。通过本公开预先构建的存储引擎,存储数据库可以统一对数据和元数据进行管理,确定数据和元数据对应的键值对。
其中,键值对可以通过存储数据库中的键值处理器确定。
步骤102,确定键值对中键值对应的键值数据的大小。
在本公开的实施例中,通过判断键值数据的字节长度,确定键值数据的大小。
步骤103,判断键值数据的大小与预设阈值之间的关系,并根据判断结果,确定键值数据对应的存储位置,存储位置包括存储数据库的日志结构归并树和存储数据库的二进制存储文件。
在本公开的实施例中,日志结构归并树(Log-Structured Merge-Tree,LSM Tree)是一种用于存储键值对数据的存储结构,它并不是具体的树型结构,而是一种存储策略。LSM Tree通常被用于处理写操作比较多的场景,如OLTP(在线事务处理)等。
二进制存储文件在本公开中是指BlobFile文件,BlobFile文件是用于存储和操作二进制大对象(Binary Large Object)的文件类型,它表示不可变、原始的二进制数据。
在本公开中,预设阈值是预先根据实际需求设置的,在本公开实施例中不予限制。
需要注意的是,在本公开中BlobFile文件仅用于存储键值数据,日志结构归并树可以存储键值以及该键值对应的键值数据以及键值数据对应的索引信息。其中,索引信息是根据当前判断结果以及键值数据生成的。
步骤104,将键值数据存储至存储位置。
在本公开的实施例中,通过确定键值数据的存储位置,将当前键值数据存储至对应存储位置。
综上,根据本公开提出的数据存储方法,通过存储引擎的存储数据库,确定数据和元数据对应的键值对;确定键值对中键值对应的键值数据的大小;判断键值数据的大小与预设阈值之间的关系,并根据判断结果,确定键值数据对应的存储位置,存储位置包括存储数据库的日志结构归并树和存储数据库的二进制存储文件;将键值数据存储至存储位置,通过在存储引擎的存储数据库中统一对数据和元数据进行处理,并且采样键值分离机制,根据键值数据的大小动态确定键值数据的存储位置,提高了数据写入性能,避免产生严重的写放大现象以及造成性能的浪费的问题。
基于图1所示的实施例,图2进一步示出本公开提出的一种数据存储方法的流程图。图2基于图1所示的实施例,对步骤102进行进一步定义。在图2所示的实施例中,步骤102包括步骤203和步骤204。如图2所示,该方法包括如下步骤:
步骤201,通过存储引擎的存储数据库,确定数据和元数据对应的键值对。
在本公开的实施例中,通过存储引擎的存储数据库,接收数据和元数据;对数据和元数据进行键值处理,确定数据键值对和元数据键值对。
在本公开的一种可选的实施例中,存储引擎的存储数据库可以统一处理数据和元数据、并进行键值分离以及裸设备操作。如图3所示的存储引擎的架构图,存储引擎(KingdomStore)的主要架构包括RocksDB、键值处理器、BlueRockEnv、BlueFS以及BlockDevice。RocksDB是一个存储数据库,将数据和元数据写入内存数据库。BlueRockEnv是RocksDB和BlueFS的交互接口,RocksDB提供了文件操作的接口EnvWrapper,用户可以用过继承实现该接口自定义底层的读写操作,BlueRocksEnv继承自EnvWrapper实现对BlueFS的读写。BlueFS是BlueStore针对RocksDB开发的轻量级文件系统,用于存放RocksDB产生的.sst和.log等文件。BlockDecive为存取装置,用来直接管理裸设备,可以使用多种不同类型的设备,如HDD、SSD和NVME等。
在本公开中,存储数据库可以利用存储数据库中的键值处理器,对数据和元数据进行键值处理,得到数据和元数据对应的键值对。
步骤202,确定键值对中键值对应的键值数据的大小。
在本公开的实施例中,键值对包括数据键值对和元数据键值对。确定数据键值对和元数据键值对中键值对应的键值数据的字节长度;根据字节长度,确定键值数据的大小。
在本公开中,可以直接通过查看当前键值数据的二进制格式或字节流,确定当前键值数据对应的字节长度。根据当前字节长度,可以直接确定当前键值数据的大小。
步骤203,若键值数据的大小大于或等于预设阈值,确定键值数据的存储位置为存储数据库的二进制存储文件。
在本公开的实施例中,如果键值数据的大小大于或等于预设阈值,则将该键值数据分离,确定该键值数据的存储位置为二进制存储文件。其中键值数据对应的键值的存储位置为日志结构归并树,具体可以是日志结构归并树的SST文件。SST文件通常用于大型分布式数据库和文件系统,在SST文件中,数据被组织成键值对的形式,并且按键值进行排序。
在本公开中,若键值数据的大小大于或等于预设阈值,确定键值数据的存储位置为存储数据库的二进制存储文件,还包括:生成索引信息,索引信息包括键值数据在二进制存储文件中的位置,索引信息与键值对应;将索引信息存储至存储数据库的日志结构归并树。其中,索引信息具体可以存储至日志结构归并树的SST文件。
步骤204,若键值数据的大小小于预设阈值,确定键值数据的存储位置为存储数据库的日志结构归并树。
在本公开的实施例中,如果键值数据的大小小于预设阈值,则确定该键值数据与其对应的键值的存储位置均为日志结构归并树,具体可以存储至日志结构归并树的SST文件。
需要注意的是,若键值数据的大小小于预设阈值,则不需要生成键值数据的索引信息。索引信息仅在键值数据的大小大于或等于预设阈值时生成。
步骤205,将键值数据存储至存储位置。
在本公开的实施例中,将键值数据数据按对应的存储位置进行存储。
需要注意的是,在本公开中存储键值数据之外还包括:将键值存储至存储数据库的日志结构归并树。具体可以将键值存储至日志结构归并树的SST文件。
此外,根据本公开的存储数据方法,当键值数据大于或等于预设阈值,在存储引擎进行数据读取时,需要先在MemTable中查找键值,如果查找到键值则直接根据对应的索引信息去二进制存储文件中读取该键值对应的键值数据。
如果没有在MemTable中查找到键值则去日志结构归并树中查找,当查找到对应的键值后,根据键值对应的索引信息去二进制存储文件中获取该键值对应的键值数据。
同理,当写入一个键值对时,键值数据被插入到二进制存储文件中,然后把键值和键值数据对应的索引信息插入到日志结构归并树中。由此,当在存储引擎中删除一个键值对时,只需要将日志结构归并树中的键值删除,然后通过垃圾回收机制将对应的键值数据进行删除即可。提高了读写效率。
其中,MemTable是一种在内存中保存数据的数据结构,可以同时服务于读和写操作。在进行数据和元数据存储时,需要先将数据和元数据存储至MemTable,再将存储至MemTable的数据和元数据存储至日志结构归并树。
综上,本公开的数据存储方法,针对现有单机存储引擎中将数据和元数据分开存储的机制,提出了采用RocksDB统一管理数据和元数据,将数据和元数据都以key-value键值对的形式写入到RocksDB中。同时对写入value过大会导致写放大效果,提出了键值分离的机制,将较大的value写入BlobFile文件,大大降低了写放大效果,同时提高了数据读写的性能。
基于图1、图2所示的实施例,如图4所示,本公开提供一种具体的数据存储方法的示意图。
在本公开实施例中,KingdomStore可以统一管理数据和元数据,数据和元数据都以键值(key)-键值数据(value)键值对的形式写到RocksDB中。
在本公开实施例中,在BlueStore中进行读写时,当value比较大时,LSM-Tree的compaction为了保证数据有序会进行大量数据的重写,因此往往会出现严重的写放大现象。在实际存储中,其实只需要保持有序的key序列,对应的value并不需要有序。因此如果将key-value分开存储,compaction重写数据时,只需要重写key和value的索引信息(index)。由于key的大小远小于value,因此会大大降低写放大现象。另外,当value比较小时,重写value只需要很小的开销,键值分离反而会产生的额外开销。因此,参照图4,KingdomStore设置了key-value键值分离存储机制,当key对应的value的大小小于预设阈值(min_blob_size)时,将value写入RocksDB,当value的大小大于或等于min_blob_size时,将value分离到BlobFile文件中单独存储,并生成index写入日志结构归并树的SST文件中。
另外,由于RocksDB不支持裸设备的操作,因此KingdomStore使用BlueFS作为底层的文件系统实现,以便支持裸设备操作和多设备支持,提供Slow/db/WAL文件的管理。
根据KingdomStore的设计以及提出的键值分离方案,当value的大小大于或等于min_blob_size时,其读写流程也和传统的存储引擎不一样。KingdomStore的读流程先在MemTable中查找key,如果没有查找到key就去LSM-Tree中查找,当查找到对应的key后,根据key对应的index去BlobFile文件中获取该key对应的value。
同理,当写入一个key-value键值对时,value向被插入到BlobFile文件中,然后把key和value对应的索引index插入到LSM-Tree中。由此,当在KingDomStore中删除一个键值对时,只需要将LSM-Tree中的key删除,然后通过垃圾回收机制将对应的value进行删除。
综上,本公开提出的方法,通过RocksDB统一处理数据和元数据,将数据和元数据都以键值对的形式写入RocksDB中。并提出了键值分离的机制,提高了数据写入性能,避免由于数据分散在不同的存储位置,需要多次进行读写操作,产生的严重的写放大现象。
图5为本公开实施例提供的一种数据存储装置500的结构示意图。如图5所示,该数据存储装置包括:
数据处理单元510,用于通过存储引擎的存储数据库,确定数据和元数据对应的键值对;
确定单元520,用于确定键值对中键值对应的键值数据的大小;
判断单元530,用于判断键值数据的大小与预设阈值之间的关系,并根据判断结果,确定键值数据对应的存储位置,存储位置包括存储数据库的日志结构归并树和存储数据库的二进制存储文件;
存储单元540,用于将键值数据存储至存储位置。
在本公开的一些实施例中,判断单元530,用于:若键值数据的大小大于或等于预设阈值,确定键值数据的存储位置为存储数据库的二进制存储文件;若键值数据的大小小于预设阈值,确定键值数据的存储位置为存储数据库的日志结构归并树。
在本公开的一些实施例中,键值对包括数据键值对和元数据键值对,数据处理单元510,用于:通过存储引擎的存储数据库,接收数据和元数据;对数据和元数据进行键值处理,确定数据键值对和元数据键值对。
在本公开的一些实施例中,确定单元520,用于:确定数据键值对和元数据键值对中键值对应的键值数据的字节长度;根据字节长度,确定键值数据的大小。
在本公开的一些实施例中,判断单元530,用于:生成索引信息,索引信息包括键值数据在二进制存储文件中的位置,索引信息与键值对应;将索引信息存储至存储数据库的日志结构归并树。
在本公开的一些实施例中,存储单元540,用于:将键值存储至存储数据库的日志结构归并树。
综上,通过数据存储装置,通过存储引擎的存储数据库,确定数据和元数据对应的键值对;确定键值对中键值对应的键值数据的大小;判断键值数据的大小与预设阈值之间的关系,并根据判断结果,确定键值数据对应的存储位置,存储位置包括存储数据库的日志结构归并树和存储数据库的二进制存储文件;将键值数据存储至存储位置,通过在存储引擎的存储数据库中统一对数据和元数据进行处理,并且采样键值分离机制,根据键值数据的大小动态确定键值数据的存储位置,提高了数据写入性能,避免产生严重的写放大现象以及造成性能的浪费的问题。
与上述几种实施例提供的方法相对应,本公开还提供一种数据存储装置,由于本公开实施例提供的装置与上述几种实施例提供的方法相对应,因此方法的实施方式也适用于本实施例提供的装置,在本实施例中不再详细描述。
上述本申请提供的实施例中,对本申请实施例提供的方法及装置进行了介绍。为了实现上述本申请实施例提供的方法中的各功能,电子设备可以包括硬件结构、软件模块,以硬件结构、软件模块、或硬件结构加软件模块的形式来实现上述各功能。上述各功能中的某个功能可以以硬件结构、软件模块、或者硬件结构加软件模块的方式来执行。
图6是根据一示例性实施例示出的一种用于实现上述数据存储方法的电子设备600的框图。例如,电子设备600可以是移动电话,计算机,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图6,电子设备600可以包括通信接口601,能够与其他设备进行交互;处理器602,与通信接口601连接,以实现与其他设备进行交互,用于运行计算机程序时,执行上述一个或多个技术方案提供的方法;存储器603,计算机程序存储在存储器603上。具体地,处理器602的具体处理过程可以参照本公开上述实施例中描述的数据存储方法。
当然,实际应用时,电子设备600中的各个组件通过总线系统604耦合在一起。可理解,总线系统604用于实现这些组件之间的连接通信。总线系统604除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图5中将各种总线都标为总线系统604。
本申请实施例中的存储器603用于存储各种类型的数据以支持电子设备600的操作。这些数据的示例包括:用于在电子设备600上操作的任何计算机程序。
上述本申请实施例揭示的方法可以应用于处理器602,或者由处理器602实现。处理器602可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器602中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器602可以是通用处理器、数字信号处理器(DSP,Digital SignalProcessor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器602可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器603,处理器602读取存储器603中的信息,结合其硬件完成前述方法的步骤。
在示例性实施例中,电子设备600可以被一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,ProgrammableLogic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable LogicDevice)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)、通用处理器、控制器、微控制器(MCU,Micro Controller Unit)、微处理器(Microprocessor)、或者其他电子元件实现,用于执行前述方法。
本公开的实施例还提出了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行本公开上述实施例中描述的数据存储方法。
本公开的实施例还提出一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行本公开上述实施例中描述的数据存储方法。
本公开的实施例还提出了一种芯片,该芯片包括一个或多个接口电路和一个或多个处理器;接口电路用于从电子设备的存储器接收信号,并向处理器发送信号,信号包括存储器中存储的计算机指令,当处理器执行计算机指令时,使得电子设备执行本公开上述实施例中描述的数据存储方法。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在本说明书的描述中,参考术语“一个实施方式”、“一些实施方式”、“示意性实施方式”、“示例”、“具体示例”或“一些示例”等的描述意指结合实施方式或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施方式或示例中以合适的方式结合。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理模块的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(控制方法),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得程序,然后将其存储在计算机存储器中。
应当理解,本发明的实施方式的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明的各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。上述提到的存储介质可以是只读存储器,磁盘或光盘等。
尽管上面已经示出和描述了本发明的实施方式,可以理解的是,上述实施方式是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施实施进行变化、修改、替换和变型。
Claims (10)
1.一种数据存储方法,其特征在于,所述方法包括:
通过存储引擎的存储数据库,确定数据和元数据对应的键值对;
确定所述键值对中键值对应的键值数据的大小;
判断所述键值数据的大小与预设阈值之间的关系,并根据所述判断结果,确定所述键值数据对应的存储位置,所述存储位置包括所述存储数据库的日志结构归并树和所述存储数据库的二进制存储文件;
将所述键值数据存储至所述存储位置。
2.根据权利要求1所述的方法,其特征在于,所述判断所述键值数据的大小与预设阈值之间的关系,并根据所述判断结果,确定所述键值数据对应的存储位置包括:
若所述键值数据的大小大于或等于所述预设阈值,确定所述键值数据的存储位置为存储数据库的二进制存储文件;
若所述键值数据的大小小于预设阈值,确定所述键值数据的存储位置为存储数据库的日志结构归并树。
3.根据权利要求1所述的方法,其特征在于,所述键值对包括数据键值对和元数据键值对,所述通过存储引擎的存储数据库,确定数据和元数据对应的键值对包括:
通过存储引擎的存储数据库,接收数据和元数据;
对所述数据和所述元数据进行键值处理,确定所述数据键值对和/或所述元数据键值对。
4.根据权利要求3所述的方法,其特征在于,所述确定键值对中键值对应的键值数据的大小包括:
确定所述数据键值对和/或所述元数据键值对中键值对应的键值数据的字节长度;
根据所述字节长度,确定所述键值数据的大小。
5.根据权利要求2中所述的方法,其特征在于,所述若所述键值数据的大小大于或等于所述预设阈值,确定所述键值数据的存储位置为所述存储数据库的二进制存储文件,还包括:
生成索引信息,所述索引信息包括所述键值数据在二进制存储文件中的位置,所述索引信息与所述键值对应;
将所述索引信息存储至所述存储数据库的日志结构归并树。
6.根据权利要求1中所述的方法,其特征在于,所述方法还包括:
将所述键值存储至所述存储数据库的日志结构归并树。
7.一种数据存储装置,其特征在于,所述装置包括:
数据处理单元,用于通过存储引擎的存储数据库,确定数据和元数据对应的键值对;
确定单元,用于确定所述键值对中键值对应的键值数据的大小;
判断单元,用于判断所述键值数据的大小与预设阈值之间的关系,并根据所述判断结果,确定所述键值数据对应的存储位置,所述存储位置包括所述存储数据库的日志结构归并树和所述存储数据库的二进制存储文件;
存储单元,用于将所述键值数据存储至所述存储位置。
8.一种电子设备,其特征在于,包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器,
其中,所述处理器用于运行所述计算机程序时,执行权利要求1-6中任一项所述方法的方法。
9.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行根据权利要求1-6中任一项所述的方法。
10.一种芯片,其特征在于,包括一个或多个接口电路和一个或多个处理器;所述接口电路用于从电子设备的存储器接收信号,并向所述处理器发送所述信号,所述信号包括存储器中存储的计算机指令,当所述处理器执行所述计算机指令时,使得所述电子设备执行权利要求1-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311596622.0A CN117573675A (zh) | 2023-11-27 | 2023-11-27 | 一种数据存储方法、装置、电子设备、芯片及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311596622.0A CN117573675A (zh) | 2023-11-27 | 2023-11-27 | 一种数据存储方法、装置、电子设备、芯片及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117573675A true CN117573675A (zh) | 2024-02-20 |
Family
ID=89863935
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311596622.0A Pending CN117573675A (zh) | 2023-11-27 | 2023-11-27 | 一种数据存储方法、装置、电子设备、芯片及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117573675A (zh) |
-
2023
- 2023-11-27 CN CN202311596622.0A patent/CN117573675A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109254733B (zh) | 用于存储数据的方法、装置和系统 | |
KR20170008152A (ko) | 불휘발성 메모리 장치에서의 데이터 특성 기반 데이터 배치 | |
US11461304B2 (en) | Signature-based cache optimization for data preparation | |
CN108132890B (zh) | 存储芯片的垃圾回收方法、装置、设备及存储介质 | |
CN109471851B (zh) | 数据处理方法、装置、服务器和存储介质 | |
KR20200122994A (ko) | 키 값 첨부 | |
US20070156778A1 (en) | File indexer | |
Lee et al. | ActiveSort: Efficient external sorting using active SSDs in the MapReduce framework | |
CN104731569A (zh) | 一种数据处理方法及相关设备 | |
KR102264119B1 (ko) | CaseDB: 엣지컴퓨팅을 위한 저비용 Put-Intensive 키-벨류 저장장치 | |
CN111291023A (zh) | 一种数据迁移的方法、系统、设备以及介质 | |
JP6598997B2 (ja) | データ準備のためのキャッシュ最適化 | |
US20240086332A1 (en) | Data processing method and system, device, and medium | |
US9547451B2 (en) | Writable clone data structure | |
US8589454B2 (en) | Computer data file merging based on file metadata | |
CN111291022B (zh) | 一种基于区块链的数据存储系统 | |
US20150268878A1 (en) | Efficient serialization of journal data | |
JP2014071904A (ja) | コンピュータシステム及びコンピュータシステムのデータ管理方法 | |
CN114780448A (zh) | 数据快速拷贝的方法、装置、计算机设备及存储介质 | |
CN110955632A (zh) | 一种文件索引生成方法及装置 | |
CN111930684A (zh) | 基于hdfs的小文件处理方法、装置、设备及存储介质 | |
CN117573675A (zh) | 一种数据存储方法、装置、电子设备、芯片及介质 | |
TW202333047A (zh) | 用於加速的裝置、系統和方法 | |
CN112765110B (zh) | 一种pdf批注数据生成方法、装置、设备及存储介质 | |
CN117369731B (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 |