CN108021333B - 随机读写数据的系统、装置及方法 - Google Patents
随机读写数据的系统、装置及方法 Download PDFInfo
- Publication number
- CN108021333B CN108021333B CN201610959932.8A CN201610959932A CN108021333B CN 108021333 B CN108021333 B CN 108021333B CN 201610959932 A CN201610959932 A CN 201610959932A CN 108021333 B CN108021333 B CN 108021333B
- Authority
- CN
- China
- Prior art keywords
- data
- target object
- target
- operated
- offset
- 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
- 238000000034 method Methods 0.000 title claims abstract description 49
- 238000010586 diagram Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
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/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]
-
- 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
- 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
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
本发明公开一种随机读写数据的系统、装置及方法,涉及互联网技术领域,能够实现对超大文件的随机读写。所述方法包括:后端接收前端发送的数据操作请求,数据操作请求为前端将对文件系统的数据操作请求进行转换后得到请求;根据数据操作请求中携带的数据位置信息,确定待操作数据在分布式对象存储系统的目标对象中的位置信息,数据位置信息为待操作数据在待操作文件中的位置信息,待操作文件对应分布式对象存储系统中的至少一个对象,目标对象为待操作数据对应的对象;根据待操作数据在目标对象中的位置信息,对目标对象进行操作。本发明主要适用于基于分布式对象存储对超大文件进行随机读写的场景中。
Description
技术领域
本发明涉及互联网技术领域,特别是涉及一种随机读写数据的系统、装置及方法。
背景技术
工作流是一种任务处理的计算模型,由至少一个步骤组成,且这些步骤之间存在依赖关系,组成了一个有向无环图。其中,每一步都有其输入和输出,且第一步的输入为整个工作流的输入,最后一步的输出为整个工作流的输出。
在实际应用中,对于某些业务而言,工作流产生的中间文件或者最终输出文件可能为几十TB的超大文件,并且在整个业务处理的过程中需要存储这些文件,并存在随机读写的需求,即随机读取文件的某一部分内容或者随机向文件中写入一部分新内容。在现有技术中,主要有两种基于云计算的分布式对象存储方式:(1)用户可以基于SDK(SoftwareDevelopment Kit,软件开发工具包)将超大文件存储到分布式对象存储系统中,但是不支持随机读写,并且将超大文件存储至分布式存储系统中时还需要用户编写对应的代码,操作比较麻烦;(2)基于文件系统协议将分布式对象存储系统挂载在文件系统本地,并通过文件系统接口访问分布式对象存储系统,但是由于超大文件与对象一一对应进行存储,所以在后续对超大文件进行读写操作时,只能对整个文件进行读写操作,并且在对文件进行写操作时,需要先把数据写到本地,然后才能同步到分布式对象存储系统中,而本地存储容量有限,因而当文件过于大时,无法满足存储的问题。
因此,如何基于分布式对象存储系统有效地对超大文件进行随机读写,就成为亟待解决的问题。
发明内容
有鉴于此,本发明提供一种随机读写数据的系统、装置及方法,能够基于分布式对象存储系统有效地对超大文件进行随机读写。
第一方面,本发明提供了一种随机读写数据的系统,所述系统包括:前端和后端;其中,
所述前端,用于接收客户端发送的对文件系统的数据操作请求,将所述对文件系统的数据操作请求转换为对所述后端的数据操作请求,并将转换后的数据操作请求发送给所述后端;
所述后端,用于接收所述前端发送的数据操作请求,并根据所述数据操作请求中携带的数据位置信息确定待操作数据在分布式对象存储系统的目标对象中的位置信息,以便根据所述待操作数据在所述目标对象中的位置信息,对所述目标对象进行操作;其中,所述数据位置信息为所述待操作数据在待操作文件中的位置信息,所述待操作文件对应所述分布式对象存储系统中的至少一个对象,所述目标对象为所述待操作数据对应的对象。
第二方面,本发明提供了一种随机读写数据的装置,所述装置包括:
接收单元,用于接收前端发送的数据操作请求,所述数据操作请求为前端将对文件系统的数据操作请求进行转换后得到请求;
确定单元,用于根据所述接收单元接收的所述数据操作请求中携带的数据位置信息,确定待操作数据在分布式对象存储系统的目标对象中的位置信息,其中,所述数据位置信息为所述待操作数据在待操作文件中的位置信息,所述待操作文件对应所述分布式对象存储系统中的至少一个对象,所述目标对象为所述待操作数据对应的对象;
读写单元,用于根据所述确定单元确定的所述待操作数据在所述目标对象中的位置信息,对所述目标对象进行操作。
第三方面,本发明提供了一种随机读写数据的方法,所述方法包括:
接收前端发送的数据操作请求,所述数据操作请求为前端将对文件系统的数据操作请求进行转换后得到请求;
根据所述数据操作请求中携带的数据位置信息,确定待操作数据在分布式对象存储系统的目标对象中的位置信息,其中,所述数据位置信息为所述待操作数据在待操作文件中的位置信息,所述待操作文件对应所述分布式对象存储系统中的至少一个对象,所述目标对象为所述待操作数据对应的对象;
根据所述待操作数据在所述目标对象中的位置信息,对所述目标对象进行操作。
借由上述技术方案,本发明提供的随机读写数据的系统、装置及方法,能够将待操作文件存储至分布式对象存储系统中的至少一个对象中,在后续对该文件进行读写操作时,后端可以根据数据操作请求中携带的待操作数据在待操作文件中的位置信息,确定待操作数据对应的至少一个目标对象以及待操作数据在目标对象中的位置信息,从而只需对待操作的、存储有文件部分数据的目标对象进行读写操作,而无需对整个超大文件进行读写,更不用用户编写对应的读写代码,进而实现对超大文件的有效随机读写操作。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提供的一种随机读写数据的系统示意图;
图2示出了本发明实施例提供的一种随机读写数据的方法的流程图;
图3示出了本发明实施例提供的一种随机读写数据的示例图;
图4示出了本发明实施例提供的一种随机读写数据的装置的组成框图;
图5示出了本发明实施例提供的另一种随机读写数据的装置的组成框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明实施例提供了一种随机读写数据的系统,如图1所示,该系统主要包括前端11和后端12;其中,
所述前端11,用于接收客户端(即通过用户进程)发送的对文件系统的数据操作请求,将所述对文件系统的数据操作请求转换为对所述后端12的数据操作请求,并将转换后的数据操作请求发送给所述后端12;
在实际应用中,前端11将客户端发送的对文件系统的数据操作请求转换为对后端12的数据操作请求的具体实现方式可以为SDK方式,也可以为基于文件系统协议转换装置进行转换的方式,也可以为其他实现方式,在此不做限定。其中,数据操作请求包括读请求和/或写请求。
所述后端12,用于接收所述前端11发送的数据操作请求,并根据所述数据操作请求中携带的数据位置信息确定待操作数据在分布式对象存储系统的目标对象中的位置信息,以便根据所述待操作数据在所述目标对象中的位置信息,对所述目标对象进行操作;其中,所述数据位置信息为所述待操作数据在待操作文件中的位置信息,所述待操作文件对应所述分布式对象存储系统中的至少一个对象,所述目标对象为所述待操作数据对应的对象。
由于后端12首次将文件写入分布式对象存储系统时,是先将文件进行分块处理,再将获得的数据块分别作为一个对象存储至分布式对象存储系统中,在后续对对象进行读写时,可以根据待操作数据在待操作文件中的位置信息确定其在目标对象中的位置信息,并根据其在目标对象的位置信息进行读写操作,所以后端包括分块读写装置(即下述实施例中提及的随机读写装置)。
进一步的,所述后端12具体用于:从所述待数据操作请求中获取所述待操作文件的文件名、待操作的总偏移量以及待操作的总大小,所述总偏移量为待操作起始点在所述待操作文件中的偏移量;
根据所述文件名、所述总偏移量以及所述总大小,确定所述目标对象在所述分布式对象存储系统中的存储路径、所述目标对象对应的目标偏移量以及所述目标对象对应的目标大小,所述目标偏移量为在所述目标对象中待操作的偏移量,所述目标大小为在所述目标对象中待操作的大小;
根据所述存储路径、所述目标偏移量以及所述目标大小,对所述目标对象进行操作。
需要说明的是,关于后端12进行读写操作的具体实现细节以及增加方案见下述方法、装置实施例,在此不再赘述。
本发明实施例提供的随机读写数据的系统,能够将待操作文件存储至分布式对象存储系统中的至少一个对象中,在后续对该文件进行读写操作时,后端可以根据数据操作请求中携带的待操作数据在待操作文件中的位置信息,确定待操作数据对应的至少一个目标对象以及待操作数据在目标对象中的位置信息,从而只需对待操作的、存储有文件部分数据的目标对象进行读写操作,而无需对整个超大文件进行读写,更不用用户编写对应的读写代码,进而实现对超大文件的有效随机读写操作。
进一步的,依据上述系统实施例,本发明的另一个实施例还提供了一种随机读写数据的方法,该方法主要应用于后端,如图2所示,该方法主要包括:
201、接收前端发送的数据操作请求。
其中,数据操作请求包括读请求和/或写请求。此外,数据操作请求为前端将客户端发送的数据操作请求进行转换处理后的请求,转换处理为将客户端发送的对文件系统的数据操作请求转换为对后端的数据操作请求。
在实际应用中,前端将客户端发送的对文件系统的数据操作请求转换为对后端的数据操作请求的具体实现方式可以为SDK方式,也可以为基于文件系统协议转换装置进行转换的方式,也可以为其他实现方式,在此不做限定。
需要说明的是,当后端接收到的数据操作请求为写请求时,写请求中会携带待写入分布式对象存储系统中的数据。
202、根据所述数据操作请求中携带的数据位置信息,确定待操作数据在分布式对象存储系统的目标对象中的位置信息。
其中,数据位置信息为待操作数据在待操作文件中的位置信息,待操作文件对应分布式对象存储系统中的至少一个对象,目标对象为待操作数据对应的对象。
需要说明的是,当数据操作请求为读请求时,待操作数据为待读数据,待操作文件为待读文件;当数据操作请求为写请求时,待操作数据为待写数据,待操作文件为待写文件。
当待操作文件不是空文件时,在将待操作文件划分为至少一个数据块,并存储在对应的对象中后,为了便于后续对该文件进行读写,后端可以为该文件创建一个目录,然后在该目录的基础上为每个对象创建一个存储路径。例如,若文件名为abc的文件被划分为5个数据块存储在对应的对象中,则该文件对应的目录可以为oss://bucket/abc/,数据块0、数据块1、数据块2、数据块3以及数据块4存储至对应的对象中后,每个对象的序号依次为0、1、2、3、4,每个对象的存储路径可以为oss://bucket/abc/0,oss://bucket/abc/1、oss://bucket/abc/2、oss://bucket/abc/3以及oss://bucket/abc/4。
当待操作文件为空文件时,也可以将该文件映射到至少一个对象中,并根据文件名为该文件创建一个目录,然后在该目录的基础上为每个对象创建一个存储路径。其中,当待操作文件为空文件时,待操作文件对应的对象为空,且对象对应的大小可以根据需求设定。
待操作数据在待操作文件中的位置信息包括待操作文件的文件名、待操作的总偏移量以及待操作的总大小,所述总偏移量为待操作起始点在所述待操作文件中的偏移量;待操作数据在目标对象中的位置信息包括目标对象在分布式对象存储系统中的存储路径、目标对象对应的目标偏移量、目标对象对应的目标大小,所述目标偏移量为在所述目标对象中待操作的偏移量,所述目标大小为在所述目标对象中待操作的大小。
由此可知,本步骤可以具体细化为:从所述数据操作请求中获取所述待操作文件的文件名、待操作的总偏移量以及待操作的总大小;根据所述文件名、所述总偏移量以及所述总大小,确定所述目标对象在所述分布式对象存储系统中的存储路径、所述目标对象对应的目标偏移量以及所述目标对象对应的目标大小。
具体的,当从数据操作请求中获取待操作文件的文件名、待操作的总偏移量以及待操作的总大小后,可以先从分布式对象存储系统中获取待操作文件的大小,然后基于总偏移量和总大小,计算出待操作数据对应待操作文件哪几个数据块(例如用块号表示),以及数据块的哪一部分,从而根据路径创建规则,获得这些数据块对应的目标对象的存储路径、目标偏移量以及目标大小。
当每个数据块的大小相同,且每个数据块的大小与对应对象大小相同时,根据总偏移量和总大小确定目标对象的序号、目标对象对应的目标偏移量以及目标对象对应的目标大小的具体计算方法可以为:序号=总偏移量/对象大小,且当序号为小数时,只取整数部分;目标偏移量=总偏移量-序号*对象大小;目标大小=对象大小-目标偏移量。例如,总偏移量为1MB,总大小为4MB,对象大小为2MB,则对象的序号=1/2=0,目标偏移量=1-0*2=1MB,目标大小=2-1=1MB;由于总大小为4MB,对象0的目标大小为1MB,所以还需要对整个对象1进行操作,即对象1的目标偏移量为0,目标大小为2MB,对对象2的前1MB数据进行操作,即对象2的目标偏移量为0,目标大小为1MB。由于目标对象的序号依次为0、1和2,所以可以确定目标对象的存储路径依次为oss://bucket/abc/0,oss://bucket/abc/1、oss://bucket/abc/2和oss://bucket/abc/3。
当每个数据块的大小不同时,且每个数据块的大小与对应对象大小相同时,在首次将文件存储至分布式对象存储系统后,可以将每个对象的属性信息记录在预设存储空间中,在后续对该文件进行随机读写时,可以根据每个对象的属性信息获得目标对象的存储路径、目标对象对应的目标偏移量以及目标对象对应的目标大小。其中,属性信息包括:文件名、对象的序号、对象的起始点在整个文件中的偏移量,对象的大小。
示例性的,待操作文件对应的对象有3个,对象0(即序号)的起始点在整个文件中的偏移量为0,对象0的大小为1MB,对象1的起始点在整个文件中的偏移量为1MB,对象1的大小为2MB,对象2的起始点在整个文件中的偏移量为3MB,对象2的大小为3MB。此时,若待操作的总偏移量为1MB,总大小为4MB,则通过分析上述3个对象的属性信息可知,待操作数据对应的目标对象包括对象1和对象2,且对象1对应的目标偏移量为0,目标大小为2MB,对象2对应的目标偏移量为0,目标大小为2MB。
203、根据所述待操作数据在所述目标对象中的位置信息,对所述目标对象进行操作。
在获得待操作数据在目标对象中的位置信息(即目标对象的存储路径、目标偏移量以及目标大小)后,后端可以先根据存储路径在分布式对象存储系统中查找对应的目标对象,然后基于目标对象对应的目标偏移量以及目标大小,对目标对象进行操作。
示例性的,如图3所示,一个大小为10MB的文件abc在首次写入分布式对象存储系统时,后端将其均分为5个数据块,然后分别存储在分布式对象存储系统的5个对象中,并记录该文件的存储路径为oss://bucket/abc/。当待操作数据对应的文件的文件名为abc,待操作的总偏移量为1MB,待操作的总大小为4MB(即读写区间为(1MB,5MB))时,可以确定该文件存储在oss://bucket/abc/路径下;然后根据总偏移量、总大小以及每个对象的大小,可以确定读写区间为(1MB,5MB)的待操作数据所对应的目标对象依次为对象0、对象1以及对象2,每个目标对象的存储路径依次为oss://bucket/abc/0、oss://bucket/abc/1以及oss://bucket/abc/2;待操作数据在对象0中的目标偏移量为1MB,目标大小为1MB,在对象1中的目标偏移量为0MB,目标大小为2MB,在对象2中的目标偏移量为0MB,目标大小为1MB。由此可以根据目标对象的存储路径查找到目标对象,再根据每个目标对象对应的目标偏移量和目标大小,可以对对应的目标对象进行操作。
本发明实施例提供的随机读写数据的方法,能够将待操作文件存储至分布式对象存储系统中的至少一个对象中,在后续对该文件进行读写操作时,后端可以根据数据操作请求中携带的待操作数据在待操作文件中的位置信息,确定待操作数据对应的至少一个目标对象以及待操作数据在目标对象中的位置信息,从而只需对待操作的、存储有文件部分数据的目标对象进行读写操作,而无需对整个超大文件进行读写,更不用用户编写对应的读写代码,进而实现对超大文件的有效随机读写操作。
进一步的,由于读操作和写操作的具体实现方式有所不同,所以下面分别针对读操作和写操作进行详细介绍。
(一)读操作。
具体的,若接收到的数据操作请求为读请求,则根据所述存储路径、所述目标偏移量以及所述目标大小,对所述目标对象进行操作的具体实现方式可以为:在分布式对象存储系统中查找存储路径下的目标对象;从目标偏移量所在的位置起,从目标对象中读取目标大小的数据,并将读取的数据发送给前端。
例如,目标对象的存储路径为oss://bucket/abc/1,目标偏移量为1MB,目标大小为2MB,则后端可以先根据oss://bucket/abc/1查找到序号为1的对象,然后从1MB偏移量所在的位置起,从序号为1的对象中读取2MB的数据,并将读取的数据发送给前端,以便前端返回给客户端。
进一步的,在实际应用中,用户常常需要连续读取相邻的多个数据块,所以为了提高响应读请求的效率,本发明可以在针对第一个读请求读取数据后,提前将与读取的数据相邻的一部分数据读取至缓存中,以便后续当用户需要读取的数据在缓存中时,后端可以直接从缓存中读取相应的数据。
具体的,在根据文件名、总偏移量以及总大小,确定目标对象在分布式对象存储系统中的存储路径、目标对象对应的目标偏移量以及目标对象对应的目标大小之前,先判断缓存中是否存储有与文件名、总偏移量以及总大小对应的待读数据;若缓存中存储有待读数据,则从缓存中读取待读数据,并将待读数据发送给前端;若缓存中没有待读数据,则根据文件名、总偏移量以及总大小,确定目标对象的存储路径、目标偏移量以及目标大小,并根据存储路径、目标偏移量以及目标大小从目标对象中读取待读数据,并将待读数据发送给前端。
进一步的,当缓存中没有待读数据,并从分布式对象存储系统中读取待读数据后,后端可以根据文件名、总偏移量以及总大小,确定待读终点在待读文件中的偏移量;从确定的偏移量所在的位置起,从分布式对象存储系统中读取预设大小的数据存储至缓存中,获得缓存数据,缓存数据包括至少一个缓存数据块,且缓存数据块与对象一一对应;为缓存数据中的每个缓存数据块添加属性信息,属性信息包括文件名、缓存数据块对应的对象的序号、缓存数据块的起始点在缓存数据块对应的对象中的偏移量以及缓存数据块的大小。
(二)写操作。
具体的,若接收到的数据操作请求为写请求,则根据所述存储路径、所述目标偏移量以及所述目标大小,对所述目标对象进行操作的具体实现方式可以为:在分布式对象存储系统中查找存储路径下的目标对象;将目标对象中的数据读取至内存中;根据目标偏移量以及目标大小,对写请求中携带的与目标对象对应的待写数据和目标对象中的数据进行合并处理,获得合并后的数据;将合并后的数据写入目标对象中。
其中,合并处理具体为:从目标偏移量起,从目标对象中查找出目标大小的数据,将写请求中携带的与目标对象对应的待写数据替换查找到的数据,目标对象中的其他数据不变。
示例性的,目标对象的大小为4MB,目标偏移量为2MB,目标大小为1MB,则将目标对象中2MB-3MB处的数据替换为待写数据,而1MB-2MB,3MB-4MB处的数据不变。
进一步的,基于上述实施例,由于当目标大小等于目标对象时,需要先从目标对象中读取所有数据至内存中,然后将待写数据替换目标对象中的所有数据,最后将替换后的数据写入目标对象中,所以为了简化操作,提高写操作的效率,可以当目标大小等于目标对象的大小时,直接将与目标对象对应的待写数据写入目标对象中,而无需将目标对象读取至内存中。
进一步的,当待写数据只能替换目标对象中的部分数据时,为了提高合并效率,本发明实施例可以对上述方案作如下改进:从目标对象中读取除目标偏移量以及目标大小对应的数据以外的数据,并将读取的数据保存至内存中,然后直接对待写数据与内存中的数据进行合并处理。
进一步的,在实际应用中,用户可能会连续多次对某对象进行写操作,而每次写操作时,都需要先将目标对象中的数据读取至内存中,然后才进行合并处理,操作繁琐,效率较低。为解决上述技术问题,本发明实施例提供了如下方案:在将合并后的数据写入目标对象中之前,在预设时间段内,若接收到对应目标对象的其他写请求,则根据其他写请求,依次对合并后的数据进行写操作,获得最终合并数据,并将最终合并数据写入目标对象中。
具体的,当后端第一次对某对象在内存中完成写操作后,不直接写入分布式对象存储系统中,而是对内存中获得的数据进行缓存,在后续接收到关于该对象的写请求后,直接对缓存的数据进行写操作,在预设时间段后,再将多次写操作获得最终结果写入分布式对象存储系统中。
此外,当后端接收到写请求后,也可以先将写请求缓存,在预设时间段后,再一次性对这些写请求进行写操作处理。
进一步的,在实际应用中,可能会遇到目标对象为空且待写数据不能覆盖完整目标对象的情况。例如,当首次将文件写入分布式对象存储系统中时,可能会出现对象为空且待写数据又不能覆盖完整对象的情况;又如,当待写数据超出文件对应的对象时,需要将超出的数据写入文件对应对象之后的对象中,而文件对应对象之后的对象可能为空且超出的数据又不能覆盖完整对象。在这种情况下,需要记录对象中有效数据的存储位置,才便于后续准确对该对象中的数据进行操作。下面以以下两种方式为例进行介绍:
方式一:当目标对象为空时,若目标对象对应的待写数据的大小小于目标对象的大小,则对待写数据进行补零处理,以使得补零后的待写数据的大小等于目标对象的大小;将补零后的待写数据写入目标对象中。
具体的,当目标对象为空且目标对象对应的待写数据的大小小于目标对象的大小时,后端可以先在内存中对待写数据进行补零处理,即在待写数据后面添加零,当补零后的待写数据大小等于目标对象的大小时,将补零后的待写数据写入目标对象中。在后续对该对象进行操作时,可以通过零区域和非零区域判断哪部分数据是有效数据。
方式二:当目标对象为空时,若目标对象对应的待写数据的大小小于目标对象的大小,则将目标对象对应的待写数据写入目标对象中,并将目标对象的属性信息存储至预设存储空间,属性信息包括文件名、目标对象的序号、目标偏移量以及目标大小。
具体的,当目标对象为空且目标对象对应的待写数据的大小小于目标对象的大小时,后端可以直接将待写数据写入目标对象中,但需要记录目标对象的属性信息,以便后续对该对象进行操作,可以通过属性信息获知哪一部分存储有数据。
进一步的,由于能够实现随机读写的前提是文件首次存储至分布式对象存储系统时,被分成多个数据块进行存储,所以在首次对文件进行存储之前,后端可以根据预置划分规则,将分布式对象存储系统划分为至少一个存储区域,且每个存储区域为一个对象;当首次将某文件写入分布式对象存储系统中时,根据预置划分规则将文件划分为至少一个数据块,并将数据块写入对应的对象中。其中,预置划分规则包括均分规则和不均分规则。其中,不均分规则可以为等差划分规则、等比划分规则等。
需要说明的是,当预置划分规则为不均分规则时,需要记录每个对象的属性信息,即文件名称、对象起始点在文件中的偏移量以及对象大小;当预置划分规则为均分规则时,可以记录每个对象的属性信息,也可以不记录每个对象的属性信息。
进一步的,依据上述方法实施例,本发明的另一个实施例提供了一种随机读写数据的装置,如图4所示,该装置主要包括:接收单元31、确定单元32和读写单元33。其中,
接收单元31,用于接收前端发送的数据操作请求,所述数据操作请求为前端将对文件系统的数据操作请求进行转换后得到请求;
确定单元32,用于根据所述接收单元31接收的所述数据操作请求中携带的数据位置信息,确定待操作数据在分布式对象存储系统的目标对象中的位置信息,其中,所述数据位置信息为所述待操作数据在待操作文件中的位置信息,所述待操作文件对应所述分布式对象存储系统中的至少一个对象,所述目标对象为所述待操作数据对应的对象;
读写单元33,用于根据所述确定单元32确定的所述待操作数据在所述目标对象中的位置信息,对所述目标对象进行操作。
进一步的,如图5所示,所述确定单元32包括:
获取模块321,用于从所述数据操作请求中获取所述待操作文件的文件名、待操作的总偏移量以及待操作的总大小,所述总偏移量为待操作起始点在所述待操作文件中的偏移量;
确定模块322,用于根据所述获取模块321获得的所述文件名、所述总偏移量以及所述总大小,确定所述目标对象在所述分布式对象存储系统中的存储路径、所述目标对象对应的目标偏移量以及所述目标对象对应的目标大小,所述目标偏移量为在所述目标对象中待操作的偏移量,所述目标大小为在所述目标对象中待操作的大小;
所述读写单元33,用于根据所述确定单元32确定的所述存储路径、所述目标偏移量以及所述目标大小,对所述目标对象进行操作。
进一步的,如图5所示,读写单元33包括:
第一查找模块331,用于当接收到的数据操作请求为读请求时,在分布式对象存储系统中查找存储路径下的目标对象;
第一读取模块332,用于从目标偏移量所在的位置起,从第一查找模块331查找到的目标对象中读取目标大小的数据;
发送模块333,用于将第一读取模块332读取的数据发送给前端。
进一步的,如图5所示,该确定单元32还包括:
判断模块323,用于在确定模块322根据文件名、总偏移量以及总大小,确定所述目标对象在分布式对象存储系统中的存储路径、目标对象对应的目标偏移量以及目标对象对应的目标大小之前,判断缓存中是否存储有与文件名、总偏移量以及总大小对应的待读数据;
读写单元33还用于当判断模块323的判断结果为缓存中存储有待读数据时,从缓存中读取待读数据,并将待读数据发送给前端;
确定模块322,用于当判断模块323的判断结果为缓存中没有待读数据时,根据文件名、总偏移量以及总大小,确定目标对象的存储路径、目标偏移量以及目标大小。
进一步的,确定单元32还用于根据文件名、总偏移量以及总大小,确定待读终点在待读文件中的偏移量;
读写单元33还用于从确定单元32确定的偏移量所在的位置起,从分布式对象存储系统中读取预设大小的数据存储至缓存中,获得缓存数据,缓存数据包括至少一个缓存数据块,且缓存数据块与对象一一对应;
为缓存数据中的每个缓存数据块添加属性信息,属性信息包括文件名、缓存数据块对应的对象的序号、缓存数据块的起始点在缓存数据块对应的对象中的偏移量以及缓存数据块的大小。
进一步的,如图5所示,读写单元33包括:
第二查找模块334,用于当接收到的数据操作请求为写请求时,在分布式对象存储系统中查找存储路径下的目标对象;
第二读取模块335,用于将第二查找模块334查找到的目标对象中的数据读取至内存中;
合并模块336,用于根据目标偏移量以及目标大小,对写请求中携带的与目标对象对应的待写数据和目标对象中的数据进行合并处理,获得合并后的数据;
写入模块337,用于将合并模块336获得的合并后的数据写入目标对象中。
进一步的,写入模块337还用于当目标大小等于目标对象的大小时,将与目标对象对应的待写数据写入目标对象中。
进一步的,第二读取模块335还用于从目标对象中读取除目标偏移量以及目标大小对应的数据以外的数据,并将读取的数据保存至内存中。
进一步的,如图5所示,读写单元33包括:
写操作模块338,用于在将合并后的数据写入目标对象中之前,在预设时间段内,若接收到对应目标对象的其他写请求,则根据其他写请求,依次对合并后的数据进行写操作,获得最终合并数据;
写入模块337,用于将最终合并数据写入目标对象中。
进一步的,如图5所示,该装置还包括:
补零单元34,用于当目标对象为空时,若目标对象对应的待写数据的大小小于目标对象的大小,则对待写数据进行补零处理,以使得补零后的待写数据的大小等于目标对象的大小;
读写单元33还用于将补零单元34获得的补零后的待写数据写入目标对象中。
进一步的,读写单元33还用于当目标对象为空时,若目标对象对应的待写数据的大小小于所述目标对象的大小,则将目标对象对应的待写数据写入目标对象中,并将目标对象的属性信息存储至预设存储空间,属性信息包括文件名、目标对象的序号、目标偏移量以及目标大小。
进一步的,如图5所示,该装置还包括:
划分单元35,用于根据预置划分规则,将分布式对象存储系统划分为至少一个存储区域,且每个存储区域为一个对象。
进一步的,划分单元35还用于当首次将某文件写入分布式对象存储系统中时,根据预置划分规则将文件划分为至少一个数据块;
读写单元33还用于将划分单元35获得的数据块写入对应的对象中。
本发明实施例提供的随机读写数据的装置,能够将待操作文件存储至分布式对象存储系统中的至少一个对象中,在后续对该文件进行读写操作时,后端可以根据数据操作请求中携带的待操作数据在待操作文件中的位置信息,确定待操作数据对应的至少一个目标对象以及待操作数据在目标对象中的位置信息,从而只需对待操作的、存储有文件部分数据的目标对象进行读写操作,而无需对整个超大文件进行读写,更不用用户编写对应的读写代码,进而实现对超大文件的有效随机读写操作。
上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
可以理解的是,上述装置及方法中的相关特征可以相互参考。另外,上述实施例中的“第一”、“第二”等是用于区分各实施例,而并不代表各实施例的优劣。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的随机读写数据的系统、装置及方法中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
Claims (26)
1.一种随机读写数据的系统,其特征在于,所述系统包括:前端和后端;其中,
所述前端,用于接收客户端发送的对文件系统的数据操作请求,将所述对文件系统的数据操作请求转换为对所述后端的数据操作请求,并将转换后的数据操作请求发送给所述后端;
所述后端,用于接收所述前端发送的数据操作请求,并根据所述数据操作请求中携带的数据位置信息确定待操作数据在分布式对象存储系统的目标对象中的位置信息,以便根据所述待操作数据在所述目标对象中的位置信息,对所述目标对象进行操作;其中,所述数据位置信息为所述待操作数据在待操作文件中的位置信息,所述待操作文件对应所述分布式对象存储系统中的至少一个对象,所述目标对象为所述待操作数据对应的对象,所述待操作数据在目标对象中的位置信息包括目标对象在分布式对象存储系统中的存储路径;
所述后端还用于:根据预置划分规则,将所述分布式对象存储系统划分为至少一个存储区域,且每个存储区域为一个对象;当首次将某文件写入所述分布式对象存储系统中时,根据所述预置划分规则将所述文件划分为至少一个数据块,并将所述数据块写入对应的对象中,所述预置划分规则为不均分规则时,需要记录每个对象的属性信息。
2.根据权利要求1所述的系统,其特征在于,所述后端具体用于:从所述数据操作请求中获取所述待操作文件的文件名、待操作的总偏移量以及待操作的总大小,所述总偏移量为待操作起始点在所述待操作文件中的偏移量;
根据所述文件名、所述总偏移量以及所述总大小,确定所述目标对象在所述分布式对象存储系统中的存储路径、所述目标对象对应的目标偏移量以及所述目标对象对应的目标大小,所述目标偏移量为在所述目标对象中待操作的偏移量,所述目标大小为在所述目标对象中待操作的大小;
根据所述存储路径、所述目标偏移量以及所述目标大小,对所述目标对象进行操作。
3.根据权利要求2所述的系统,其特征在于,所述后端具体用于:当接收到的数据操作请求为读请求时,在所述分布式对象存储系统中查找所述存储路径下的所述目标对象;从所述目标偏移量所在的位置起,从所述目标对象中读取所述目标大小的数据,并将读取的数据发送给所述前端;
所述前端还用于接收所述后端发送的从所述目标对象中读取的数据。
4.根据权利要求3所述的系统,其特征在于,所述后端还用于:在根据所述文件名、所述总偏移量以及所述总大小,确定所述目标对象在所述分布式对象存储系统中的存储路径、所述目标对象对应的目标偏移量以及所述目标对象对应的目标大小之前,判断缓存中是否存储有与所述文件名、所述总偏移量以及所述总大小对应的待读数据;
若所述缓存中存储有所述待读数据,则从所述缓存中读取所述待读数据,并将所述待读数据发送给所述前端;
若所述缓存中没有所述待读数据,则根据所述文件名、所述总偏移量以及所述总大小,确定所述目标对象的存储路径、所述目标偏移量以及所述目标大小;
所述前端还用于接收所述后端发送的从所述缓存中读取的数据。
5.根据权利要求4所述的系统,其特征在于,所述后端还用于:根据所述文件名、所述总偏移量以及所述总大小,确定待读终点在待读文件中的偏移量;
从确定的偏移量所在的位置起,从所述分布式对象存储系统中读取预设大小的数据存储至缓存中,获得缓存数据,所述缓存数据包括至少一个缓存数据块,且缓存数据块与对象一一对应;
为所述缓存数据中的每个缓存数据块添加属性信息,所述属性信息包括文件名、所述缓存数据块对应的对象的序号、所述缓存数据块的起始点在所述缓存数据块对应的对象中的偏移量以及所述缓存数据块的大小。
6.根据权利要求2所述的系统,其特征在于,所述后端具体用于:当接收到的数据操作请求为写请求时,在所述分布式对象存储系统中查找所述存储路径下的所述目标对象;
将所述目标对象中的数据读取至内存中;
根据所述目标偏移量以及所述目标大小,对所述写请求中携带的与所述目标对象对应的待写数据和所述目标对象中的数据进行合并处理,获得合并后的数据;
将所述合并后的数据写入所述目标对象中。
7.根据权利要求6所述的系统,其特征在于,所述后端还用于:当所述目标大小等于所述目标对象的大小时,将所述与所述目标对象对应的待写数据写入所述目标对象中。
8.根据权利要求6所述的系统,其特征在于,所述后端具体用于:从所述目标对象中读取除所述目标偏移量以及所述目标大小对应的数据以外的数据,并将读取的数据保存至所述内存中。
9.根据权利要求6所述的系统,其特征在于,所述后端还用于:在将所述合并后的数据写入所述目标对象中之前,在预设时间段内,若接收到对应所述目标对象的其他写请求,则根据所述其他写请求,依次对所述合并后的数据进行写操作,获得最终合并数据;将所述最终合并数据写入所述目标对象中。
10.根据权利要求6所述的系统,其特征在于,所述后端还用于:当所述目标对象为空时,若所述目标对象对应的待写数据的大小小于所述目标对象的大小,则对所述待写数据进行补零处理,以使得补零后的待写数据的大小等于所述目标对象的大小;将补零后的待写数据写入所述目标对象中。
11.根据权利要求6所述的系统,其特征在于,所述后端还用于:当所述目标对象为空时,若所述目标对象对应的待写数据的大小小于所述目标对象的大小,则将所述目标对象对应的待写数据写入所述目标对象中,并将所述目标对象的属性信息存储至预设存储空间,所述属性信息包括文件名、所述目标对象的序号、目标偏移量以及目标大小。
12.一种随机读写数据的装置,其特征在于,所述装置包括:
接收单元,用于接收前端发送的数据操作请求,所述数据操作请求为前端将对文件系统的数据操作请求进行转换后得到请求;
确定单元,用于根据所述接收单元接收的所述数据操作请求中携带的数据位置信息,确定待操作数据在分布式对象存储系统的目标对象中的位置信息,其中,所述数据位置信息为所述待操作数据在待操作文件中的位置信息,所述待操作文件对应所述分布式对象存储系统中的至少一个对象,所述目标对象为所述待操作数据对应的对象,所述待操作数据在目标对象中的位置信息包括目标对象在分布式对象存储系统中的存储路径;
读写单元,用于根据所述确定单元确定的所述待操作数据在所述目标对象中的位置信息,对所述目标对象进行操作;
划分单元,用于根据预置划分规则,将分布式对象存储系统划分为至少一个存储区域,且每个存储区域为一个对象;当首次将某文件写入分布式对象存储系统中时,根据预置划分规则将文件划分为至少一个数据块,所述预置划分规则为不均分规则时,需要记录每个对象的属性信息;
读写单元还用于将划分单元获得的数据块写入对应的对象中。
13.根据权利要求12所述的装置,其特征在于,所述确定单元包括:
获取模块,用于从所述数据操作请求中获取所述待操作文件的文件名、待操作的总偏移量以及待操作的总大小,所述总偏移量为待操作起始点在所述待操作文件中的偏移量;
确定模块,用于根据所述获取模块获得的所述文件名、所述总偏移量以及所述总大小,确定所述目标对象在所述分布式对象存储系统中的存储路径、所述目标对象对应的目标偏移量以及所述目标对象对应的目标大小,所述目标偏移量为在所述目标对象中待操作的偏移量,所述目标大小为在所述目标对象中待操作的大小;
所述读写单元,用于根据所述确定单元确定的所述存储路径、所述目标偏移量以及所述目标大小,对所述目标对象进行操作。
14.根据权利要求13所述的装置,其特征在于,所述读写单元包括:
第一查找模块,用于当接收到的数据操作请求为读请求时,在所述分布式对象存储系统中查找所述存储路径下的所述目标对象;
第一读取模块,用于从所述目标偏移量所在的位置起,从所述第一查找模块查找到的目标对象中读取所述目标大小的数据;
发送模块,用于将所述第一读取模块读取的数据发送给所述前端。
15.根据权利要求13所述的装置,其特征在于,所述读写单元包括:
第二查找模块,用于当接收到的数据操作请求为写请求时,在所述分布式对象存储系统中查找所述存储路径下的所述目标对象;
第二读取模块,用于将所述第二查找模块查找到的所述目标对象中的数据读取至内存中;
合并模块,用于根据所述目标偏移量以及所述目标大小,对所述写请求中携带的与所述目标对象对应的待写数据和所述目标对象中的数据进行合并处理,获得合并后的数据;
写入模块,用于将所述合并模块获得的所述合并后的数据写入所述目标对象中。
16.一种随机读写数据的方法,其特征在于,所述方法包括:
接收前端发送的数据操作请求,所述数据操作请求为前端将对文件系统的数据操作请求进行转换后得到请求;
根据所述数据操作请求中携带的数据位置信息,确定待操作数据在分布式对象存储系统的目标对象中的位置信息,其中,所述数据位置信息为所述待操作数据在待操作文件中的位置信息,所述待操作文件对应所述分布式对象存储系统中的至少一个对象,所述目标对象为所述待操作数据对应的对象,所述待操作数据在目标对象中的位置信息包括目标对象在分布式对象存储系统中的存储路径;
根据所述待操作数据在所述目标对象中的位置信息,对所述目标对象进行操作;
根据预置划分规则,将所述分布式对象存储系统划分为至少一个存储区域,且每个存储区域为一个对象;当首次将某文件写入所述分布式对象存储系统中时,根据所述预置划分规则将所述文件划分为至少一个数据块,并将所述数据块写入对应的对象中,所述预置划分规则为不均分规则时,需要记录每个对象的属性信息。
17.根据权利要求16所述的方法,其特征在于,根据所述数据操作请求中携带的数据位置信息,确定待操作数据在分布式对象存储系统的目标对象中的位置信息包括:
从所述数据操作请求中获取所述待操作文件的文件名、待操作的总偏移量以及待操作的总大小,所述总偏移量为待操作起始点在所述待操作文件中的偏移量;
根据所述文件名、所述总偏移量以及所述总大小,确定所述目标对象在所述分布式对象存储系统中的存储路径、所述目标对象对应的目标偏移量以及所述目标对象对应的目标大小,所述目标偏移量为在所述目标对象中待操作的偏移量,所述目标大小为在所述目标对象中待操作的大小;
根据所述待操作数据在所述目标对象中的位置信息,对所述目标对象进行操作包括:
根据所述存储路径、所述目标偏移量以及所述目标大小,对所述目标对象进行操作。
18.根据权利要求17所述的方法,其特征在于,若接收到的数据操作请求为读请求,则根据所述存储路径、所述目标偏移量以及所述目标大小,对所述目标对象进行操作,包括:
在所述分布式对象存储系统中查找所述存储路径下的所述目标对象;
从所述目标偏移量所在的位置起,从所述目标对象中读取所述目标大小的数据,并将读取的数据发送给所述前端。
19.根据权利要求18所述的方法,其特征在于,在根据所述文件名、所述总偏移量以及所述总大小,确定所述目标对象在所述分布式对象存储系统中的存储路径、所述目标对象对应的目标偏移量以及所述目标对象对应的目标大小之前,所述方法还包括:
判断缓存中是否存储有与所述文件名、所述总偏移量以及所述总大小对应的待读数据;
若所述缓存中存储有所述待读数据,则从所述缓存中读取所述待读数据,并将所述待读数据发送给所述前端;
根据所述文件名、所述总偏移量以及所述总大小,确定所述目标对象在所述分布式对象存储系统中的存储路径、所述目标对象对应的目标偏移量以及所述目标对象对应的目标大小,包括:
若所述缓存中没有所述待读数据,则根据所述文件名、所述总偏移量以及所述总大小,确定所述目标对象的存储路径、所述目标偏移量以及所述目标大小。
20.根据权利要求19所述的方法,其特征在于,所述方法还包括:
根据所述文件名、所述总偏移量以及所述总大小,确定待读终点在待读文件中的偏移量;
从确定的偏移量所在的位置起,从所述分布式对象存储系统中读取预设大小的数据存储至缓存中,获得缓存数据,所述缓存数据包括至少一个缓存数据块,且缓存数据块与对象一一对应;
为所述缓存数据中的每个缓存数据块添加属性信息,所述属性信息包括文件名、所述缓存数据块对应的对象的序号、所述缓存数据块的起始点在所述缓存数据块对应的对象中的偏移量以及所述缓存数据块的大小。
21.根据权利要求17所述的方法,其特征在于,若接收到的数据操作请求为写请求,则根据所述存储路径、所述目标偏移量以及所述目标大小,对所述目标对象进行操作,包括:
在所述分布式对象存储系统中查找所述存储路径下的所述目标对象;
将所述目标对象中的数据读取至内存中;
根据所述目标偏移量以及所述目标大小,对所述写请求中携带的与所述目标对象对应的待写数据和所述目标对象中的数据进行合并处理,获得合并后的数据;
将所述合并后的数据写入所述目标对象中。
22.根据权利要求21所述的方法,其特征在于,所述方法还包括:
若所述目标大小等于所述目标对象的大小,则将所述与所述目标对象对应的待写数据写入所述目标对象中。
23.根据权利要求21所述的方法,其特征在于,将所述目标对象中的数据读取至内存中,包括:
从所述目标对象中读取除所述目标偏移量以及所述目标大小对应的数据以外的数据,并将读取的数据保存至所述内存中。
24.根据权利要求21所述的方法,其特征在于,在将所述合并后的数据写入所述目标对象中之前,所述方法还包括:
在预设时间段内,若接收到对应所述目标对象的其他写请求,则根据所述其他写请求,依次对所述合并后的数据进行写操作,获得最终合并数据;
将所述合并后的数据写入所述目标对象中,包括:
将所述最终合并数据写入所述目标对象中。
25.根据权利要求21所述的方法,其特征在于,所述方法还包括:
当所述目标对象为空时,若所述目标对象对应的待写数据的大小小于所述目标对象的大小,则对所述待写数据进行补零处理,以使得补零后的待写数据的大小等于所述目标对象的大小;
将补零后的待写数据写入所述目标对象中。
26.根据权利要求21所述的方法,其特征在于,所述方法还包括:
当所述目标对象为空时,若所述目标对象对应的待写数据的大小小于所述目标对象的大小,则将所述目标对象对应的待写数据写入所述目标对象中,并将所述目标对象的属性信息存储至预设存储空间,所述属性信息包括文件名、所述目标对象的序号、目标偏移量以及目标大小。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610959932.8A CN108021333B (zh) | 2016-11-03 | 2016-11-03 | 随机读写数据的系统、装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610959932.8A CN108021333B (zh) | 2016-11-03 | 2016-11-03 | 随机读写数据的系统、装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108021333A CN108021333A (zh) | 2018-05-11 |
CN108021333B true CN108021333B (zh) | 2021-08-24 |
Family
ID=62083995
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610959932.8A Active CN108021333B (zh) | 2016-11-03 | 2016-11-03 | 随机读写数据的系统、装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108021333B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110401701A (zh) * | 2019-07-05 | 2019-11-01 | 苏州浪潮智能科技有限公司 | 一种分布式数据传输方法、系统、设备及计算机存储介质 |
CN110351532B (zh) * | 2019-08-08 | 2021-08-10 | 杭州阿启视科技有限公司 | 视频大数据云平台云存储服务方法 |
CN110750220A (zh) * | 2019-10-25 | 2020-02-04 | 北京浪潮数据技术有限公司 | sheepdog分布式存储系统中卷的读写方法及装置 |
CN110784756B (zh) * | 2019-12-31 | 2020-05-29 | 珠海亿智电子科技有限公司 | 文件读取方法、装置、计算设备及存储介质 |
CN113382029B (zh) * | 2020-03-10 | 2024-09-06 | 阿里巴巴集团控股有限公司 | 文件数据处理方法及装置 |
CN111737221B (zh) * | 2020-06-19 | 2022-04-22 | 浪潮电子信息产业股份有限公司 | 集群文件系统的数据读写方法、装置及设备和存储介质 |
CN114647618A (zh) * | 2020-12-18 | 2022-06-21 | 南京中兴新软件有限责任公司 | 信令数据查询方法、信令数据索引库的构建方法及服务器 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101354636A (zh) * | 2008-09-08 | 2009-01-28 | 创新科存储技术(深圳)有限公司 | 一种向磁盘阵列中写入数据的方法及系统 |
CN102843396B (zh) * | 2011-06-22 | 2018-03-13 | 中兴通讯股份有限公司 | 一种分布式缓存系统中的数据写入及读取方法及装置 |
CN103678638B (zh) * | 2013-12-20 | 2018-10-19 | 厦门雅迅网络股份有限公司 | 一种基于磁盘的对象缓存方法 |
AU2013409624B2 (en) * | 2013-12-31 | 2016-11-17 | Huawei Technologies Co., Ltd. | Data processing method and device in distributed file storage system |
CN104007938B (zh) * | 2014-05-29 | 2017-04-05 | 华为技术有限公司 | 在存储网络中的键值生成方法及装置 |
CN104461378B (zh) * | 2014-10-30 | 2017-09-26 | 华为技术有限公司 | 将数据对象写入ip硬盘的方法、装置及系统 |
CN105630808A (zh) * | 2014-10-31 | 2016-06-01 | 北京奇虎科技有限公司 | 基于分布式文件系统的文件读取、写入方法及节点服务器 |
CA2965715C (en) * | 2014-12-27 | 2019-02-26 | Huawei Technologies Co., Ltd. | Data processing method, apparatus, and system |
JP5996691B2 (ja) * | 2015-02-19 | 2016-09-21 | 株式会社シミュラティオ | ファイル転送方法及びファイル転送プログラム |
CN105159842B (zh) * | 2015-08-31 | 2018-03-27 | 浪潮(北京)电子信息产业有限公司 | 存储系统数据写时拷贝的处理方法和处理装置 |
CN105933376B (zh) * | 2016-03-31 | 2019-09-03 | 华为技术有限公司 | 一种数据操作方法,服务器及存储系统 |
-
2016
- 2016-11-03 CN CN201610959932.8A patent/CN108021333B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108021333A (zh) | 2018-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108021333B (zh) | 随机读写数据的系统、装置及方法 | |
KR101994021B1 (ko) | 파일 조작 방법 및 장치 | |
CN106407207B (zh) | 一种实时新增数据更新方法和装置 | |
CN107968818B (zh) | 数据的存储方法、装置及服务器集群 | |
CN109189841B (zh) | 一种多数据源访问方法及系统 | |
CN102129425B (zh) | 数据仓库中大对象集合表的访问方法及装置 | |
CN106326309B (zh) | 一种数据查询方法和装置 | |
EP3076307A1 (en) | Method and device for responding to a request, and distributed file system | |
CN105468642A (zh) | 数据的存储方法及装置 | |
US11501317B2 (en) | Methods, apparatuses, and devices for generating digital document of title | |
CN107256233B (zh) | 一种数据存储方法和装置 | |
CN111680063A (zh) | Elasticsearch分页查询数据的方法及装置 | |
CN112579595A (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
CN105468644A (zh) | 一种用于在数据库中进行查询的方法与设备 | |
CN109508304A (zh) | 一种内存管理元数据的处理方法及装置 | |
CN110837499B (zh) | 数据访问处理方法、装置、电子设备和存储介质 | |
CN111814029B (zh) | 一种数据查询方法、系统及计算设备 | |
CN106934066B (zh) | 一种元数据处理方法、装置和存储设备 | |
KR20190123819A (ko) | 데이터 저장장치의 주소 맵핑 테이블 운용 방법 | |
CN113761102B (zh) | 数据处理方法、装置、服务器、系统和存储介质 | |
CN112464049B (zh) | 号码详单下载方法、装置和设备 | |
CN114265884A (zh) | 数据查询方法、装置、计算机设备和存储介质 | |
CN114020946A (zh) | 一种基于多图检索数据融合的目标判断处理方法和系统 | |
CN111143711A (zh) | 对象搜索方法及系统 | |
CN105260425A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |