CN106527958A - 用于分布式存储系统的写入数据、获取数据的方法和设备 - Google Patents
用于分布式存储系统的写入数据、获取数据的方法和设备 Download PDFInfo
- Publication number
- CN106527958A CN106527958A CN201510571183.7A CN201510571183A CN106527958A CN 106527958 A CN106527958 A CN 106527958A CN 201510571183 A CN201510571183 A CN 201510571183A CN 106527958 A CN106527958 A CN 106527958A
- Authority
- CN
- China
- Prior art keywords
- data
- written
- file
- stop information
- block
- 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.)
- Granted
Links
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明提供了用于分布式存储系统的写入数据、获取数据的方法和设备,所述方法在写入数据过程中,不会对数据文件进行覆盖写,而总是采用拷贝到新分配的存储块的方式进行更新并采用原子操作持久化更新的所述描述文件,从而在追加写入数据的过程中,能保证数据文件不会被损坏,并维持数据的可读性和一致性,方便了用户的使用。进一步地,在本发明的实施例的写入数据的方法支持用户指定待写数据的写入位置的写入,也支持用户不指定待写数据的写入位置的写入,提高用户写入数据的灵活性。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种用于分布式存储系统的写入数据、获取数据的方法和设备。
背景技术
在云存储系统中,由于用户的网络环境限制或者用户场景特点限制,用户可能需要分多次才能完成对一个数据文件的写入,比如用户写大数据文件时,往往需要采用追加写模式。在分布式云存储系统中,支持追加写需要解决用户并发写、如何保证数据完整性等难题,因此如何实现数据文件追加写模式是云存储系统的关键技术方案。
发明内容
本申请要解决的技术问题是,提供一种能够在分布式云存储系统中实现追加的写入数据以及获取数据的方法和设备,包括用户指定追加位置和用户不指定追加位置的追加待写数据,以及支持在分布式云存储系统读取数据的方法和设备。
为解决上述技术问题,本申请提供了一种用于分布式存储系统的写入数据的方法,其中,所述方法包括:
获取用户的待写数据,并将所述待写数据存储至新分配的数据存储块;
生成关于所述数据存储块的数据起止信息,并基于所述数据起止信息更新主级起止信息列表,并将更新的所述主级起止信息列表存储至新分配的主级起止信息存储块;
基于所述主级起止信息存储块生成所述主级识别码;
基于所述主级识别码和增加所述待写数据后数据文件的总长度更新描述数据文件,并利用原子操作持久化更新的所述描述文件。
进一步地,所述获取用户的待写数据,并将所述待写数据存储至新分配
的数据存储块包括:
判断在获取所述待写数据前最后一次分配的数据存储块所存储的前次数据的大小是否小于预设容量,当小于时,则执行惩罚读步骤,包括将所述前次数据与所述待写数据合并,并存储至新分配的所述数据存储块。
进一步地,针对用户指定追加位置的写入数据的方式,所述方法还包括:
在获取所述待写数据之前,获取所述待写数据的请求写入位置,判断所述请求写入位置与当前数据文件的总长度是否一致,当一致时,获取所述待写数据。
进一步地,针对用户指定追加位置的写入数据的方式,所述方法还包括:
在获取所述待写数据前,获取所述数据文件的文件长度;
所述基于所述主级识别码和增加所述待写数据后数据文件的总长度更新描述数据文件,利用原子操作持久化更新的所述描述文件包括:
以在获取所述待写数据前所获取所述数据文件的文件长度为所述待写数据的请求写入位置,判断所述请求写入位置与当前数据文件的总长度是否一致,当一致时,基于所述主级识别码和增加所述待写数据后数据文件的总长度更新描述数据文件,利用所述原子操作持久化所述更新的描述文件。
进一步地,针对用户不指定追加位置的写入数据方式,所述获取用户的待写数据,并将所述待写数据存储至新分配的数据存储块还包括:
所述请求写入位置与当前数据文件的总长度不一致时,则判断在将所述待写数据存储至新分配的数据存储块中是否有所述惩罚读步骤:
若有所述惩罚读步骤,则重新判断在获取所述待写数据前最后一次分配的数据存储块所存储的前次数据的大小是否小于预设容量,当小于时,则再次执行惩罚读步骤,包括将所述前次数据与所述待写数据合并,并重新存储至所述数据存储块,并在所述主级起止信息列表中更新基于所述数据存储块生成起止信息,当大于或等于时,将所述待写数据写入所述待写数据重新存储至所述数据存储块,并在所述主级起止信息列表中更新基于所述数据存储块生成起止信息;
若无所述惩罚度步骤,则重新获取所述数据文件的总长度,并以所重新获取的所述数据文件的文件长度为所述待写数据的请求写入位置,再次判断所述请求写入位置与当前数据文件的总长度是否一致,当一致时,基于所述主级识别码和增加所述待写数据后数据文件的总长度更新描述数据文件,利用所述原子操作持久化所述更新的描述文件。
进一步地,所述方法还包括:
判断所述主级起止信息列表的容量是否达到容量阈值或其数量起止信息的数量达到数量阈值,当达到时,则
将当前所述主级起止信息列表中的所有数据起止信息转移至从级起止信息列表并存储至新分配的从级起止信息存储块,
将基于所述从级起止信息存储块生成的从级起止信息存储至所述主级起止信息存储块。
进一步地,所述方法还包括:
将更新前的所述主级起止信息列表所对应的主级起止信息存储块设置为可读不可写状态,并在持久化所述描述文件成功后清除更新前的所述主级起止信息列表所对应的主级起止信息存储块。
进一步地,每一所述数据存储块包括一个或多个单元存储块,其中,所述多个单元存储块的容量均相同。
进一步地,所述数据起止信息包括以下至少任一项:
所述数据存储块识别码;
所述数据存储块中数据的起止地址信息;
所述数据存储块中单元存储的个数。
根据本申请另一方面提供的一种用于分布式存储系统的获取数据的方法,其中,所述方法包括:
获取描述文件;
基于所述描述文件中的主级识别码,从所述主级识别码所对应的主级起止信息存储块中获取主级起止信息列表;
从所述主级起止信息列表中查找相应的数据起止信息;
基于所述数据起止信息,从所述数据起止信息对应的数据存储块中读取相应数据。
进一步地,当所述主级起止信息列表中还包括从级起止信息时,所述从所述主级起止信息列表中查找相应的数据起止信息还包括:
基于所述从级起止信息,从所述从级起止信息对应的从级起止信息存储块中查找相应的数据起止信息。
进一步地,所述从所述主级起止信息列表中查找相应的数据起止信息包括:
采用二分查找法查找相应的数据起止信息。
根据本申请再一方面提供的一种用于分布式存储系统的写入数据的设备,其中,所述设备包括:
写入装置,用于获取用户的待写数据,并将所述待写数据存储至新分配的数据存储块;
起止信息更新装置,用于生成关于所述数据存储块的数据起止信息,并基于所述数据起止信息更新主级起止信息列表,并将更新的所述主级起止信息列表存储至新分配的主级起止信息存储块;
主级识别码更新装置,用于基于所述主级起止信息存储块生成所述主级识别码;
描述文件更新装置,用于基于所述主级识别码和增加所述待写数据后数据文件的总长度更新描述文件,并利用原子操作持久化更新的所述描述文件。
进一步地,所述设备还包括:
判断装置,在获取所述待写数据之前,获取所述待写数据的请求写入位置,判断所述请求写入位置与当前数据文件的总长度是否一致,当一致时,获取所述待写数据。
进一步地,所述写入装置包括:
惩罚读单元,用于判断在获取所述待写数据前最后一次分配的数据存储块所存储的前次数据的大小是否小于预设容量,当小于时,则执行惩罚读步骤,包括将所述前次数据与所述待写数据合并,并存储至新分配的所述数据存储块。
进一步地,针对用户不指定追加位置的写入数据的方式,所述写入装置还包括:
在获取所述待写数据前,获取所述数据文件的文件长度;
所述描述文件更新装置还包括:
以在获取所述待写数据前所获取所述数据文件的文件长度为所述待写数据的请求写入位置,判断所述请求写入位置与当前数据文件的总长度是否一致,当一致时,基于所述主级识别码和增加所述待写数据后数据文件的总长度更新描述数据文件,利用所述原子操作持久化所述更新的描述文件。
进一步地,针对用户不指定追加位置的写入数据方式,所述描述文件更新装置还用于:
所述请求写入位置与当前数据文件的总长度不一致时,则判断将所述待写数据存储至新分配的数据存储块中是否有所述惩罚读步骤:
若有所述惩罚读步骤,则重新判断在获取所述待写数据前最后一次分配的数据存储块所存储的前次数据的大小是否小于预设容量,当小于时,则再次执行惩罚读步骤,包括将所述前次数据与所述待写数据合并,并重新存储至所述数据存储块,并在所述主级起止信息列表中更新基于所述数据存储块生成起止信息,当大于或等于时,将所述待写数据写入所述待写数据重新存储至所述数据存储块,并在所述主级起止信息列表中更新基于所述数据存储块生成起止信息;
若无所述惩罚度步骤,则重新获取所述数据文件的总长度,并以所重新获取的所述数据文件的文件长度为所述待写数据的请求写入位置,再次判断所述请求写入位置与当前数据文件的总长度是否一致,当一致时,基于所述主级识别码和增加所述待写数据后数据文件的总长度更新描述数据文件,利用所述原子操作持久化所述更新的描述文件。
进一步地,所述方法还包括:
分级装置,用于判断所述主级起止信息列表的容量是否达到容量阈值或其数量起止信息的数量达到数量阈值,当达到时,则将当前所述主级起止信息列表中的所有数据起止信息转移至从级起止信息列表并存储至新分配的从级起止信息存储块,将基于所述从级起止信息存储块生成的从级起止信息存储至所述主级起止信息存储块。
进一步地,所述方法还包括:
缓存装置,用于将更新前的所述主级起止信息列表所对应的主级起止信息存储块设置为可读不可写状态,并在持久化所述描述文件成功后清除更新前的所述主级起止信息列表所对应的主级起止信息存储块。
进一步地,每一所述数据存储块包括一个或多个单元存储块,其中,所述多个单元存储块的容量均相同。
进一步地,所述数据起止信息包括以下至少任一项:
所述数据存储块识别码;
所述数据存储块中数据的起止地址信息;
所述数据存储块中单元存储的个数。
根据本申请再一方面提供的一种用于分布式存储系统的获取数据的设备,其中,所述方法包括:
描述文件获取装置,用于获取描述文件;
主级起止信息列表获取装置,用于基于所述描述文件中的主级识别码,从所述主级识别码所对应的主级起止信息存储块中获取主级起止信息列表;
数据起止信息获取装置,用于从所述主级起止信息列表中查找相应的数据起止信息;
数据获取装置,用于基于所述数据起止信息,从所述数据起止信息对应的数据存储块中读取相应数据。
进一步地,当所述主级起止信息列表中还包括从级起止信息时,所述数据起止信息获取装置还用于:
基于所述从级起止信息,从所述从级起止信息对应的从级起止信息存储块中查找相应的数据起止信息。
进一步地,所述数据起止信息获取装置用于:采用二分查找法查找相应的数据起止信息。
与现有技术相比,在本申请的实施例中所述的用于分布式存储系统的写入数据、获取数据的方法和设备,其中所述写入数据的方法包括获取用户的待写数据,并将所述待写数据存储至新分配的数据存储块;生成关于所述数据存储块的数据起止信息,并基于所述数据起止信息更新主级起止信息列表,并将更新的所述主级起止信息列表存储至新分配的主级起止信息存储块;基于所述主级起止信息存储块生成所述主级识别码;基于所述主级识别码和增加所述待写数据后数据文件的总长度更新描述文件,并利用原子操作持久化更新的所述描述文件。所述方法不会对数据文件进行覆盖写,而总是采用拷贝到新分配的存储块的方式进行更新并采用原子操作持久化更新的所述描述文件,从而在在追加写入数据的过程中,能保证数据文件不会被损坏,并维持数据的可读性和一致性,方便了用户的使用。
进一步地,在本申请的实施例的写入数据的方法支持用户指定待写数据的写入位置的写入,也支持用户不指定待写数据的写入位置的写入,提高用户写入数据的灵活性。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出根据本申请一个方面的用于分布式存储系统的写入数据的方法示意图;
图2至图3示出根据本申请一优选的实施例的用于分布式存储系统的写入数据的示意图;
图4至图5示出根据本申请另一优选的实施例的用于分布式存储系统的写入数据的示意图;
图6至图8示出本申请再一优选的实施例的用于分布式存储系统的写入数据的示意图;
图9示出根据本申请又一优选的实施例的用于分布式存储系统的写入数据的示意图;
图10示出根据本申请一个方面的用于分布式存储系统的获取数据的方法示意图;
图11示出根据本申请一个方面的用于分布式存储系统的写入数据的设备示意图;
图12示出根据本申请一个方面的用于分布式存储系统的获取数据的设备示意图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本申请作进一步详细描述。
在现有云存储系统中,通常采用两种方案来实现追加写:1、用户在第一次上传之前,提前将整个数据文件分成多个数据块(Part)和数据块的大小,具体地,每一个Part都被赋予了一个唯一标识,这些唯一标识称为PartId,例如:Part 1、Part 2、Part 3……,在用户上传数据块时必须指定当前对哪个PartId进行操作,通过PartId可以唯一地索引到某个Part,而每个PartId对应的Part作为一个单独的数据文件存储,对该PartId的写操作会覆盖已存在的Part数据文件。当所有的PartId对应的Part都写成功后,用户通过提交操作(Commit),指定需要将哪些PartId以哪种的顺序组装成一个数据文件,Commit操作可以丢弃某些PartId,也可以重复出现某些PartId,而相应的Part根据指定的顺序组装或者丢弃。用户在commit操作过程中,数据文件处于不可见状态,用户无法对写了一部分数据的数据文件进行读取操作;并且在Commit操作之后,整个数据文件可见了,但是用户无法再写入新的Part或者改写Part。当用户上传某个Part失败时,用户需要重写整个Part,无法追加写该Part;此外,用户需要提前将整个数据文件进行划分,当无法提前预知数据文件大小时,往往会造成每个Part过小,Part数目过多,或者单个Part过大,增加写入失败的概率。2、云存储系统支持对多个小数据文件逻辑上组成一个大数据文件的方法。用户上传多个小数据文件,并及时更新某个元数据文件,其中,元数据文件表示了用户最终想要的大数据文件,它包含所有小数据文件的列表。由于小数据文件和组合数据文件之间松散的关系,无法保证小数据文件是否被删除或者更改,导致组合数据文件的完整性得不到保障,因此无法保证数据的完整性。
结合现有技术中的问题,图1示出根据本申请一个方面的用于分布式存储系统的写入数据的方法,其中,所述方法包括:
步骤S01:获取用户的待写数据,并将所述待写数据存储至新分配的数据存储块;
步骤S02:生成关于所述数据存储块的数据起止信息,并基于所述数据起止信息更新主级起止信息列表,并将更新的所述主级起止信息列表存储至新分配的主级起止信息存储块;
步骤S03:基于所述主级起止信息存储块生成所述主级识别码;
步骤S04:基于所述主级识别码和增加所述待写数据后数据文件的总长度更新描述文件,并利用原子操作持久化更新的所述描述文件。
在此,所述数据起止信息基于所述数据存储块生成,用于记录待写数据在数据文件中的起止地址,根据所述数据起止信息可以找到存储相应数据存储块,进而找到相应待写数据。
优选的,所述数据起止信息包括:所述数据存储块识别码;所述数据存储块中数据的起止地址信息;所述待写数据的大小;所述数据存储块中单元存储的个数。所述数据存储块识别码用于唯一识别数据存储块,所述数据存储块中数据的起止地址信息包括相应待写数据在数据文件中的起始位置和结束位置。
优选地,所述描述文件可以包括:数据文件的总长度,修改时间及主级识别码,所述描述文件用于便于读取数据或追加待写数据。
此外,每一所述数据存储块包括一个或多个单元存储块,其中,当所述数据存储块具有多个单元存储块时,所述多个单元存储块的容量均相同。
本申请所述方法在每次获取待写数据时,通过分配数据存储块用以存储待写数据,并分配主级起止信息存储块用以存储具有数据起止信息的主级起止信息列表,在根据所述主级起止信息存储块的主级识别码和增加所述待写数据后数据文件的总长度更新描述文件,再利用原子操作持久化更新的描述文件。在此,每次追加待写数据时,都重新分配数据存储块和主级起止信息存储块(Copy-On-Write),保证追加待写数据的过程不会对已有数据文件进行覆盖写,并且,所述描述文件在持久化之前存储在以临时的描述文件形式存在(例如在易失媒介,如内存中的临时的描述文件),所述描述文件持久化过程是利用原子操作实现的,优选的,包括两种原子操作:Put-If-Not-Exist和Test-And-Set。Put-If-Not-Exist(FileName,FileInfo)操作只有在文件名不存在的情况下,才能新增一条该文件名到文件元数据的记录;Test-And-Set(FileName,NewFileInfo,OldFileInfo)操作只有在文件名存在,且当前描述文件(FileInfo)的内容和更新前的描述文件(OldFileInfo)对应时,才能持久化更新的描述文件。其中,在所述描述文件在持久化之前当前的待写数据对用户不可见,即用户不能读取当前的待写数据(但云存储系统中已有数据文件对用户是可见的),从而保持数据的一致性和稳定性。
当然,本领域技术人员应能理解上述原子操作指令仅为举例,其他现有的或今后可能出现的其他原子操作或其他持久化方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
在此,所获取的用户的待写数据可以是由用户向分布式系统首次提交的待写数据,还可以是由用户针对分布式系统中已有数据文件提交的追加待写数据。本申请所述方法可以将用户首次提交的待写数据存储并生成数据文件,或将用户提交的追加待写数据增加至已有所述数据文件。
图2至图3示出根据本申请一优选的实施例的用于分布式存储系统的写入数据的示意图。当用户首次提交的待写数据时,结合图2,在云存储系统中,根据数据类型,可将底层存储划分为数据元存储区Metastore和数据存储区DataStore,MetaStore维护了文件名(Readme.txt)到元数据的对应关系,所述元数据包含了寻址到待写数据的信息,DataStore用于存储待写数据及待写数据的相关数据起止信息,DataStore被划分为多个固定大小的块,每个块都有相应的地址,根据块地址可以读取块的内容。当MetaStore中有某个文件名时,根据该文件就对用户进行追加写或读取。其中,MetaStore和DataStore主要是逻辑上的区分,它们可能实现在同一个底层存储上。
当然,本领域技术人员应能理解上述根据数据类型进行划分存储区的方式仅为举例,其他现有的或今后可能出现的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
具体地,在所述步骤S01中,获取用户的待写数据,分配数据存储块D1存储待写数据;在所述步骤S02中,依据所述数据存储块D1生成数据起止信息Extent,数据起止信息Extent包括待写数据在数据文件中的起始地址Range Start、结束地址Range End、数据存储块D1的数据存储块识别码ExtentID,数据存储块D1中单元存储块的个数Nblks,以及主级信息level,通常当level为0时,表示直接指向存储待写数据的数据存储块,接着,利用数据起止信息Extent更新主级起止信息列表中并存储至主级起止信息存储块RootExtentBlock;在所述步骤S03中,基于主级起止信息存储块RootExtentBlock生成主级识别码RootExtentID;在所述步骤S04中,基于所述主级识别码RootExtentID和增加所述待写数据后数据文件的总长度FileLength更新描述文件Fileinfo,并利用原子操作Put-If-Not-Exist持久化更新的所述描述文件Fileinfo。
当将用户提交的追加待写数据增加至已有所述数据文件时,可以包括两种方式:用户指定追加位置的写入数据方式和用户不指定追加位置的写入数据方式,以下结合所述两种方式对本申请所述方法进行进一步的描述。
对于用户指定追加位置的写入数据方式,在所述步骤S01中,获取所述待写数据的请求写入位置(Position),判断所述待写数据的请求写入位置与当前数据文件的总长度是否一致,当一致时,则获取相应所述待写数据,当不一致时,则拒绝获取相应所述待写数据,可同时向所述用户设备反馈当前数据文件的总长度。针对用户指定追加位置的方案,可以在用户并发待写数据时,防止并发的写入数据请求写入相同写入位置,进而避免多份重复的写入数据组装进数据文件。比如,假设写入数据包括A、B和C,当分布式系统中已有数据文件包括A和B,当前用户并发写入数据C,当用户并发上传了两个C,则并发上传的两个C中只有一个会上传成功,则写入数据包括A、B和C,而不是A、B和两个C。该用户指定追加位置的写入数据的增加方式可以防止用户并发写入导致数据文件出错。
在具体的场景中,结合图3,用户第一次已上传待写数据包括20K,则数据存储块Block D1#0中存储该20K的待写数据,并生成数据起止信息Extent1存储至起止信息存储块RootExtentBlock EB-A中,相应地,所述描述文件FileInfo的文件长度Filelength为20K,所述主级识别码RootExtentID为EB-A。
当然,本领域技术人员应能理解上述具体场景的描述仅为举例,其他现有的或今后可能出现的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
用户在提交待写数据时,同时会提交请求的写入位置(Position),设备在步骤S01获取所述待写数据之前,首先判断用户提交的写入位置是否等于描述文件的文件长度Filelength,若不等于则拒绝写入请求,若等于,则获取所述待写数据;
图4至图5示出根据本申请另一优选的实施例的用于分布式存储系统的写入数据的示意图。进一步地,结合图4,在所述步骤S01中,获取所述待写数据后,判断在获取所述待写数据前最后一次分配的数据存储块所存储的前次数据的大小是否小于预设容量,当小于时,则执行惩罚读步骤,包括将所述前次数据与所述待写数据合并,并存储至新分配的所述数据存储块。
接上例,在图2和图3所示基础上,结合图4,假设所述数据存储块的单元存储块的预设容量为64K,用户提交的追加待写数据为130K,追加待写数据前最后一次分配的数据存储块所存储的前次数据的大小为20K,小于预设容量64K,则进行执行一次惩罚读步骤,包括重新读取前次数据20K,并将前次数据20K与当前提交的追加待写数据的130K合并,一同存储至新分配的数据存储块Block D2中,包括三个单元存储块Block D2#0,Block D2#1和Block D2#2。在所述步骤S02中,根据新分配的数据存储块Block D2,生成关于所述数据存储块的数据起止信息Extent2,并存储至主级起止信息存储块RootExtentBlock EB-B中,数据起止信息Extent2包括待写数据起始地址0和待写数据的结束地址150K,所述数据存储块识别码D2,单元存储块Nblks个数3,及层级level为0;在所述步骤S03中,生成所述数据起止信息RootExtentBlock EB-B的主级识别码EB-B,在所述步骤S04中,采用原子操作Test-And-Set更新所述描述文件,包括更新的数据文件的文件长度Filelength为150K,主级识别码RootExtentID为EB-B,
若获取所述待写数据前最后一次分配的数据存储块所存储的前次数据的大小或等于预设容量时,则不执行惩罚读步骤,直接将所述待写数据存储至新分配的数据存储块。
继续接上例,在图2至图4的基础上,结合图5,在所述步骤S01中,用户再次提交的待写数据10K,判断获取所述待写数据前最后一次分配的数据存储块所存储的前次数据的大小为150K大于预设容量64K,则不重新读取前次数据150K,直接将本次待写数据10K存储至新分配的数据存储块Block D3中,接着在所述步骤S02~步骤S03中,生成数据起止信息Extent3增加至主级起止信息列表中,并存储至新分配的主级起止信息存储块RootExtentBlock EB-C,并生成主级识别码EB-C,在所述步骤S04中,基于所述主级识别码EB-C和数据文件的总长度FileLength为160K更新描述文件Fileinfo,并利用原子操作Test-And-Set持久化更新的所述描述文件Fileinfo。
当然,本领域技术人员应能理解上述具体场景的描述仅为举例,其他现有的或今后可能出现的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
在另一实施例中,当用户不指定待写数据的请求写入位置时,用户每次提交待写数据时,不需同时提交请求的写入位置,设备在获取所述待写数据前,先获取数据文件的总长度;接着,执行所述步骤S01至步骤S03,执行过程与图2至图5所示的步骤S01至步骤S03的内容相同或基本相同,为简明起见,以引用的方式包含于此,不再赘述,当执行至步骤S04时,以在获取所述待写数据前所获取所述数据文件的文件长度为所述待写数据的请求写入位置,判断所述请求写入位置与当前数据文件的总长度是否一致,当一致时,则基于所述主级识别码和增加所述待写数据后数据文件的总长度更新描述数据文件,利用所述原子操作持久化所述描述文件。在所述步骤S01至步骤S03中且在所述步骤S04之前,设备中存储的数据文件如并未发生改变,则相应数据文件长度及描述文件也未发生改变,则在步骤S04中,在获取所述待写数据前所获取所述数据文件的文件长度为所述待写数据的请求写入位置,则判断所述请求写入位置与当前数据文件的总长度一致,则基于所述主级识别码和增加所述待写数据后数据文件的总长度更新描述数据文件,利用所述原子操作持久化所述更新的描述文件。若在所述步骤S01至步骤S03中且在所述步骤S04之前,设备中存储的数据文件如发生改变(例如在此期间,一并发写入数据追加成功,导致数据文件被修改),则相应数据文件长度及描述文件也发生改变,则在步骤S04中,在获取所述待写数据前所获取所述数据文件的文件长度为所述待写数据的请求写入位置,则判断所述请求写入位置与当前数据文件的总长度不一致,则需重新追加待写数据。
当然,本领域技术人员应能理解上述具体场景的描述仅为举例,其他现有的或今后可能出现的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
图6至图8示出本申请再一优选的实施例的用于分布式存储系统的写入数据的示意图;具体地,例如,结合图6,设数据文件已有待写数据20K,记两个并发写入数据过程Append-1和Append-2,假设Append-1追加成功,形成如图6所示,Append-2追加待写数据失败,(例如图7,Append-2生成的临时的描述文件Fileinfo并未持久化成功,即Append-2追加待写数据实际失败),则针对Append-2,执行Append-3以重新追加待写数据。
若Append-2没有发生惩罚读,则Append-3只需所述数据文件的总长度,并以所重新获取的所述数据文件的文件长度为所述待写数据的请求写入位置,再次判断所述请求写入位置与当前数据文件的总长度是否一致,当一致时,基于所述主级识别码和增加所述待写数据后数据文件的总长度更新描述数据文件,利用所述原子操作持久化所述更新的描述文件。
Append-2有发生惩罚读,则重新判断在获取所述待写数据前最后一次分配的数据存储块所存储的前次数据的大小是否小于预设容量,当小于时,则再次执行惩罚读步骤,包括将所述前次数据与所述待写数据合并,并重新存储至所述数据存储块,并在所述主级起止信息列表中更新基于所述数据存储块生成起止信息,当大于或等于时,将所述待写数据写入所述待写数据重新存储至所述数据存储块,并在所述主级起止信息列表中更新基于所述数据存储块生成起止信息。由图7所示,Append-2有发生惩罚读,结合图6和图8,重新判断在获取所述待写数据前最后一次分配的数据存储块Block D#0所存储的前次数据的大小为20K,小于预设容量64K,则重新读取前次数据20K,与所述待写数据70K合并,并重新存储至所述数据存储块Block D3中。
针对当用户不指定追加位置的方式,用户每次提交待写数据时,不需同时提交请求的写入位置,在每次获取用户的写入数据后,将写入数据追加到已有数据文件之后,当并发待写数据时,由分布式系统自行获取当前数据文件的总长度,并根据接收到请求的顺序,依次将所有接收到的数据块全部组装进数据文件中,接上例,假设写入数据包括A、B和C,当分布式系统中已有数据文件包括A和B,当前用户并发写入数据C,当用户并发上传了两个C,当其中一个待写数据C写入成功后,数据文件的总长度发生变化,第二个待写数据C的第一次写入则可能会写入失败,则第二个待写数据C会重新获取数据文件的总长度,并重新尝试写入成功,则并发上传的两个C会依次写入数据文件中,最终数据文件包括A、B、C、C。所述用户不指定追加位置的方案适合于不关心各次追加数据之间顺序的场景,比如分布式环境下程序日志的收集等。
优选地,所述方法还包括:判断所述主级起止信息列表的容量是否达到容量阈值或其数量起止信息的数量达到数量阈值,当达到时,则将当前所述主级起止信息列表中的所有数据起止信息转移至从级起止信息列表并存储至新分配的从级起止信息存储块,将基于所述从级起止信息存储块生成的从级起止信息存储至所述主级起止信息存储块。
具体地,所述方法还包括检查主级起止信息存储块RootExtentBlock,如果所述主级起止信息列表的容量是否达到容量阈值或其数量起止信息的数量达到数量阈值,就进行多级处理(Level Promotion),将当前所述主级起止信息列表中的所有数据起止信息转移至从级起止信息列表并存储至新分配的从级起止信息存储块,将基于所述从级起止信息存储块生成的从级起止信息存储至所述主级起止信息存储块。
图9示出根据本申请又一优选的实施例的用于分布式存储系统的写入数据的示意图;Level Promotion的目的是限制主级起止信息存储块RootExtentBlock的大小,以有效的支持大文件。具体地,起初主级起止信息存储块RootExtentBlock里只有数据起止信息,即Level 0的多个起止信息Extent。结合图9,当这些Level 0Extent数目超过一定阈值(例如1024),且主级起止信息存储块RootExtentBlock大小大于或等于容量阈值BlockSize时,就分配一个新的存储块作为从级起止信息存储块ExtentBlock EB-1,该从级起止信息存储块ExtentBlock EB-1存储从级起止信息列表,包括上述所有Level0 Extent,基于从级起止信息存储块ExtentBlock EB-1生成Level 1 Extent,Level 1Extent存储于新分配的主级起止信息存储块RootExtentBlock EB-D中,其数据起始地址RangeStart是从级起止信息存储块ExtentBlock EB-1所包含的第一个数据起止信息Extent的数据起始地址RangeStart,其数据结束地址RangeEnd是从级起止信息存储块ExtentBlock EB-1所包含的最后一个起止信息Extent的数据结束地址RangEnd,从级起止信息存储块ExtentBlock EB-1对应的从级识别码ExtentID为EB-1。
当然,本领域技术人员应能理解上述具体场景的描述仅为举例,其他现有的或今后可能出现的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
优选地,所述方法还包括:将更新前的所述主级起止信息列表所对应的主级起止信息存储块设置为可读不可写状态,并在持久化所述描述文件成功后清除更新前的所述主级起止信息列表所对应的主级起止信息存储块。当所述方法执行所述步骤S01至步骤S04以写入数据时,更新前的所述主级起止信息列表所对应的主级起止信息存储块设置为可读不可写状态,并在持久化所述描述文件成功后清除更新前的所述主级起止信息列表所对应的主级起止信息存储块,例如图3中主级起止信息存储块EB-B在图4写入数据过程中,设置为可读不可写状态,待图4所示主级起止信息存储块EB-C更新完成且更新的描述文件Fileinfo持久化完成后,在清除主级起止信息存储块EB-B;同样,对于图3所示的数据存储块Block D1#0在图4所示的数据存储块BlockD2#0,D2#1和D2#2存储完成且更新的描述文件Fileinfo持久化完成后清除,以实现用户在追加待写数据时,设备存储的数据文件仍可为用户提供获取数据的服务。
当然,本领域技术人员应能理解上述具体场景的描述仅为举例,其他现有的或今后可能出现的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
与现有技术相比,在本申请的实施例中所述写入数据的方法包括获取用户的待写数据,并将所述待写数据存储至新分配的数据存储块;生成关于所述数据存储块的数据起止信息,并基于所述数据起止信息更新主级起止信息列表,并将更新的所述主级起止信息列表存储至新分配的主级起止信息存储块;基于所述主级起止信息存储块生成所述主级识别码;基于所述主级识别码和增加所述待写数据后数据文件的总长度更新描述文件,并利用原子操作持久化更新的所述描述文件。所述方法不会对数据文件进行覆盖写,而总是采用拷贝到新分配的存储块的方式进行更新并采用原子操作持久化更新的所述描述文件,从而在在追加写入数据的过程中,能保证数据文件不会被损坏,并维持数据的可读性和一致性,方便了用户的使用。
进一步地,在本申请的实施例的写入数据的方法支持用户指定待写数据的写入位置的写入,也支持用户不指定待写数据的写入位置的写入,提高用户写入数据的灵活性。
图10示出根据本申请一个方面的用于分布式存储系统的获取数据的方法示意图;其中,所述方法包括:
步骤S11:获取描述文件;
步骤S12:基于所述描述文件中的主级识别码,从所述主级识别码所对应的主级起止信息存储块中获取主级起止信息列表;
步骤S13:从所述主级起止信息列表中查找相应的数据起止信息;
步骤S14:基于所述数据起止信息,从所述数据起止信息对应的数据存储块中读取相应数据。
进一步地,当所述主级起止信息列表中还包括从级起止信息时,所述步骤S13还包括:基于所述从级起止信息,从所述从级起止信息对应的从级起止信息存储块中查找相应的数据起止信息。优选地,采用二分查找法查找相应的数据起止信息。
与现有技术相比,在本申请的实施例中所述获取数据的方法在所述写入数据的基础上,能够及时获取数据以供用户读取,并能够随时读取,不受写入数据的影响。方便了用户的使用。
进一步地,在本申请的实施例的写入数据的方法支持用户指定待写数据的写入位置的写入,也支持用户不指定待写数据的写入位置的写入,提高用户写入数据的灵活性。
图11示出根据本申请一个方面的用于分布式存储系统的写入数据的设备示意图,其中,所述设备1包括:
写入装置01,用于获取用户的待写数据,并将所述待写数据存储至新分配的数据存储块;
起止信息更新装置02,用于生成关于所述数据存储块的数据起止信息,并基于所述数据起止信息更新主级起止信息列表,并将更新的所述主级起止信息列表存储至新分配的主级起止信息存储块;
主级识别码更新装置03,用于基于所述主级起止信息存储块生成所述主级识别码;
描述文件更新装置04,用于基于所述主级识别码和增加所述待写数据后数据文件的总长度更新描述文件,并利用原子操作持久化更新的所述描述文件。
在此,所述设备1包括但不限于用户设备、或用户设备与网络设备通过网络相集成所构成的设备。所述用户设备其包括但不限于任何一种可与用户通过触摸板进行人机交互的移动电子产品,例如智能手机、PDA等,所述移动电子产品可以采用任意操作系统,如android操作系统、iOS操作系统等。其中,所述网络设备包括一种能够按照事先设定或存储的指令,自动进行数值计算和信息处理的电子设备,其硬件包括但不限于微处理器、专用集成电路(ASIC)、可编程门阵列(FPGA)、数字处理器(DSP)、嵌入式设备等。所述网络包括但不限于互联网、广域网、城域网、局域网、VPN网络、无线自组织网络(Ad Hoc网络)等。优选地,设备1还可以是运行于所述用户设备、或用户设备与网络设备、触摸终端或网络设备与触摸终端通过网络相集成所构成的设备上的脚本程序。当然,本领域技术人员应能理解上述设备1仅为举例,其他现有的或今后可能出现的设备1如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
上述各装置之间是持续不断工作的,在此,本领域技术人员应理解“持续”是指上述各装置分别实时地或者按照设定的或实时调整的工作模式要求,直至所述设备1停止工作。
在此,所述数据起止信息基于所述数据存储块生成,用于记录待写数据在数据文件中的起止地址,根据所述数据起止信息可以找到存储相应数据存储块,进而找到相应待写数据。
优选的,所述数据起止信息包括:所述数据存储块识别码;所述数据存储块中数据的起止地址信息;所述待写数据的大小;所述数据存储块中单元存储的个数。所述数据存储块识别码用于唯一识别数据存储块,所述数据存储块中数据的起止地址信息包括相应待写数据在数据文件中的起始位置和结束位置。
优选地,所述描述文件可以包括:数据文件的总长度,修改时间及主级识别码,所述描述文件用于便于读取数据或追加待写数据。
此外,每一所述数据存储块包括一个或多个单元存储块,其中,当所述数据存储块具有多个单元存储块时,所述多个单元存储块的容量均相同。
本申请所述设备1在每次获取待写数据时,通过分配数据存储块用以存储待写数据,并分配主级起止信息存储块用以存储具有数据起止信息的主级起止信息列表,在根据所述主级起止信息存储块的主级识别码和增加所述待写数据后数据文件的总长度更新描述文件,再利用原子操作持久化更新的描述文件。在此,每次追加待写数据时,都重新分配数据存储块和主级起止信息存储块(Copy-On-Write),保证追加待写数据的过程不会对已有数据文件进行覆盖写,并且,所述描述文件在持久化之前存储在以临时的描述文件形式存在(例如在易失媒介,如内存中的临时的描述文件),所述描述文件持久化过程是利用原子操作实现的,优选的,包括两种原子操作:Put-If-Not-Exist和Test-And-Set。Put-If-Not-Exist(FileName,FileInfo)操作只有在文件名不存在的情况下,才能新增一条该文件名到文件元数据的记录;Test-And-Set(FileName,NewFileInfo,OldFileInfo)操作只有在文件名存在,且当前描述文件(FileInfo)的内容和更新前的描述文件(OldFileInfo)对应时,才能持久化更新的描述文件。其中,在所述描述文件在持久化之前当前的待写数据对用户不可见,即用户不能读取当前的待写数据(但云存储系统中已有数据文件对用户是可见的),从而保持数据的一致性和稳定性。
在此,所获取的用户的待写数据可以是由用户向分布式系统首次提交的待写数据,还可以是由用户针对分布式系统中已有数据文件提交的追加待写数据。本申请所述设备1可以将用户首次提交的待写数据存储并生成数据文件,或将用户提交的追加待写数据增加至已有所述数据文件。
图2至图3示出根据本申请一优选的实施例的用于分布式存储系统的写入数据的示意图。当用户首次提交的待写数据时,结合图2,在云存储系统中,根据数据类型,可将底层存储划分为数据元存储区Metastore和数据存储区DataStore,MetaStore维护了文件名(Readme.txt)到元数据的对应关系,所述元数据包含了寻址到待写数据的信息,DataStore用于存储待写数据及待写数据的相关数据起止信息,DataStore被划分为多个固定大小的块,每个块都有相应的地址,根据块地址可以读取块的内容。当MetaStore中有某个文件名时,根据该文件就对用户进行追加写或读取。其中,MetaStore和DataStore主要是逻辑上的区分,它们可能实现在同一个底层存储上。
当然,本领域技术人员应能理解上述根据数据类型进行划分存储区的方式仅为举例,其他现有的或今后可能出现的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
具体地,在所述写入装置01中,获取用户的待写数据,分配数据存储块D1存储待写数据;在所述起止信息更新装置02中,依据所述数据存储块D1生成数据起止信息Extent,数据起止信息Extent包括待写数据在数据文件中的起始地址Range Start、结束地址Range End、数据存储块D1的数据存储块识别码ExtentID,数据存储块D1中单元存储块的个数Nblks,以及主级信息level,通常当level为0时,表示直接指向存储待写数据的数据存储块,接着,利用数据起止信息Extent更新主级起止信息列表中并存储至主级起止信息存储块RootExtentBlock;在所述主级识别码更新装置03中,基于主级起止信息存储块RootExtentBlock生成主级识别码RootExtentID;在所述描述文件更新装置04中,基于所述主级识别码RootExtentID和增加所述待写数据后数据文件的总长度FileLength更新描述文件Fileinfo,并利用原子操作Put-If-Not-Exist持久化更新的所述描述文件Fileinfo。
当将用户提交的追加待写数据增加至已有所述数据文件时,可以包括两种方式:用户指定追加位置的写入数据方式和用户不指定追加位置的写入数据方式,以下结合所述两种方式对本申请所述设备1进行进一步的描述。
对于用户指定追加位置的写入数据方式,在所述写入装置01中,获取所述待写数据的请求写入位置(Position),判断所述待写数据的请求写入位置与当前数据文件的总长度是否一致,当一致时,则获取相应所述待写数据,当不一致时,则拒绝获取相应所述待写数据,可同时向所述用户反馈当前数据文件的总长度。针对用户指定追加位置的方案,可以在用户并发待写数据时,防止并发的写入数据请求写入相同写入位置,进而避免多份重复的写入数据组装进数据文件。比如,假设写入数据包括A、B和C,当分布式系统中已有数据文件包括A和B,当前用户并发写入数据C,当用户并发上传了两个C,则并发上传的两个C中只有一个会上传成功,则写入数据包括A、B和C,而不是A、B和两个C。该用户指定追加位置的写入数据的增加方式可以防止用户并发写入导致数据文件出错。
在具体的场景中,结合图3,用户第一次已上传待写数据包括20K,则数据存储块Block D1#0中存储该20K的待写数据,并生成数据起止信息Extent1存储至起止信息存储块RootExtentBlock EB-A中,相应地,所述描述文件FileInfo的文件长度Filelength为20K,所述主级识别码RootExtentID为EB-A。
用户在提交待写数据时,同时会提交请求的写入位置(Position),设备在写入装置01获取所述待写数据之前,首先判断用户提交的写入位置是否等于描述文件的文件长度Filelength,若不等于则拒绝写入请求,若等于,则获取所述待写数据;
图4至图5示出根据本申请另一优选的实施例的用于分布式存储系统的写入数据的示意图。进一步地,结合图4,所述写入装置01还包括惩罚读单元,用于在获取所述待写数据后,判断在获取所述待写数据前最后一次分配的数据存储块所存储的前次数据的大小是否小于预设容量,当小于时,则执行惩罚读步骤,包括将所述前次数据与所述待写数据合并,并存储至新分配的所述数据存储块。
接上例,在图2和图3所示基础上,结合图4,假设所述数据存储块的单元存储块的预设容量为64K,用户提交的追加待写数据为130K,追加待写数据前最后一次分配的数据存储块所存储的前次数据的大小为20K,小于预设容量64K,则进行执行一次惩罚读步骤,包括重新读取前次数据20K,并将前次数据20K与当前提交的追加待写数据的130K合并,一同存储至新分配的数据存储块Block D2中,包括三个单元存储块Block D2#0,Block D2#1和Block D2#2。在所述起止信息更新装置02中,根据新分配的数据存储块Block D2,生成关于所述数据存储块的数据起止信息Extent2,并存储至主级起止信息存储块RootExtentBlock EB-B中,数据起止信息Extent2包括待写数据起始地址0和待写数据的结束地址150K,所述数据存储块识别码D2,单元存储块Nblks个数3,及层级level为0;在所述主级识别码更新装置03中,生成所述数据起止信息RootExtentBlock EB-B的主级识别码EB-B,在所述描述文件更新装置S04中,采用原子操作Test-And-Set更新所述描述文件,包括更新的数据文件的文件长度Filelength为150K,主级识别码RootExtentID为EB-B,
若获取所述待写数据前最后一次分配的数据存储块所存储的前次数据的大小或等于预设容量时,则不执行惩罚读步骤,直接将所述待写数据存储至新分配的数据存储块。
继续接上例,在图2至图4的基础上,结合图5,写入装置01用户再次提交的待写数据10K,判断获取所述待写数据前最后一次分配的数据存储块所存储的前次数据的大小为150K大于预设容量64K,则不重新读取前次数据150K,直接将本次待写数据10K存储至新分配的数据存储块Block D3中,接着起止信息更新装置02~主级识别码更新装置S03中,生成数据起止信息Extent3增加至主级起止信息列表中,并存储至新分配的主级起止信息存储块RootExtentBlock EB-C,并生成主级识别码EB-C,描述文件更新装置04中,基于所述主级识别码EB-C和数据文件的总长度FileLength为160K更新描述文件Fileinfo,并利用原子操作Test-And-Set持久化更新的所述描述文件Fileinfo。
当然,本领域技术人员应能理解上述具体场景的描述仅为举例,其他现有的或今后可能出现的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
在另一实施例中,当用户不指定待写数据的请求写入位置时,用户每次提交待写数据时,不需同时提交请求的写入位置,设备在获取所述待写数据前,先获取数据文件的总长度;接着,执行所述写入装置01至主级识别码更新装置03,执行过程与图2至图5所示的写入装置01至主级识别码更新装置03的内容相同或基本相同,为简明起见,以引用的方式包含于此,不再赘述,当执行至描述文件更新装置04时,以在获取所述待写数据前所获取所述数据文件的文件长度为所述待写数据的请求写入位置,判断所述请求写入位置与当前数据文件的总长度是否一致,当一致时,则基于所述主级识别码和增加所述待写数据后数据文件的总长度更新描述数据文件,利用所述原子操作持久化所述描述文件。在所述写入装置01至主级识别码更新装置03中且在所述描述文件更新装置04之前,设备中存储的数据文件如并未发生改变,则相应数据文件长度及描述文件也未发生改变,则在描述文件更新装置04中,在获取所述待写数据前所获取所述数据文件的文件长度为所述待写数据的请求写入位置,则判断所述请求写入位置与当前数据文件的总长度一致,则基于所述主级识别码和增加所述待写数据后数据文件的总长度更新描述数据文件,利用所述原子操作持久化所述更新的描述文件。若在所述写入装置01至主级识别码更新装置03中且在所述描述文件更新装置04之前,设备中存储的数据文件如发生改变(例如在此期间,一并发写入数据追加成功,导致数据文件被修改),则相应数据文件长度及描述文件也发生改变,则在描述文件更新装置04中,在获取所述待写数据前所获取所述数据文件的文件长度为所述待写数据的请求写入位置,则判断所述请求写入位置与当前数据文件的总长度不一致,则需重新追加待写数据。
当然,本领域技术人员应能理解上述具体场景的描述仅为举例,其他现有的或今后可能出现的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
图6至图8示出本申请再一优选的实施例的用于分布式存储系统的写入数据的示意图;具体地,例如,结合图6,设数据文件已有待写数据20K,记两个并发写入数据过程Append-1和Append-2,假设Append-1追加成功,形成如图6所示,Append-2追加待写数据失败,(例如图7,Append-2生成的临时的描述文件FileInfo并未持久化成功,即Append-2追加待写数据实际失败),则针对Append-2,执行Append-3以重新追加待写数据。
若Append-2没有发生惩罚读,则Append-3只需所述数据文件的总长度,并以所重新获取的所述数据文件的文件长度为所述待写数据的请求写入位置,再次判断所述请求写入位置与当前数据文件的总长度是否一致,当一致时,基于所述主级识别码和增加所述待写数据后数据文件的总长度更新描述数据文件,利用所述原子操作持久化所述更新的描述文件。
Append-2有发生惩罚读,则重新判断在获取所述待写数据前最后一次分配的数据存储块所存储的前次数据的大小是否小于预设容量,当小于时,则再次执行惩罚读步骤,包括将所述前次数据与所述待写数据合并,并重新存储至所述数据存储块,并在所述主级起止信息列表中更新基于所述数据存储块生成起止信息,当大于或等于时,将所述待写数据写入所述待写数据重新存储至所述数据存储块,并在所述主级起止信息列表中更新基于所述数据存储块生成起止信息。由图7所示,Append-2有发生惩罚读,结合图6和图8,重新判断在获取所述待写数据前最后一次分配的数据存储块Block D#0所存储的前次数据的大小为20K,小于预设容量64K,则重新读取前次数据20K,与所述待写数据70K合并,并重新存储至所述数据存储块Block D3中。
针对当用户不指定追加位置的方式,用户每次提交待写数据时,不需同时提交请求的写入位置,在每次获取用户的写入数据后,将写入数据追加到已有数据文件之后,当并发待写数据时,由分布式系统自行获取当前数据文件的总长度,并根据接收到请求的顺序,依次将所有接收到的数据块全部组装进数据文件中,接上例,假设写入数据包括A、B和C,当分布式系统中已有数据文件包括A和B,当前用户并发写入数据C,当用户并发上传了两个C,当其中一个待写数据C写入成功后,数据文件的总长度发生变化,第二个待写数据C的第一次写入则可能会写入失败,则第二个待写数据C会重新获取数据文件的总长度,并重新尝试写入成功,则并发上传的两个C会依次写入数据文件中,最终数据文件包括A、B、C、C。所述用户不指定追加位置的方案适合于不关心各次追加数据之间顺序的场景,比如分布式环境下程序日志的收集等。
当然,本领域技术人员应能理解上述具体场景的描述仅为举例,其他现有的或今后可能出现的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
优选地,所述设备1还包括:判断装置,用于判断所述主级起止信息列表的容量是否达到容量阈值或其数量起止信息的数量达到数量阈值,当达到时,则将当前所述主级起止信息列表中的所有数据起止信息转移至从级起止信息列表并存储至新分配的从级起止信息存储块,将基于所述从级起止信息存储块生成的从级起止信息存储至所述主级起止信息存储块。
具体地,所述设备1还包括:分级装置,用于检查主级起止信息存储块RootExtentBlock,如果所述主级起止信息列表的容量是否达到容量阈值或其数量起止信息的数量达到数量阈值,就进行多级处理(Level Promotion),将当前所述主级起止信息列表中的所有数据起止信息转移至从级起止信息列表并存储至新分配的从级起止信息存储块,将基于所述从级起止信息存储块生成的从级起止信息存储至所述主级起止信息存储块。
图9示出根据本申请又一优选的实施例的用于分布式存储系统的写入数据的示意图;Level Promotion的目的是限制主级起止信息存储块RootExtentBlock的大小,以有效的支持大文件。具体地,起初主级起止信息存储块RootExtentBlock里只有数据起止信息,即Level 0的多个起止信息Extent。结合图9,当这些Level 0Extent数目超过一定阈值(例如1024),且主级起止信息存储块RootExtentBlock大小大于或等于容量阈值BlockSize时,就分配一个新的存储块作为从级起止信息存储块ExtentBlock EB-1,该从级起止信息存储块ExtentBlock EB-1存储从级起止信息列表,包括上述所有Level0 Extent,基于从级起止信息存储块ExtentBlock EB-1生成Level 1 Extent,Level 1 Extent存储于新分配的主级起止信息存储块RootExtentBlock EB-D中,其数据起始地址RangeStart是从级起止信息存储块ExtentBlock EB-1所包含的第一个数据起止信息Extent的数据起始地址RangeStart为0,其数据结束地址RangeEnd是从级起止信息存储块ExtentBlock EB-1所包含的最后一个起止信息Extent的数据结束地址RangEnd,从级起止信息存储块ExtentBlockEB-1对应的从级识别码ExtentID为EB-1。
优选地,所述设备1还包括:缓存装置,用于将更新前的所述主级起止信息列表所对应的主级起止信息存储块设置为可读不可写状态,并在持久化所述描述文件成功后清除更新前的所述主级起止信息列表所对应的主级起止信息存储块。当所述设备1执行写入数据时,更新前的所述主级起止信息列表所对应的主级起止信息存储块设置为可读不可写状态,并在持久化所述描述文件成功后清除更新前的所述主级起止信息列表所对应的主级起止信息存储块,例如图3中主级起止信息存储块EB-B在图4写入数据过程中,设置为可读不可写状态,待图4所示主级起止信息存储块EB-C更新完成且更新的描述文件Fileinfo持久化完成后,在清除主级起止信息存储块EB-B;同样,对于图3所示的数据存储块Block D1#0在图4所示的数据存储块Block D2#0,D2#1和D2#2存储完成且更新的描述文件Fileinfo持久化完成后清除,以实现用户在追加待写数据时,设备存储的数据文件仍可为用户提供获取数据的服务。
当然,本领域技术人员应能理解上述具体场景的描述仅为举例,其他现有的或今后可能出现的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
与现有技术相比,在本申请的实施例中所述写入数据的设备不会对数据文件进行覆盖写,而总是采用拷贝到新分配的存储块的方式进行更新并采用原子操作持久化更新的所述描述文件,从而在在追加写入数据的过程中,能保证数据文件不会被损坏,并维持数据的可读性和一致性,方便了用户的使用。进一步地,在本申请的实施例的写入数据的设备支持用户指定待写数据的写入位置的写入,也支持用户不指定待写数据的写入位置的写入,提高用户写入数据的灵活性。
图12示出根据本申请一个方面的用于分布式存储系统的获取数据的设备示意图;其中,所述设备2包括:
描述文件获取装置11,用于获取描述文件;
主级起止信息列表获取装置12,用于基于所述描述文件中的主级识别码,从所述主级识别码所对应的主级起止信息存储块中获取主级起止信息列表;
数据起止信息获取装置13,用于从所述主级起止信息列表中查找相应的数据起止信息;
数据获取装置14,用于基于所述数据起止信息,从所述数据起止信息对应的数据存储块中读取相应数据。
进一步地,当所述主级起止信息列表中还包括从级起止信息时,所述数据起止信息获取装置13还包括:基于所述从级起止信息,从所述从级起止信息对应的从级起止信息存储块中查找相应的数据起止信息。优选地,采用二分查找法查找相应的数据起止信息。
在此,所述设备2包括但不限于网络设备、或用户设备与网络设备通过网络相集成所构成的设备。其中,所述网络设备包括一种能够按照事先设定或存储的指令,自动进行数值计算和信息处理的电子设备,其硬件包括但不限于微处理器、专用集成电路(ASIC)、可编程门阵列(FPGA)、数字处理器(DSP)、嵌入式设备等。所述网络设备其包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云;在此,云由基于云计算(Cloud Computing)的大量计算机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟超级计算机。所述网络包括但不限于互联网、广域网、城域网、局域网、VPN网络、无线自组织网络(Ad Hoc网络)等。优选地,所述设备2还可以是运行于所述网络设备、或用户设备与网络设备、或网络设备与触摸终端通过网络相集成所构成的设备上的脚本程序。当然,本领域技术人员应能理解上述设备2仅为举例,其他现有的或今后可能出现的网络设备3如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。此外,所述设备2可以与设备1共同设置在一个设备中。
上述各装置之间是持续不断工作的,在此,本领域技术人员应理解“持续”是指上述各装置分别实时地或者按照设定的或实时调整的工作模式要求,直至所述设备2停止工作。
与现有技术相比,在本申请的实施例中所述获取数据的设备在所述写入数据的基础上,能够及时获取数据以供用户读取,并能够随时读取,不受写入数据的影响。方便了用户的使用。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (24)
1.一种用于分布式存储系统的写入数据的方法,其中,所述方法包括:
获取用户的待写数据,并将所述待写数据存储至新分配的数据存储块;
生成关于所述数据存储块的数据起止信息,并基于所述数据起止信息更新主级起止信息列表,并将更新的所述主级起止信息列表存储至新分配的主级起止信息存储块;
基于所述主级起止信息存储块生成所述主级识别码;
基于所述主级识别码和增加所述待写数据后数据文件的总长度更新描述数据文件,并利用原子操作持久化更新的所述描述文件。
2.根据权利要求1所述的方法,其中,所述将所述待写数据存储至新分配的数据存储块包括:
判断在获取所述待写数据前最后一次分配的数据存储块所存储的前次数据的大小是否小于预设容量,当小于时,则执行惩罚读步骤,包括将所述前次数据与所述待写数据合并,并存储至新分配的所述数据存储块。
3.根据权利要求2所述的方法,其中,所述方法还包括:
在获取所述待写数据之前,获取所述待写数据的请求写入位置,判断所述请求写入位置与当前数据文件的总长度是否一致,当一致时,获取所述待写数据。
4.根据权利要求2所述的方法,其中,所述方法还包括:
在获取所述待写数据前,获取所述数据文件的文件长度;
所述基于所述主级识别码和增加所述待写数据后数据文件的总长度更新描述数据文件,并利用原子操作持久化更新的所述描述文件包括:
以在获取所述待写数据前所获取所述数据文件的文件长度为所述待写数据的请求写入位置,判断所述请求写入位置与当前数据文件的总长度是否一致,当一致时,基于所述主级识别码和增加所述待写数据后数据文件的总长度更新描述数据文件,利用所述原子操作持久化所述更新的描述文件。
5.根据权利要求4所述的方法,其中,所述基于所述主级识别码和增加所述待写数据后数据文件的总长度更新描述数据文件,并利用原子操作持久化更新的所述描述文件还包括:
所述请求写入位置与当前数据文件的总长度不一致时,则判断将所述待写数据存储至新分配的数据存储块中是否有所述惩罚读步骤:
若有所述惩罚读步骤,则重新判断在获取所述待写数据前最后一次分配的数据存储块所存储的前次数据的大小是否小于预设容量,当小于时,则再次执行惩罚读步骤,包括将所述前次数据与所述待写数据合并,并重新存储至所述数据存储块,并在所述主级起止信息列表中更新基于所述数据存储块生成起止信息,当大于或等于时,将所述待写数据写入所述待写数据重新存储至所述数据存储块,并在所述主级起止信息列表中更新基于所述数据存储块生成起止信息;
若无所述惩罚度步骤,则重新获取所述数据文件的总长度,并以所重新获取的所述数据文件的文件长度为所述待写数据的请求写入位置,再次判断所述请求写入位置与当前数据文件的总长度是否一致,当一致时,基于所述主级识别码和增加所述待写数据后数据文件的总长度更新描述数据文件,利用所述原子操作持久化所述更新的描述文件。
6.根据权利要求1至5中任一项所述的方法,其中,所述方法还包括:
判断所述主级起止信息列表的容量是否达到容量阈值或其数量起止信息的数量达到数量阈值,当达到时,则
将当前所述主级起止信息列表中的所有数据起止信息转移至从级起止信息列表并存储至新分配的从级起止信息存储块,
将基于所述从级起止信息存储块生成的从级起止信息存储至所述主级起止信息存储块。
7.根据权利要求1至6中任一项所述的方法,其中,所述方法还包括:
将更新前的所述主级起止信息列表所对应的主级起止信息存储块设置为可读不可写状态,并在持久化所述描述文件成功后清除更新前的所述主级起止信息列表所对应的主级起止信息存储块。
8.根据权利要求1至7中任一项所述的方法,其中,每一所述数据存储块包括一个或多个单元存储块,其中,所述多个单元存储块的容量均相同。
9.根据权利要求1至8中任一项所述的方法,其中,所述数据起止信息包括以下至少任一项:
所述数据存储块识别码;
所述数据存储块中数据的起止地址信息;
所述数据存储块中单元存储的个数。
10.一种用于分布式存储系统的获取数据的方法,其中,所述方法包括:
获取描述文件;
基于所述描述文件中的主级识别码,从所述主级识别码所对应的主级起止信息存储块中获取主级起止信息列表;
从所述主级起止信息列表中查找相应的数据起止信息;
基于所述数据起止信息,从所述数据起止信息对应的数据存储块中读取相应数据。
11.根据权利要求10所述的方法,其中,当所述主级起止信息列表中还包括从级起止信息时,所述从所述主级起止信息列表中查找相应的数据起止信息还包括:
基于所述从级起止信息,从所述从级起止信息对应的从级起止信息存储块中查找相应的数据起止信息。
12.根据权利要求10或11所述的方法,其中,所述从所述主级起止信息列表中查找相应的数据起止信息包括:
采用二分查找法查找相应的数据起止信息。
13.一种用于分布式存储系统的写入数据的设备,其中,所述设备包括:
写入装置,用于获取用户的待写数据,并将所述待写数据存储至新分配的数据存储块;
起止信息更新装置,用于生成关于所述数据存储块的数据起止信息,并基于所述数据起止信息更新主级起止信息列表,并将更新的所述主级起止信息列表存储至新分配的主级起止信息存储块;
主级识别码更新装置,用于基于所述主级起止信息存储块生成所述主级识别码;
描述文件更新装置,用于基于所述主级识别码和增加所述待写数据后数据文件的总长度更新描述文件,并利用原子操作持久化更新的所述描述文件。
14.根据权利要求13所述的设备,其中,所述写入装置包括:
惩罚读单元,用于判断在获取所述待写数据前最后一次分配的数据存储块所存储的前次数据的大小是否小于预设容量,当小于时,则执行惩罚读步骤,包括将所述前次数据与所述待写数据合并,并存储至新分配的所述数据存储块。
15.根据权利要求14所述的设备,其中,所述设备还包括:
判断装置,在获取所述待写数据之前,获取所述待写数据的请求写入位置,判断所述请求写入位置与当前数据文件的总长度是否一致,当一致时,获取所述待写数据。
16.根据权利要求13所述的设备,其中,所述写入装置还用于:
在获取所述待写数据前,获取所述数据文件的文件长度;
所述描述文件更新装置还用于:
以在获取所述待写数据前所获取所述数据文件的文件长度为所述待写数据的请求写入位置,判断所述请求写入位置与当前数据文件的总长度是否一致,当一致时,基于所述主级识别码和增加所述待写数据后数据文件的总长度更新描述数据文件,利用所述原子操作持久化所述更新的描述文件。
17.根据权利要求16所述的设备,其中,所述描述文件更新装置还用于:
所述请求写入位置与当前数据文件的总长度不一致时,则判断在将所述待写数据存储至新分配的数据存储块中是否有所述惩罚读步骤:
若有所述惩罚读步骤,则重新判断在获取所述待写数据前最后一次分配的数据存储块所存储的前次数据的大小是否小于预设容量,当小于时,则再次执行惩罚读步骤,包括将所述前次数据与所述待写数据合并,并重新存储至所述数据存储块,并在所述主级起止信息列表中更新基于所述数据存储块生成起止信息,当大于或等于时,将所述待写数据写入所述待写数据重新存储至所述数据存储块,并在所述主级起止信息列表中更新基于所述数据存储块生成起止信息;
若无所述惩罚度步骤,则重新获取所述数据文件的总长度,并以所重新获取的所述数据文件的文件长度为所述待写数据的请求写入位置,再次判断所述请求写入位置与当前数据文件的总长度是否一致,当一致时,基于所述主级识别码和增加所述待写数据后数据文件的总长度更新描述数据文件,利用所述原子操作持久化所述更新的描述文件。
18.根据权利要求13至17中任一项所述的设备,其中,所述方法还包括:
分级装置,用于判断所述主级起止信息列表的容量是否达到容量阈值或其数量起止信息的数量达到数量阈值,当达到时,则将当前所述主级起止信息列表中的所有数据起止信息转移至从级起止信息列表并存储至新分配的从级起止信息存储块,将基于所述从级起止信息存储块生成的从级起止信息存储至所述主级起止信息存储块。
19.根据权利要求13至18中任一项所述的设备,其中,所述方法还包括:
缓存装置,用于将更新前的所述主级起止信息列表所对应的主级起止信息存储块设置为可读不可写状态,并在持久化所述描述文件成功后清除更新前的所述主级起止信息列表所对应的主级起止信息存储块。
20.根据权利要求13至19中任一项所述的设备,其中,每一所述数据存储块包括一个或多个单元存储块,其中,所述多个单元存储块的容量均相同。
21.根据权利要求13至20中任一项所述的设备,其中,所述数据起止信息包括以下至少任一项:
所述数据存储块识别码;
所述数据存储块中数据的起止地址信息;
所述数据存储块中单元存储的个数。
22.一种用于分布式存储系统的获取数据的设备,其中,所述方法包括:
描述文件获取装置,用于获取描述文件;
主级起止信息列表获取装置,用于基于所述描述文件中的主级识别码,从所述主级识别码所对应的主级起止信息存储块中获取主级起止信息列表;
数据起止信息获取装置,用于从所述主级起止信息列表中查找相应的数据起止信息;
数据获取装置,用于基于所述数据起止信息,从所述数据起止信息对应的数据存储块中读取相应数据。
23.根据权利要求22所述的设备,其中,当所述主级起止信息列表中还包括从级起止信息时,所述数据起止信息获取装置还用于:
基于所述从级起止信息,从所述从级起止信息对应的从级起止信息存储块中查找相应的数据起止信息。
24.根据权利要求22或23所述的设备,其中,所述数据起止信息获取装置用于:
采用二分查找法查找相应的数据起止信息。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510571183.7A CN106527958B (zh) | 2015-09-09 | 2015-09-09 | 用于分布式存储系统的写入数据、获取数据的方法和设备 |
PCT/CN2016/097498 WO2017041654A1 (zh) | 2015-09-09 | 2016-08-31 | 用于分布式存储系统的写入数据、获取数据的方法和设备 |
US15/916,192 US10599337B2 (en) | 2015-09-09 | 2018-03-08 | Method and device for writing data and acquiring data in a distributed storage system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510571183.7A CN106527958B (zh) | 2015-09-09 | 2015-09-09 | 用于分布式存储系统的写入数据、获取数据的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106527958A true CN106527958A (zh) | 2017-03-22 |
CN106527958B CN106527958B (zh) | 2020-03-10 |
Family
ID=58240575
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510571183.7A Active CN106527958B (zh) | 2015-09-09 | 2015-09-09 | 用于分布式存储系统的写入数据、获取数据的方法和设备 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10599337B2 (zh) |
CN (1) | CN106527958B (zh) |
WO (1) | WO2017041654A1 (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108664208A (zh) * | 2017-03-27 | 2018-10-16 | 纳思达股份有限公司 | 基于flash存储器的文件追加写操作方法及装置 |
CN109032536A (zh) * | 2018-08-31 | 2018-12-18 | 郑州云海信息技术有限公司 | 基于分布式集群系统的数据存储方法、装置、系统及设备 |
CN109947842A (zh) * | 2017-07-27 | 2019-06-28 | 杭州海康威视数字技术股份有限公司 | 分布式存储系统中的数据存储方法、装置及系统 |
CN110505314A (zh) * | 2019-09-26 | 2019-11-26 | 浪潮电子信息产业股份有限公司 | 一种并发追加上传请求的处理方法 |
CN113377735A (zh) * | 2020-02-25 | 2021-09-10 | 深信服科技股份有限公司 | 数据一致性的处理方法、装置、设备及分布式文件系统 |
CN113568767A (zh) * | 2021-06-30 | 2021-10-29 | 宁波三星医疗电气股份有限公司 | 适用于智能用电终端的数据写文件校验方法 |
CN114722017A (zh) * | 2022-02-22 | 2022-07-08 | 阿里巴巴(中国)有限公司 | 数据写入方法、装置、设备及介质 |
CN114880958A (zh) * | 2022-07-12 | 2022-08-09 | 南京气象科技创新研究院 | 一种基于多气象因子智能深度学习的能见度预报模型 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110597463A (zh) * | 2019-08-16 | 2019-12-20 | 深圳中兴网信科技有限公司 | 数据读写方法、计算机设备与计算机可读存储介质 |
CN113051336B (zh) * | 2019-12-27 | 2023-05-26 | 上海莉莉丝科技股份有限公司 | 可视化的数据操作方法、系统、设备和介质 |
CN112214175A (zh) * | 2020-10-21 | 2021-01-12 | 重庆紫光华山智安科技有限公司 | 数据处理方法、装置、数据节点及存储介质 |
CN113703673B (zh) * | 2021-07-30 | 2023-09-22 | 郑州云海信息技术有限公司 | 一种单机数据存储方法及相关装置 |
CN114115735B (zh) * | 2021-11-18 | 2024-02-09 | 北京奥星贝斯科技有限公司 | 写入数据的方法及装置 |
CN116700632B (zh) * | 2023-08-07 | 2023-10-24 | 湖南中盈梦想商业保理有限公司 | 一种高可靠的金融信息数据存储方法 |
CN118094430B (zh) * | 2024-03-13 | 2024-08-06 | 中国农业科学院农业信息研究所 | 一种用于产业数据检测的数据处理方法及装置 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7107419B1 (en) * | 2003-02-14 | 2006-09-12 | Google Inc. | Systems and methods for performing record append operations |
CN102156700A (zh) * | 2010-02-12 | 2011-08-17 | 华为技术有限公司 | 数据库的访问方法、装置及系统 |
CN102307221A (zh) * | 2011-03-25 | 2012-01-04 | 国云科技股份有限公司 | 一种云存储系统及其实现方法 |
US20120102281A1 (en) * | 2008-12-19 | 2012-04-26 | Seagate Technology Llc | Storage device with manual learning |
CN102541869A (zh) * | 2010-12-07 | 2012-07-04 | 腾讯科技(深圳)有限公司 | 写入文件的方法和装置 |
CN102622350A (zh) * | 2011-01-26 | 2012-08-01 | 腾讯科技(深圳)有限公司 | 一种写数据的方法、装置及系统 |
CN103136215A (zh) * | 2011-11-24 | 2013-06-05 | 腾讯科技(深圳)有限公司 | 存储系统的数据读写方法和装置 |
CN103970844A (zh) * | 2014-04-28 | 2014-08-06 | 北京创世漫道科技有限公司 | 大数据的写入方法和装置、读取方法和装置及处理系统 |
US20150149725A1 (en) * | 2013-11-25 | 2015-05-28 | Ashish Mathur | Multi-threaded system for performing atomic binary translations |
CN104731921A (zh) * | 2015-03-26 | 2015-06-24 | 江苏物联网研究发展中心 | Hadoop分布式文件系统针对日志型小文件的存储和处理方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9811455B2 (en) * | 2013-03-15 | 2017-11-07 | The Boeing Company | Accessing different types of memory by respective distinct command with different timing requirements |
JP6044402B2 (ja) * | 2013-03-18 | 2016-12-14 | 富士通株式会社 | 情報処理システム、管理装置、管理装置の制御プログラム、および情報処理システムの制御方法 |
-
2015
- 2015-09-09 CN CN201510571183.7A patent/CN106527958B/zh active Active
-
2016
- 2016-08-31 WO PCT/CN2016/097498 patent/WO2017041654A1/zh active Application Filing
-
2018
- 2018-03-08 US US15/916,192 patent/US10599337B2/en active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7107419B1 (en) * | 2003-02-14 | 2006-09-12 | Google Inc. | Systems and methods for performing record append operations |
US20120102281A1 (en) * | 2008-12-19 | 2012-04-26 | Seagate Technology Llc | Storage device with manual learning |
CN102156700A (zh) * | 2010-02-12 | 2011-08-17 | 华为技术有限公司 | 数据库的访问方法、装置及系统 |
CN102541869A (zh) * | 2010-12-07 | 2012-07-04 | 腾讯科技(深圳)有限公司 | 写入文件的方法和装置 |
CN102622350A (zh) * | 2011-01-26 | 2012-08-01 | 腾讯科技(深圳)有限公司 | 一种写数据的方法、装置及系统 |
CN102307221A (zh) * | 2011-03-25 | 2012-01-04 | 国云科技股份有限公司 | 一种云存储系统及其实现方法 |
CN103136215A (zh) * | 2011-11-24 | 2013-06-05 | 腾讯科技(深圳)有限公司 | 存储系统的数据读写方法和装置 |
US20150149725A1 (en) * | 2013-11-25 | 2015-05-28 | Ashish Mathur | Multi-threaded system for performing atomic binary translations |
CN103970844A (zh) * | 2014-04-28 | 2014-08-06 | 北京创世漫道科技有限公司 | 大数据的写入方法和装置、读取方法和装置及处理系统 |
CN104731921A (zh) * | 2015-03-26 | 2015-06-24 | 江苏物联网研究发展中心 | Hadoop分布式文件系统针对日志型小文件的存储和处理方法 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108664208A (zh) * | 2017-03-27 | 2018-10-16 | 纳思达股份有限公司 | 基于flash存储器的文件追加写操作方法及装置 |
CN109947842A (zh) * | 2017-07-27 | 2019-06-28 | 杭州海康威视数字技术股份有限公司 | 分布式存储系统中的数据存储方法、装置及系统 |
CN109947842B (zh) * | 2017-07-27 | 2021-06-18 | 杭州海康威视数字技术股份有限公司 | 分布式存储系统中的数据存储方法、装置及系统 |
CN109032536A (zh) * | 2018-08-31 | 2018-12-18 | 郑州云海信息技术有限公司 | 基于分布式集群系统的数据存储方法、装置、系统及设备 |
CN109032536B (zh) * | 2018-08-31 | 2021-08-10 | 郑州云海信息技术有限公司 | 基于分布式集群系统的数据存储方法、装置、系统及设备 |
CN110505314A (zh) * | 2019-09-26 | 2019-11-26 | 浪潮电子信息产业股份有限公司 | 一种并发追加上传请求的处理方法 |
CN110505314B (zh) * | 2019-09-26 | 2022-11-25 | 浪潮电子信息产业股份有限公司 | 一种并发追加上传请求的处理方法 |
CN113377735A (zh) * | 2020-02-25 | 2021-09-10 | 深信服科技股份有限公司 | 数据一致性的处理方法、装置、设备及分布式文件系统 |
CN113568767A (zh) * | 2021-06-30 | 2021-10-29 | 宁波三星医疗电气股份有限公司 | 适用于智能用电终端的数据写文件校验方法 |
CN113568767B (zh) * | 2021-06-30 | 2024-04-30 | 宁波三星医疗电气股份有限公司 | 适用于智能用电终端的数据写文件校验方法 |
CN114722017A (zh) * | 2022-02-22 | 2022-07-08 | 阿里巴巴(中国)有限公司 | 数据写入方法、装置、设备及介质 |
CN114880958A (zh) * | 2022-07-12 | 2022-08-09 | 南京气象科技创新研究院 | 一种基于多气象因子智能深度学习的能见度预报模型 |
Also Published As
Publication number | Publication date |
---|---|
WO2017041654A1 (zh) | 2017-03-16 |
US10599337B2 (en) | 2020-03-24 |
US20180203606A1 (en) | 2018-07-19 |
CN106527958B (zh) | 2020-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106527958A (zh) | 用于分布式存储系统的写入数据、获取数据的方法和设备 | |
US10108543B1 (en) | Efficient physical garbage collection using a perfect hash vector | |
US8024383B2 (en) | Fat directory structure for use in transaction safe file | |
CN101061467B (zh) | 远程存储数据副本 | |
US8468291B2 (en) | Asynchronous distributed object uploading for replicated content addressable storage clusters | |
US10248556B2 (en) | Forward-only paged data storage management where virtual cursor moves in only one direction from header of a session to data field of the session | |
CN107180092B (zh) | 一种文件系统的控制方法、装置及终端 | |
US20130339314A1 (en) | Elimination of duplicate objects in storage clusters | |
CN103544045A (zh) | 一种基于hdfs的虚拟机镜像存储系统及其构建方法 | |
CN107038044A (zh) | 基于Unity3D的游戏资源离散加载方法及系统 | |
CN101504670A (zh) | 数据操作方法、系统、客户端和数据服务器 | |
JP2012098934A (ja) | 文書管理システム、文書管理システムの制御方法、プログラム | |
CN107391774A (zh) | 基于重复数据删除的日志文件系统的垃圾回收方法 | |
CN104426955A (zh) | 共享文件的处理方法及云存储服务器 | |
CN106227731A (zh) | 一种数据处理方法、装置及分布式文件系统 | |
KR20130108298A (ko) | 폐기가능 파일들의 카드-기반 관리 | |
CN103914522A (zh) | 一种应用于云存储重复数据删除的数据块合并方法 | |
CN105045850A (zh) | 云存储日志文件系统中垃圾数据回收方法 | |
CN107707600A (zh) | 一种数据存储方法及装置 | |
CN113254394B (zh) | 一种快照处理方法、系统、设备及存储介质 | |
CN105653209A (zh) | 一种对象存储数据传输方法及装置 | |
CN106446044A (zh) | 存储空间回收方法及装置 | |
CN106155934A (zh) | 一种云环境下基于重复数据的缓存方法 | |
JP2010532892A5 (zh) | ||
CN115840731A (zh) | 文件处理方法、计算设备及计算机存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |