CN113311993B - 数据存储方法及数据读取方法 - Google Patents

数据存储方法及数据读取方法 Download PDF

Info

Publication number
CN113311993B
CN113311993B CN202110328093.0A CN202110328093A CN113311993B CN 113311993 B CN113311993 B CN 113311993B CN 202110328093 A CN202110328093 A CN 202110328093A CN 113311993 B CN113311993 B CN 113311993B
Authority
CN
China
Prior art keywords
data
stripe
storage area
storage
stripe group
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
Application number
CN202110328093.0A
Other languages
English (en)
Other versions
CN113311993A (zh
Inventor
庄灿伟
董元元
赵亚飞
魏舒展
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Innovation Co
Original Assignee
Alibaba Innovation Co
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Innovation Co filed Critical Alibaba Innovation Co
Priority to CN202110328093.0A priority Critical patent/CN113311993B/zh
Publication of CN113311993A publication Critical patent/CN113311993A/zh
Application granted granted Critical
Publication of CN113311993B publication Critical patent/CN113311993B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

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)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种数据存储方法及数据读取方法。其中,该方法包括:将待存储数据依次存储至多个条带组的第一存储区中,并将每个第一存储区中已存储数据的校验数据存储至对应条带组的第二存储区中,其中,每个条带组的存储空间中包括第一存储区和第二存储区;在多个条带组中的第一目标条带组的第一存储区中存在剩余空间的情况下,采用多个无效数据存填充剩余空间,并将多个无效数据的数据量信息存储至第一目标条带组中的第二存储区中。本发明解决了相关技术中,在线纠删码技术中采用数据节点和元数据节点分别存储数据以及数据的元信息,数据存储可靠性低的技术问题。

Description

数据存储方法及数据读取方法
技术领域
本发明涉及数据存取技术领域,具体而言,涉及一种数据存储方法及数据读取方法。
背景技术
在分布式存储系统中,为了避免数据存取的过程中产生数据的损坏或丢失,产生了在线纠删码技术,相对于多副本技术,在线纠删码技术在不影响数据可靠性前提下可以大大降低数据存储冗余度,从而大大降低了存储成本。
在线纠删码技术是在写入数据之前,对多个数据存储节的存储空间进行条带布局,通常一个条带设置较小的存储空间(比如64K或1M),由m个原始数据条带编码生成k个校验条带,从而形成一个条带组,客户端再以条带组为单位向不同数据节点写入数据。但是,在处理文件长度不是条带组倍数的场景下,在线纠删码技术最后一个条带组难以对齐,为了避免最后一个条带的数据的丢失,相关技术中将不对齐的条带组进行数据填充,并将填充量记录在元数据节点中。
需要说明的是,数据和元数据分离存储的方式依赖元数据节点的数据存储可靠性,如果发生元数据丢失或者元数据错误,会带来整体数据的不可用。具体地,在客户端写入数据节点成功但写入元数据节点失败,系统无法获取填充量,系统从保障数据一致性角度出发会丢弃最后一个条带组的数据,由于存储系统通常将数据写入数据节点成功则返回上层业务数据写入成功,如果最后因为元数据记录失败而导致最后一笔数据丢失,会给上层业务带来较高的数据处理复杂度。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种数据存储方法及数据读取方法,以至少解决相关技术中,在线纠删码技术中采用数据节点和元数据节点分别存储数据以及数据的元信息,数据存储可靠性低的技术问题。
根据本发明实施例的一个方面,提供了一种数据存储方法,包括:将待存储数据依次存储至多个条带组的第一存储区中,并将每个第一存储区中已存储数据的校验数据存储至对应条带组的第二存储区中,其中,每个条带组的存储空间中包括第一存储区和第二存储区;在多个条带组中的第一目标条带组的第一存储区中存在剩余空间的情况下,采用多个无效数据存填充剩余空间,并将多个无效数据的数据量信息存储至第一目标条带组中的第二存储区中,其中,第一目标条带组存储有待存储数据的尾部数据。
根据本发明实施例的另一方面,还提供了一种数据读取方法,数据读取方法应用于从上述数据存储方法中的多个条带组中读取数据,包括:确定待读取数据的读取位置,并基于读取位置确定读取偏移量;计算读取偏移量与每个条带组的第一存储区大小的商值,并基于商值确定第二目标条带组的序号,其中,第二目标条带组为多个条带组中存储待读取数据的条带组;计算读取偏移量与每个条带组的第一存储区的大小的余数,并基于余数确定目标存储位置,其中,目标存储位置为待读取数据在第二目标条带组中的存储位置;根据第二目标条带组的序号从多个条带组中确定第二目标条带组,并读取第二目标条带组中目标位置存储的数据,得到待读取数据。
根据本发明实施例的另一方面,还提供了一种数据存储装置,包括:第一存储单元,用于将待存储数据依次存储至多个条带组的第一存储区中,并将每个第一存储区中已存储数据的校验数据存储至对应条带组的第二存储区中,其中,每个条带组的存储空间中包括第一存储区和第二存储区;第二存储单元,用于在多个条带组中的第一目标条带组的第一存储区中存在剩余空间的情况下,采用多个无效数据存填充剩余空间,并将多个无效数据的数据量信息存储至第一目标条带组中的第二存储区中,其中,第一目标条带组存储有待存储数据的尾部数据。
根据本发明实施例的另一方面,还提供了一种数据读取装置,包括:第三确定单元,用于确定待读取数据的读取位置,并基于读取位置确定读取偏移量;第七计算单元,用于计算读取偏移量与每个条带组的第一存储区大小的商值,并基于商值确定第二目标条带组的序号,其中,第二目标条带组为多个条带组中存储待读取数据的条带组;第八计算单元,用于计算读取偏移量与每个条带组的第一存储区的大小的余数,并基于余数确定目标存储位置,其中,目标存储位置为待读取数据在第二目标条带组中的存储位置;第四确定单元,用于根据第二目标条带组的序号从多个条带组中确定第二目标条带组,并读取第二目标条带组中目标位置存储的数据,得到待读取数据。
根据本发明实施例的另一方面,还提供了一种存储介质,其中,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述任意一项的数据存储方法,或上述任意一项的数据读取方法。
根据本发明实施例的另一方面,还提供了一种处理器,其中,处理器用于运行程序,其中,程序运行时执行上述中任意一项的数据存储方法,或上述任意一项的数据读取方法。
在本发明实施例中,将待存储数据依次存储至多个条带组的第一存储区中,并将每个第一存储区中已存储数据的校验数据存储至对应条带组的第二存储区中,其中,每个条带组的存储空间中包括第一存储区和第二存储区;在多个条带组中的第一目标条带组的第一存储区中存在剩余空间的情况下,采用多个无效数据存填充剩余空间,并将多个无效数据的数据量信息存储至第一目标条带组中的第二存储区中,其中,第一目标条带组存储有待存储数据的尾部数据。通过将待存储数据及其原数据统一存储在数据节点中,达到了提高数据存储可靠性的目的,进而解决了相关技术中,在线纠删码技术中采用数据节点和元数据节点分别存储数据以及数据的元信息,数据存储可靠性低的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的数据存储方法的计算机终端的硬件结构框图;
图2是根据本发明实施例的数据存储方法的流程图;
图3是根据本发明实施例的数据存储方法中的条带组的存储空间的示意图;
图4是根据本发明实施例的数据读取方法的流程图;
图5是根据本发明实施例的数据存储装置的示意图;
图6是根据本发明实施例的数据读取装置的示意图;以及
图7是根据本发明实施例的可选的计算机终端的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,在对本申请实施例进行描述的过程中出现的部分名词或术语适用于如下解释:
纠删码技术:Erasure Code,简称EC,EC将m个原始数据块编码生成k个校验块,形成一个组条带,系统可最多容忍任意k个原始数据块或校验块损坏,不会产生数据丢失。
在线纠删码技术:和离线纠删码技术不同,在线纠删码通常采用条带布局写入数据,条带布局方式只要凑满条带就可以写入。
元数据节点:分布式系统中文件的元信息所存储在的节点,通常用于存储文件的状态信息,及数据块的位置信息等。
数据节点:分布式系统中数据块所存储在的节点,通常负责数据块副本的写入,存储,读取,删除等操作。
实施例1
根据本发明实施例,提供了一种数据存储方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。图1示出了一种用于实现数据存储方法的计算机终端(或移动设备)的硬件结构框图。如图1所示,计算机终端10(或移动设备10)可以包括一个或多个(图中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输装置106。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储应用软件的软件程序以及模块,如本发明实施例中的数据存储方法对应的程序指令/数据存储装置,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用程序的数据存储方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算机终端10(或移动设备)的用户界面进行交互。
在上述运行环境下,本申请提供了如图2所示的数据存储方法。图2是根据本发明实施例一的数据存储方法的流程图。
S21,将待存储数据依次存储至多个条带组的第一存储区中,并将每个第一存储区中已存储数据的校验数据存储至对应条带组的第二存储区中,其中,每个条带组的存储空间中包括第一存储区和第二存储区。
具体地,待存储数据为待存储至分布式系统的多个数据节点中的数据,在本实施例中,待存储数据为待一次性存储至多个数据节点的一组数据。
在一种可选的实施方式中,在数据量较大的情况下,可以将数据划分为多个数据块,并将每个数据块作为一组待存储数据。
在一种可选的实施方式中,以包含6个数据节点,每个数据节点的存储空间为12k为例,若每个条带组的存储空间为12k,则6个数据节点的存储空间内可以布局6个条带组,其中,第一条带组的存储空间分别由第一数据节点的第1k到2k的存储空间、第二数据节点的第1k到2k的存储空间、第三数据节点的第1k到2k的存储空间、第四数据节点的第1k到2k的存储空间、第五数据节点的第1k到2k的存储空间以及第六数据节点的第1k到2k的存储空间共同构成。同理,第二条带组的存储空间分别由第一数据节点至第六数据节点的第3k到第4k的存储空间共同构成;第三条带组的存储空间分别由第一数据节点至第六数据节点的第5k到第6k的存储空间共同构成;第四条带组的存储空间分别由第一数据节点至第六数据节点的第7k到第8k的存储空间共同构成;第五条带组的存储空间分别由第一数据节点至第六数据节点的第9k到第10k的存储空间共同构成;第六条带组的存储空间分别由第一数据节点至第六数据节点的第11k到第12k的存储空间共同构成。
进一步的,将每个条带组的存储空间划分为第一存储区和第二存储区,若每个条带组的存储空间为12k,可以将第1到11k的存储空间划分为第一存储区,将第12k的存储空间划分为第二存储区。
再进一步的,将待存储数据依次存储至多个条带组的第一存储区中,是指先将待存储数据存储至第一条带组的第一存储区域,在第一条带组的第一存储区域已存满数据,而待存储数据还存在剩余的情况下,将剩余数据存储至第二条带组的第一存储区,直至将待存储数据全部存储完毕。
需要说明的是,为了避免数据的丢失和读写异常,还在每个条带组的存储空间内设置有第二存储空间,第二存储空间内可以存储第一存储空间内的数据的校验睡觉,以条带组的存储空间包含11k的第一存储区域,包含1k的第二存储区域为例,可以对第一存储区域内存储的11k数据进行异或逻辑操作,得到校验数据,并将校验数据存储至第二存储区域。
S22,在多个条带组中的第一目标条带组的第一存储区中存在剩余空间的情况下,采用多个无效数据存填充剩余空间,并将多个无效数据的数据量信息存储至第一目标条带组中的第二存储区中,其中,第一目标条带组存储有待存储数据的尾部数据。
需要说明的是,第一目标条带组即为多个条带组中的最后一个条带组。具体地,由于待存储数据是按照条带组的顺序进行存储的,在存满前一个条带组的第一存储区后,再将数据存储后一个条带组的第一存储区中,在待存储数据的数据量不是条带组的第一存储区的大小的整数倍的情况下,最后一个用户存储待存储数据的条带组的第一存储空间存在剩余存储空间。
进一步的,为了避免最后一个条带的数据的丢失,可以采用无效数据填充最后一个条带组中的无效数据,并将填充量记录在最后一个条带组的第二存储区内。如图3所示,每个条带组的存储空间的首部为第一存储区,尾部为第二存储区,条带组n为第一目标条带组,在条带组1-条带组n-1中的第一存储区内存储用户数据,在条带组n的第一存储区内存储用户数据和填充数据。
此外,在条带组1-条带组n-1中的第二存储区内存储用户数据的元信息,具体地,元信息包括无效数据的数据量信息,也即填充数据的填充量,只有条带组n的填充量不等于0,条带组1-条带组n-1的填充量为0;元信息还包括用户数据的校验数据,用于校验用户数据;元信息还包括固定字符串,用于表征第二存储区为元信息存储区。
通过本实施例,使用固定长度的第二存储区域来记录元信息,包括数据填充量、校验数据等,空间冗余度小(例如,一个条带组设置16K或者1M,一个条带组占用16B的第二存储区,空间冗余度0.1%或者0.0016%),一致性处理简单,并且不依赖于元数据节点。
需要说明的是,无效数据的填充量是强状态的元数据,需要保证强的一致性。通过本实施例,在写入数据时,将待存储数据、填充数据和填充数据量统一存储,避免了数据和元数据分离存储带来的一致性问题,并且降低了对元数据节点的高可靠依赖。
根据本申请上述实施例,多个条带组的存储空间的大小相同,多个条带组的第二存储区的大小相同,在将待存储数据依次存储至多个条带组的第一存储区中,并将每个第一存储区中已存储数据的校验数据存储至对应条带组的第二存储区中之前,该方法还包括:获取每个条带组的存储空间的大小以及每个条带组的第二存储区的大小;计算每个条带组的存储空间的大小与条带组的第二存储区的大小的差值,并将差值确定为条带组的有效存储空间的大小;将待存储数据依次存储至多个条带组的第一存储区中包括:基于每个条带组的有效存储空间的大小,将待存储数据依次存储至多个条带组的第一存储区中,直至待存储数据存储完毕。
具体地,在向分布式存储节点的多个条带组存储待存储数据时,非最后一笔数据以固定大小向每个条带组写入,非最后一笔数据固定写入大小的大小writeSize可以由下式确定:
writeSize=StripGroupSize–FixedFooterSize。
其中,StripGroupSize为每个条带组的存储空间的大小,FixedFooterSize为每个条带组的第二存储区的大小。
需要说明的是,非最后一笔数据固定写入大小的大小也即条带组的有效存储空间的大小,在得到条带组的有效存储空间的大小之后,将待存储数据按照有效存储空间的大小依次存储至多个条带组的第一存储区中,直至待存储数据存储完毕。
根据本申请上述实施例,在多个条带组中的第一目标条带组的第一存储区中存在剩余空间的情况下,采用多个无效数据存填充剩余空间,并将多个无效数据的数据量信息存储至第一目标条带组中的第二存储区中之前,该方法还包括:计算第一目标条带组的存储空间的大小与第一目标条带组的第二存储区的差值,得到第一数据量;确定第一目标条带组的第一存储区中已存储数据的数据量,得到第二数据量;计算第一数据量与第二数据量的差值,并基于差值确定多个无效数据的数据量信息。
具体地,在向分布式存储节点的多个条带组存储待存储数据时,最后一笔数据以任意长度写入,并在条带填充无效数据(也即无用数据),以凑满条带组的第一存储区域。
其中,无效数据填充大小paddingSize可以由下式确定:
paddingSize=StripGroupSize UsrDataSize FixedFooterSize。
其中,StripGroupSize为每个条带组的存储空间的大小,UsrDataSize为第一目标条带组的第一存储区内存储的数据的数据量,FixedFooterSize为第一目标条带组的第二存储区的大小。
根据本申请上述实施例,该方法还包括:计算多个无效数据的数据量信息的校验数据,并将校验数据存储至第一目标条带组中的第二存储区中。
具体地,为了保证多个无效数据的数据量信息的准确性,还可以计算多个无效数据的数据量信息的校验数据,并将该校验数据也存储至第一目标条带组中的第二存储区中,从而在无效数据的数据量信息出现异常的情况下,对无效数据的数据量信息进行校验。
根据本申请上述实施例,在多个条带组中的第一目标条带组的第一存储区中存在剩余空间的情况下,采用多个无效数据存填充剩余空间,并将多个无效数据的数据量信息存储至第一目标条带组中的第二存储区中之后,该方法还包括:确定待存储数据所占据的多个条带组的数目,并确定多个条带组中每个条带组的第一存储区域已存储数据的数据量;计算数目和已存储数据的数据量的乘积,得到第三数据量;从多个条带组的第一目标条带组中的第二存储区内获取无效数据的数据量信息,得到无效数据的数据量;计算第三数据量和无效数据的数据量的差值,并将差值确定为待存储数据的数据量。
需要说明的是,在待存储数据并非条带组的第一存储区的大小的整数倍的情况下,可以按照下式计算写入分布式系统的待存储数据的数据量,也即待存储数据的长度Length:
Client failover后,metaNode向dataNode读取最后一个条带组的FixedFooter获取paddingSize,从而计算该block长度。
Length=(StripGroupSize FixedFooterSize)*N–paddingSize。
其中,StripGroupSize为每个条带组的存储空间的大小,FixedFooterSize为第一目标条带组的第二存储区的大小,N为写入的待存储数据所占据的条带组的数量,paddingSize为第一目标条带组的第一存储区内填充的无效数据的数据量。
通过本实施例,达到了在待存储数据并非条带组的第一存储区的大小的整数倍的情况下,准确获取待存储数据的长度的目的。
实施例2
根据本发明实施例,还提供了一种数据读取方法,应用于从上述任一项中的多个条带组中读取数据,如图4所示,包括:
步骤S41,确定待读取数据的读取位置,并基于读取位置确定读取偏移量。
具体地,待读取数据以上述任意一项实施例中的数据存储方法存储在分布式存储系统的多个数据节点中。确定待读取数据的读取位置,即为确定在多个条带组的哪个位置读取数据,例如,确定在多个条带组的13k的位置读取数据,则确定读取偏移量可以为13k。
步骤S42,计算读取偏移量与每个条带组的第一存储区大小的商值,并基于商值确定第二目标条带组的序号,其中,第二目标条带组为多个条带组中存储待读取数据的条带组。
需要说明的是,读取待读取数据的过程即为先确定待读取数据在哪个条带组以及相应条带组内的哪个位置,再进行数据的读取。
具体地,第二目标条带组即为待读取数据所在的条带组,可以按照下式确定第二目标条带组的序号StripGroupIndex:
StripGroupIndex=readOffset/(StripGroupSize FixedFooterSize)。
其中,readOffset为读取偏移量,StripGroupSize为每个条带组的存储空间的大小,FixedFooterSize为第一目标条带组的第二存储区的大小,符号“/”表示求商值。
步骤S43,计算读取偏移量与每个条带组的第一存储区的大小的余数,并基于余数确定目标存储位置,其中,目标存储位置为待读取数据在第二目标条带组中的存储位置。
具体地,可以按照下式确定待读取数据在第二目标条带组中的位置偏移量StripGroupOffset,位置偏移量StripGroupOffset可以用于表征待读取数据在第二目标条带组中的存储位置:
StripGroupOffset=readOffset%(StripGroupSize FixedFooterSize)。
其中,readOffset为读取偏移量,StripGroupSize为每个条带组的存储空间的大小,FixedFooterSize为第一目标条带组的第二存储区的大小,符号“/”表示求余数。
步骤S44,根据第二目标条带组的序号从多个条带组中确定第二目标条带组,并读取第二目标条带组中目标位置存储的数据,得到待读取数据。
具体地,在待读取的数据为单个数据的情况下,根据第二目标条带组的序号定位至第二目标条带组,并从第二目标条带组的首部移动位置偏移量StripGroupOffset对应的长度,到达目标位置,并在目标位置读取数据,得到待读取的数据。
在可选的实施方式中,在待读取的数据为一段存储空间对应的数据的情况下,找到该段存储空间对应的第一个待读取数据的位置,以及最后一个待读取数据的位置,从高第一个待读取数据的位置读取数据,并跳过第二存储区域以及第一存储区域内的无效数据,得到待读取数据,其中,无效数据的填充长度可以从第二区域内解析得到。
根据本申请上述实施例,在确定待读取数据的读取位置,并基于读取位置确定读取偏移量之后,该方法还包括:获取每个条带组的存储空间的大小以及每个条带组的第二存储区的大小;计算每个条带组的存储空间的大小与条带组的第二存储区的大小的差值,并将差值确定为条带组的第一存储区的大小。
需要说明的是,由于每个条带组的存储空间的大小是固定的,每个条带组的第二存储区的大小也是预先设定的,也是固定的,可以通过二者计算条带组的第一存储区的大小,为确定待读取数据的位置奠定了数据基础。
根据本申请上述实施例,在根据第二目标条带组的序号从多个条带组中确定第二目标条带组,并读取第二目标条带组中目标位置存储的数据,得到待读取数据之后,该方法还包括:从第二目标条带组中的第二存储区中获取待读取数据的校验数据;基于校验数据以及第一存储区中除待读取数据以外的数据,对待读取数据进行校验。
具体地,在数据读取的过程在还可以对待读取数据进行校验,例如,在读取失败,或读取数据异常的情况下,可以读取第二目标条带组的第一存储区域的待读取数据以外的其他数据,并从第二目标条带组的第二存储区域内获取待读取数据对应的检验数据,从而根据反向逻辑计算得到待存储数据的值,避免了数据和元数据分离存储的情况下,元信息丢失导致待读取数据难以获取的问题。
在一种可选的实施方式中,在第二目标条带组的第一存储区域中填充有无效数据的情况下,可以从第二目标条带组的第二存储区域内获取无效数据的数据量信息,并获取无效数据的数据量信息对应的校验数据,对无效数据的数据量信息进行校验,从而为待读取数据的准确读取奠定数据基础。
此外,由于本申请实施例中的在线纠删码对应的条带组布局方式中,每个条带组占用固定长度的元信息存储区,读取数据的上层应用可以计算出数据在条带组中的位置,从而实现数据的感知。
通过本公开实施例,在数据存取之前,对条带组进行了第一存储区域和第二存储区域的划分,在数据存储时,以较小的存储冗余实现元数据和数据的统一存储,并在读取数据时从第二存储区内解析原数据,实现了不依赖元数据节点达到提高读取数据的准确度的效果,避免了在写入数据并非条带组的存储空间的整数倍的场景下,丢失最后一笔数据的风险,并且实现了数据读取应用感知数据位置的目的。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例3
根据本发明实施例,还提供了一种用于实施上述数据存储方法的装置,如图5所示,该装置包括:
第一存储单元51,用于将待存储数据依次存储至多个条带组的第一存储区中,并将每个第一存储区中已存储数据的校验数据存储至对应条带组的第二存储区中,其中,每个条带组的存储空间中包括第一存储区和第二存储区。
第二存储单元52,用于在多个条带组中的第一目标条带组的第一存储区中存在剩余空间的情况下,采用多个无效数据存填充剩余空间,并将多个无效数据的数据量信息存储至第一目标条带组中的第二存储区中,其中,第一目标条带组存储有待存储数据的尾部数据。
根据本申请上述实施例,多个条带组的存储空间的大小相同,多个条带组的第二存储区的大小相同,装置还包括:第一获取单元,用于在将待存储数据依次存储至多个条带组的第一存储区中,并将每个第一存储区中已存储数据的校验数据存储至对应条带组的第二存储区中之前,获取每个条带组的存储空间的大小以及每个条带组的第二存储区的大小;第一计算单元,用于计算每个条带组的存储空间的大小与条带组的第二存储区的大小的差值,并将差值确定为条带组的有效存储空间的大小;第一存储单元51还用于基于每个条带组的有效存储空间的大小,将待存储数据依次存储至多个条带组的第一存储区中,直至待存储数据存储完毕。
根据本申请上述实施例,装置还包括:第二计算单元,用于在多个条带组中的第一目标条带组的第一存储区中存在剩余空间的情况下,采用多个无效数据存填充剩余空间,并将多个无效数据的数据量信息存储至第一目标条带组中的第二存储区中之前,计算第一目标条带组的存储空间的大小与第一目标条带组的第二存储区的差值,得到第一数据量;第一确定单元,用于确定第一目标条带组的第一存储区中已存储数据的数据量,得到第二数据量;第三计算单元,用于计算第一数据量与第二数据量的差值,并基于差值确定多个无效数据的数据量信息。
根据本申请上述实施例,装置还包括:第四计算单元,用于计算多个无效数据的数据量信息的校验数据,并将校验数据存储至第一目标条带组中的第二存储区中。
根据本申请上述实施例,装置还包括:第二确定单元,用于在多个条带组中的第一目标条带组的第一存储区中存在剩余空间的情况下,采用多个无效数据存填充剩余空间,并将多个无效数据的数据量信息存储至第一目标条带组中的第二存储区中之后,确定待存储数据所占据的多个条带组的数目,并确定多个条带组中每个条带组的第一存储区域已存储数据的数据量;第五计算单元,用于计算数目和已存储数据的数据量的乘积,得到第三数据量;第二获取单元,用于从多个条带组的第一目标条带组中的第二存储区内获取无效数据的数据量信息,得到无效数据的数据量;第六计算单元,用于计算第三数据量和无效数据的数据量的差值,并将差值确定为待存储数据的数据量。
此处需要说明的是,上述单元及模块对应于实施例1中的步骤,单元及模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的计算机终端10中。
实施例4
根据本发明实施例,还提供了一种用于实施上述数据读取方法的装置,如图6所示,该装置包括:
第三确定单元61,用于确定待读取数据的读取位置,并基于读取位置确定读取偏移量。
第七计算单元62,用于计算读取偏移量与每个条带组的第一存储区大小的商值,并基于商值确定第二目标条带组的序号,其中,第二目标条带组为多个条带组中存储待读取数据的条带组。
第八计算单元63,用于计算读取偏移量与每个条带组的第一存储区的大小的余数,并基于余数确定目标存储位置,其中,目标存储位置为待读取数据在第二目标条带组中的存储位置。
第四确定单元64,用于根据第二目标条带组的序号从多个条带组中确定第二目标条带组,并读取第二目标条带组中目标位置存储的数据,得到待读取数据。
根据本申请上述实施例,所述装置还包括:第三获取单元,用于在所述确定待读取数据的读取位置,并基于所述读取位置确定读取偏移量之后,获取每个所述条带组的所述存储空间的大小以及每个所述条带组的所述第二存储区的大小;第九计算单元,用于计算每个所述条带组的所述存储空间的大小与所述条带组的所述第二存储区的大小的差值,并将所述差值确定为所述条带组的所述第一存储区的大小。
根据本申请上述实施例,在所述根据所述第二目标条带组的序号从所述多个条带组中确定所述第二目标条带组,并读取所述第二目标条带组中所述目标位置存储的数据,得到所述待读取数据之后,所述装置还包括:第四获取单元,用于从所述第二目标条带组中的所述第二存储区中获取所述待读取数据的校验数据;校验单元,用于基于所述校验数据以及所述第一存储区中除所述待读取数据以外的数据,对所述待读取数据进行校验。
此处需要说明的是,上述单元及模块对应于实施例2中的步骤,所述单元及模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的计算机终端10中。
实施例5
本发明的实施例可以提供一种计算机终端,该计算机终端可以是计算机终端群中的任意一个计算机终端设备。可选地,在本实施例中,上述计算机终端也可以替换为移动终端等终端设备。
可选地,在本实施例中,上述计算机终端可以位于计算机网络的多个网络设备中的至少一个网络设备。
在本实施例中,上述计算机终端可以执行应用程序的数据存储方法中以下步骤的程序代码:将待存储数据依次存储至多个条带组的第一存储区中,并将每个第一存储区中已存储数据的校验数据存储至对应条带组的第二存储区中,其中,每个条带组的存储空间中包括第一存储区和第二存储区;在多个条带组中的第一目标条带组的第一存储区中存在剩余空间的情况下,采用多个无效数据存填充剩余空间,并将多个无效数据的数据量信息存储至第一目标条带组中的第二存储区中,其中,第一目标条带组存储有待存储数据的尾部数据。
上述计算机终端还可以执行应用程序的数据读取方法中以下步骤的程序代码:确定待读取数据的读取位置,并基于读取位置确定读取偏移量;计算读取偏移量与每个条带组的第一存储区大小的商值,并基于商值确定第二目标条带组的序号,其中,第二目标条带组为多个条带组中存储待读取数据的条带组;计算读取偏移量与每个条带组的第一存储区的大小的余数,并基于余数确定目标存储位置,其中,目标存储位置为待读取数据在第二目标条带组中的存储位置;根据第二目标条带组的序号从多个条带组中确定第二目标条带组,并读取第二目标条带组中目标位置存储的数据,得到待读取数据。
可选地,图7是根据本发明实施例的一种计算机终端的结构框图。如图7所示,该计算机终端A可以包括:一个或多个(图中仅示出一个)处理器、存储器。
其中,存储器可用于存储软件程序以及模块,如本发明实施例中的数据处理方法和装置对应的程序指令/模块,处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据存储方法以及数据读取方法。存储器可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至终端A。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:将待存储数据依次存储至多个条带组的第一存储区中,并将每个第一存储区中已存储数据的校验数据存储至对应条带组的第二存储区中,其中,每个条带组的存储空间中包括第一存储区和第二存储区;在多个条带组中的第一目标条带组的第一存储区中存在剩余空间的情况下,采用多个无效数据存填充剩余空间,并将多个无效数据的数据量信息存储至第一目标条带组中的第二存储区中,其中,第一目标条带组存储有待存储数据的尾部数据。
处理器还可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:确定待读取数据的读取位置,并基于读取位置确定读取偏移量;计算读取偏移量与每个条带组的第一存储区大小的商值,并基于商值确定第二目标条带组的序号,其中,第二目标条带组为多个条带组中存储待读取数据的条带组;计算读取偏移量与每个条带组的第一存储区的大小的余数,并基于余数确定目标存储位置,其中,目标存储位置为待读取数据在第二目标条带组中的存储位置;根据第二目标条带组的序号从多个条带组中确定第二目标条带组,并读取第二目标条带组中目标位置存储的数据,得到待读取数据。
采用本发明实施例,提供了一种数据存储的方案:将待存储数据依次存储至多个条带组的第一存储区中,并将每个第一存储区中已存储数据的校验数据存储至对应条带组的第二存储区中,其中,每个条带组的存储空间中包括第一存储区和第二存储区;在多个条带组中的第一目标条带组的第一存储区中存在剩余空间的情况下,采用多个无效数据存填充剩余空间,并将多个无效数据的数据量信息存储至第一目标条带组中的第二存储区中,其中,第一目标条带组存储有待存储数据的尾部数据。通过将待存储数据及其原数据统一存储在数据节点中,达到了提高数据存储可靠性的目的,进而解决了相关技术中,在线纠删码技术中采用数据节点和元数据节点分别存储数据以及数据的元信息,数据存储可靠性低的技术问题。
本领域普通技术人员可以理解,图7所示的结构仅为示意,计算机终端也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌声电脑以及移动互联网设备(MobileInternet Devices,MID)、PAD等终端设备。图7其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图7中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图7所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
实施例6
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于保存上述实施例一所提供的数据存储方法以及数据读取方法所执行的程序代码。
可选地,在本实施例中,上述存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:将待存储数据依次存储至多个条带组的第一存储区中,并将每个第一存储区中已存储数据的校验数据存储至对应条带组的第二存储区中,其中,每个条带组的存储空间中包括第一存储区和第二存储区;在多个条带组中的第一目标条带组的第一存储区中存在剩余空间的情况下,采用多个无效数据存填充剩余空间,并将多个无效数据的数据量信息存储至第一目标条带组中的第二存储区中,其中,第一目标条带组存储有待存储数据的尾部数据。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:确定待读取数据的读取位置,并基于读取位置确定读取偏移量;计算读取偏移量与每个条带组的第一存储区大小的商值,并基于商值确定第二目标条带组的序号,其中,第二目标条带组为多个条带组中存储待读取数据的条带组;计算读取偏移量与每个条带组的第一存储区的大小的余数,并基于余数确定目标存储位置,其中,目标存储位置为待读取数据在第二目标条带组中的存储位置;根据第二目标条带组的序号从多个条带组中确定第二目标条带组,并读取第二目标条带组中目标位置存储的数据,得到待读取数据。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (12)

1.一种数据存储方法,其特征在于,包括:
将待存储数据依次存储至多个条带组的第一存储区中,并将每个所述第一存储区中已存储数据的校验数据存储至对应条带组的第二存储区中,其中,每个所述条带组的存储空间中包括所述第一存储区和所述第二存储区,所述将待存储数据依次存储至多个条带组的第一存储区中包括:将所述待存储数据存储至第一条带组的所述第一存储区域,在所述第一条带组的所述第一存储区域已存满数据,而所述待存储数据还存在剩余的情况下,将剩余数据存储至第二条带组的所述第一存储区,直至将所述待存储数据全部存储完毕;
在所述多个条带组中的第一目标条带组的第一存储区中存在剩余空间的情况下,采用多个无效数据存填充所述剩余空间,并将所述多个无效数据的数据量信息存储至所述第一目标条带组中的所述第二存储区中,其中,所述第一目标条带组存储有所述待存储数据的尾部数据;
其中,每个条带组的所述第二存储区内存储元信息,所述元信息包括无效数据的数据量信息以及已存储数据的校验数据,其中,所述第一目标条带的数据量信息不等于0,所述第一目标条带以外的条带的无效数据的数据量信息等于0。
2.根据权利要求1所述的方法,其特征在于,所述多个条带组的所述存储空间的大小相同,所述多个条带组的所述第二存储区的大小相同,在所述将所述待存储数据依次存储至多个条带组的第一存储区中,并将每个所述第一存储区中已存储数据的校验数据存储至对应条带组的第二存储区中之前,所述方法还包括:
获取每个所述条带组的所述存储空间的大小以及每个所述条带组的所述第二存储区的大小;
计算每个所述条带组的所述存储空间的大小与所述条带组的所述第二存储区的大小的差值,并将所述差值确定为所述条带组的有效存储空间的大小;
将所述待存储数据依次存储至多个条带组的第一存储区中包括:基于每个所述条带组的所述有效存储空间的大小,将所述待存储数据依次存储至所述多个条带组的所述第一存储区中,直至所述待存储数据存储完毕。
3.根据权利要求2所述的方法,其特征在于,在所述多个条带组中的第一目标条带组的第一存储区中存在剩余空间的情况下,采用多个无效数据存填充所述剩余空间,并将所述多个无效数据的数据量信息存储至所述第一目标条带组中的所述第二存储区中之前,所述方法还包括:
计算所述第一目标条带组的所述存储空间的大小与所述第一目标条带组的所述第二存储区的差值,得到第一数据量;
确定所述第一目标条带组的所述第一存储区中已存储数据的数据量,得到第二数据量;
计算所述第一数据量与所述第二数据量的差值,并基于所述差值确定所述多个无效数据的数据量信息。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
计算所述多个无效数据的数据量信息的校验数据,并将所述校验数据存储至所述第一目标条带组中的所述第二存储区中。
5.根据权利要求1所述的方法,其特征在于,在所述多个条带组中的第一目标条带组的第一存储区中存在剩余空间的情况下,采用多个无效数据存填充所述剩余空间,并将所述多个无效数据的数据量信息存储至所述第一目标条带组中的所述第二存储区中之后,所述方法还包括:
确定所述待存储数据所占据的所述多个条带组的数目,并确定所述多个条带组中每个条带组的所述第一存储区域已存储数据的数据量;
计算所述数目和所述已存储数据的数据量的乘积,得到第三数据量;
从所述多个条带组的第一目标条带组中的所述第二存储区内获取所述无效数据的数据量信息,得到所述无效数据的数据量;
计算所述第三数据量和所述无效数据的数据量的差值,并将所述差值确定为所述待存储数据的数据量。
6.一种数据读取方法,其特征在于,所述数据读取方法应用于从权利要求1至5任意一项中的所述多个条带组中读取数据,包括:
确定待读取数据的读取位置,并基于所述读取位置确定读取偏移量;
计算所述读取偏移量与每个所述条带组的所述第一存储区大小的商值,并基于所述商值确定第二目标条带组的序号,其中,所述第二目标条带组为所述多个条带组中存储所述待读取数据的条带组;
计算所述读取偏移量与每个所述条带组的所述第一存储区的大小的余数,并基于所述余数确定目标存储位置,其中,所述目标存储位置为所述待读取数据在所述第二目标条带组中的存储位置;
根据所述第二目标条带组的序号从所述多个条带组中确定所述第二目标条带组,并读取所述第二目标条带组中所述目标存储位置存储的数据,得到所述待读取数据。
7.根据权利要求6所述的方法,其特征在于,在所述确定待读取数据的读取位置,并基于所述读取位置确定读取偏移量之后,所述方法还包括:
获取每个所述条带组的所述存储空间的大小以及每个所述条带组的所述第二存储区的大小;
计算每个所述条带组的所述存储空间的大小与所述条带组的所述第二存储区的大小的差值,并将所述差值确定为所述条带组的所述第一存储区的大小。
8.根据权利要求6所述的方法,其特征在于,在所述根据所述第二目标条带组的序号从所述多个条带组中确定所述第二目标条带组,并读取所述第二目标条带组中所述目标存储位置存储的数据,得到所述待读取数据之后,所述方法还包括:
从所述第二目标条带组中的所述第二存储区中获取所述待读取数据的校验数据;
基于所述校验数据以及所述第一存储区中除所述待读取数据以外的数据,对所述待读取数据进行校验。
9.一种数据存储装置,其特征在于,包括:
第一存储单元,用于将待存储数据依次存储至多个条带组的第一存储区中,并将每个所述第一存储区中已存储数据的校验数据存储至对应条带组的第二存储区中,其中,每个所述条带组的存储空间中包括所述第一存储区和所述第二存储区,所述将待存储数据依次存储至多个条带组的第一存储区中包括:将所述待存储数据存储至第一条带组的所述第一存储区域,在所述第一条带组的所述第一存储区域已存满数据,而所述待存储数据还存在剩余的情况下,将剩余数据存储至第二条带组的所述第一存储区,直至将所述待存储数据全部存储完毕;
第二存储单元,用于在所述多个条带组中的第一目标条带组的第一存储区中存在剩余空间的情况下,采用多个无效数据存填充所述剩余空间,并将所述多个无效数据的数据量信息存储至所述第一目标条带组中的所述第二存储区中,其中,所述第一目标条带组存储有所述待存储数据的尾部数据;
其中,每个条带组的所述第二存储区内存储元信息,所述元信息包括无效数据的数据量信息以及已存储数据的校验数据,其中,所述第一目标条带的数据量信息不等于0,所述第一目标条带以外的条带的无效数据的数据量信息等于0。
10.一种数据读取装置,其特征在于,所述数据读取装置应用于从权利要求9中的所述多个条带组中读取数据,包括:
第三确定单元,用于确定待读取数据的读取位置,并基于所述读取位置确定读取偏移量;
第七计算单元,用于计算所述读取偏移量与每个所述条带组的所述第一存储区大小的商值,并基于所述商值确定第二目标条带组的序号,其中,所述第二目标条带组为所述多个条带组中存储所述待读取数据的条带组;
第八计算单元,用于计算所述读取偏移量与每个所述条带组的所述第一存储区的大小的余数,并基于所述余数确定目标存储位置,其中,所述目标存储位置为所述待读取数据在所述第二目标条带组中的存储位置;
第四确定单元,用于根据所述第二目标条带组的序号从所述多个条带组中确定所述第二目标条带组,并读取所述第二目标条带组中所述目标存储位置存储的数据,得到所述待读取数据。
11.一种存储介质,其中,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1至5中任意一项所述的数据存储方法,或6至8中任意一项所述的数据读取方法。
12.一种处理器,其中,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至5中任意一项所述的数据存储方法,或6至8中任意一项所述的数据读取方法。
CN202110328093.0A 2021-03-26 2021-03-26 数据存储方法及数据读取方法 Active CN113311993B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110328093.0A CN113311993B (zh) 2021-03-26 2021-03-26 数据存储方法及数据读取方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110328093.0A CN113311993B (zh) 2021-03-26 2021-03-26 数据存储方法及数据读取方法

Publications (2)

Publication Number Publication Date
CN113311993A CN113311993A (zh) 2021-08-27
CN113311993B true CN113311993B (zh) 2024-04-26

Family

ID=77372174

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110328093.0A Active CN113311993B (zh) 2021-03-26 2021-03-26 数据存储方法及数据读取方法

Country Status (1)

Country Link
CN (1) CN113311993B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114035743B (zh) * 2021-10-14 2024-05-14 长沙韶光半导体有限公司 机器人传感数据的存储方法及相关设备
CN114661711B (zh) * 2022-03-11 2023-08-29 上海原能细胞生物低温设备有限公司 样本存储位置分配方法、装置、电子设备及存储介质
CN117215475A (zh) * 2022-05-31 2023-12-12 上海寒武纪信息科技有限公司 数据存储、访问、运算方法及相关产品
CN116578247B (zh) * 2023-07-10 2023-10-13 西安羚控电子科技有限公司 一种基于元数据的数据存取方法及系统

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110618895A (zh) * 2019-09-29 2019-12-27 北京天融信网络安全技术有限公司 一种基于纠删码的数据更新方法、装置和存储介质
CN110874284A (zh) * 2018-09-03 2020-03-10 阿里巴巴集团控股有限公司 数据处理的方法和装置
CN110968255A (zh) * 2018-09-29 2020-04-07 阿里巴巴集团控股有限公司 数据处理方法、装置、存储介质以及处理器
CN111164574A (zh) * 2017-10-02 2020-05-15 西部数据技术公司 基于存储设备内部地址的冗余编码条带
WO2020132849A1 (zh) * 2018-12-25 2020-07-02 华为技术有限公司 分布式存储系统中数据存储方法、装置及计算机程序产品
WO2020186081A1 (en) * 2019-03-12 2020-09-17 Intel Corporation Computational data storage systems
CN112000627A (zh) * 2020-08-14 2020-11-27 苏州浪潮智能科技有限公司 一种数据存储方法、系统、电子设备及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111164574A (zh) * 2017-10-02 2020-05-15 西部数据技术公司 基于存储设备内部地址的冗余编码条带
CN110874284A (zh) * 2018-09-03 2020-03-10 阿里巴巴集团控股有限公司 数据处理的方法和装置
CN110968255A (zh) * 2018-09-29 2020-04-07 阿里巴巴集团控股有限公司 数据处理方法、装置、存储介质以及处理器
WO2020132849A1 (zh) * 2018-12-25 2020-07-02 华为技术有限公司 分布式存储系统中数据存储方法、装置及计算机程序产品
WO2020186081A1 (en) * 2019-03-12 2020-09-17 Intel Corporation Computational data storage systems
CN110618895A (zh) * 2019-09-29 2019-12-27 北京天融信网络安全技术有限公司 一种基于纠删码的数据更新方法、装置和存储介质
CN112000627A (zh) * 2020-08-14 2020-11-27 苏州浪潮智能科技有限公司 一种数据存储方法、系统、电子设备及存储介质

Also Published As

Publication number Publication date
CN113311993A (zh) 2021-08-27

Similar Documents

Publication Publication Date Title
CN113311993B (zh) 数据存储方法及数据读取方法
CN102937967B (zh) 数据冗余实现方法及装置
CN110427785B (zh) 设备指纹的获取方法和装置、存储介质及电子装置
CN109412755B (zh) 一种多媒体数据处理方法、装置及存储介质
US10332565B2 (en) Video stream storage method, reading method and device
US10838649B2 (en) Relocating storage unit data in response to detecting hotspots in a dispersed storage network
CN113312205B (zh) 数据校验方法、装置、存储介质和计算机设备
CN112235422B (zh) 数据处理方法、装置、计算机可读存储介质及电子装置
CN116107797A (zh) 数据存储方法及装置、电子设备和存储介质
CN110968255B (zh) 数据处理方法、装置、存储介质以及处理器
CN111435288A (zh) 数据的处理方法和装置
CN109542665A (zh) 掉电恢复方法、数据写入方法及装置
CN112306954B (zh) 一种文件系统的测试方法和装置
US10496480B2 (en) Slice location identification
CN111435323A (zh) 信息的传输方法、装置、终端、服务器及存储介质
CN111625502B (zh) 数据读取方法及装置、存储介质、电子装置
US10122795B2 (en) Consistency level driven data storage in a dispersed storage network
US10334045B2 (en) Indicating multiple encoding schemes in a dispersed storage network
CN114003172A (zh) 存储容量校正方法、装置、计算机设备以及存储介质
US10594793B2 (en) Read-prepare requests to multiple memories
CN113934362A (zh) 数据存储方法、装置、计算机设备和存储介质
US20180107543A1 (en) Partial response processing for improved performance and decision making
CN110888750B (zh) 数据处理方法及装置
US20230291491A1 (en) Communication of optical codes between devices
CN114764425A (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40069594

Country of ref document: HK

TA01 Transfer of patent application right

Effective date of registration: 20240311

Address after: # 03-06, Lai Zan Da Building 1, 51 Belarusian Road, Singapore

Applicant after: Alibaba Innovation Co.

Country or region after: Singapore

Address before: Room 01, 45th Floor, AXA Building, 8 Shanton Road, Singapore

Applicant before: Alibaba Singapore Holdings Ltd.

Country or region before: Singapore

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant