掌桥专利:专业的专利平台
掌桥专利
首页

云存储方法及系统

文献发布时间:2024-04-18 19:58:21


云存储方法及系统

技术领域

本申请涉及终端设备领域,尤其涉及一种云存储方法及系统。

背景技术

云存储是当前终端设备的一项重要应用。目前,终端(也可称为电子设备)直接与云存储服务器的云存储服务器进行交互来进行云存储。即终端直接向云存储服务器上存储数据,或者直接从存储服务器读取数据。

这种技术中,个人在多个不同云存储服务器的存储是分别独立的,需要手动划分不同数据保存在不同的云存储服务器存储空间中。

发明内容

为了解决上述技术问题,本申请提供一种云存储方法及系统,能够实现用户在多个云存储设备中的数据共享,用户不需要手动为每种数据划分存储空间,提升了用户的存储体验。

第一方面,本申请提供一种云存储方法。该方法应用于云存储控制服务器,该方法包括:接收第一终端发送的针对第一数据的第一写请求,第一数据为结构化数据,第一数据属于第一用户;将第一写请求转换为对文件存储的第一文件写请求,第一文件写请求中包括待写入第一数据的第一存储文件信息,第一存储文件是文件系统中第一用户对应的文件;读取第一存储文件对应的第一元数据和第一用户对应的第一存储配置信息;根据第一元数据和第一存储配置信息,获取第一写地址和访问第一写地址的第一授权信息,第一写地址属于第一存储文件在第一远程存储设备中对应的第一存储空间;根据第一授权信息,将第一数据存储到第一远程存储设备的第一写地址中。这样,能够实现用户在多个云存储设备中的数据共享,用户不需要手动为每种数据划分存储空间,提升了用户的存储体验。

根据第一方面,还包括:接收第一终端发送的针对第二数据的第二写请求,第二数据为非结构化数据,第二数据属于第一用户;确定待写入第二数据的第二存储文件信息,第二存储文件是文件系统中第一用户对应的文件;读取第二存储文件对应的第二元数据和第一用户对应的第一存储配置信息;根据第二元数据和第一存储配置信息,获取第二写地址和访问第二写地址的第二授权信息,第二写地址属于第二存储文件在第二远程存储设备中对应的第二存储空间;根据第二授权信息,将第二数据存储到第二远程存储设备的第二写地址中。

根据第一方面,还包括:接收第一终端发送的针对第三数据的第一读请求,第三数据为结构化数据,第三数据属于第一用户;将第一读请求转换为对文件存储的第一文件读请求,第一文件读请求中包括存储第三数据的第三存储文件信息,第三存储文件是文件系统中第一用户对应的文件;读取第三存储文件对应的第三元数据和第一用户对应的第一存储配置信息;根据第三元数据和第一存储配置信息,获取第一读地址和访问第一读地址的第三授权信息,第一读地址属于第三存储文件在第三远程存储设备中对应的第三存储空间,第一读地址中存储有第三数据;根据第三授权信息,从第三远程存储设备的第一读地址中读取第三数据;将第三数据发送给第一终端。

根据第一方面,还包括:接收第一终端发送的针对第三数据的第一读请求,第三数据为结构化数据,第三数据属于第一用户;将第一读请求转换为对文件存储的第一文件读请求,第一文件读请求中包括存储第三数据的第三存储文件信息,第三存储文件是文件系统中第一用户对应的文件;读取第三存储文件对应的第三元数据和第一用户对应的第一存储配置信息;根据第三元数据和第一存储配置信息,获取第一读地址和访问第一读地址的第三授权信息,第一读地址属于第三存储文件在第三远程存储设备中对应的第三存储空间,第一读地址中存储有第三数据;将第一读地址和第三授权信息发送给第一终端,以使第一终端根据第三授权信息,从第三远程存储设备的第一读地址中读取第三数据。

根据第一方面,还包括:接收第一终端发送的针对第四数据的第二读请求,第四数据为非结构化数据,第四数据属于第一用户;确定存储有第四数据的第四存储文件信息,第四存储文件是文件系统中第一用户对应的文件;读取第四存储文件对应的第四元数据和第一用户对应的第一存储配置信息;根据第四元数据和第一存储配置信息,获取第二读地址和访问第二读地址的第四授权信息,第二读地址属于第四存储文件在第四远程存储设备中对应的第四存储空间,第二读地址中存储有第四数据;根据第四授权信息,从第四远程存储设备的第二读地址中读取第四数据;将第四数据发送给第一终端。

根据第一方面,还包括:接收第一终端发送的针对第四数据的第二读请求,第四数据为非结构化数据,第四数据属于第一用户;确定存储有第四数据的第四存储文件信息,第四存储文件是文件系统中第一用户对应的文件;读取第四存储文件对应的第四元数据和第一用户对应的第一存储配置信息;根据第四元数据和第一存储配置信息,获取第二读地址和访问第二读地址的第四授权信息,第二读地址属于第四存储文件在第四远程存储设备中对应的第四存储空间,第二读地址中存储有第四数据;将第二读地址和第四授权信息发送给第一终端,以使第一终端根据第四授权信息,从第四远程存储设备的第二读地址中读取第四数据。

根据第一方面,还包括:接收第一终端发送的针对第五数据的第三写请求,第五数据为结构化数据,第五数据属于第一用户;将第三写请求转换为对文件存储的第二文件写请求,第二文件写请求中包括待写入第五数据的第五存储文件信息,第五存储文件是文件系统中第一用户对应的文件;如果不存在第五存储文件对应的元数据,读取第一用户对应的第一存储配置信息;根据第一配置信息中的空间使用策略,生成第五存储文件对应的第五元数据并存储;根据第五元数据和第五存储配置信息,获取第三写地址和访问第三写地址的第五授权信息,第三写地址属于第五存储文件在第五远程存储设备中对应的第五存储空间;根据第五授权信息,将第五数据存储到第五远程存储设备的第三写地址中。

根据第一方面,还包括:接收第一终端发送的针对第六数据的第四写请求,第六数据为非结构化数据,第六数据属于第一用户;确定待写入第六数据的第六存储文件信息,第六存储文件是文件系统中第一用户对应的文件;如果不存在第六存储文件对应的元数据,读取第一用户对应的第一存储配置信息;根据第一存储配置信息中的空间使用策略,生成第六存储文件对应的第六元数据并存储;根据第六元数据和第六存储配置信息,获取第四写地址和访问第四写地址的第六授权信息,第四写地址属于第六存储文件在第六远程存储设备中对应的第六存储空间;根据第六授权信息,将第六数据存储到第六远程存储设备的第四写地址中。

根据第一方面,空间使用策略包括如下策略中的任意一种或多种:按照优先级从高到低的顺序进行存储;将属于目标应用的数据存储在第一预设存储设备中;将第二预设存储设备作为镜像使用。

根据第一方面,根据第一元数据和第一存储配置信息,获取第一写地址和访问第一写地址的第一授权信息,包括:根据第一元数据,确定第一存储文件对应的第一远程存储设备;从第一存储配置信息获取访问第一远程存储设备的第一目标授权信息;通过第一插件将第一文件写请求和第一目标授权信息发送给第一远程存储设备;接收第一远程存储设备通过第一插件返回的第一写地址和访问第一写地址的第一授权信息。

根据第一方面,还包括:接收第一终端发送的针对第七数据的第五写请求,第七数据为结构化数据,第七数据属于第一用户;将第五写请求转换为对文件存储的第三文件写请求,第三文件写请求中包括待写入第七数据的第七存储文件信息,第七存储文件是文件系统中第一用户对应的文件;读取第七存储文件对应的第七元数据和第一用户对应的第一存储配置信息;根据第七元数据和第一存储配置信息,获取第五写地址和访问第五写地址的第七授权信息,五写地址属于第七存储文件在第一本地存储设备中对应的第七存储空间;根据第七授权信息,通过第二插件将第七数据存储到第一本地存储设备的第五写地址中。

根据第一方面,还包括:接收第一终端发送的针对第八数据的第六写请求,第八数据为非结构化数据,第八数据属于第一用户;确定待写入第八数据的第八存储文件信息,第八存储文件是文件系统中第一用户对应的文件;读取第八存储文件对应的第八元数据和第一用户对应的第一存储配置信息;根据第八元数据和第一存储配置信息,获取第六写地址和访问第六写地址的第八授权信息,第六写地址属于第八存储文件在第二本地存储设备中对应的第八存储空间;根据第八授权信息,通过第三插件将第八数据存储到第二本地存储设备的第六写地址中。

根据第一方面,还包括:接收第一终端发送的针对第八数据的第六写请求,第八数据为非结构化数据,第八数据属于第一用户;确定待写入第八数据的第八存储文件信息,第八存储文件是文件系统中第一用户对应的文件;读取第八存储文件对应的第八元数据和第一用户对应的第一存储配置信息;根据第八元数据和第一存储配置信息,获取第六写地址、第一本地写地址和访问第六写地址的第八授权信息、访问第一本地写地址的第一本地授权信息,第六写地址属于第八存储文件在第二本地存储设备中对应的第八存储空间,第六写地址与第一本地写地址对应的物理空间相同;将第六写地址、第一本地写地址、第八授权信息、第一本地授权信息发送给第一终端,以使第一终端根据第八授权信息,通过第三插件将第八数据存储到第二本地存储设备的第六写地址中,或者使第一终端根据第一本地授权信息,将第八数据通过本地局域网存储到第二本地存储设备的第一本地写地址中。

根据第一方面,还包括:接收第一终端发送的针对第九数据的第三读请求,第九数据为结构化数据,第九数据属于第一用户;确定存储有第九数据的第九存储文件信息,第九存储文件是文件系统中第一用户对应的文件;读取第九存储文件对应的第九元数据和第一用户对应的第一存储配置信息;根据第九元数据和第一存储配置信息,获取第三读地址和访问第三读地址的第九授权信息,三读地址属于第九存储文件在第三本地存储设备中对应的第九存储空间;根据第九授权信息,通过第四插件从第三本地存储设备的第三读地址中读取第九数据;将第九数据发送给第一终端。

根据第一方面,还包括:接收第一终端发送的针对第十数据的第四读请求,第十数据为非结构化数据,第十数据属于第一用户;确定存储有第十数据的第十存储文件信息,第十存储文件是文件系统中第一用户对应的文件;读取第十存储文件对应的第十元数据和第一用户对应的第一存储配置信息;根据第十元数据和第一存储配置信息,获取第四读地址和访问第四读地址的第十授权信息,四读地址属于第十存储文件在第四本地存储设备中对应的第十存储空间;根据第十授权信息,通过第五插件从第四本地存储设备的第四读地址中读取第十数据;将第十数据发送给第一终端。

根据第一方面,还包括:接收第一终端发送的针对第十数据的第四读请求,第十数据为非结构化数据,第十数据属于第一用户;确定存储有第十数据的第十存储文件信息,第十存储文件是文件系统中第一用户对应的文件;读取第十存储文件对应的第十元数据和第一用户对应的第一存储配置信息;根据第十元数据和第一存储配置信息,获取第四读地址、第一本地读地址和访问第四读地址的第十授权信息、访问第一本地读地址的第二本地授权信息,四读地址属于第十存储文件在第四本地存储设备中对应的第十存储空间,第四读地址与第一本地读地址对应的物理空间相同;将第四读地址、第一本地读地址、第十授权信息、第二本地授权信息发送给第一终端,以使第一终端根据第十授权信息,通过第五插件从第四本地存储设备的第四读地址中读取第十数据,或者,使第一终端根据第二本地授权信息,通过本地局域网从第四本地存储设备的第一本地读地址中读取第十数据。

根据第一方面,第一数据为第一应用的数据,第一存储文件是文件系统中第一用户的第一应用对应的文件。

根据第一方面,第一数据为第一应用的第一功能的数据,第一存储文件是文件系统中第一用户的第一应用的第一功能对应的文件。

根据第一方面,第一远程存储设备为云存储服务器或本地存储设备。

根据第一方面,云存储控制服务器中存储有存储配置信息和元数据,存储配置信息包括存储设备以及访问存储设备的授权信息的对应关系,元数据包括用户、存储文件与对应的存储设备的对应关系。

第二方面,本申请提供一种云存储系统,还包括终端、云存储控制服务器和存储设备,其中:终端,用于向云存储控制服务器发送云存储相关的请求;云存储控制服务器,用于根据请求,从存储设备读取数据并返回给终端;或者用于根据请求,向存储设备写入数据;存储设备,用于向云存储控制服务器返回请求读取的数据,或者用于存储云存储控制服务器写入的数据。

第三方面,本申请提供一种电子设备,包括:存储器和处理器,存储器与处理器耦合;存储器存储有程序指令,当程序指令由处理器执行时,使得电子设备执行第一方面任意一项的云存储方法。

第四方面,本申请提供一种计算机可读存储介质,包括计算机程序,当计算机程序在电子设备上运行时,使得电子设备执行前述的第一方面任意一项的云存储方法。

附图说明

图1A为示例性示出的相关技术中云存储方式的一示意图;

图1B为示例性示出的本实施例中云存储控制服务器的一种结构示例图;

图2为示例性示出的本实施例中结构化数据的存储过程示例图;

图3为示例性示出的不同用户的虚拟存储空间及对应的实际存储空间的示意图;

图4为示例性示出的本实施例中非结构化数据的存储过程示例图;

图5为示例性示出的本实施例中结构化数据的读取过程示例图;

图6为示例性示出的本实施例中非结构化数据的读取过程示例图;

图7为示例性示出的图2对应的时序图;

图8A为示例性示出的图4对应的一种时序图;

图8B为示例性示出的图4对应的另一种时序图;

图9为示例性示出的图5对应的时序图;

图10A为示例性示出的图6对应的一种时序图;

图10B为示例性示出的图6对应的另一种时序图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。

本申请实施例的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一目标对象和第二目标对象等是用于区别不同的目标对象,而不是用于描述目标对象的特定顺序。

在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。

在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个处理单元是指两个或两个以上的处理单元;多个系统是指两个或两个以上的系统。

图1A为示例性示出的相关技术中云存储方式的示意图。请参见图1A,相关技术中,结构化数据和非结构化数据分别进行存储,其中,结构化数据存储在数据库中,非结构化数据存储在文件存储系统中。

图1B为示例性示出的本实施例中云存储控制服务器的一种结构示例图。请参见图1B,本实施例中,云存储控制服务器可以包括存储同步服务模块、存储引擎模块、存储配置数据库和元数据数据库。其中,存储同步服务模块中包括嵌入式数据库引擎。

其中,存储配置数据库中存储有存储配置信息,元数据数据库存储有元数据。存储配置信息包括存储设备以及访问存储设备的授权信息的对应关系,元数据包括用户、存储文件与对应的存储设备的对应关系。

在本实施例中,将结构化数据通过嵌入式数据库引擎,存储在文件存储空间中,并且,为每个用户建立虚拟存储空间,允许用户通过服务关联、第三方插件等方式将多个云存储映射到虚拟存储空间中。

本实施例中,云存储的总体过程可以包括如下步骤:

终端请求存储或同步;

存储同步服务模块将请求转化为对文件存储的读写请求;

存储引擎读取存储配置信息和元数据,确定文件对应的云存储服务器以及相关授权信息;

通过插件发起存储读写请求,获取临时读写地址和授权信息;

转发终端读写地址和授权信息;

终端或嵌入式数据库引擎发起文件读写操作。

下面针对结构化数据和非结构化数据,分别详细描述云存储过程。

图2为示例性示出的本实施例中结构化数据的存储过程示例图。图7为示例性示出的图2对应的时序图。请参见图2和图7,本实施例中,结构化数据的存储过程可以包括如下步骤:

S201,手机1向存储同步服务模块发送针对结构化数据a的写请求1。

写请求1中包括需要存储的数据a。写请求1中还可以包括发出写请求1的用户X的用户信息,还可以包括数据a所属的应用2的应用名称APP2。

S202,存储同步服务模块将写请求1发送给嵌入式数据库引擎。

存储同步服务模块中设置有2个接口,一个接口用于接收针对结构化数据的各种请求,本文中将该接口称为第一接口,另一个接口用于接收针对非结构化数据的各种请求,本文中将该接口称为第二接口。

对于针对结构化数据的各种请求,也即第一接口接收到的请求,存储同步服务模块将这些请求转发给嵌入式数据库引擎,这样,嵌入式数据库引擎就可以将结构化数据存储在文件中。

S203,嵌入式数据库引擎将写请求1转化为对文件存储的写请求2。

其中,写请求2中包括待写入数据a的存储文件1的文件名。存储文件1用于存储用户X的APP2的数据。在本实施例中,无论是读请求还是写请求,都可以包括用户信息和数据所属的应用信息,例如,数据a属于APP2,还可以进一步包括数据所属的功能信息,这样根据用户信息、应用信息、和/或功能信息,就可以确定数据对应的存储文件。

本实施例通过嵌入式数据库引擎,可以将不同用户和App的数据写入不同的数据文件中。在应用中,可以选择按用户、或用户+App、或用户+App+不同功能方式隔离。

其中,按用户隔离,是指将同一用户的所有数据存储在一个文件中,即一个用户对应一个文件,对应关系为:用户——存储文件。在这种方式中,根据请求中包括的用户信息,即可确定数据对应的存储文件。

按用户+App隔离,是指将同一用户的所有数据按照App存储在不同文件中,即同一个用户的每种App数据存储在一个文件中,对应关系为:用户+App——存储文件。在这种方式中,根据请求中包括的用户信息和数据所属应用信息,即可确定数据对应的存储文件。

按用户+App+不同功能隔离,是指将同一用户的同一App的不同功能的数据存储在不同文件中,即同一个用户的同一App的每种功能的数据存储在一个文件中,对应关系为:用户+App+功能——存储文件。在这种方式中,根据请求中包括的用户信息、数据所属应用信息和数据所属功能信息,即可确定数据对应的存储文件。

嵌入式数据库引擎可采用如sqlite、leveldb等开源引擎,支持SQL(StructuredQuery Language,结构化查询语言)、K-V(键-值)、列式存储等多种数据结构。通常会选用基于LSM(Log Structured Merge Tree)的实现,因为通常云存储服务不提供追加数据的能力,通过LSM将变更的数据以增量的文件形式保存。这些增量文件会首先在本地生成,并通过存储引擎同步到存储空间中的其他存储介质/云存储服务器中。

在业务闲时,嵌入式数据库引擎将调用各存储介质/云存储服务器接口将增量数据进行合并,以加快查询和减少存储空间占用。

步骤S201至步骤S203对应图7中编号1(即图7中的①,以下为描述方便,均直接写编号数字)指示的过程。

S204,嵌入式数据库引擎将写请求2发送给存储引擎模块。

本步骤对应图7中编号2指示的过程。

S205,存储引擎模块从元数据数据库读取存储文件1对应的元数据1,根据元数据1确定存储文件1对应的云存储服务器M。

本步骤对应图7中编号3指示的过程。

其中,存储文件1对应云存储服务器M是指,存储文件1的数据实际存储在云存储服务器M中。

元数据中包括用户、存储文件与对应的存储设备的对应关系。也即,元数据中存储有各个用户的虚拟存储空间与实际存储空间的对应关系信息。

其中,每个用户的虚拟存储空间可以存储该用户的各个应用(简写为APP)的虚拟存储文件表示。这样,可以将同一用户的数据按照所属应用的不同隔离开来。

以用户X为例,元数据中存储文件与实际存储空间(即对应的存储设备)的对应关系信息可以如表1所示。

表1

以表1中的APP1存储文件为例,用户X的APP1的数据存储在APP1存储文件中,APP1存储文件是一个虚拟存储文件,APP1存储文件对应的实际存储空间包括位于云存储服务器M中属于用户X的用于存储APP1数据的存储空间、以及位于云存储服务器N中属于用户X的用于存储APP1数据的存储空间。

需要说明的是,本实施例中,通过云存储控制服务器,可以为每个用户分别建立虚拟存储空间。

图3为示例性示出的不同用户的虚拟存储空间及对应的实际存储空间的示意图。根据图3,用户X的虚拟存储空间中包括APP1存储文件、APP2存储文件、APP3存储文件、APP4存储文件。其中,用户X的APP1存储文件的实际存储空间位于云存储服务器M和云存储服务器N中,用户X的APP2存储文件的实际存储空间位于云存储服务器M中,用户X的APP3存储文件的实际存储空间位于云存储服务器N中,用户X的APP4存储文件的实际存储空间位于本地存储设备中。

请继续参见图3,用户Y的虚拟存储空间中包括APP1存储文件、APP2存储文件、APP3存储文件。其中,用户Y的APP1存储文件的实际存储空间位于云存储服务器M和云存储服务器N以及本地存储设备中,用户Y的APP2存储文件的实际存储空间位于云存储服务器M以及本地存储设备中,用户Y的APP3存储文件的实际存储空间位于云存储服务器N以及本地存储设备中。

由图3可见,不同用户的虚拟存储空间之间是相互隔离的。

S206,存储引擎模块从存储配置数据库读取数据a所属用户X对应的存储配置信息,从该存储配置信息获取访问云存储服务器M的授权信息11。

本步骤对应图7中编号4指示的过程。

存储配置数据库中的存储配置信息中存储有各个存储设备例如云存储服务器的授权信息,如表2所示。这些授权信息用于在访问存储设备时进行验证、鉴权等操作。

表2

S207,存储引擎模块通过插件A向云存储服务器M发送授权信息11和写请求2。

本步骤对应图7中编号5指示的过程。

S208,云存储服务器M通过插件A向存储引擎模块发送写地址1和授权信息12。

本步骤对应图7中编号6指示的过程。

云存储服务器

其中,插件为驱动程序,插件是存储引擎模块的接口与云存储服务器的接口之间的映射关系和处理逻辑的组合。

S209,存储引擎模块将写地址1和授权信息12发送给存储同步服务模块中的嵌入式数据库引擎。

本步骤对应图7中编号7指示的过程。

S210,嵌入式数据库引擎向云存储服务器M发送包括数据a的写请求3,写请求3中包括写地址1和授权信息12。

本步骤对应图7中编号8指示的过程。

S211,云存储服务器M将数据a写入写地址1。

需要说明的是,如果图2所示实施例中,存储文件1对应的存储设备不是云存储服务器M这种远程存储设备(与手机不在同一局域网内),而是本地存储设备/系统,则图7中编号为5、6、8的实线对应的步骤相应地替换为图7中编号为5、6、8的虚线对应的步骤。所不同的是,编号8对应的虚线步骤中,嵌入式数据库引擎在获得写地址1后,通过插件C访问写地址1,以将数据a写入本地存储设备/系统的写地址1中。

图7至图10B中,本地存储设备/系统通过长连接或内网穿透等方式对外服务,即本地存储设备/系统通过长连接或内网穿透等方式与插件C所在的存储引擎通信。本地存储设备/系统与手机处于同一局域网内,手机可以通过局域网发现本地存储设备/系统,就近进行传输。

根据图2所示实施例的存储过程可见,对于结构化数据的存储,嵌入式数据库引擎将对结构化数据的写请求转化为对文件存储的写请求,并且由嵌入式数据库引擎将数据存入实际存储位置。

需要说明的是,图2所示实施例中,元数据数据库中包含存储文件1对应的元数据1,这是因为,图2所示实施例是非首次存储APP2的数据。如果是首次存储APP2的数据,元数据数据库中不包含存储文件1对应的元数据1,此时需要创建存储文件1,并生成存储文件1对应的元数据1,然后将元数据1存储到元数据数据库中。

因此,当图2所示实施例是首次存储APP2的数据的情形时,步骤S205之前需要加入如下的步骤S1和S2:

S1,如果不存在存储文件1对应的元数据,读取用户X对应的存储配置信息;

S2,根据用户X对应的存储配置信息中的空间使用策略,生成存储文件1对应的元数据1,并将元数据1存储到元数据数据库中。

同样,以下的实施例均指非首次写或读APP数据的情形,对于首次写或读APP数据的情形,处理方式与上述一样,即先生成元数据,再根据元数据获得存储文件对应的实际物理存储空间。

存储配置数据库的存储配置信息中还可以包括空间使用策略,空间使用策略可以用于指示在同一个APP的存储文件对应多个实体的存储设备时,存储的优先顺序。例如,图3中,用户X的APP1的空间使用策略可以如表3所示。

表3

其中,优先级的值越大,优先级越高。这样,云存储服务器N的优先级高于云存储服务器M的优先级。因此,虽然根据图3,用户X的APP1存储文件对应的实际存储空间包括位于云存储服务器M中的存储空间和位于云存储服务器N中的存储空间,但在云存储服务器N中的存储空间有空闲的情况下,优先存储在云存储服务器N中的存储空间。这样,步骤S303中确定的数据b的存储位置就是位于云存储服务器N中,而非位于云存储服务器M中。

本实施例中,通过虚拟存储空间,可针对不同App、云存储或本地存储制定空间使用策略,如:优先使用本地网络存储、其次服务商N,或App4必须存储在本地存储、App3必须存储在服务商N,或者将本地存储作为镜像使用等多种策略。

在应用中,可以按照下列方式实现上述多层次存储结构:

(1)基础的存储介质或云存储服务可以视为一个物理磁盘;

(2)多个物理磁盘可组合成类似RAID1/RAID10规格的镜像存储空间,或通过纠错码方式组合成类似RAID5规格的一定冗余存储空间;

(3)与传统RAID不同的是,不需要保证各个存储介质或云存储服务容量相等,数据仍然以文件为单位进行镜像和冗余纠错,单个存储介质或云存储服务可同时为多个存储空间提供镜像或冗余纠错能力;

用户可指定App存储在上述具体某个存储空间中。

图4为示例性示出的本实施例中非结构化数据的存储过程示例图。图8A为示例性示出的图4对应的一种时序图。请参见图4和图8A,本实施例中,非结构化数据的存储过程可以包括如下步骤:

S401,手机1向存储同步服务模块发送针对非结构化数据b的写请求4。

写请求4中包括需要存储的数据b。写请求4中还可以包括发出写请求4的用户X的用户信息,还可以包括数据b所属的应用1的应用名称APP1。

步骤S401对应图8A中编号1指示的过程。

S402,存储同步服务模块将写请求4发送给存储引擎模块。

步骤S402对应图8A中编号2指示的过程。

S403,存储引擎模块从元数据数据库读取存储文件2对应的元数据2,根据元数据2确定存储文件2对应的云存储服务器N。

步骤S403对应图8A中编号3指示的过程。

根据元数据确定存储文件对应的存储设备的详细过程请参见前述步骤S205的说明,此处不再赘述。

S404,存储引擎模块从存储配置数据库读取数据b所属用户X对应的存储配置信息,从该存储配置信息获取访问云存储服务器N的授权信息21。

步骤S404对应图8A中编号4指示的过程。

根据存储配置信息查找存储设备对应的授权信息的详细过程请参见前述步骤S206的说明,此处不再赘述。

S405,存储引擎模块通过插件B向云存储服务器N发送授权信息21和写请求4。

步骤S405对应图8A中编号5指示的过程。

S406,云存储服务器N通过插件B向存储引擎模块发送写地址2和授权信息22。

步骤S406对应图8A中编号6指示的过程。

S407,存储引擎模块将写地址2和授权信息22发送给存储同步服务模块。

步骤S407对应图8A中编号7指示的过程。

S408,存储同步服务模块将写地址2和授权信息22转发给手机1。

步骤S408对应图8A中编号8指示的过程。

存储引擎模块将写地址2和授权信息22通过存储同步服务模块转发给手机1。

S409,手机1向云存储服务器N发送包括数据b的写请求5,写请求5中包括写地址2和授权信息22。

步骤S409对应图8A中编号9指示的过程。

S410,云存储服务器N将数据b写入写地址2。

图8B为示例性示出的图4对应的另一种时序图。在另一个示例中,图4所示实施例中的步骤S408和S409可以用如下的步骤S1替换:

S1,存储同步服务模块向云存储服务器N发送包括数据b的写请求5,写请求5中包括写地址2和授权信息22。

步骤S1对应图8B中编号8指示的过程。

这样,由存储同步服务模块直接将数据b存储到云存储服务器N中,减少了与手机的交互过程,有利于提高处理速度。

需要说明的是,如果图4所示实施例中,存储文件2对应的存储设备不是云存储服务器N,而是本地存储设备/系统,则图8A中编号为9的实线对应的步骤相应地替换为图8A中编号为9的虚线对应的步骤。所不同的是,编号9对应的虚线步骤中,手机通过局域网访问本地存储设备/系统,且写地址2是局域网本地写地址。在其他实施例中,手机也可以使用远程访问地址,通过插件C访问本地存储设备/系统,将数据写入写地址2。需要说明的是,手机通过插件C访问本地存储设备/系统,需要使用本地存储设备/系统的远程访问地址访问本地存储设备/系统,手机直接访问本地存储设备/系统,使用的是本地存储设备/系统的局域网内访问地址,即本地访问地址。

同样地,则图8B中编号为8的实线对应的步骤相应地替换为图8B中编号为8的虚线对应的步骤。所不同的是,编号8对应的虚线步骤中,存储同步服务模块在获得写地址2后,通过插件C访问写地址2,以将数据b写入本地存储设备/系统的写地址2中。

根据图4所示实施例的存储过程可见,对于非结构化数据的存储,不需要经过嵌入式数据库引擎,存储同步服务模块将非结构化数据的写请求转发给存储引擎模块,存储引擎模块获取到用于存储数据的写地址后将写地址转发给手机1,由手机1将数据存入实际存储位置。

图5为示例性示出的本实施例中结构化数据的读取过程示例图。图9为示例性示出的图5对应的时序图。请参见图5和图9,本实施例中,结构化数据的读取过程可以包括如下步骤:

S501,手机1向存储同步服务模块发送针对结构化数据c的读请求6。

读请求6中可以包括发出读请求6的用户X的用户信息,还可以包括数据c所属的应用2的应用名称APP2。

S502,存储同步服务模块将读请求6发送给嵌入式数据库引擎。

S503,嵌入式数据库引擎将读请求6转化为对文件存储的读请求7。

读请求7包括数据c对应的存储文件1

步骤S501至步骤S503对应图9中编号1指示的过程。

S504,嵌入式数据库引擎将读请求7发送给存储引擎模块。

步骤S504对应图9中编号2指示的过程。

S505,存储引擎模块从元数据数据库读取存储文件1对应的元数据1,根据元数据1确定存储文件1对应的云存储服务器M。

步骤S505对应图9中编号3指示的过程。

S506,存储引擎模块从存储配置数据库读取数据c所属用户X对应的存储配置信息,从该存储配置信息获取访问云存储服务器M的授权信息11。

步骤S506对应图9中编号4指示的过程。

S507,存储引擎模块通过插件A向云存储服务器M发送授权信息11和读请求7。

步骤S507对应图9中编号5指示的过程。

S508,云存储服务器M通过插件A向存储引擎模块发送读地址3和授权信息12。

步骤S508对应图9中编号6指示的过程。S509,存储引擎模块将读地址3和授权信息12发送给存储同步服务模块中的嵌入式数据库引擎。

步骤S509对应图9中编号7指示的过程。

S510,嵌入式数据库引擎向云存储服务器M发送请求读取数据c的读请求8,读请求8中包括读地址3和授权信息12。

步骤S510对应图9中编号8指示的过程。

S511,云存储服务器M从读地址3读取数据c,并将数据c返回给嵌入式数据库引擎。

步骤S511对应图9中编号9指示的过程。

S512,嵌入式数据库引擎将数据c通过存储同步服务模块发送给手机1。

步骤S512对应图9中编号10指示的过程。

需要说明的是,如果图5所示实施例中,存储文件1对应的存储设备不是云存储服务器M,而是本地存储设备/系统,则图9中编号为8、9的实线对应的步骤相应地替换为图9中编号为8、9的虚线(双向虚线,指向插件C的方向为编号8代表的步骤,反向为编号9代表的步骤)对应的步骤。所不同的是,编号8、9对应的虚线步骤中,嵌入式数据库引擎在获得读地址3后,通过插件C访问读地址3,以从本地存储设备/系统的读地址3中读取数据c。

根据图5所示实施例的存储过程可见,对于结构化数据的读取,嵌入式数据库引擎将对结构化数据的读请求转化为对文件存储的读请求,并且由嵌入式数据库引擎将数据从实际存储位置中读取后再发送给手机。

图6为示例性示出的本实施例中非结构化数据的读取过程示例图。图10A为示例性示出的图6对应的一种时序图。请参见图6和图10A,本实施例中,非结构化数据的读取过程可以包括如下步骤:

S601,手机1向存储同步服务模块发送针对非结构化数据d的读请求9。

步骤S601对应图10A中编号1指示的过程。

读请求9中可以包括发出读请求9的用户X的用户信息,还可以包括数据d所属的应用1的应用名称APP1。

S602,存储同步服务模块将读请求9发送给存储引擎模块。

步骤S602对应图10A中编号2指示的过程。

存储同步服务模块可以根据请求9的用户X的用户信息和数据d所属的应用1的应用名称APP1,确定数据d对应的存储文件为存储文件2。

S603,存储引擎模块从元数据数据库读取存储文件2对应的元数据2,根据元数据2确定存储文件2对应的云存储服务器N。

步骤S603对应图10A中编号3指示的过程。

S604,存储引擎模块从存储配置数据库读取数据d所属用户X对应的存储配置信息,从该存储配置信息获取访问云存储服务器N的授权信息21。

步骤S604对应图10A中编号4指示的过程。

S605,存储引擎模块通过插件B向云存储服务器N发送授权信息21和读请求9。

步骤S605对应图10A中编号5指示的过程。

S606,云存储服务器N通过插件B向存储引擎模块发送读地址4和授权信息22。

步骤S606对应图10A中编号6指示的过程。

S607,存储引擎模块将读地址4和授权信息22发送给存储同步服务模块。

步骤S607对应图10A中编号7指示的过程。

S608,存储同步服务模块将读地址4和授权信息22转发给手机1。

步骤S608对应图10A中编号8指示的过程。

S609,手机1向云存储服务器N发送请求读取数据d的读请求10,读请求10中包括读地址4和授权信息22。

步骤S609对应图10A中编号9指示的过程。

S610,云存储服务器N从读地址4读取数据d,并将数据d返回给手机1。

步骤S610对应图10A中编号10指示的过程。

图10B为示例性示出的图6对应的另一种时序图。请参见图10B,在其他实施例中,存储同步服务模块接收到读地址4和授权信息22后,可以向云存储服务器N发送请求读取数据d的读请求10,读请求10中包括读地址4和授权信息22。然后,云存储服务器N从读地址4读取数据d,并将数据d返回给存储同步服务模块,存储同步服务模块将数据d返回给手机1。

