[发明专利]文件存储方法、文件读取方法和数据存储系统有效
申请号: | 202110048476.2 | 申请日: | 2021-01-27 |
公开(公告)号: | CN112527804B | 公开(公告)日: | 2022-09-16 |
发明(设计)人: | 周智伟;胡旋 | 申请(专利权)人: | 中智关爱通(上海)科技股份有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22 |
代理公司: | 北京市金杜律师事务所 11256 | 代理人: | 王茂华 |
地址: | 200233 上海市*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 文件 存储 方法 读取 数据 存储系统 | ||
本发明提供了一种文件存储方法、文件读取方法和数据存储系统。该文件存储方法包括:接收与同一对象相关联的多个文件的存储请求;在内存的第一内存表中保存所述多个文件中的每个文件的第一键‑值对;当所述第一内存表装满时,将所述第一内存表中的数据转移至持久性存储器并且清空所述第一内存表,其中将所述第一内存表中的数据转移至持久性存储器包括:将所述多个文件中的每个文件的第二键‑值对存储在所述持久性存储器中的基于LSM树的第一存储文件中,并且将所述多个文件中的每个文件的第三键‑值对顺序存储在第二存储文件中的多个存储单元中。
技术领域
本发明概括而言涉及数据存储领域,更具体地,涉及一种基于LSM(Log-Structured Merge,日志结构合并)树的文件存储方法、文件读取方法和数据存储系统。
背景技术
LSM树是一种数据存储结构,经常用来构建NoSQL的键值对(key-value)数据库。例如,当前已知的LevelDB、RocksDB、hbase等都是基于LSM树的键值对数据库。
图1示出了一种现有技术中的基于LSM树的数据存储系统10的示意图。注意,在图1中,以RocksDB数据库为例示出了各个组成部分的名称,在其他数据库中的对应的组成部分的名称可能相同也可能不同。
如图1中所示,该基于LSM树的数据存储系统10包括内存110和持久性存储器120(如硬盘)。此外,虽然图中未示出,但是本领域技术人员可以理解,对该基于LSM树的数据存储系统10中的数据的存储和读取可以是通过基于LSM树的数据存储系统10自有的或者开发者定义的控制引擎执行的。例如,RocksDB数据库支持用户自定义的表格创建器(tablebuilder)来控制数据存储过程。
在执行数据存储(写操作)时,待写入的数据首先被写入内存110中的内存表MemTable 112中,在MemTable 112中,以键-值对的形式保存该数据,其中键-值对中的键字段指示该数据的标识,值字段是该数据本身。由于内存110并不是可靠存储,如果断电将会丢失数据,因此控制引擎通常会提前在持久性存储器120中的WAL(Write-ahead logging,预写式日志)中记录该次写操作以保证数据的可靠性。
当MemTable 112中的数据达到一定大小(例如写满)后,会转移至另一内存表Immutable MemTable 114,并执行刷新(flush)操作以将Immutable MemTable 114中的数据转移至持久性存储器120中的存储文件SST(Sorted String Table,分类字串表)122中。这里, Immutable MemTable 114是将MemTable 112转变为SST 122的一种中间状态,以使得MemTable 112能够处理新的写操作而不会阻塞数据更新。
在SST 122中,通过有序的键-值对集合的形式来存储数据。图2示出了现有技术中的基于LSM树的数据存储系统10中的SST 122中的数据存储格式的示意图。如图2中所示,在SST 122中,存储多个键-值对1222-1、1222-2、1222-3、……(以下统称键-值对1222)的集合,其中每个键-值对包括一个键字段(key-1、key-2、key-3、……)和一个值字段(value-1、value-2、value-3、……),其中键字段指示所存储的数据的标识信息,值字段是所存储的数据本身。SST 122中的数据更新是日志式的,当一条新的数据到来时,直接在SST 122的键-值对的末尾增加一个新的键-值对1222来存储该新的数据。通过这种方式,可以直接将Immutable MemTable 114中的数据刷新到持久性存储器120中而不用去修改之前的SST122,从而保证了写操作的顺序性。
在执行数据读取(读操作)时,会根据数据读请求依次读取内存110中的MemTable112、Immutable MemTable 114和块缓存(block cache)116以确定是否命中。块缓存116是RocksDB中的专用于SST 122中的数据读取的读缓存。如果内存110中没有命中,则遍历SST122来查找所请求的数据。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中智关爱通(上海)科技股份有限公司,未经中智关爱通(上海)科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110048476.2/2.html,转载请声明来源钻瓜专利网。