CN114327249A - 对象存储服务的数据修改方法、服务节点、客户端及设备 - Google Patents
对象存储服务的数据修改方法、服务节点、客户端及设备 Download PDFInfo
- Publication number
- CN114327249A CN114327249A CN202110131551.1A CN202110131551A CN114327249A CN 114327249 A CN114327249 A CN 114327249A CN 202110131551 A CN202110131551 A CN 202110131551A CN 114327249 A CN114327249 A CN 114327249A
- Authority
- CN
- China
- Prior art keywords
- data
- modified
- target object
- object storage
- service node
- 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.)
- Pending
Links
Images
Classifications
-
- 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/11—File system administration, e.g. details of archiving or snapshots
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
对象存储服务的数据修改方法、服务节点、客户端及设备。本申请,对象存储服务节点接收对象存储客户端发送的数据写入请求,数据写入请求用于请求对对象存储服务节点中存储的目标对象中的待修改数据进行修改。对象存储服务节点根据数据写入请求中携带的桶域名确认桶,根据目标对象的名称确认数据桶中的目标对象,将待修改数据在目标对象中的位置对应的待修改数据修改为修改数据。租户可以通过对象存储客户端触发对象存储服务节点对存储在服务节点的目标对象进行修改,不再需要将目标对象中所有数据下载到对象存储客户端本地,数据修改方式较为简单、便捷、高效,有效减少对象存储客户端与服务节点之间的交互次数,缩短交互时间,提高数据修改效率。
Description
相关申请交叉引用领域
本申请要求在2020年10月10日提交中华人民共和国知识产权局、申请号为202011079971.1、发明名称为“存储系统和对象存储服务端”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及通信技术领域,尤其涉及对象存储服务的数据修改方法、服务节点、客户端及设备。
背景技术
对象存储服务(object storage service,OBS)是一个基于对象的存储服务,具备海量、安全、高可靠、低成本的优点。
OBS是一种面向互联网(internet)访问的服务。租户可以通过对象存储客户端与对象存储服务节点(支持OBS的计算节点)建立连接,在对象存储服务节点上创建数据桶,对对象存储服务节点上数据桶中的对象进行访问和管理。
目前,OBS支持数据写入、读取以及追加写等模式,其中,追加写模式能够用于实现数据修改。租户可以通过对象存储客户端将对象中数据从对象存储服务节点下载到对象存储客户端本地,之后在对象存储客户端上对该对象中的数据进行修改,之后再将修改后的对象中的数据上传到对象存储服务节点中,覆盖在对象存储服务节点上存储的对象。
这种数据修改的方式,需要将对象中所有数据下载到对象存储客户端本地,对于数据量较大的对象,下载过程耗时较长,且当本次存储空间不足以存储该对象时,将导致数据修改失败。
发明内容
本申请提供一种对象存储服务的数据修改方法、服务节点、客户端及设备,用于提高基于对象存储服务的数据修改效率。
第一方面,本申请实施例提供了一种对象存储服务的数据修改方法,该方法应用于对象存储服务节点。该方法中,对象存储服务节点接收对象存储客户端发送的数据写入请求,该数据写入请求用于请求对对象存储服务节点中存储的目标对象中的待修改数据进行修改。数据写入请求可以包括目标对象所在的数据桶的桶域名、目标对象的名称、待修改数据在目标对象中的位置(待修改数据在目标对象中的位置可以通过待修改数据在目标对象中的偏移量以及待修改数据的数据长度指示,也可以用其他信息指示)、以及修改数据;对象存储服务节点在接收到该数据写入请求后,对象存储服务节点可以对目标对象进行修改。
对象存储服务节点根据桶域名确认数据桶(在本申请实施例中,数据桶也可以简称为桶),根据目标对象的名称确认数据桶中的目标对象,根据待修改数据在目标对象中的位置确定待修改数据,将该待修改数据修改为修改数据。
通过上述方法,租户可以通过对象存储客户端触发对象存储服务节点对存储在对象存储服务节点的目标对象进行修改,不再需要将目标对象中所有数据下载到对象存储客户端本地,这种数据修改方式较为简单、便捷、高效,有效减少对象存储客户端与对象存储服务节点之间的交互次数,缩短交互时间,提高数据修改效率。
在一种可能的实现方式中,对象存储服务节点在将待修改数据修改为修改数据时,可以直接将目标对象中的待修改数据更新为修改数据。对象存储服务节点也可以不改变目标对象中的原始数据,存储该修改数据;例如,对象存储服务节点可以在持久存储单元存储修改数据,并记录用于指示修改数据的数据布局的元数据,其中,数据布局包括修改数据的存储位置,修改数据的存储位置可以通过持久存储单元的标识、修改数据在持久存储单元的偏移量以及修改数据在持久存储单元的长度指示。数据布局还可以包括修改数据在目标对象中的位置,修改数据在目标对象中的位置可以通过待修改对象在目标对象中的位置指示。
通过上述方法,对象存储服务节点可以通过不同的方式修改目标对象中的数据,方式较为灵活。存储该修改数据的方式能够使得对象存储服务节点中保存每次数据修改之前和之后的数据,能够记录数据的修改过程;存储该修改数据的方式也较为便捷,进一步减少数据修改的时间。
在一种可能的实现方式中,目标对象的元数据可以划分为多个次级元数据,一个次级元数据为目标对象中一个范围内数据的元数据,不同次级元数据对应的范围不同,也即一个次级元数据可以用于指示目标对象中一个范围内数据的数据布局。
通过上述方法,目标对象的元数据的划分便于后续有针对性的读取次级元数据。
在一种可能的实现方式中,对象存储服务节点在记录元数据时,可以先根据待修改数据在目标对象的偏移量、待修改数据的数据长度确定待修改数据在目标对象中所属的范围,根据范围从多个次级元数据中确定该范围对应的次级元数,为方便说明,将该范围对应的次级元数据称为目标次级元数据。之后对象存储服务节点可以在目标次级元数据中增加目标次级元数据。
通过上述方法,对象存储服务节点能够有针对性的读取次级元数据,并修改该次级元数据,使得对象存储服务节点读取的元数据的数据量能够有效减少,可以提高记录元数据的效率,保证数据修改的高效性。
在一种可能的实现方式中,数据写入请求还包括时间信息,时间信息用于指示发送数据写入请求的时间。通过时间信息能够有效的记录数据写入发生的时间。
在一种可能的实现方式中,数据写入请求还包括鉴权信息,鉴权信息用于指示对象存储客户端访问对象存储服务节点的权限。通过携带鉴权信息可以提高数据修改的安全性,保证只有具备访问对象存储服务节点权限的对象存储客户端才能够指示对象存储服务节点对目标对象中的数据进行修改。
在一种可能的实现方式中,对象存储服务节点在将目标对象中偏移量和数据长度对应的待修改数据修改为修改数据之后,对象存储服务节点可以向对象存储客户端发送数据修改成功响应。
通过上述方法,通过数据修改成功响应可以及时通知数据修改状态,以便租户能够通过对象存储客户端及时获知数据已修改成功,提升用户体验。
第二方面,本申请实施例提供了一种数据修改方法,该方法应用于对象存储客户端,为方便说明,将对象存储客户端简称为对象存储客户端。在该方法中,租户可以通过应用程序向对象存储客户端发送针对目标对象的数据修改请求。数据修改请求包括目标对象所在的数据桶的桶域名、目标对象的名称、待修改数据在目标对象的位置、以及修改数据。其中,待修改数据在目标对象的位置可以通过待修改数据在目标对象的偏移量、待修改数据的数据长度指示,也可以通过其他信息指示,本申请实施例并不限定指示待修改数据在目标对象中的位置的方式。
对象存储客户端在接收到应用程序发送的数据修改请求后,可以根据数据修改请求向对象存储服务节点发送数据写入请求。例如,对象存储客户端可以将数据修改请求中携带的信息置于数据写入请求中,发送给对象存储服务节点,以请求对对象存储服务节点中存储的目标对象中的待修改数据进行修改。数据写入请求包括目标对象所在的数据桶的桶域名、目标对象的名称、待修改数据在目标对象的位置、以及修改数据。其中,待修改数据在目标对象的位置可以通过待修改数据在目标对象的偏移量、待修改数据的数据长度指示,也可以通过其他信息指示。
通过上述方法,租户不在需要通过对象存储客户端将整个对象下载到本地,以完成数据修改。租户仅需触发对象存储客户端向对象存储服务节点发送数据写入请求,就可以实现数据修改,大大简化了数据修改流程,使得数据修改效率有效提升。
在一种可能的实现方式中,数据写入请求还包括时间信息,时间信息用于指示发送数据写入请求的时间。通过时间信息能够有效的记录数据修改发生的时间。
在一种可能的实现方式中,数据写入请求还包括鉴权信息,鉴权信息用于指示对象存储客户端访问对象存储服务节点的权限。通过携带鉴权信息可以提高数据修改过程的安全性,保证具备访问对象存储服务节点的对象存储客户端才能够指示对象存储服务节点对目标对象的数据进行修改。
在一种可能的实现方式中,对象存储客户端还可以接收来自对象存储服务节点的数据写入成功响应,以使得租户能够及时获知数据修改的状态。
第三方面,本申请实施例还提供了一种对象存储服务节点,该对象存储服务节点具有实现上述第一方面的方法实例中行为的功能,有益效果可以参见第一方面的描述此处不再赘述。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。在一个可能的设计中,所述对象存储服务节点的结构中包括接收模块、处理模块,可以的,还包括发送模块,这些模块可以执行上述第一方面方法示例中的相应功能,具体参见方法示例中的详细描述,此处不做赘述。
第四方面,本申请实施例还提供了一种对象存储客户端,该对象存储客户端具有实现上述第二方面的方法实例中行为的功能,有益效果可以参见第二方面的描述此处不再赘述。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。在一个可能的设计中,所述对象存储客户端的结构中包括接收模块、发送模块,这些模块可以执行上述第二方面方法示例中的相应功能,具体参见方法示例中的详细描述,此处不做赘述。
第五方面,本申请实施例还提供了一种计算设备,该计算设备具有实现上述第一方面的方法实例中行为的功能,有益效果可以参见第一方面的描述此处不再赘述。所述计算设备的结构中包括处理器和存储器,所述处理器被配置为支持所述对象存储服务节点执行上述第一方面方法中相应的功能。所述存储器与所述处理器耦合,其保存所述计算设备必要的程序指令和数据。所述计算设备的结构中还包括通信接口,用于与其他设备进行通信。
第六方面,本申请实施例还提供了一种计算设备,该计算设备具有实现上述第二方面的方法实例中行为的功能,有益效果可以参见第二方面的描述此处不再赘述。所述计算设备的结构中包括处理器和存储器,所述处理器被配置为支持所述对象存储客户端执行上述第二方面方法中相应的功能。所述存储器与所述处理器耦合,其保存所述计算设备必要的程序指令和数据。所述计算设备的结构中还包括通信接口,用于与其他设备进行通信。
第七方面,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面中的各个可能的实现方式中所述的方法;当其在计算机上运行时,使得计算机执行上述第二方面中的各个可能的实现方式中所述的方法。
第八方面,本申请还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面中的各个可能的实现方式中所述的方法。当其在计算机上运行时,使得计算机执行上述第二方面中的各个可能的实现方式中所述的方法。
第九方面,本申请还提供一种计算机芯片,所述芯片与存储器相连,所述芯片用于读取并执行所述存储器中存储的软件程序,执行上述第一方面中的各个可能的实现方式中所述的方法,或执行上述第二方面中的各个可能的实现方式中所述的方法。
附图说明
图1为本申请提供的对象存储服务的逻辑架构示意图;
图2为本申请提供的一种系统的架构示意图;
图3为本申请提供的一种对象存储服务节点的结构示意图;
图4为本申请提供的一种对象存储服务节点的逻辑结构示意图;
图5为本申请提供的一种对象存储服务节点的内部交互示意图;
图6为本申请提供的一种数据修改的方法示意图;
图7为本申请提供的一种目标对象的元数据的划分示意图;
图8为本申请提供的一种对象存储服务节点的结构示意图;
图9为本申请提供的一种对象存储客户端的结构示意图;
图10为本申请提供的一种计算设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了便于理解本申请实施例,首先,对本申请涉及的部分术语进行解释说明。
云平台:可提供与公有云服务相关的页面以供租户远程访问公有云服务,租户可通过预先注册的账号密码在公有云访问页面登录云平台,并在登录成功之后,在公有云访问页面选择并购买对应的公有云服务,例如OBS、虚拟机服务、容器服务等,针对OBS而言,租户可进一步通过公有云访问页面上提供的配置界面或者应用程序编程接口(applicationprogramming interface,API)对OBS进行配置,例如创建桶,配置桶的访问策略,从租户本地的计算机通过互联网上传对象到桶中等等针对桶的操作。
桶(Bucket):是OBS中存储对象的容器,对象存储提供了基于桶和对象的扁平化存储方式,桶中的所有对象都处于同一逻辑层级,去除了文件系统中的多层级树形目录结构。每个桶都有自己的存储类别、访问权限、所属区域等属性,租户可以创建不同存储类别和访问权限的桶,并配置更多高级属性来满足不同场景的存储诉求。
在OBS中,桶名是全局唯一的且不能修改,即租户创建的桶不能与自己已创建的其他桶名称相同,也不能与其他租户创建的桶名称相同。桶所属的区域在创建后也不能修改。每个桶在创建时都会生成默认的桶访问列表(access control list,ACL),ACL列表的每项包含了对被授权租户授予什么样的权限,如读取权限、写入权限等。租户只有对桶有相应的权限,才可以对桶进行操作,如创建、删除、显示、设置桶ACL等。
租户可使用账号在云平台登录,通过云平台提供的公有云访问页面上的配置界面或者API可创建多个桶,还可以为桶配置桶名,每个桶中存放的对象的数量和大小总和没有限制,租户不需要考虑数据的可扩展性,OBS是基于表述性状态传递(representationalstate transfer,REST)风格和超文本传送协议(hypertext transport protocol,HTTP)和超文本传输安全协议(hypertext transfer protocol secure,HTTPS)协议的服务,租户可以通过统一资源定位符(uniform resource locator,URL)来定位桶资源,本申请实施例中该URL又称为桶域名。OBS中桶和对象的关系如图1所示,图1是对象存储服务的逻辑架构示意图,如图1所述,每个桶可以包括多个对象(下文详细介绍),桶之间的对象相互隔离,租户通过操作对象存储客户端远程购买对象存储服务,对象存储服务向租户提供桶,具体而言,可以提供桶域名,租户可操作对象存储客户端通过该桶域名访问桶,从而可向桶中上传数据,并且,可从桶中下载数据,其中,上传的数据以对象方式存储在桶中。
数据桶:在本发明实施例中,静态桶是指上述对象存储服务提供的桶。
值得注意的是,本发明所述的数据桶,可简称为桶,该桶设置于物理存储设备中,例如下文所述的物理磁盘,可用于存储对象。
对象(Object):是OBS中数据存储的基本单位,一个对象实际是一个文件的数据与其相关属性信息(元数据)的集合体。租户上传至OBS的数据都以对象的形式保存在桶中。对象包括了键值(Key),元数据(Metadata),数据(Data)三部分。
Key,即对象的名称,例如为经过UTF-8编码的长度大于0且不超过1024的字符序列,一个桶里的每个对象拥有唯一的对象键值。
Metadata,即对象的描述信息,包括系统元数据和租户元数据,这些元数据以键值对(Key-Value)的形式被上传到对象存储服务中。系统元数据由对象存储服务自动产生,在处理对象的数据时使用,系统元数据包括日期(Date),内容长度(Content-length),上次修改时间(Last-modify),MD5加密内容(Content-MD5)等。租户元数据由租户在上传对象到桶时指定,是租户自定义的对象描述信息。Data,数据,即租户上传的数据内容。
通常,可将对象等同于文件来进行管理,但是为了使租户更方便进行管理数据,对象存储服务提供了一种方式模拟文件夹:通过在对象的名称中增加“/”,例如“test/123.jpg”,此时,“test”就被模拟成了一个文件夹,“123.jpg”则模拟成“test”文件夹下的文件名了,而实际上,对象名称(Key)是“test/123.jpg”,数据(Data)为123.jpg文件本身。
租户上传对象时,可以指定对象的存储类别,若不指定,默认与桶的存储类别一致。上传后,对象的存储类别可以修改,桶可通过对象存储客户端被访问。对象存储客户端可为租户的在本地使用的浏览器或云平台提供的专用对象存储客户端。举例而言,租户可以通过设置在本地计算机中的浏览器访问桶,在输入账号验证通过后,租户可使用浏览器上传对象到桶中,或对桶中的对象进行修改、删除等操作,其中,本地计算机接入互联网中。
持久存储单元(persistence log,PLOG),对象存储系统的基本存储单元,设置在物理磁盘上,具体为物理磁盘的固定大小的存储空间,对象存储系统将多个对象存储服务节点的物理磁盘以PLOG形式进行管理,本申请实施例仅是以PLOG为基本存储单元为例,凡是能够作为基本存储单元的存储空间均适用于本申请实施例。
下文结合图2对本申请实施例适用的系统架构进行说明,参见图2,在本实施例中,对象存储客户端20可以部署在用户侧,如可以部署在数据中心的之外的终端设备21。该终端设备21上还可以部署有应用程序22,本申请实施例并不限定终端设备的具体类型,例如该终端设备可以为手机、笔记本电脑、平板电脑、掌上电脑、智慧城市中的无线终端、智慧家庭中的无线设备。对象存储客户端20可以与应用程序22交互,如应用程序22可以在租户的触发下向对象存储客户端20发送数据修改请求。对象存储客户端20在接收到数据修改请求后,可以根据数据修改请求向应用程序22发送数据写入请求。
云平台10设置在数据中心,通过交换设备203分别与对象存储服务节点(对象存储服务节点可以简称为对象存储服务节点,在本申请实施例中仅示例性的绘制出了对象存储服务节点201、对象存储服务节点202)以及远程连接网关204连接。
租户可以在对象存储客户端20使用账号登陆到云平台10,通过云平台10创建桶、配置桶名,获取桶域名。云平台10在检测到租户的操作(如创建桶、配置桶名等操作)后,可以通过交换设备203向对象存储服务节点(如对象存储服务节点201或对象存储服务节点202)下发创建指令,创建指令中包括桶名、桶域名等信息,通知对象存储服务节点创建桶,保存在桶名、桶域名等信息。
在创建了桶之后,租户还可以通过操作对象存储客户端20访问桶域名,定位到对象存储服务节点中的桶,在桶中上传数据(如上传对象)、下载数据(如下载对象)。在本申请实施例中,租户还可以通过操作对象存储客户端20对桶中的对象进行修改。也即租户可以触发对象存储客户端20向对象存储服务节点发送数据写入请求,指示对对象存储服务节点的桶中存储的目标对象中的待修改数据进行修改。
对象存储服务节点在接收到数据写入请求后,可以根据数据写入请求中携带的桶名、目标对象的名称确定桶中的目标对象,根据数据写入请求中携带待修改数据在目标对象的偏移量、待修改数据的数据长度将待修改数据修改为修改数据。
举例而言,远程连接网关204可以通过虚拟私有网络(Virtual Private Network,VPN)或专线网络实现,对象存储服务节点可通过设置有多个物理磁盘的服务器实现。
下面具体到对象存储服务节点,以对象存储服务节点201为例,对对象存储服务节点的结构进行说明,参见图3,对象存储服务节点201包括软件层和硬件层,硬件层包括磁盘控制器2015、物理网卡2016,物理磁盘1和物理磁盘2(这里仅是以对象存储服务节点201包括两个物理磁盘为例进行说,本申请实施例中并不限定对象存储服务节点中物理磁盘的数量)。软件层包括对象存储设备控制单元2011和操作系统2012,控制单元2011运行在操作系统2012上,操作系统2012中包括磁盘驱动2013和物理网卡驱动2014,云平台10可通过物理网卡2016与控制单元2011进行通信,控制单元2011通过磁盘驱动2013控制磁盘控制器2015将物理磁盘1和物理磁盘2设置为多个PLOG。云平台10在接收到桶1的创建指令之后,通知控制单元2011创建桶1,控制单元2011通过操作系统,在硬件层中的物理磁盘1和物理磁盘2上创建桶1,桶1的PLOG分布在物理磁盘1和物理磁盘2中,并保存桶1的桶名、桶域名等信息。
当租户通过对象存储客户端20需要向桶1中上传对象时,租户可以通过对象存储客户端20触发对象存储服务节点201将对象写入到桶中。例如,可以由对象存储服务节点201中的控制单元2011将对象写入到桶中。当租户通过对象存储客户端20需要下载桶1中的对象时,租户可以通过对象存储客户端20触发对象存储服务节点201从桶中读取对象,例如,可以由对象存储服务节点201中的控制单元2011从桶中获取对象,反馈给对象存储客户端20。
在本申请实施例中,当租户通过对象存储客户端20需要对桶1中对象进行修改时,控制单元2011接收数据写入请求,可以根据数据写入请求确定目标对象中待修改数据,将待修改数据修改为修改数据。
上述描述以对象存储服务节点为粒度为进行说明。从功能角度,对象存储服务节点内部的交互可以理解为功能层之间的交互。
如图4所示,对象存储服务节点从功能进行划分,可以分为持久化层(persistencelayer)、元数据索引层(index layer)、以及业务层(service layer)。对于这些层中的每一层可以部署在不同对象存储服务节点上。
持久化层,用于存储对象中的数据(data),在持久化层中,存储数据的存储空间可以划分为多个基本存储单元,每个基本存储单元可以为PLOG,该多个基本存储单元可以部署在不同的对象存储服务节点上。在本申请实施例中,一个PLOG支持数据存储、数据删除以及数据修改。
元数据索引层,用于存储和管理对象的元数据,该元数据索引层也可以分布在不同的对象存储服务节点上。
业务层,用于处理计算节点发送的请求(如数据写入请求),如图5所示,业务层能够根据接收到的、来自对象存储客户端20的数据写入请求对持久化层中的数据进行处理,例如写入数据、或修改数据,对元数据索引层中存储的元数据进行处理,如记录元数据。
通常,租户在需要对对象中的数据进行修改时,需要从对象存储服务节点中将该对象中的数据下载到对象存储客户端,之后在本地修改该对象中的数据。在修改之后,将修改后的对象上传至对象存储服务节点。当对象较大时,对象的下载以及上传将耗费较长的时间,导致数据修改效率降低,数据修改方式也较不灵活。
而在本申请实施例中,租户可以通过对象存储客户端向对象存储服务节点发送数据写入请求,指示对象存储服务节点对对象中的数据进行修改,由对象存储服务节点对对象进行修改,租户不再需要将整个对象下载到本地、在本地修改后重新上传,能够较大程度的减少对象存储客户端与对象存储服务节点之间的数据交互,能够有效提升数据修改效率。
下面结合附图对本申请实施例提供对象存储服务的数据修改方法进行说明,以对象存储客户端20与对象存储服务节点201之间交互为例,参见图6,该方法包括:
步骤201:租户可以触发应用程序22向对象存储客户端20发送数据修改请求。
租户可以在应用程序22上输入目标对象所在的数据桶的桶域名、目标对象的名称、待修改数据在目标对象的偏移量、待修改数据的数据长度、以及修改数据。
这里需要说明的是,租户对已存储对象中的数据进行修改的方式有很多。例如租户可以修改该目标对象数据中的部分或全部数据,又例如,租户可以在该目标对象的数据的基础上增加新的数据,也即为数据追加。
应用程序22在检测到租户在的操作后,可以确定租户输入的目标对象所在的数据桶的桶域名、目标对象的名称、待修改数据在目标对象的偏移量、待修改数据的数据长度、以及修改数据,可以将目标对象所在的数据桶的桶域名、目标对象的名称、待修改数据在目标对象的偏移量、待修改数据的数据长度、以及修改数据携带在数据修改请求中,向对象存储客户端20发送该数据修改请求。
可选的,数据修改请求中还可以携带时间信息,该时间信息可以指示数据修改请求的触发时间,也即发送该数据修改请求的时间。
在本申请实施例中并不限定该应用程序22的类型,例如该应用程序22可以为浏览器、或浏览器上的插件,也可以为其他应用软件。
步骤202:对象存储客户端20在接收到数据修改请求后,向对象存储服务节点201发送数据写入请求。在本申请实施例中对象存储客户端20与对象存储服务节点201之间可以通过调用对象修改接口进行信息交互。
该对象修改接口定义了在需要对对象中的数据进行修改时,对象存储客户端20与对象存储服务节点201之间进行信息交互的信息格式。该对象修改接口定义了数据写入请求中需要携带的参数。
该参数包括下列的部分或全部:
操作参数,如当该操作参数为modify时,指示需要对对象中的数据进行修改,可以根据数据修改请求确定。
对象的名称,该参数用于指示目标对象,可以根据数据修改请求中携带所述目标对象的名称确定。
偏移量(position),该参数用于指示待修改数据在目标对象的偏移量,可以根据数据修改请求中携带的待修改数据在所述目标对象的偏移量确定。
桶域名(host),该参数用于指示目标对象所在桶的桶域名,可以根据数据修改请求中携带的数据桶的桶域名确定。
数据长度(content length),该参数用于待修改数据的数据长度,可以根据数据修改请求中携带的待修改数据的数据长度确定。
日期(Date),该参数用于指示当前时间,也即发送数据写入请求的时间,该参数可以是对象存储客户端20自行配置,也可以根据数据修改请求中携带的时间信息确定。
数据内容(content),该参数用于指示修改数据,可以根据数据修改请求中携带的修改数据确定。
鉴权信息(authorization),该鉴权信息用于指示对象存储客户端20访问对象存储服务节点201的权限,对象存储服务节点201可以根据该鉴权信息确定对象存储客户端20是否具备权限。对象存储服务节点201只有在确定对象存储客户端20具备权限时,才会对目标对象进行修改。本申请实施例并不限定该鉴权信息的类型,例如该鉴权信息可以为证书、账户名、密码、认证令牌等。该鉴权信息可以是对象存储客户端20预先从对象存储服务节点201获取、并保存在本地的,当需要向对象存储服务节点201发送数据写入请求时,对象存储客户端20可以从本地获取该鉴权信息,携带在数据写入请求中。对象存储客户端20也可以通过其他方式获取该鉴权信息,这里仅是以对象存储客户端20从对象存储服务节点201获取鉴权信息为例进行说明。
上述参数仅是举例,在实际应用中还可以包括其他参数。
步骤203:对象存储服务节点201接收该数据写入请求,根据该数据写入请求对目标对象进行修改。
对象存储服务节点201在接收到数据写入请求后,可以根据数据写入请求中桶域名确认桶,根据数据写入请求中携带对象的名称确定目标对象。
若是对目标对象中的部分数据或全部数据进行修改,对象存储服务节点201可以通过如下两种方式对目标对象进行修改。
方式一、更新目标对象中的数据。
对象存储服务节点201在确定了目标对象后,对象存储服务节点201可以将该目标对象中待修改数据修改更新为修改数据。
具体的,对象存储服务节点201可以根据待修改数据在目标对象的偏移量、待修改数据的数据长度确定目标对象中的待修改数据,将该待修改数据修改为修改数据。
对象存储服务节点201还可以记录用于描述修改数据的数据布局的元数据(为方便说明,将描述修改数据的数据布局的元数据称为目标元数据),该目标元数据可以指示目标对象的修改时间、待修改数据在目标对象的偏移量、待修改数据的数据长度、修改数据的存储位置(如指示修改数据所在的PLOG、在PLOG中的长度、以及偏移量)等信息。其中,目标对象的修改时间可以是数据写入请求中携带的date确定的,也可以是对象存储服务节点201根据更新目标对象中的数据时的时间确定的。
在这种方式中,目标对象中的数据大小始终不变,修改前后数据的存储位置也不变,也即该目标对象中的数据所在的PLOG始终不变。
方式二、在目标对象中增加该修改数据。
对象存储服务节点201在确定了目标对象后,对象存储服务节点201可以在该目标对象中增加该修改数据,也即可以在PLOG中存储该修改数据,并记录用于描述修改数据的数据布局的元数据(为方便说明,将描述修改数据的数据布局的元数据称为目标元数据),这里的目标元数据可以指示修改数据的存储位置,如可以通过PLOG的标识、在PLOG中的长度、以及偏移量指示。元数据还可以指示修改时间、修改数据在目标对象中的位置。该修改数据在目标对象中的位置可以通过待修改数据在目标对象的偏移量、待修改数据的数据长度指示。其中,目标对象的修改时间可以是数据写入请求中携带的date确定的,也可以是对象存储服务节点201根据存储修改数据时的时间确定的。
在这种方式中,对象中的数据会随着修改次数的增加变大,不同修改数据可能存储在不同的PLOG中,故而需要在目标对象的元数据中记录目标元数据。
需要说明的是,若租户对目标对象中数据的修改方式为在目标对象中的原有数据的基础上增加新的数据,对象存储服务节点201可以通过方式二对目标对象中的数据进行修改,并记录目标元数据。这种情况下,该目标元数据可以记录修改数据的存储位置,以及修改数据在目标对象中的位置,如可以通过修改数据在目标对象的偏移量、以及修改数据的数据长度来指示修改数据在目标对象中的位置。这种情况下,该修改数据在目标对象中的偏移量可以等于目标对象中原始数据的数据长度,其中,原始数据是在存储该修改数据之前,目标对象中的数据。
在方式一和方式二中均涉及到目标元数据的记录,对象存储服务节点201记录目标元数据的方式有许多,下面列举其中两种。
一、对象存储服务节点201可以读取目标对象的元数据,在目标对象的元数据中增加目标元数据之后,再保存增加了目标元数据的该目标对象的元数据。
对象存储服务节点201可以将该目标对象的元数据全部都读出,在目标对象的元数据中增加目标元数据,例如增加目标对象的修改时间、待修改数据在目标对象的偏移量、待修改数据的数据长度、修改数据的存储位置等信息。之后再保存增加了目标元数据的该目标对象的元数据。
这种记录目标元数据的方式更加简单。适用于对目标对象修改次数少,或目标对象的元数据本身的数据量较小的场景。
二、对象存储服务节点201可以读取目标对象的部分元数据,在该部分元数据中增加目标元数据之后,再保存增加了目标元数据的该部分元数据。
对象存储服务节点201可以将目标对象的元数据切分为多个更小的次级元数据,每个次级元数据用于描述该目标对象中一个范围内的数据的数据布局(该数据布局包括该范围内的数据的存储位置、修改时间等信息),也即该次级元数据为该范围内数据的元数据。不同次级元数据对应的范围不同。每个次级元数据可以独立存储。
如图7所示,以目标对象中数据的大小为N*32兆比特(MB)为例,存储对象可以将目标对象的元数据切分为N的次级元数据,每个次级元数据用于描述32MB,如次级元数据0用于描述该数据中0~32MB的数据的数据布局,次级元数据1用于描述该数据中32~64MB的数据的数据布局,次级元数据2用于描述该数据中64~96MB的数据的数据布局,次级元数据3用于描述该数据中96~128MB的数据的数据布局,次级元数据N-1用于描述该数据中(N-1)*32MB~N*32MB的数据的数据布局。
当对象存储服务节点201需要记录目标元数据时,根据待修改数据在目标对象的偏移量、待修改数据的数据长度确定待修改数据在目标对象中所属的范围,根据该范围从所述多个次级元数据中确定与该范围对应的次级元数据,与该范围对应次级元数据即为目标次级元数据;在该目标次级元数据中增加目标元数据,并保存增加了目标元数据的次级元数据。
例如,待修改数据在所述目标对象的偏移量、待修改数据的数据长度指示需要修改目标对象中数据0~2MB的数据,对象存储服务节点201可以获取该目标对象的次级元数据0。又例如,待修改数据在所述目标对象的偏移量、待修改数据的数据长度指示需要修改目标对象中数据2~40MB的数据,对象存储服务节点201可以获取该目标对象的次级元数据0以及次级元数据1。
对象存储服务节点201在获取了次级元数据后,可以在次级元数据中增加目标元数据。例如,待修改数据在所述目标对象的偏移量、待修改数据的数据长度指示需要修改目标对象中数据0~2MB的数据,对象存储服务节点201可以在次级元数据0上增加描述数据修改后目标对象中0~2MB数据的数据布局的目标元数据。又例如,待修改数据在所述目标对象的偏移量、待修改数据的数据长度指示需要修改目标对象中数据2~40MB的数据,对象存储服务节点201可以在次级元数据0中增加描述数据修改后目标对象中2~32MB数据的数据布局的目标元数据,在次级元数据1增加描述数据修改后目标对象中32~40MB数据的数据布局的目标元数据。
在对次级元数据进行更新之后,对象存储服务节点201可以保存增加了目标元数据的次级元数据。
这种记录元数据的方式中,对象存储服务节点201只需读取数据量较小的次级元数据,能够大大减少对象存储服务节点201每次读取的元数据的大小,使得元数据的记录更加高效,适用于对目标对象修改次数较多,或目标对象的元数据本身的数据量较大的场景。
步骤204:对象存储服务节点201在对目标对象修改完成后,向对象存储客户端20发送数据修改成功响应。
本申请实施例中并不限定计算节点对目标对象的修改次数,租户可以通过对象存储客户端20多次触发对象存储客户端20向对象存储服务节点201发送数据写入请求,以使得对象存储服务节点201多次对目标对象中的数据进行修改。在对目标对象进行修改之后,租户还可以通过对象存储客户端20从对象存储服务节点201读取数据修改后目标对象中的数据。下面对计算节点从对象存储服务节点201读取数据修改后目标对象中的数据进行说明。参见步骤205~207。
步骤205:对象存储客户端20向对象存储服务节点201发送数据读取请求。该数据读取请求中包括目标对象的名称和目标对象所在的桶的桶域名。若租户可以只读取目标对象中的部分数据,该数据读取请求中还可以携带读取范围,可以通过数据在目标对象中的偏移量以及数据长度指示读取范围。
步骤206:对象存储服务节点201在接收该数据读取请求后,可以根据桶域名定位到桶,可以根据目标对象的名称和桶的标识确定目标对象,根据目标对象的元数据获取该目标对象中的数据。
对应于对象存储服务节点201修改目标对象中数据的两种方式,对象存储服务节点201可以通过如下两种方式获得目标对象中数据。
对应于步骤203中的方式一。
若数据读取请求中不包括读取范围,也即租户需要读取目标对象中的所有数据。对象存储服务节点201在确定了目标对象后,可以获取该目标对象的元数据(该目标对象的元数据为增加了目标元数据的目标对象的元数据),进而根据该目标对象的元数据确定目标对象中的数据的存储位置,对象存储服务节点201可以从该存储位置读取目标对象中的数据。
若数据读取请求中还包括读取范围,也即租户需要读取目标对象中的部分数据。对象存储服务节点201可以根据该元数据和读取范围确定目标对象中读取范围内的数据的存储位置,从该存储位置读取目标对象中读取范围内的数据。
对应于步骤203中的方式二。
若数据读取请求中不包括读取范围,也即租户需要读取目标对象中的所有数据,对象存储服务节点201在确定了目标对象后,可以获取该目标对象的元数据(该目标对象的元数据为增加了目标元数据的目标对象的元数据),之后,对象存储服务节点201可以根据目标对象的元数据确定目标对象中数据是否修改、目标对象中的数据的修改时间,以及该目标对象中的数据的存储位置,如确定该数据中存在修改的部分数据,以及该数据中未修改的部分数据。对于该数据中未修改的部分数据,对象存储服务节点201可以根据该目标对象的元数据确定该部分数据的存储位置,对于该数据中存在修改的部分数据,对象存储服务节点201可以根据该目标对象的元数据确定最近一次修改时修改数据的存储位置。
对于该数据中未修改的部分,对象存储服务节点201可以根据该部分数据的存储位置读取该部分数据。对于该数据中存在修改的部分,对象存储服务节点201可以根据最近一次修改时修改数据的存储位置读取该修改数据。该部分数据以及修改数据即为该目标对象中的数据。
举例来说,对于目标对象存在两次修改,第一次修改了目标对象中的偏移量为0,数据长度为2MB的数据,也即修改了0~2MB的数据,此次修改的修改数据1存储在PLOG1中,修改数据1的长度为2MB。第二次修改了目标对象中偏移量为1、数据长度为5MB的数据,也即修改了1~6MB的数据,此次修改的修改数据2存储在PLOG2,修改数据2的长度为5MB。
假设需要读取该目标对象中0~10MB的数据,对象存储服务节点201在读取目标对象中的数据时,可以根据目标对象的元数据确定目标对象中6MB~10MB的数据为未修改的数据,可以直接读取该部分数据。根据目标对象的元数据确定目标对象中1MB~6MB的数据为存在修改的数据,对于0~1MB的数据,最近一次修改的修改数据为PLOG1中0~1MB的数据,对象存储服务节点201从PLOG1中读取0~1MB的数据。对于1~6MB的数据,最近一次修改的修改数据为PLOG2中0~5MB的数据,对象存储服务节点201从PLOG2中读取PLOG2中5MB的数据。对象存储服务节点201读取的数据即为最近一次修改后目标对象中的数据。
若数据读取请求中还包括读取范围,也即租户需要读取目标对象中的部分数据,对象存储服务节点201可以根据该元数据和读取范围确定目标对象中读取范围内的数据是否修改、数据的修改时间,以及数据的存储位置,对于该读取范围内的数据中未修改的部分数据,对象存储服务节点201可以根据该目标对象的元数据确定该部分数据的存储位置,从该存储位置处读取该部分数据。对于该读取范围内的数据中存在修改的部分数据,对象存储服务节点201可以根据该目标对象的元数据确定最近一次修改时修改数据的存储位置,读取从该存储位置该部分数据。
步骤207:对象存储服务节点201将目标对象中的数据携带在数据读取成功响应中,向对象存储客户端20发送数据读取成功响应。
通过上述方式,当租户需要读取目标对象中的数据时,可以通过对象存储客户端20向对象存储服务节点201发送数据读取请求,对象存储服务节点201能够根据目标对象的元数据确定经过最近一次修改后该目标对象中的数据,并向对象存储客户端20反馈经过最近一次修改后该目标对象中的数据,能够提高数据读取的准确性。
基于与方法实施例同一发明构思,本申请实施例还提供了一种对象存储服务节点,用于执行上述如图6所示的方法实施例中对象存储服务节点201执行的方法,相关特征可参见上述方法实施例,此处不再赘述。如图8所示,为本申请实施例提供的一种对象存储服务节点,对象存储服务节点800包括接收模块801、处理模块802,可选的,还包括发送模块803;
接收模块801,用于接收对象存储客户端发送的数据写入请求,数据写入请求用于请求对对象存储服务节点中存储的目标对象中的待修改数据进行修改,数据写入请求包括目标对象所在的数据桶的桶域名、目标对象的名称、待修改数据在目标对象的偏移量、待修改数据的数据长度、以及修改数据。接收模块801可以执行如图6所示的实施例中步骤202中对象存储服务节点201执行的方法。
处理模块802,用于根据桶域名确认数据桶,根据目标对象的名称确认数据桶中的目标对象,将目标对象中偏移量和数据长度对应的待修改数据修改为修改数据。处理模块802可以执行如图6所示的实施例中的步骤203。
作为一种可能的实施方式,处理模块802在将目标对象中偏移量和数据长度对应的待修改数据修改为修改数据时,可以在持久存储单元存储修改数据;还可以记录元数据,元数据用于指示修改数据的数据布局,数据布局包括修改数据的存储位置。修改数据的存储位置可以通过持久存储单元的标识、修改数据在持久存储单元的偏移量以及修改数据在持久存储单元的长度指示。数据布局还可以包括修改数据在目标对象中的位置,如可以通过待修改数据在目标对象中的偏移量以及待修改数据的数据长度指示。
作为一种可能的实施方式,目标对象的元数据包括多个次级元数据,一个次级元数据为目标对象中一个范围内数据的元数据,不同次级元数据对应的范围不同。
作为一种可能的实施方式,处理模块802在记录元数据时,可以先根据待修改数据在目标对象的偏移量、待修改数据的数据长度确定待修改数据在目标对象中所属的范围,根据范围从多个次级元数据中确定目标次级元数据;之后在目标次级元数据中增加元数据。
作为一种可能的实施方式,数据写入请求还包括时间信息,时间信息用于指示发送数据写入请求的时间。
作为一种可能的实施方式,数据写入请求还包括鉴权信息,鉴权信息用于指示对象存储客户端访问对象存储服务节点的权限。
作为一种可能的实施方式,发送模块803在处理模块802将目标对象中偏移量和数据长度对应的待修改数据修改为修改数据之后,向对象存储客户端发送数据修改成功响应。发送模块803可以用于执行如图6所示的实施例中步骤204中对象存储服务节点201执行的方法。
基于与方法实施例同一发明构思,本申请实施例还提供了一种对象存储客户端,用于执行上述如图6所示的方法实施例中对象存储客户端20执行的方法,相关特征可参见上述方法实施例,此处不再赘述。如图9所示,为本申请实施例提供的一种对象存储客户端,对象存储客户端包括接收模块901、发送模块902。
接收模块901,用于接收应用程序22发送的针对目标对象的数据修改请求。接收模块901可以执行如图6所示的实施例中步骤201中对象存储客户端20执行的方法。
发送模块902,用于根据数据修改请求向对象存储服务节点发送数据写入请求,数据写入请求用于请求对对象存储服务节点中存储的目标对象中的待修改数据进行修改,数据写入请求包括目标对象所在的数据桶的桶域名、目标对象的名称、待修改数据在目标对象的偏移量、待修改数据的数据长度、以及修改数据。发送模块902可以根据该数据修改请求生成数据写入请求,如将数据修改请求中的信息携带在数据写入请求中;并向对象存储服务节点发送数据写入请求。发送模块902可以执行如图6所示的实施例中步骤202中对象存储客户端20执行的方法。
作为一种可能的实施方式,数据写入请求还包括时间信息,时间信息用于发送数据写入请求的时间。
作为一种可能的实施方式,数据写入请求还包括鉴权信息,鉴权信息用于指示对象存储客户端访问对象存储服务节点的权限。
作为一种可能的实施方式,接收模块901还可以接收数据修改成功响应。
需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本申请的实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state drive,SSD)。
在一个简单的实施例中,本领域的技术人员可以想到如图6所示的实施例中对象存储服务节点201和对象存储客户端20可采用图10所示的形式。
如图10所示的计算设备1000,包括至少一个处理器1001、存储器1002,可选的,还可以包括通信接口1003。
存储器1002可以是易失性存储器,例如随机存取存储器;存储器也可以是非易失性存储器,例如只读存储器,快闪存储器,硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD)、物理磁盘或者存储器1002是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器1002可以是上述存储器的组合。
本申请实施例中不限定上述处理器1001以及存储器1002之间的具体连接介质。
处理器1001可以为中央处理器(central processing unit,CPU),该处理器1001还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circui。ASIC)、现场可编程门阵列(fieldprogrammable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件、人工智能芯片、片上芯片等。通用处理器可以是微处理器或者是任何常规的处理器等。处理器1001在与其他设备进行通信时,可以通过通信接口1003进行数据传输,如从接收第一检测指令或第二检测指令。
当所述对象存储服务节点采用图10所示的形式时,图10中的处理器1001可以通过调用存储器1002中存储的计算机执行指令,使得所述计算设备可以执行上述任一方法实施例中的所述对象存储服务节点201执行的方法。
具体的,图8的接收模块、发送模块、以及处理模块的功能/实现过程均可以通过图10中的处理器1001调用存储器1002中存储的计算机执行指令来实现。或者,图8中的处理模块的功能/实现过程可以通过图10中的处理器1001调用存储器1002中存储的计算机执行指令来实现,图8的接收模块以及发送模块的功能/实现过程可以通过图10中的通信接口1003来实现。
当所述对象存储客户端采用图10所示的形式时,图10中的处理器1001可以通过调用存储器1002中存储的计算机执行指令,使得所述计算设备可以执行上述任一方法实施例中的所述对象存储客户端20执行的方法。
具体的,图9的接收模块、发送模块的功能/实现过程均可以通过图10中的处理器1001调用存储器1002中存储的计算机执行指令来实现。或者,图9中的发送模块中生成数据写入请求的功能/实现过程可以通过图10中的处理器1001调用存储器1002中存储的计算机执行指令来实现,图9的接收模块以及发送模块中发送数据写入请求的功能/实现过程可以通过图10中的通信接口1003来实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (24)
1.一种对象存储服务的数据修改方法,其特征在于,所述方法应用于对象存储服务节点,所述方法包括:
接收对象存储客户端发送的数据写入请求,所述数据写入请求用于请求对所述对象存储服务节点中存储的目标对象中的待修改数据进行修改,所述数据写入请求包括所述目标对象所在的数据桶的桶域名、所述目标对象的名称、所述待修改数据在所述目标对象的偏移量、所述待修改数据的数据长度、以及修改数据;
根据所述桶域名确认所述数据桶,根据所述目标对象的名称确认所述数据桶中的所述目标对象,将所述目标对象中所述偏移量和所述数据长度对应的所述待修改数据修改为所述修改数据。
2.如权利要求1所述的方法,其特征在于,所述将所述目标对象中所述偏移量和所述数据长度对应的所述待修改数据修改为所述修改数据,包括:
在持久存储单元存储所述修改数据;
记录元数据,所述元数据用于指示所述修改数据的数据布局,所述数据布局包括所述持久存储单元的标识、所述修改数据在所述持久存储单元的偏移量以及所述修改数据在所述持久存储单元的长度。
3.如权利要求1或2所述的方法,其特征在于,所述目标对象的元数据包括多个次级元数据,一个次级元数据为所述目标对象中一个范围内数据的元数据,不同所述次级元数据对应的所述范围不同。
4.如权利要求3所述的方法,其特征在于,所述记录元数据,包括:
根据所述待修改数据在所述目标对象的偏移量和所述待修改数据的数据长度确定所述待修改数据在所述目标对象中所属的范围,根据所述范围从所述多个次级元数据中确定目标次级元数据;
在所述目标次级元数据中增加所述元数据。
5.如权利要求1至4任一所述的方法,其特征在于,所述数据写入请求还包括时间信息,所述时间信息用于指示发送所述数据写入请求的时间。
6.如权利要求1至5任一所述的方法,其特征在于,所述数据写入请求还包括鉴权信息,所述鉴权信息用于指示所述对象存储客户端访问所述对象存储服务节点的权限。
7.如权利要求1至6任一所述的方法,其特征在于,所述将所述目标对象中所述偏移量和所述数据长度对应的所述待修改数据修改为所述修改数据之后,还包括:
向所述对象存储客户端发送数据修改成功响应。
8.一种数据修改方法,其特征在于,所述方法应用于对象存储客户端,所述方法包括:
接收应用程序发送的针对目标对象的数据修改请求;
根据所述数据修改请求向对象存储服务节点发送数据写入请求,所述数据写入请求用于请求对所述对象存储服务节点中存储的所述目标对象中的待修改数据进行修改,所述数据写入请求包括所述目标对象所在的数据桶的桶域名、所述目标对象的名称、所述待修改数据在所述目标对象的偏移量、所述待修改数据的数据长度、以及修改数据。
9.如权利要求8所述的方法,其特征在于,所述数据写入请求还包括时间信息,所述时间信息用于指示发送所述数据写入请求的时间。
10.如权利要求8或9所述的方法,其特征在于,所述数据写入请求还包括鉴权信息,所述鉴权信息用于指示所述对象存储客户端访问所述对象存储服务节点的权限。
11.一种对象存储服务节点,其特征在于,所述对象存储服务节点包括接收模块、处理模块;
所述接收模块,用于接收对象存储客户端发送的数据写入请求,所述数据写入请求用于请求对所述对象存储服务节点中存储的目标对象中的待修改数据进行修改,所述数据写入请求包括所述目标对象所在的数据桶的桶域名、所述目标对象的名称、所述待修改数据在所述目标对象的偏移量、所述待修改数据的数据长度、以及修改数据;
所述处理模块,用于根据所述桶域名确认所述数据桶,根据所述目标对象的名称确认所述数据桶中的所述目标对象,将所述目标对象中所述偏移量和所述数据长度对应的所述待修改数据修改为所述修改数据。
12.如权利要求11所述的对象存储服务节点,其特征在于,所述处理模块在将所述目标对象中所述偏移量和所述数据长度对应的所述待修改数据修改为所述修改数据时,具体用于:
在持久存储单元存储所述修改数据;
记录元数据,所述元数据用于指示所述修改数据的数据布局,所述数据布局包括所述持久存储单元的标识、所述修改数据在所述持久存储单元的偏移量以及所述修改数据在所述持久存储单元的长度。
13.如权利要求11或12所述的对象存储服务节点,其特征在于,所述目标对象的元数据包括多个次级元数据,一个次级元数据为所述目标对象中一个范围内数据的元数据,不同所述次级元数据对应的所述范围不同。
14.如权利要求13所述的对象存储服务节点,其特征在于,所述处理模块在记录元数据时,具体用于:
根据所述待修改数据在所述目标对象的偏移量和所述待修改数据的数据长度确定所述待修改数据在所述目标对象中所属的范围,根据所述范围从所述多个次级元数据中确定目标次级元数据;
在所述目标次级元数据中增加所述元数据。
15.如权利要求11至14任一所述的对象存储服务节点,其特征在于,所述数据写入请求还包括时间信息,所述时间信息用于指示发送所述数据写入请求的时间。
16.如权利要求11至15任一所述的对象存储服务节点,其特征在于,所述数据写入请求还包括鉴权信息,所述鉴权信息用于指示所述对象存储客户端访问所述对象存储服务节点的权限。
17.如权利要求11至16任一所述的对象存储服务节点,其特征在于,所述对象存储服务节点还包括发送模块,所述发送模块在所述处理模块将所述目标对象中所述偏移量和所述数据长度对应的所述待修改数据修改为所述修改数据之后,用于:
向所述对象存储客户端发送数据修改成功响应。
18.一种对象存储客户端,其特征在于,所述对象存储客户端包括接收模块、发送模块:
所述接收模块,用于接收应用程序发送的针对目标对象的数据修改请求;
所述发送模块,用于根据所述数据修改请求向对象存储服务节点发送数据写入请求,所述数据写入请求用于请求对所述对象存储服务节点中存储的所述目标对象中的待修改数据进行修改,所述数据写入请求包括所述目标对象所在的数据桶的桶域名、所述目标对象的名称、所述待修改数据在所述目标对象的偏移量、所述待修改数据的数据长度、以及修改数据。
19.如权利要求18所述的对象存储客户端,其特征在于,所述数据写入请求还包括时间信息,所述时间信息用于指示发送所述数据写入请求的时间。
20.如权利要求18或19所述的对象存储客户端,其特征在于,所述数据写入请求还包括鉴权信息,所述鉴权信息用于指示所述对象存储客户端访问对象存储服务节点的权限。
21.一种计算机设备,其特征在于,所述计算机设备包括:处理器和存储器;
所述存储器用于存储计算机执行指令;
所述处理器用于执行所述存储器所存储的计算机执行指令,以使所述计算机设备实现如所述权利要求1至7任一项所述的方法。
22.一种计算机设备,其特征在于,所述计算机设备包括:处理器和存储器;
所述存储器用于存储计算机执行指令;
所述处理器用于执行所述存储器所存储的计算机执行指令,以使所述计算机设备实现如所述权利要求8至10任一项所述的方法。
23.一种计算机存储介质,其特征在于,包括计算机可读指令,当所述计算机可读指令被执行时,实现如权利要求1至7任一项所述的方法或8至10任一项所述的方法。
24.一种包含指令的计算机程序产品,其特征在于,当其在计算机上运行时,使得计算机执行如权利要求1至7任一项所述的方法或8至10任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2021/122147 WO2022073458A1 (zh) | 2020-10-10 | 2021-09-30 | 对象存储服务的数据修改方法、服务节点、客户端及设备 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011079971 | 2020-10-10 | ||
CN2020110799711 | 2020-10-10 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114327249A true CN114327249A (zh) | 2022-04-12 |
Family
ID=81044387
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110131551.1A Pending CN114327249A (zh) | 2020-10-10 | 2021-01-30 | 对象存储服务的数据修改方法、服务节点、客户端及设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114327249A (zh) |
WO (1) | WO2022073458A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115587390A (zh) * | 2022-12-12 | 2023-01-10 | 杭州优云科技有限公司 | 一种公有云对象存储的实现方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8949789B2 (en) * | 2012-08-13 | 2015-02-03 | Sap Se | Adaptable business objects |
CN103731489B (zh) * | 2013-12-27 | 2017-12-15 | 华为技术有限公司 | 一种数据存储方法、系统和设备 |
US11334540B2 (en) * | 2015-09-25 | 2022-05-17 | Netapp, Inc. | Namespace hierarchy preservation with multiple object storage objects |
CN106210039A (zh) * | 2016-07-08 | 2016-12-07 | 乐视控股(北京)有限公司 | 对象管理方法、客户端和云服务端 |
CN109587185B (zh) * | 2017-09-28 | 2020-11-03 | 华为技术有限公司 | 云存储系统和云存储系统中的对象处理方法 |
CN108089818B (zh) * | 2017-12-12 | 2021-09-07 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置及存储介质 |
CN110531933B (zh) * | 2019-08-23 | 2022-06-17 | 北京浪潮数据技术有限公司 | 数据处理方法及服务器 |
-
2021
- 2021-01-30 CN CN202110131551.1A patent/CN114327249A/zh active Pending
- 2021-09-30 WO PCT/CN2021/122147 patent/WO2022073458A1/zh active Application Filing
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115587390A (zh) * | 2022-12-12 | 2023-01-10 | 杭州优云科技有限公司 | 一种公有云对象存储的实现方法 |
CN115587390B (zh) * | 2022-12-12 | 2023-03-10 | 杭州优云科技有限公司 | 一种公有云对象存储的实现方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2022073458A1 (zh) | 2022-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108111585B (zh) | 基于区块链的分布式存储方法 | |
JP6621543B2 (ja) | ハイブリッドアプリケーションの自動更新 | |
EP3235213B1 (en) | No password user account access | |
JP6276388B2 (ja) | 共有コンテンツのアクセス許可 | |
US8620879B2 (en) | Cloud based file storage service | |
EP2871817B1 (en) | Combined cloud storage disk client, server and system, and combined cloud storage disk service serving method | |
US8656454B2 (en) | Data store including a file location attribute | |
JP5976258B1 (ja) | ライトインストーラ | |
KR100589541B1 (ko) | 접근이 통제되는 가상디스크들 간의 온라인을 통한데이터의 보안전송시스템과 이를 통한 보안전송방법 | |
JP6161827B2 (ja) | クライアントアプリケーションがコンテンツ管理システム上のユーザアカウントにアクセスすることの予備認証 | |
CN103797484B (zh) | 与远程网络存储系统连接的本地网络存储 | |
WO2018090256A1 (zh) | 一种目录删除方法、装置和存储服务器 | |
WO2018111770A1 (en) | Systems and methods for list retrieval in a storage device | |
EP3803671A1 (en) | Tracking provenance of digital data | |
US11063922B2 (en) | Virtual content repository | |
CN105824932A (zh) | 一种基于阿里云对象存储oss的档案系统 | |
CN114629921A (zh) | 云平台及其提供的对象存储服务的桶管理方法 | |
WO2014180427A1 (zh) | 应用程序管理方法及装置 | |
KR101666064B1 (ko) | 분산 파일 시스템에서 url정보를 이용한 데이터 관리 장치 및 그 방법 | |
WO2022073458A1 (zh) | 对象存储服务的数据修改方法、服务节点、客户端及设备 | |
JP2015088122A (ja) | 情報管理装置及びプログラム | |
US11509719B2 (en) | Blockchain technology in data storage system | |
CN110008186A (zh) | 针对多ftp数据源的文件管理方法、装置、终端和介质 | |
CN111506549B (zh) | 基于区块链的文件处理系统、方法、设备及存储介质 | |
CN113806668A (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 |