需要说明的是,图7至图10B中,虚线表示当存储设备为本地存储设备时相应编号对应的时序。此时,存储引擎模块通过插件C与本地存储设备进行交互。

需要说明的是,如果图6所示实施例中,存储文件2对应的存储设备不是云存储服务器N,而是本地存储设备/系统,则图10A中编号为9、10的实线对应的步骤相应地替换为图10A中编号为9、10的虚线对应的步骤。所不同的是,编号9、10对应的虚线步骤中,手机通过局域网访问本地存储设备/系统,且读地址4是局域网本地读地址。在其他实施例中,手机也可以使用远程访问地址,通过插件C访问本地存储设备/系统,从读地址4中读取数据。

同样地,则图10B中编号为8、9的实线对应的步骤相应地替换为图10B中编号为8、9的虚线(双向虚线,指向插件C的方向为编号8代表的步骤,反向为编号9代表的步骤)对应的步骤。所不同的是,编号8、9对应的虚线步骤中,存储同步服务模块在获得读地址4后,通过局域网访问读地址4,以从本地存储设备/系统的读地址4中读取数据b。

根据图6所示实施例的存储过程可见,对于非结构化数据的读取,不需要经过嵌入式数据库引擎,存储同步服务模块将非结构化数据的转发给存储引擎模块,存储引擎模块获取到用于读取数据的读地址后,将读地址转发给手机1,由手机1从实际存储位置读数据。

需要说明的是,无论是写地址还是读地址,实质上都是地址,以上各实施例中,为便于区分地址在每个具体的使用过程中的用途(用于读还是用于写),在地址前冠以“读”或“写”的字样。

其中,前述实施例中存储引擎模块插件的交互过程也可通过终端来完成,例如插件通过单独的通道与终端会话,通知终端将文件存储到某个存储介质,由终端告知插件存储介质具体存储的标识。

本实施例具有如下有益效果:

一是,通过云存储控制服务器,建立了虚拟文件存储空间与实际物理存储空间的映射,实现用户在多个云存储设备中的数据共享,用户不需要手动为每种数据划分存储空间,提升了用户的存储体验。

二是,本地存储设备/系统可以是家庭存储、公司存储或其他私有存储,此时文件类型数据直接在终端本地网络中上传至本地存储设备/系统,减少了外网带宽请求,同时增强了安全性。

需要说明的是,以上各实施例中,云存储服务器所执行的各个操作是由该云存储服务器的具体云存储服务器执行的。

以上存储(读或写数据)过程的原理同样适用于同步过程。

举例说明。假设手机1和手机2为同一用户X的设备,手机1在断网状态下,在手机1中新增了一个联系人R,并且增加了联系人R的电话号码。手机2在断网状态下,在手机2中页新增了联系人R,并且增加了联系人R的地址信息。

手机1和手机2联网后,同步过程可以如下:

手机1向云存储控制服务器的存储同步服务模块发送同步请求1,同步请求1中携带联系人R的电话号码;

手机2向云存储控制服务器的存储同步服务模块发送同步请求2,同步请求2中携带联系人R的地址信息;

存储同步服务模块根据同步请求1和同步请求2,确定联系人R的信息包括:联系人R的电话号码、联系人R的地址信息;

存储同步服务模块向手机1发送同步响应1,同步响应1中携带联系人R的信息包括:联系人R的电话号码、联系人R的地址信息;

手机1根据同步响应1,将手机1中联系人R的信息修改为:联系人R的电话号码、联系人R的地址信息;

存储同步服务模块向手机2发送同步响应2,同步响应2中携带联系人R的信息包括:联系人R的电话号码、联系人R的地址信息;

手机2根据同步响应2,将手机2中联系人R的信息修改为:联系人R的电话号码、联系人R的地址信息。

这样,就实现了联系人信息同步。

本申请实施例还提供一种电子设备,该电子设备包括存储器和处理器,存储器与处理器耦合,存储器存储有程序指令,当程序指令由所述处理器执行时,使得电子设备前述电子设备所执行的云存储方法。

可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件和/或软件模块。结合本文中所公开的实施例描述的各示例的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以结合实施例对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

本实施例还提供一种计算机存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的云存储方法。

本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的云存储方法。

另外,本申请实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的云存储方法。

其中,本实施例提供的电子设备、计算机存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。

通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

本申请各个实施例的任意内容,以及同一实施例的任意内容,均可以自由组合。对上述内容的任意组合均在本申请的范围之内。

集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。

结合本申请实施例公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(Random Access Memory,RAM)、闪存、只读存储器(Read Only Memory,ROM)、可擦除可编程只读存储器(Erasable Programmable ROM,EPROM)、电可擦可编程只读存储器(Electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、只读光盘(CD-ROM)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。

本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。

上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。

相关技术
  • 支持数据去重的高效数据重加密方法及系统、云存储系统
  • 一种基于云存储的数据管理系统及方法
  • 一种基于区块链的数据云存储加密方法及系统
  • 一种云存储方法、云存储系统及安全云存储系统
  • 视频云存储方法及系统、预览云存储的视频的方法及系统
技术分类

06120116485157