CN108255408B - 数据存储方法以及系统 - Google Patents
数据存储方法以及系统 Download PDFInfo
- Publication number
- CN108255408B CN108255408B CN201611230902.XA CN201611230902A CN108255408B CN 108255408 B CN108255408 B CN 108255408B CN 201611230902 A CN201611230902 A CN 201611230902A CN 108255408 B CN108255408 B CN 108255408B
- Authority
- CN
- China
- Prior art keywords
- index
- data
- area
- zone
- user
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据存储方法以及系统,涉及数据存储领域。本发明根据SMR磁盘的存储特点,写入数据和索引记录时按照Zone中存储空间从前到后的顺序,并且根据Key‑Value数据库的特点分别存储索引记录和数据,实现了将Key‑Value数据库与SMR磁盘的结合,既能发挥SMR磁盘存储密度高存储量大的优势,又能有效利用Key‑Value数据库读取方便的特点,实时对用户输入的数据进行存储。此外,每次写入数据选取空闲存储空间大于数据长度的Zone进行存储,避免了数据的碎片化,提高数据的读取效率。
Description
技术领域
本发明涉及数据存储领域,特别涉及一种数据存储方法以及系统。
背景技术
移动互联网的快速发展让人类创造和分享数据的热情前所未有的高涨,一场数据革命即将爆发。根据IDC(Internet Data Center,互联网数据中心)的预测,数据存储量的需求以每年50%的速率增加,并在2020年达到惊人的40泽字节(Zetta Byte,ZB),相当于地球上所有沙粒数量的57倍。为了解决数据的存储问题,提出了叠瓦式磁记录技术(ShingledMagnetic Recording,SMR),SMR技术通过重叠磁道,重新调整了数据存储的方式,进而提高了磁道密度和单位面积存储密度。SMR将磁盘分为若干个Zone,Zone之间可以随机写,Zone内部必须顺序写。
目前,SMR磁盘的使用还不太方便,不能与数据库紧密结合实现在线数据的存取,如何更好的利用SMR磁盘实现数据的实时存储成为人们关注的问题。
发明内容
本发明所要实现的一个目的是:提出一种支持SMR磁盘的Key-Value存储方法,能够更好的利用SMR磁盘实现数据的实时存储。
根据本发明的一个方面,提供的一种数据存储方法,包括:接收用户输入的数据;根据用户输入的数据长度选取空闲存储空间大于数据长度的SMR磁盘的数据区的Zone;按照选取的数据区的Zone中存储空间从前到后的顺序,将用户输入的数据写入选取的数据区的Zone中的空闲存储空间;根据用户输入的数据生成索引记录,索引记录包括用户输入的数据对应的键key以及用户输入的数据的存储位置;按照SMR磁盘的索引区的Zone中存储空间从前到后的顺序,将索引记录写入索引区的Zone中的空闲存储空间。
在一个实施例中,选取空闲存储空间大于数据长度的SMR磁盘的数据区的Zone包括:启动时从索引记录中读取SMR磁盘的数据区的各个Zone中已被使用的存储空间;记录数据区的各个Zone中空闲存储空间;按照空闲存储空间从小到大的顺序将数据区的各个Zone进行排序,每次写入用户输入的数据后更新数据区的各个Zone中空闲存储空间以及排序;按照数据区的各个Zone的排序选取空闲存储空间大于数据长度的数据区的Zone。
在一个实施例中,SMR磁盘的索引区包括未排序索引区和已排序索引区;按照SMR磁盘的索引区的Zone中存储空间从前到后的顺序,将索引记录写入索引区的Zone中的空闲存储空间包括:首先按照SMR磁盘的未排序索引区的Zone中存储空间从前到后的顺序,将索引记录写入未排序索引区的Zone中的空闲存储空间;当未排序索引区的Zone中存储的索引记录的数量达到阈值时,将未排序索引区的Zone中存储的索引记录与已排序索引区的Zone中存储的索引记录根据key进行排序;按照SMR磁盘的已排序索引区的Zone中存储空间从前到后的顺序,将排序后的所有索引记录写入已排序索引区的Zone中的空闲存储空间。
在一个实施例中,该方法还包括:对SMR磁盘进行格式化,将SMR磁盘的存储空间划分为配置区、数据区和索引区;并且在配置区中配置数据区、索引区的起始位置、大小以及数据的存储粒度。
在一个实施例中,该方法还包括:接收用户的数据查询请求,根据数据查询请求中包含的key首先从未排序索引区中存储的索引记录中查找对应的索引记录,如果没有找到,再从已排序索引区中存储的索引记录中查找对应的索引记录;根据查找到的索引记录获取索引记录中记录的存储位置,向SMR磁盘发送读取指令,将存储位置存储的数据读取至内存;校验读取的数据的校验值是否与索引记录中记录的校验值一致,如果一致,则成功查询到用户欲查询的数据并返回至用户。
在一个实施例中,该方法还包括:接收用户的数据信息查询请求,根据数据查询请求中包含的key首先从未排序索引区中存储的索引记录中查找对应的索引记录,如果没有找到,再从已排序索引区中存储的索引记录中查找对应的索引记录;根据查找到的索引记录,将索引记录中记录的数据信息返回至用户,数据信息包括存储位置,校验值,写入时间。
在一个实施例中,该方法还包括:接收用户的列表查询请求,根据列表查询请求中包含的key从未排序索引区和已排序索引区中存储的索引记录中查找对应的索引记录;根据查找到的索引记录,将各个索引记录中记录的数据信息合并为列表并返回至用户,数据信息包括存储位置,校验值,写入时间。
根据本发明的另一个方面,提供的一种数据存储系统,包括:数据接收模块,用于接收用户输入的数据;数据区管理模块,用于根据用户输入的数据长度选取空闲存储空间大于数据长度的SMR磁盘的数据区的Zone;数据写入模块,用于按照选取的数据区的Zone中存储空间从前到后的顺序,将用户输入的数据写入选取的数据区的Zone中的空闲存储空间;索引记录生成模块,用于根据用户输入的数据生成索引记录,索引记录包括用户输入的数据对应的键key以及用户输入的数据的存储位置;索引记录写入模块,用于按照SMR磁盘的索引区的Zone中存储空间从前到后的顺序,将索引记录写入索引区的Zone中的空闲存储空间。
在一个实施例中,数据区管理模块,用于启动时从索引记录中读取SMR磁盘的数据区的各个Zone中已被使用的存储空间,记录数据区的各个Zone中空闲存储空间,按照空闲存储空间从小到大的顺序将数据区的各个Zone进行排序,每次写入用户输入的数据后更新数据区的各个Zone中空闲存储空间以及排序,按照数据区的各个Zone的排序选取空闲存储空间大于数据长度的数据区的Zone。
在一个实施例中,SMR磁盘的索引区包括未排序索引区和已排序索引区;索引记录写入模块,用于首先按照SMR磁盘的未排序索引区的Zone中存储空间从前到后的顺序,将索引记录写入未排序索引区的Zone中的空闲存储空间,当未排序索引区的Zone中存储的索引记录的数量达到阈值时,将未排序索引区的Zone中存储的索引记录与已排序索引区的Zone中存储的索引记录根据key进行排序,按照SMR磁盘的已排序索引区的Zone中存储空间从前到后的顺序,将排序后的所有索引记录写入已排序索引区的Zone中的空闲存储空间。
在一个实施例中,该系统还包括:区域划分模块,用于对SMR磁盘进行格式化,将SMR磁盘的存储空间划分为配置区、数据区和索引区;配置模块,用于在配置区中配置数据区、索引区的起始位置、大小以及数据的存储粒度。
在一个实施例中,该系统还包括:数据查询模块,用于接收用户的数据查询请求,根据数据查询请求中包含的key首先从未排序索引区中存储的索引记录中查找对应的索引记录,如果没有找到,再从已排序索引区中存储的索引记录中查找对应的索引记录,根据查找到的索引记录获取索引记录中记录的存储位置,向SMR磁盘发送读取指令,将存储位置存储的数据读取至内存,校验读取的数据的校验值是否与索引记录中记录的校验值一致,如果一致,则成功查询到用户欲查询的数据并返回至用户。
在一个实施例中,该系统还包括:数据信息查询模块,用于接收用户的数据信息查询请求,根据数据查询请求中包含的key首先从未排序索引区中存储的索引记录中查找对应的索引记录,如果没有找到,再从已排序索引区中存储的索引记录中查找对应的索引记录,根据查找到的索引记录,将索引记录中记录的数据信息返回至用户,数据信息包括存储位置,校验值,写入时间。
在一个实施例中,该系统还包括:列表查询模块,用于接收用户的列表查询请求,根据列表查询请求中包含的key从未排序索引区和已排序索引区中存储的索引记录中查找对应的索引记录,根据查找到的索引记录,将各个索引记录中记录的数据信息合并为列表并返回至用户,数据信息包括存储位置,校验值,写入时间。
本发明根据SMR磁盘的存储特点,写入数据和索引记录时按照Zone中存储空间从前到后的顺序,并且根据Key-Value数据库的特点分别存储索引记录和数据,实现了将Key-Value数据库与SMR磁盘的结合,既能发挥SMR磁盘存储密度高存储量大的优势,又能有效利用Key-Value数据库读取方便的特点,实时对用户输入的数据进行存储。此外,每次写入数据选取空闲存储空间大于数据长度的Zone进行存储,避免了数据的碎片化,提高数据的读取效率。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出本发明的一个实施例的数据存储方法的流程示意图。
图2示出本发明的一个实施例的SMR磁盘区域划分的示意图。
图3示出本发明的一个实施例的配置区组织形式的示意图。
图4A示出本发明的一个实施例的未排序索引区中增量日志的内部组织形式的示意图。
图4B示出本发明的一个实施例的未排序索引区中增量日志的状态转移示意图。
图5A示出本发明的一个实施例的已排序索引区中索引的内部组织形式的示意图。
图5B示出本发明的一个实施例的已排序索引区中索引的状态转移示意图。
图6示出本发明的另一个实施例的数据存储方法的流程示意图。
图7示出本发明的一个实施例的数据存储系统的流程示意图。
图8示出本发明的另一个实施例的数据存储系统的流程示意图。
图9示出本发明的一个实施例的数据存储系统的架构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
针对现有技术中使用不方便的问题,提出一种支持SMR磁盘的Key-Value存储方法,能够更好的利用SMR磁盘实现数据的实时存储。
本发明中存储系统针对SMR磁盘和Key-Value数据库的特点进行设计,如图9所示,上层应用通过API(Application Programming Interface,应用程序编程接口)管理SMR磁盘中的数据。内部功能模块例如包括索引管理器(Index Manager)、扇区管理器(SectorManager)、数据管理器(Data Manager),其中,索引管理器负责管理索引记录(包括增量日志和索引中的索引记录),负责索引记录的排序和存储,扇区管理器负责为用户输入的数据分配存储空间,需要根据Zone中存储空间的顺序为用户输入的数据按顺序分配存储空间,数据管理器通过计算将扇区管理器分配的位置转换为读写指令通过ioctl发送给SMR磁盘。
下面结合图1至图5描述本发明的数据存储方法。
图1为本发明数据存储方法一个实施例的流程图。如图1所示,该实施例的方法包括:
步骤S102,接收用户输入的数据。
其中,用户可以通过数据库上层应用的API输入欲存储的数据。可以根据实际需求设置不同功能的API,例如,用于输入数据的PUT API,用于删除数据的DELET API,用于获取数据的GET API,用于获取数据信息的HEAD API,用于获取数据列表的LIST API等。
步骤S104,根据用户输入的数据长度选取空闲存储空间大于数据长度的SMR磁盘的数据区的Zone。
其中,如图2所示,将SMR磁盘的存储空间划分为配置区、索引区和数据区,每个区域包括不同的Zone。磁盘格式化之后,配置区开头写入常量例如KVSMR。如果非此标识,认为磁盘没有格式化。如图3所示,配置区可以包括常量、版本号(Version Code)、配置区数据长度(Data Length)、以及磁盘的配置信息(Disker Info)等,例如常量之后可以使用4个字节保存版本号,版本号之后可以使用4个字节保存配置区数据长度,用于标识后面磁盘配置信息的长度。最后是磁盘配置信息的JSON(Java Script Object Notation,Java Script对象表示法)字符串。配置信息包括配置区、索引区和数据区以及每个Zone的起始位置及大小、数据的存储粒度等,在数据区进行数据存储的存储粒度例如为扇区(Sector),则配置区内磁盘的配置信息还包括Sector的大小和数量等信息。配置区内容在磁盘格式化后固化到磁盘上,启动时进行加载。如果修改配置区内容必须重新格式化。索引区用于存储数据对应的索引记录,数据区则用于存储用户输入的数据。这种将SMR磁盘分区进行存储的方法,便于后续数据的查询和获取。在系统中设置多个磁盘的情况下,索引记录和数据也可以分别存储于不同的磁盘。
其中,系统启动时例如通过ioctl加载配置区记录的磁盘的配置信息,进而从索引记录中读取SMR磁盘的数据区的各个Zone中已被使用的存储空间,在内存中记录数据区的各个Zone中空闲存储空间,按照空闲存储空间从小到大的顺序将数据区的各个Zone进行排序,每次写入用户输入的数据后更新数据区的各个Zone中空闲存储空间以及排序,按照数据区的各个Zone的排序选取空闲存储空间大于数据长度的数据区的Zone。排序时可以只将已经使用的Zone进行排序,优先从排序列表中选取Zone,如果排序列表中的Zone的空闲存储空间都无法满足用户写入的数据的长度,就再开辟一个空闲Zone加入到当前排序列表。优先分配空闲存储空间较少的Zone。如果Zone写满了,将当前正在写的Zone设置为满,将其移出当前排序列表,放入写满Zone列表中。
步骤S106,按照选取的数据区的Zone中存储空间从前到后的顺序,将用户输入的数据写入选取的数据区的Zone中的空闲存储空间。
其中,根据SMR磁盘的特点,保证数据写入时按照存储空间的顺序写入。首先为用户输入的数据分配存储位置,然后将分配的存储位置转换为写指令通过ioctl发送给SMR磁盘,写入用户输入的数据。如果期间发生错误,释放预占的位置,给用户返回错误信息。
步骤S108,根据用户输入的数据生成索引记录。
其中,索引记录包括用户输入的数据对应的键key以及用户输入的数据的存储位置(例如包括存储开始的位置、数据长度),还可以包括校验值(checksum)、修改时间、索引记录的哈希码(Hash Code)等。
步骤S110,按照SMR磁盘的索引区的Zone中存储空间从前到后的顺序,将索引记录写入索引区的Zone中的空闲存储空间。
其中,SMR磁盘的索引区包括未排序索引区和已排序索引区,分别包括不同的Zone。首先按照SMR磁盘的未排序索引区的Zone中存储空间从前到后的顺序,将用户输入数据对应的索引记录写入未排序索引区的Zone中的空闲存储空间,当未排序索引区的Zone中存储的索引记录的数量达到阈值时,将未排序索引区的Zone中存储的索引记录与已排序索引区的Zone中存储的索引记录根据key进行排序,按照SMR磁盘的已排序索引区的Zone中存储空间从前到后的顺序,将排序后的所有索引记录写入已排序索引区的Zone中的空闲存储空间。
未排序索引区中存储的索引记录整体可以称为增量日志,已排序索引区中存储的索引记录整体可以称为索引。如图4A所示为未排序索引区中增量日志的内部组织形式,增量日志本身设置版本号和状态,为进一步防止读取已废弃的索引记录,每条索引记录也设置有版本号,按照写入的顺序版本号依次加1,由于每隔一段时间需要对索引记录进行排序,因此,如图4B所示,未排序索引区中增量日志的状态可以设置为激活状态(Active)、非激活状态(Inactive)和废弃(Discard)状态,激活状态的增量日志可以新增或删除索引记录,非激活状态表示当前增量日志中的索引记录和索引中的索引记录正在进行排序归并,废弃状态表示无有效数据。三个状态之间不断的进行切换。如图5A所示,为已排序索引区中索引的内部组织形式,索引本身设置版本号和状态,每次排序完成将索引记录写入已排序索引区后,可以在末尾追加一条结束行表示区边界。索引有激活(Active)和非激活(Inactive)两个状态。索引处于激活状态时可以进行GET、LIST操作,非激活状态表示当前索引和增量日志中的索引记录正在进行排序归并。排序归并完成后,索引变为激活状态。每次排序归并操作完成后,索引的版本号等于之前索引版本号加1。排序时将未排序索引区和已排序索引区中的索引记录读取到内存中进行排序。索引区也可以不进行划分,每次写入一条索引记录时,读取所有已存储的索引记录,按照key进行排序后再将已排序的全部索引记录按照索引区的Zone中存储空间从前到后的顺序写入。将索引记录分别存入未排序索引区和已排序索引区的方法,可以减少排序次数,同时将索引按照key进行排序后存储便于后续数据的查询。
上述实施例的方法,根据SMR磁盘的存储特点,写入数据和索引记录时按照Zone中存储空间从前到后的顺序,并且根据Key-Value数据库的特点分别存储索引记录和数据,实现了将Key-Value数据库与SMR磁盘的结合,既能发挥SMR磁盘存储密度高存储量大的优势,又能有效利用Key-Value数据库读取方便的特点,实时对用户输入的数据进行存储。此外,每次写入数据选取空闲存储空间大于数据长度的Zone进行存储,避免了数据的碎片化,提高数据的读取效率。
本发明还提供利用支持SMR磁盘的Key-Value存储系统进行查找等操作的方法,下面结合图6进行描述。
图6为本发明数据存储方法另一个实施例的流程图。如图6所示,该实施例的方法还包括:
步骤S612,接收用户的数据查询请求,根据数据查询请求中包含的key首先从未排序索引区中存储的索引记录中查找对应的索引记录,如果没有找到,再从已排序索引区中存储的索引记录中查找对应的索引记录。
其中。用户可以通过GET API输入数据查询请求。由于未排序索引区中为最新生成的索引记录,因此优先查找未排序索引区。
步骤S614,根据查找到的索引记录获取索引记录中记录的存储位置,向SMR磁盘发送读取指令,将存储位置存储的数据读取至内存。
步骤S616,校验读取的数据的校验值是否与索引记录中记录的校验值一致,如果一致,则成功查询到用户欲查询的数据并返回至用户。
在一个实施例中,还提供用户基于存储的数据获取数据的存储信息的方法,如图6所示该方法还包括:
步骤S622,接收用户的数据信息查询请求,根据数据查询请求中包含的key首先从未排序索引区中存储的索引记录中查找对应的索引记录,如果没有找到,再从已排序索引区中存储的索引记录中查找对应的索引记录。
其中,用户可以通过HEAD API输入数据信息查询请求。
步骤S624,根据查找到的索引记录,将索引记录中记录的数据信息返回至用户,数据信息包括存储位置,校验值,写入时间。
在一个实施例中,还提供用户基于存储的数据获取数据的列表的方法,如图6所示该方法还包括:
步骤S632,接收用户的列表查询请求,根据列表查询请求中包含的key从未排序索引区和已排序索引区中存储的索引记录中查找对应的索引记录。
其中,用户可以通过LIST API输入列表查询请求,列表查询请求中包括欲查询的多项数据信息。
步骤S634,根据查找到的索引记录,将各个索引记录中记录的数据信息合并为列表并返回至用户,数据信息包括存储位置,校验值,写入时间。
在一个实施例中,还可以对存储数据的索引记录进行删除,接收用户的数据删除请求,根据数据删除请求中包含的key首先从未排序索引区中存储的索引记录中查找对应的索引记录,如果没有找到,再从已排序索引区中存储的索引记录中查找对应的索引记录。将查找到的索引记录进行删除。
本发明还提供一种数据存储系统,下面结合图7进行描述。
图7为本发明数据存储系统一个实施例的流程图。如图7所示,该系统70包括:
数据接收模块702,用于接收用户输入的数据。
数据区管理模块704,用于根据用户输入的数据长度选取空闲存储空间大于数据长度的SMR磁盘的数据区的Zone。
数据区管理模块704,用于启动时从索引记录中读取SMR磁盘的数据区的各个Zone中已被使用的存储空间,记录数据区的各个Zone中空闲存储空间,按照空闲存储空间从小到大的顺序将数据区的各个Zone进行排序,每次写入用户输入的数据后更新数据区的各个Zone中空闲存储空间以及排序,按照数据区的各个Zone的排序选取空闲存储空间大于数据长度的数据区的Zone。
数据写入模块706,用于按照选取的数据区的Zone中存储空间从前到后的顺序,将用户输入的数据写入选取的数据区的Zone中的空闲存储空间。
索引记录生成模块708,用于根据用户输入的数据生成索引记录,索引记录包括用户输入的数据对应的键key以及用户输入的数据的存储位置。
索引记录写入模块710,用于按照SMR磁盘的索引区的Zone中存储空间从前到后的顺序,将索引记录写入索引区的Zone中的空闲存储空间。
其中,SMR磁盘的索引区包括未排序索引区和已排序索引区;索引记录写入模块710,用于首先按照SMR磁盘的未排序索引区的Zone中存储空间从前到后的顺序,将索引记录写入未排序索引区的Zone中的空闲存储空间,当未排序索引区的Zone中存储的索引记录的数量达到阈值时,将未排序索引区的Zone中存储的索引记录与已排序索引区的Zone中存储的索引记录根据key进行排序,按照SMR磁盘的已排序索引区的Zone中存储空间从前到后的顺序,将排序后的所有索引记录写入已排序索引区的Zone中的空闲存储空间。
下面结合图8进行描述本发明数据存储系统的另一个实施例。
图8为本发明数据存储系统另一个实施例的流程图。如图8所示,该系统70还包括:
区域划分模块812,用于对SMR磁盘进行格式化,将SMR磁盘的存储空间划分为配置区、数据区和索引区。
配置模块814,用于在配置区中配置数据区、索引区的起始位置、大小以及数据的存储粒度。
在一个实施例中,系统70还包括:数据查询模块816,用于接收用户的数据查询请求,根据数据查询请求中包含的key首先从未排序索引区中存储的索引记录中查找对应的索引记录,如果没有找到,再从已排序索引区中存储的索引记录中查找对应的索引记录,根据查找到的索引记录获取索引记录中记录的存储位置,向SMR磁盘发送读取指令,将存储位置存储的数据读取至内存,校验读取的数据的校验值是否与索引记录中记录的校验值一致,如果一致,则成功查询到用户欲查询的数据并返回至用户。
在一个实施例中,系统70还包括:数据信息查询模块818,用于接收用户的数据信息查询请求,根据数据查询请求中包含的key首先从未排序索引区中存储的索引记录中查找对应的索引记录,如果没有找到,再从已排序索引区中存储的索引记录中查找对应的索引记录,根据查找到的索引记录,将索引记录中记录的数据信息返回至用户,数据信息包括存储位置,校验值,写入时间。
在一个实施例中,系统70还包括:列表查询模块820,用于接收用户的列表查询请求,根据列表查询请求中包含的key从未排序索引区和已排序索引区中存储的索引记录中查找对应的索引记录,根据查找到的索引记录,将各个索引记录中记录的数据信息合并为列表并返回至用户,数据信息包括存储位置,校验值,写入时间。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种数据存储方法,其特征在于,包括:
接收用户输入的数据;
根据用户输入的数据长度选取空闲存储空间大于所述数据长度的SMR磁盘的数据区的Zone;
按照选取的数据区的Zone中存储空间从前到后的顺序,将所述用户输入的数据写入所述选取的数据区的Zone中的空闲存储空间;
根据所述用户输入的数据生成索引记录,所述索引记录包括所述用户输入的数据对应的键key以及所述用户输入的数据的存储位置;
按照SMR磁盘的索引区的Zone中存储空间从前到后的顺序,将所述索引记录写入所述索引区的Zone中的空闲存储空间,其中,所述数据区和所述索引区包括不同的Zone;
其中,所述SMR磁盘的索引区包括未排序索引区和已排序索引区,所述按照SMR磁盘的索引区的Zone中存储空间从前到后的顺序,将所述索引记录写入所述索引区的Zone中的空闲存储空间包括:
首先按照SMR磁盘的未排序索引区的Zone中存储空间从前到后的顺序,将所述索引记录写入所述未排序索引区的Zone中的空闲存储空间;
当所述未排序索引区的Zone中存储的索引记录的数量达到阈值时,将所述未排序索引区的Zone中存储的索引记录与所述已排序索引区的Zone中存储的索引记录根据key进行排序;
按照SMR磁盘的已排序索引区的Zone中存储空间从前到后的顺序,将排序后的所有索引记录写入所述已排序索引区的Zone中的空闲存储空间。
2.根据权利要求1所述的方法,其特征在于,
所述选取空闲存储空间大于所述数据长度的SMR磁盘的数据区的Zone包括:
启动时从所述索引记录中读取SMR磁盘的数据区的各个Zone中已被使用的存储空间;
记录所述数据区的各个Zone中空闲存储空间;
按照空闲存储空间从小到大的顺序将所述数据区的各个Zone进行排序,每次写入用户输入的数据后更新所述数据区的各个Zone中空闲存储空间以及排序;
按照所述数据区的各个Zone的排序选取空闲存储空间大于所述数据长度的数据区的Zone。
3.根据权利要求1所述的方法,其特征在于,还包括:
对所述SMR磁盘进行格式化,将所述SMR磁盘的存储空间划分为配置区、数据区和索引区;
并且在配置区中配置所述数据区、索引区的起始位置、大小以及数据的存储粒度。
4.根据权利要求1所述的方法,其特征在于,还包括:
接收用户的数据查询请求,根据数据查询请求中包含的key首先从未排序索引区中存储的索引记录中查找对应的索引记录,如果没有找到,再从已排序索引区中存储的索引记录中查找对应的索引记录;
根据查找到的索引记录获取索引记录中记录的存储位置,向SMR磁盘发送读取指令,将所述存储位置存储的数据读取至内存;
校验读取的数据的校验值是否与索引记录中记录的校验值一致,如果一致,则成功查询到用户欲查询的数据并返回至用户。
5.根据权利要求1所述的方法,其特征在于,还包括:
接收用户的数据信息查询请求,根据数据查询请求中包含的key首先从未排序索引区中存储的索引记录中查找对应的索引记录,如果没有找到,再从已排序索引区中存储的索引记录中查找对应的索引记录;
根据查找到的索引记录,将索引记录中记录的数据信息返回至用户,所述数据信息包括存储位置,校验值,写入时间。
6.根据权利要求1所述的方法,其特征在于,还包括:
接收用户的列表查询请求,根据列表查询请求中包含的key从未排序索引区和已排序索引区中存储的索引记录中查找对应的索引记录;
根据查找到的索引记录,将各个索引记录中记录的数据信息合并为列表并返回至用户,所述数据信息包括存储位置,校验值,写入时间。
7.一种数据存储系统,其特征在于,包括:
数据接收模块,用于接收用户输入的数据;
数据区管理模块,用于根据用户输入的数据长度选取空闲存储空间大于所述数据长度的SMR磁盘的数据区的Zone;
数据写入模块,用于按照选取的数据区的Zone中存储空间从前到后的顺序,将所述用户输入的数据写入所述选取的数据区的Zone中的空闲存储空间;
索引记录生成模块,用于根据所述用户输入的数据生成索引记录,所述索引记录包括所述用户输入的数据对应的键key以及所述用户输入的数据的存储位置;
索引记录写入模块,用于按照SMR磁盘的索引区的Zone中存储空间从前到后的顺序,将所述索引记录写入所述索引区的Zone中的空闲存储空间,其中,所述数据区和所述索引区包括不同的Zone;
其中,所述SMR磁盘的索引区包括未排序索引区和已排序索引区,所述索引记录写入模块,用于首先按照SMR磁盘的未排序索引区的Zone中存储空间从前到后的顺序,将所述索引记录写入所述未排序索引区的Zone中的空闲存储空间,当所述未排序索引区的Zone中存储的索引记录的数量达到阈值时,将所述未排序索引区的Zone中存储的索引记录与所述已排序索引区的Zone中存储的索引记录根据key进行排序,按照SMR磁盘的已排序索引区的Zone中存储空间从前到后的顺序,将排序后的所有索引记录写入所述已排序索引区的Zone中的空闲存储空间。
8.根据权利要求7所述的系统,其特征在于,
所述数据区管理模块,用于启动时从所述索引记录中读取SMR磁盘的数据区的各个Zone中已被使用的存储空间,记录所述数据区的各个Zone中空闲存储空间,按照空闲存储空间从小到大的顺序将所述数据区的各个Zone进行排序,每次写入用户输入的数据后更新所述数据区的各个Zone中空闲存储空间以及排序,按照所述数据区的各个Zone的排序选取空闲存储空间大于所述数据长度的数据区的Zone。
9.根据权利要求7所述的系统,其特征在于,还包括:
区域划分模块,用于对所述SMR磁盘进行格式化,将所述SMR磁盘的存储空间划分为配置区、数据区和索引区;
配置模块,用于在配置区中配置所述数据区、索引区的起始位置、大小以及数据的存储粒度。
10.根据权利要求7所述的系统,其特征在于,还包括:
数据查询模块,用于接收用户的数据查询请求,根据数据查询请求中包含的key首先从未排序索引区中存储的索引记录中查找对应的索引记录,如果没有找到,再从已排序索引区中存储的索引记录中查找对应的索引记录,根据查找到的索引记录获取索引记录中记录的存储位置,向SMR磁盘发送读取指令,将所述存储位置存储的数据读取至内存,校验读取的数据的校验值是否与索引记录中记录的校验值一致,如果一致,则成功查询到用户欲查询的数据并返回至用户。
11.根据权利要求7所述的系统,其特征在于,还包括:
数据信息查询模块,用于接收用户的数据信息查询请求,根据数据查询请求中包含的key首先从未排序索引区中存储的索引记录中查找对应的索引记录,如果没有找到,再从已排序索引区中存储的索引记录中查找对应的索引记录,根据查找到的索引记录,将索引记录中记录的数据信息返回至用户,所述数据信息包括存储位置,校验值,写入时间。
12.根据权利要求7所述的系统,其特征在于,还包括:
列表查询模块,用于接收用户的列表查询请求,根据列表查询请求中包含的key从未排序索引区和已排序索引区中存储的索引记录中查找对应的索引记录,根据查找到的索引记录,将各个索引记录中记录的数据信息合并为列表并返回至用户,所述数据信息包括存储位置,校验值,写入时间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611230902.XA CN108255408B (zh) | 2016-12-28 | 2016-12-28 | 数据存储方法以及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611230902.XA CN108255408B (zh) | 2016-12-28 | 2016-12-28 | 数据存储方法以及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108255408A CN108255408A (zh) | 2018-07-06 |
CN108255408B true CN108255408B (zh) | 2021-03-23 |
Family
ID=62719399
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611230902.XA Active CN108255408B (zh) | 2016-12-28 | 2016-12-28 | 数据存储方法以及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108255408B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109324755A (zh) * | 2018-08-08 | 2019-02-12 | 成都华为技术有限公司 | 一种i/o请求派发方法及装置 |
CN110149803B (zh) * | 2018-08-27 | 2023-06-09 | 深圳市锐明技术股份有限公司 | 数据存储方法、系统及终端设备 |
CN111506250B (zh) * | 2019-01-30 | 2022-05-06 | 杭州海康威视系统技术有限公司 | 一种数据删除方法、装置、电子设备及存储介质 |
CN111506251B (zh) * | 2019-01-30 | 2023-06-02 | 杭州海康威视系统技术有限公司 | 数据处理方法、装置、smr存储系统及存储介质 |
CN110673795A (zh) * | 2019-09-19 | 2020-01-10 | 深圳市网心科技有限公司 | 数据写入方法及装置、计算机装置及存储介质 |
CN111399762B (zh) | 2019-11-27 | 2021-06-18 | 杭州海康威视系统技术有限公司 | 数据存储方法、装置及存储系统 |
CN111651127B (zh) * | 2020-06-10 | 2023-05-02 | 杭州海康威视数字技术股份有限公司 | 一种基于叠瓦式磁记录盘的监控数据存储方法及装置 |
WO2022082406A1 (zh) * | 2020-10-20 | 2022-04-28 | 深圳大学 | 一种适用于多级存储系统的分级调度方法及系统 |
CN112286451B (zh) * | 2020-10-20 | 2021-07-06 | 深圳大学 | 一种适用于多级存储系统的分级调度方法及系统 |
CN112817980B (zh) * | 2021-02-05 | 2024-06-11 | 腾讯科技(深圳)有限公司 | 一种数据索引处理方法、装置、设备及存储介质 |
CN113296700A (zh) * | 2021-04-20 | 2021-08-24 | 新华三信息技术有限公司 | 一种存储空间的管理方法、装置以及服务器 |
CN114217741A (zh) * | 2021-11-30 | 2022-03-22 | 浙江大华技术股份有限公司 | 存储装置的存储方法及存储装置 |
CN114153394A (zh) * | 2021-11-30 | 2022-03-08 | 浙江大华技术股份有限公司 | 一种数据存储管理方法、装置及设备 |
CN114461137B (zh) * | 2021-12-23 | 2024-01-02 | 天翼云科技有限公司 | 一种基于固体硬盘的写入方法及装置 |
CN114327278A (zh) * | 2021-12-30 | 2022-04-12 | 北京百度网讯科技有限公司 | 数据的追加写方法、装置、设备以及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101976226B (zh) * | 2010-10-20 | 2012-05-30 | 青岛海信宽带多媒体技术有限公司 | 一种数据存储方法 |
US9720627B2 (en) * | 2013-01-17 | 2017-08-01 | Western Digital Technologies, Inc. | Data management for a data storage device |
CN103955433A (zh) * | 2014-05-09 | 2014-07-30 | 华为技术有限公司 | 盖瓦磁记录硬盘、盖瓦磁记录硬盘写数据的方法及装置 |
US9361937B2 (en) * | 2014-08-26 | 2016-06-07 | Seagate Technology Llc | Shingled magnetic recording data store |
CN104461390B (zh) * | 2014-12-05 | 2017-10-24 | 华为技术有限公司 | 将数据写入叠瓦状磁记录smr硬盘的方法及装置 |
-
2016
- 2016-12-28 CN CN201611230902.XA patent/CN108255408B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108255408A (zh) | 2018-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108255408B (zh) | 数据存储方法以及系统 | |
US20180307428A1 (en) | Data storage method, electronic device, and computer non-volatile storage medium | |
US9043334B2 (en) | Method and system for accessing files on a storage system | |
CN110673800B (zh) | 文件系统的数据操作方法、装置、设备及可读存储介质 | |
KR100714691B1 (ko) | 파일 시스템에 추가 정보를 저장하고 관리하는 장치 및방법 | |
US8719237B2 (en) | Method and apparatus for deleting duplicate data | |
WO2021109590A1 (zh) | 一种数据存储方法、装置及电子设备和存储介质 | |
CN113821171B (zh) | 一种基于哈希表与lsm树的键值存储方法 | |
CN105787093B (zh) | 一种基于LSM-Tree结构的日志文件系统的构建方法 | |
CN104346357A (zh) | 一种嵌入式终端的文件存取方法及系统 | |
CN105912687A (zh) | 海量分布式数据库存储单元 | |
CN113568582B (zh) | 数据管理方法、装置和存储设备 | |
CN113094336B (zh) | 基于Cuckoo哈希的文件系统目录管理方法及系统 | |
CN109189772A (zh) | 用于无文件系统存储介质的文件管理方法及系统 | |
WO2022083287A1 (zh) | 存储空间管理方法、装置、设备及存储介质 | |
CN102253985B (zh) | 一种文件系统数据的管理方法及系统 | |
TWI397060B (zh) | 物件導向儲存裝置之磁碟配置方法 | |
KR100899147B1 (ko) | 메타 데이터 저장 방법 및 메타 데이터 저장 시스템 | |
CN108021562B (zh) | 应用于分布式文件系统的存盘方法、装置及分布式文件系统 | |
JP2015082291A (ja) | WORM(WriteOnceReadMany)を実現するファイルシステム | |
CN114116612B (zh) | 一种基于b+树索引归档文件的存取方法 | |
CN102799583A (zh) | 一种面向对象的存取方法及系统 | |
US20090287752A1 (en) | Recording/reproducing apparatus and information processing method | |
CN112597102B (zh) | 一种高效的镜像文件系统实现方法 | |
CN114416741A (zh) | 基于多级索引的kv数据写入读取方法、装置及存储介质 |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220124 Address after: 100007 room 205-32, floor 2, building 2, No. 1 and No. 3, qinglonghutong a, Dongcheng District, Beijing Patentee after: Tianyiyun Technology Co.,Ltd. Address before: No.31, Financial Street, Xicheng District, Beijing, 100033 Patentee before: CHINA TELECOM Corp.,Ltd. |
|
TR01 | Transfer of patent right |