CN103327052A - 数据存储方法和***以及数据访问方法和*** - Google Patents
数据存储方法和***以及数据访问方法和*** Download PDFInfo
- Publication number
- CN103327052A CN103327052A CN201210079243XA CN201210079243A CN103327052A CN 103327052 A CN103327052 A CN 103327052A CN 201210079243X A CN201210079243X A CN 201210079243XA CN 201210079243 A CN201210079243 A CN 201210079243A CN 103327052 A CN103327052 A CN 103327052A
- Authority
- CN
- China
- Prior art keywords
- key
- value
- storage server
- file
- storage
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
数据存储方法和***以及数据访问方法和***。一种数据存储方法,包括以下步骤:获取待存储的文件夹的文件夹标识以及该文件夹下的所有对象;以所述文件夹标识为键、以所述文件夹下的所有对象为值组成键值对,将键值对发送给所述键对应的存储服务器;所述存储服务器存储所述键值对。上述方法以键值对的形式存储文件夹标识以及文件夹下的所有对象,相比于传统的关系型数据库的事务模型存储方式,其在可用性和分区扩展性上比较优异,并且数据存储效率高。此外,还提供一种数据访问方法、数据存储***和数据访问***。
Description
【技术领域】
本发明涉及网络技术领域,特别的涉及一种数据存储方法和***以及数据访问方法和***。
【背景技术】
云存储,是指通过集群应用、网络技术或分布式文件***等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个***,可以把云存储看作是一个以数据存储和管理为核心的云计算***。
云存储***为海量的用户提供数据存取服务,因此具有海量数据存取的需求,另外,云存储***中的存储设备是分散,所以云存储***又具有分布式存储需求。传统的云存储***通常采用关系型数据库,而关系型数据库的可扩展性较差,不能进行水平扩展,随着数据量的增加,其读写性能明显降低。因此,有必要提供一种能满足云存储数据存取量大和分布式存储需要、且数据存取效率高的数据管理方法。
【发明内容】
基于此,有必要提供一种数据存储效率高的数据存储方法。
一种数据存储方法,包括以下步骤:
获取待存储的文件夹的文件夹标识以及该文件夹下的所有对象;
以所述文件夹标识为键、以所述文件夹下的所有对象为值组成键值对,将键值对发送给所述键对应的存储服务器;
所述存储服务器根据所述键存储所述值。
在其中一个实施例中,所述将键值对发送给所述键对应的存储服务器的步骤包括:
将所述键通过预设算法转换为整型数;
获取整型数对应的存储服务器;
将所述键值对传送到所述对应的存储服务器。
在其中一个实施例中,所述存储服务器根据所述键存储所述值的步骤包括:
通过所述存储服务器存储所述值,获取所述值的存储地址,将所述键通过预设算法转换为整型数,获取所述整型数在该存储服务器的值地址数组中的偏移量,在所述值地址数组中该偏移量对应的位置保存所述所述值的存储地址。
在其中一个实施例中,所述文件夹标识包括所述文件夹所属用户的用户标识与所述文件夹的用户文件夹ID的组合。
在其中一个实施例中,所述通过所述存储服务器存储所述值包括:
将所述值按照预定格式打包成数据包,并将该数据包以数据块的形式存储在所述存储服务器中。
基于此,还有必要提供一种访问效率高的数据访问方法。
一种数据访问方法,包括以下步骤:
获取数据访问请求,所述数据访问请求中包含待访问的文件夹的文件夹标识;
以所述文件夹标识为键,将所述键发送给所述键对应的存储服务器;
通过所述存储服务器获取所述键对应的值,所述值存储了所述文件夹下的所有对象;
接收所述存储服务器返回的所述键对应的值,将所述键对应的值还原为所述文件夹下的对象。
在其中一个实施例中,所述将所述键发送给所述键对应的存储服务器的步骤包括:
将所述键通过预设算法转换为整型数;
获取整型数对应的存储服务器;
将所述键传送到所述对应的存储服务器。
在其中一个实施例中,所述通过所述存储服务器获取所述键对应的值的步骤包括:
通过所述存储服务器将所述键通过预设算法转换为整型数,获取所述整型数在该存储服务器的值地址数组中的偏移量,在所述值地址数组中该偏移量对应的位置获取所述键对应的值的存储地址,根据所述存储地址获取所述值。
在其中一个实施例中,所述文件夹标识包括所述文件夹所属用户的用户标识与所述文件夹的用户文件夹ID的组合。
在其中一个实施例中,所述根据所述存储地址获取所述值包括:
根据所述存储地址获取相应的数据包,将所述数据包按照预设格式进行解码得到所述值。
基于此,还有必要提供一种存储效率高的数据存储***。
一种数据存储***,包括至少一个云文件***和多个存储服务器,其中:
所述云文件***用于获取待存储的文件夹的文件夹标识以及该文件夹下的所有对象,以所述文件夹标识为键、以所述文件夹下的所有对象为值组成键值对,将键值对发送给所述键对应的存储服务器;
所述存储服务器用于接收所述云文件***发送的键值对,根据所述键存储所述值。
在其中一个实施例中,所述云文件***还用于在将键值对发送给所述键对应的存储服务器时,将所述键通过预设算法转换为整型数,获取整型数对应的存储服务器,将所述键值对传送到所述对应的存储服务器。
在其中一个实施例中,所述存储服务器用于接收到所述键值对时,存储所述值,获取所述值的存储地址,将所述键通过预设算法转换为整型数,获取所述整型数在该存储服务器的值地址数组中的偏移量,在所述值地址数组中该偏移量对应的位置保存所述值的存储地址。
在其中一个实施例中,所述文件夹标识包括所述文件夹所属用户在云文件***中的用户标识与所述文件夹的用户文件夹ID的组合。
基于此,还有必要提供一种访问效率高的数据访问***。
一种数据访问***,包括至少一个云文件***和多个存储服务器;
所述云文件***用于获取数据访问请求,所述数据访问请求中包含待访问的文件夹的文件夹标识;
所述云文件***还用于以所述文件夹标识为键,将所述键发送给所述键对应的存储服务器;
所述存储服务器用于接收所述云文件***发送的键,获取所述键对应的值,将所述键对应的值返回给
云文件***,所述值存储了所述文件夹下的所有对象;
所述云文件***还用于将所述键对应的值还原为所述文件夹下的对象。
在其中一个实施例中,所述云文件***还用于在将所述键发送给所述键对应的存储服务器时,将所述键通过预设算法转换为整型数,获取整型数对应的存储服务器,将所述键传送到对应的存储服务器。
在其中一个实施例中,所述存储服务器还用于在获取所述键对应的值时,将所述键通过预设算法转换为整型数,获取所述整型数在该存储服务器的值地址数组中的偏移量,在所述值地址数组中该偏移量对应的位置获取所述键对应的值的存储地址,根据所述存储地址获取所述值。
在其中一个实施例中,所述文件夹标识包括所述文件夹所属用户的在云文件***中的用户标识与所述文件夹的用户文件夹ID的组合。
上述数据存储方法和***,将文件夹作为存储单位,以文件夹标识为键,根据键存储键对应的值,该值中存储文件夹下所有的对象。上述键值对的存储方式相比于传统的关系型数据库的事务模型存储方式,能提供更大规模更高性能的存储,且在可用性和分区扩展性上比较优异,适合于云存储的海量存储需求以及分布式存储需求,提高了数据存储效率高。
上述数据访问方法和***,访问文件夹数据时,以文件夹标识为键,先将键分发到键对应的存储服务器,再通过存储服务器获取键对应的存储了文件夹下的所有对象的值。上述方式不但适于访问云存储分布式环境中存储的数据,而且基于键值对的数据访问方式相比于传统的关系型数据库的数据访问方式,更加快速,适合于互联网应用的海量访问需求,提高了数据访问效率,对于用户而言,访问云存储文件感觉与本地访问无异,使得用户习惯过渡自然。
【附图说明】
图1为一个实施例中的数据存储方法的流程示意图;
图2为一个实施例中的将键值对发送给键对应的存储服务器的流程示意图;
图3为一个实施例中的数据访问方法的流程示意图;
图4为一个实施例中的数据存储***的结构示意图;
图5为一个实施例中的数据访问***的结构示意图;
图6为一个实施例中的数据存储方法和数据访问方法的原理图。
【具体实施方式】
如图1所示,一种数据存储方法,包括以下步骤:
步骤S101,获取待存储的文件夹的文件夹标识以及该文件夹下的所有对象。
在一个实施例中,文件夹标识为文件夹所属用户的用户标识与文件夹的用户文件夹ID的组合。优选的,用户标识可为用户登录云文件***的账号,也可以是云文件***为用户分配的账号。
对于一个用户,用户的文件夹与用户文件夹ID是一一对应的。在一个实施例中,可根据用户的文件夹的创建顺序来设置该文件夹的用户文件夹ID。例如,可设置用户的文件夹中第一个创建的文件夹的文件夹ID为1,第二个创建的文件夹的文件夹ID为2,文件夹ID随着文件夹数量的增长而递增。每个文件夹都有对应的用户文件夹ID,若对象的路径为:/根目录/子目录/对象,则对象所在的文件夹ID即为“子目录”这个文件夹的用户文件夹ID。
云存储为海量的用户提供数据存取服务,每一个用户都有用户标识用于存取数据。将文件夹所属用户的用户标识与文件夹的用户文件夹ID组合成文件夹标识,则文件夹标识可唯一标识海量用户的不同的文件夹。对于不同的用户,用户的文件夹与文件夹标识一一对应。
本实施例中,文件夹标识可用于区分不同用户之间的文件夹,所有用户的文件夹都对应唯一的一个文件夹标识,而文件夹ID则只能用于区分同一用户的不同的文件夹,某一个用户的不同的文件夹,其文件夹ID也不同。
上述文件夹标识组合方式,适用于将用户的数据以文件夹标识为键、以文件夹下的所有对象为值组合成键值对进行存储,并方便用户以文件夹标识为键访问文件夹下的对象。
文件夹下的对象包括但不限于子文件夹以及文件。文件包括但不限于应用程序、邮件、图片、联系人名片等等各种类型。
在一个实施例中,步骤S101可获取待存储的文件夹中的文件的数据实体,和/或,文件的引用,和/或,子文件夹的属性信息。
文件的数据实体为表示文件属性信息(名称、大小、位置、创建时间等)和内容信息的数据,例如表示文件属性信息和内容信息的二进制字符串。文件的引用的具体形式可为文件在Internet上的链接地址,或文件在第三方服务商存储单元中的连接信息,根据该连接信息可读取到文件的数据。子文件夹的属性信息包括子文件夹的名称、大小、位置、创建时间等。
步骤S102,以文件夹标识为键、以文件夹下的所有对象为值组成键值对,将键值对发送给键对应的存储服务器。
键又称为key,键所对应的值又称为value,键和值组成的键值对可记为key-value。
具体的,在一个实施例中,可将待存储的文件夹中的文件的数据实体或文件的引用以及子文件夹的属性信息作为value,与文件夹标识组成key-value,将组成的key-value按照预设格式封装成数据包,将数据包发送给key对应的存储服务器。
具体的,存储服务器以key-value的形式存储云文件***中的对象。存储服务器存储的key-value中,key对应云文件***用户界面中的文件夹,value对应该文件夹下的所有对象。用户界面中的文件夹与云存储中的key-value一一对应。
在一个实施例中,可按照如表1所示的伪代码形式来存储文件夹及文件夹下的对象。
表1
表1中,key为文件夹ID,items[]部分包含的数据即为文件夹下的所有对象。例如,根目录上的文件夹“root”,其文件夹ID为1,它包含两个子文件夹″sub_folder_1″和″sub_folder_2″。″sub_folder_1″和″sub_folder_2″的文件夹ID分别为2和3。文件夹″sub_folder_1″下又包含一个子文件夹″my_photo″。
本实施例中,以文件夹为存储单元,存储文件夹时,只需要存储直接位于文件夹下的对象的相关信息,而不需要存储文件夹的子文件夹下的对象,当有对象被修改或有新对象被创建时,可将对象所在的文件夹作为存储单元进行存储,而不需要存储内容没有被修改的子文件夹,从而可提高存储效率。
如图2所示,在一个实施例中,将键值对发送给所述键对应的存储服务器的具体过程为:
步骤S201,将键通过预设算法转换为整型数。
具体的,可将key通过特定hash摘要算法转换为整型数。
步骤S202,获取整型数对应的存储服务器。
在一个实施例中,可保存整型数与存储服务器的映射表,根据整型数在映射表中查找整型数对应的存储服务器。
在另一个实施例中,存储服务器存储的value的key对应的整型数相邻。例如,将key对应的整型数为0~999的value存储在同一个存储服务器中。不同的存储服务器存储不同区间段的整型数对应的key的value。本实施例中,可根据整型数对应的区间段查找到对应的存储服务器。
本实施例中,根据将键通过预设算法转换为整型数,并获取整型数所属的区间段,根据区间段查找到对应的存储服务器,可快速的定位到目标存储服务器,提高了云存储分布式环境中数据存储的效率。
在又一实施例中,不同存储服务器存储相同数量的value,且同一存储服务器存储的value的key对应的整型数相邻。则可将存储服务器用从0开始的自然数依次编号,计算整型数除以存储服务器可存储的value数量获得的整数商,将整数商对应的存储服务器作为目标存储服务器。例如,每台服务器存储1000个value,设整型数为2330,则将2330除以1000得到商为2,获取2对应的存储服务器为目标存储服务器。
本实施例中,经过简单的计算即可获取整型数对应的目标存储服务器,提高了云存储分布式环境中数据存储的效率。
步骤S203,将键值对传送到对应的存储服务器。
步骤S103,通过存储服务器根据所述键存储所述值。
在一个实施例中,可通过存储服务器存储键值对的值,获取值的存储地址,将键通过预设算法转换为整型数,获取整型数在该存储服务器的值地址数组中的偏移量,在值地址数组中该偏移量对应的位置保存值的存储地址。
具体的,在一个实施例中,value为按照预设格式打包而成的数据包。云存储层将数据包以数据块的形式存储在数据库中。优选的,云存储层将value存储在不固定数据结构的非关系型数据库(即nosql型数据库)中。数据包中打包的value可为数据实体,例如,表示value的二进制字符串,数据包中打包的value也可为数据的引用,例如,数据在Internet上的链接地址,或数据在第三方服务商存储单元中的链接信息,根据该链接信息可读取到数据。
在一个实施例中,可预先在存储服务器中保存值地址数组,值地址数组的长度等于存储服务器可存储的value的数量。获取value的存储地址后,可通过特定的hash摘要算法,将key转换为整型数。进一步的,在一个实施例中,可将整型数模除值地址数组的长度,获取整型数在值地址数组中对应的偏移量,即值地址数组的下标。并根据获取的值地址数组的下标存储value的存储地址。
例如,存储服务器可存储1000个value,数组的长度为1000,获取的整型数为2330,则计算2330%1000=330,即偏移量为330。偏移量0对应数组中的第一个数组元素。偏移量为330,则可设置值地址数组的第331个数组元素为value的存储地址。
本实施例中,根据键获取对应的存储服务器,在对应的存储服务器存储键对应的值后,根据键获取对应的值地址数组的下标,并将值的存储地址保存在值地址数组中下标对应的位置。上述方式可以文件夹为存储单位,快速的将文件夹下的所有对象在云存储分布式环境中进行存储,并且不会因为云存储数据存储量的上升而降低性能,存储效率高。
上述数据存储方法,将文件夹作为存储单位,以文件夹标识为键,根据键存储键对应的值,该值中存储文件夹下的对象。上述键值对的存储方式相比于传统的关系型数据库的事务模型存储方式,能提供更大规模更高性能的存储,且在可用性和分区扩展性上比较优异,适合于云存储的海量存储需求以及分布式存储需求,提高了数据存储效率。
如图3所示,在一个实施例中,一种数据访问方法,包括以下步骤:
步骤S301,获取数据访问请求,数据访问请求中包含待访问的文件夹的文件夹标识。
在一个实施例中,当用户登录时,可触发访问用户的根目录文件夹的请求。当用户在用户界面中执行打开文件夹的操作时,可触发访问该文件夹的请求。
在一个实施例中,文件夹标识为文件夹所属用户的用户标识与文件夹的用户文件夹ID的组合。对于一个用户,用户的文件夹与用户文件夹ID是一一对应的。对于不同的用户,用户的文件夹与文件夹标识一一对应。
上述文件夹标识组合方式,方便用户在云存储中以文件夹标识为键访问文件夹下的对象。
步骤S302,以文件夹标识为键,将键发送给键对应的存储服务器。
在一个实施例中,将键发送给键对应的存储服务器的步骤的具体过程为:将键通过预设算法转换为整型数,获取整型数对应的存储服务器,将键传送到对应的存储服务器。
具体的,可将key通过特定hash摘要算法转换为整型数。
在一个实施例中,存储服务器存储的value的key对应的整型数相邻。不同的存储服务器存储不同区间段的整型数对应的key的value。本实施例中,可根据整型数对应的区间段查找到对应的存储服务器。
本实施例中,获取整型数所属的区间段,根据区间段查找到对应的存储服务器,可快速的定位到目标存储服务器,提高了云存储分布式环境中数据访问的效率。
在另一个实施例中,不同存储服务器存储相同数量的value,且同一存储服务器存储的value的key对应的整型数相邻。则可将存储服务器用从0开始的自然数依次编号,计算整型数除以存储服务器可存储的value数量获得的整数商,将整数商对应的存储服务器作为目标存储服务器。
本实施例中,经过简单的计算即可获取整型数对应的目标存储服务器,提高了云存储分布式环境中数据访问的效率。
步骤S303,通过存储服务器获取键对应的值,该值存储了文件夹下的所有对象。
在一个实施例中,文件夹下的对象包括子文件夹以及文件。文件包括应用程序、邮件、图片、联系人名片等等各种类型。在一个实施例中,上述值存储了文件夹中的文件的数据实体或文件的引用以及子文件夹的属性信息。
本实施例中,访问文件夹时,只需要获取直接位于该文件夹下的对象的数据,而不需要获取该文件夹的子文件夹下的对象的数据,从而可提高访问效率。
具体的,在一个实施例中,可通过存储服务器将键通过预设算法转换为整型数,获取整型数在该存储服务器的值地址数组中的偏移量,在值地址数组中该偏移量对应的位置获取键对应的值的存储地址,根据存储地址获取键对应的值。
本实施例中,通过将键转换为整型数,根据整型数在值地址数组中的偏移量获取值的存储地址,再根据值的存储地址获取键对应的值,该方式读取数据的效率非常高。
步骤S304,接收存储服务器返回的键对应的值,将键对应的值还原为待访问的文件夹下的对象。
在一个实施例中,存储服务器返回的键对应的值通常为数据包,可将数据包按照预设格式进行解码,进一步将解码后的数据还原成用户界面中的应用程序、邮件、文本文件、联系人信息等。若上述值中存储了文件的引用,则步骤S304可根据上述值中存储的文件的引用获取文件数据。
用户访问该数据,包括对对象进行创建、重命名、查看、移动、删除、打开等类似于本地对象的操作。
上述数据访问方法,访问文件夹数据时,以文件夹标识为键,先将键分发到键对应的存储服务器,再通过存储服务器获取键对应的存储了文件夹下的对象的值。上述方式不但适于访问云存储分布式环境中存储的数据,而且基于键值对的数据访问方式相比于传统的关系型数据库的数据访问方式,更加快速,适合于互联网应用的海量访问需求,提高了数据访问效率。
如图4所示,一种数据存储***,包括至少一个云文件***401和多个存储服务器402,其中:
云文件***401用于获取待存储的文件夹的文件夹标识以及该文件夹下的所有对象。
在一个实施例中,文件夹标识为文件夹所属用户的用户标识与文件夹的用户文件夹ID的组合。对于一个用户,用户的文件夹与用户文件夹ID是一一对应的。对于不同的用户,用户的文件夹与文件夹标识一一对应。
上述文件夹标识组合方式,方便用户以文件夹标识为键访问文件夹下的对象。
在一个实施例中,云文件***401可获取待存储的文件夹中的文件的数据实体或文件的引用以及子文件夹的属性信息。
云文件***401还用于以文件夹标识为键、以文件夹下的所有对象为值组成键值对,将键值对发送给键对应的存储服务器。
在一个实施例中,云文件***401可将待存储的文件夹中的文件的数据实体或文件的引用以及子文件夹的属性信息作为value,与文件夹标识组成key-value,将组成的key-value按照预设格式封装成数据包,将数据包发送给key对应的存储服务器402。
本实施例中,以文件夹为存储单元,存储文件夹时,只需要存储直接位于文件夹下的对象的相关信息,而不需要存储文件夹的子文件夹下的对象,当有对象被修改或有新对象被创建时,可将对象所在的文件夹作为存储单元进行存储,而不需要存储内容没有被修改的子文件夹,从而可提高存储效率。
具体的,在一个实施例中,云文件***401将键值对发送给键对应的存储服务器时,可将键通过预设算法转换为整型数,获取整型数对应的存储服务器,将键值对传送到对应的存储服务器。
本实施例中,将键通过预设算法转换为整型数,获取整型数对应的存储服务器作为目标存储服务器,可快速的定位到目标存储服务器,提高了数据存储的效率。
存储服务器402用于接收云文件***401发送的键值对,根据所述键存储所述值。
在一个实施例中,存储服务器402可存储键值对的值,获取值的存储地址,将键通过预设算法转换为整型数,获取整型数在该存储服务器的值地址数组中的偏移量,在值地址数组中该偏移量对应的位置保存值的存储地址。
本实施例中,云文件***401根据键获取对应的存储服务器402,对应的存储服务器402存储键对应的值后,根据键获取对应的值地址数组的下标,并将值的存储地址保存在值地址数组中下标对应的位置。上述方式可以文件夹为存储单位,快速的将文件夹下的所有对象在分布式环境中进行存储,并且不会因为数据存储量的上升而降低性能,存储效率高。
上述数据存储***,将文件夹作为存储单位,以文件夹标识为键,根据键存储键对应的值,该值中存储文件夹下的对象。上述键值对的存储方式相比于传统的关系型数据库的事务模型存储方式,能提供更大规模更高性能的存储,且在可用性和分区扩展性上比较优异,适合于云存储的海量存储需求以及分布式存储需求,提高了数据存储效率。
如图5所示,在一个实施例中,一种数据访问***,包括至少一个云文件***501和多个存储服务器502,其中:
云文件***501用于获取数据访问请求,数据访问请求中包含待访问的文件夹的文件夹标识。
在一个实施例中,云文件***501可向用户提供应用接口供用户登录,当用户登录时,可触发访问用户的根目录文件夹的请求。当用户在用户界面中执行打开文件夹的操作时,可触发访问该文件夹的请求。
在一个实施例中,文件夹标识为文件夹所属用户的用户标识与文件夹的用户文件夹ID的组合。对于一个用户,用户的文件夹与用户文件夹ID是一一对应的。对于不同的用户,用户的文件夹与文件夹标识一一对应。
上述文件夹标识组合方式,方便用户在云存储中以文件夹标识为键访问文件夹下的对象。
云文件***501还用于以文件夹标识为键,将键发送给键对应的存储服务器。
在一个实施例中,云文件***501可将键通过预设算法转换为整型数,获取整型数对应的存储服务器,将键传送到对应的存储服务器。
具体的,云文件***501可将key通过特定hash摘要算法转换为整型数。
在一个实施例中,存储服务器502存储的value的key对应的整型数相邻。不同的存储服务器502存储不同区间段的整型数对应的key的value。本实施例中,分发服务器502可根据整型数对应的区间段查找到对应的存储服务器502。
本实施例中,获取整型数所属的区间段,根据区间段查找到对应的存储服务器,可快速的定位到目标存储服务器,提高了数据访问的效率。
在另一个实施例中,不同存储服务器502存储相同数量的value,且同一存储服务器存储的value的key对应的整型数相邻。云文件***501可将存储服务器502用从0开始的自然数依次编号,计算整型数除以存储服务器可存储的value数量获得的整数商,将整数商对应的存储服务器502作为目标存储服务器。
本实施例中,经过简单的计算即可获取整型数对应的目标存储服务器,提高了云存储分布式环境中数据存储的效率。
存储服务器502用于接收云文件***501发送的键,获取键对应的值,将键对应的值发送给云文件***501,该值存储了文件夹下的所有对象。
在一个实施例中,文件夹下的对象包括子文件夹以及文件。在一个实施例中,上述值存储了文件夹中的文件的数据实体或文件的引用以及子文件夹的属性信息。
本实施例中,访问文件夹时,只需要获取直接位于该文件夹下的对象的数据,而不需要获取该文件夹的子文件夹下的对象的数据,从而可提高访问效率。
具体的,在一个实施例中,存储服务器502可将键通过预设算法转换为整型数,获取整型数在该存储服务器的值地址数组中的偏移量,在值地址数组中该偏移量对应的位置获取键对应的值的存储地址,根据存储地址获取键对应的值。
本实施例中,通过将键转换为整型数,根据整型数在值地址数组中的偏移量获取值的存储地址,再根据值的存储地址获取键对应的值,该方式读取数据的效率非常高。
云文件***501还用于将存储服务器502返回的键对应的值还原为待访问的文件夹下的对象。
在一个实施例中,存储服务器502返回的键对应的值通常为数据包,云文件***501可将数据包按照预设格式进行解码,进一步将解码后的数据还原成用户界面中的应用程序、邮件、文本文件、联系人信息等。若上述值中存储了文件的引用,云文件***501可根据上述值中存储的文件的引用获取文件数据。
上述数据访问***,访问文件夹数据时,以文件夹标识为键,先将键分发到键对应的存储服务器,再通过存储服务器获取键对应的存储了文件夹下的对象的值。上述方式不但适于访问云存储分布式环境中存储的数据,而且基于键值对的数据访问方式相比于传统的关系型数据库的数据访问方式,更加快速,适合于互联网应用的海量访问需求,提高了数据访问效率。
下面结合图6以具体的实例来说明数据存储方法和数据访问方法的原理。
在一个实施例中,存储数据的具体过程如下:
(1)云文件***获取待存储的文件夹的文件夹标识以及该文件夹下的所有对象,以文件夹标识为键、以文件夹下的所有对象为值组成键值对,将键值对发送给键对应的存储服务器。
文件夹下的对象包括子文件夹以及应用程序、邮件、文本文件、联系人信息等各种类型的文件。
(2)存储服务器用于接收云文件***发送的键值对,根据所述键存储所述值。
存储服务器将值以数据块的形式存储在数据库中,优选的,将数据块存储在不固定数据结构的非关系型数据库(即nosql型数据库)中。
在一个实施例中,访问数据的具体过程如下:
(1)云文件***用于获取数据访问请求,数据访问请求中包含待访问的文件夹的文件夹标识,其中文件夹标识为用户标识和用户文件夹ID的组合。
(2)云文件***以文件夹标识为键,将键发送给键对应的存储服务器。
(3)存储服务器接收云文件***发送的键,根据键获取键对应的值,将键对应的值返回给云文件***,该值存储了待访问的文件夹下的所有对象。
被频繁访问的数据可存储在cache组件中。存储服务器从数据库或cache组件中获取键对应的值。
(4)云文件***将键对应的值还原成文件夹下的对象。文件夹下的对象包括应用程序、邮件、文本文件、联系人信息等各种类型的文件以及子文件夹。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (18)
1.一种数据存储方法,包括以下步骤:
获取待存储的文件夹的文件夹标识以及该文件夹下的所有对象;
以所述文件夹标识为键、以所述文件夹下的所有对象为值组成键值对,将键值对发送给所述键对应的存储服务器;
所述存储服务器根据所述键存储所述值。
2.根据权利要求1所述的数据存储方法,其特征在于,所述将键值对发送给所述键对应的存储服务器的步骤包括:
将所述键通过预设算法转换为整型数;
获取整型数对应的存储服务器;
将所述键值对传送到所述对应的存储服务器。
3.根据权利要求1或2所述的数据存储方法,其特征在于,所述存储服务器根据所述键存储所述值的步骤包括:
通过所述存储服务器存储所述值,获取所述值的存储地址,将所述键通过预设算法转换为整型数,获取所述整型数在该存储服务器的值地址数组中的偏移量,在所述值地址数组中该偏移量对应的位置保存所述所述值的存储地址。
4.根据权利要求1所述的数据存储方法,其特征在于,所述文件夹标识包括所述文件夹所属用户的用户标识与所述文件夹的用户文件夹ID的组合。
5.根据权利要求3所述的数据存储方法,其特征在于,所述通过所述存储服务器存储所述值包括:
将所述值按照预定格式打包成数据包,并将该数据包以数据块的形式存储在所述存储服务器中。
6.一种数据访问方法,包括以下步骤:
获取数据访问请求,所述数据访问请求中包含待访问的文件夹的文件夹标识;
以所述文件夹标识为键,将所述键发送给所述键对应的存储服务器;
通过所述存储服务器获取所述键对应的值,所述值存储了所述文件夹下的所有对象;
接收所述存储服务器返回的所述键对应的值,将所述键对应的值还原为所述文件夹下的对象。
7.根据权利要求6所述的数据访问方法,其特征在于,所述将所述键发送给所述键对应的存储服务器的步骤包括:
将所述键通过预设算法转换为整型数;
获取整型数对应的存储服务器;
将所述键传送到所述对应的存储服务器。
8.根据权利要求6或7所述的数据访问方法,其特征在于,所述通过所述存储服务器获取所述键对应的值的步骤包括:
通过所述存储服务器将所述键通过预设算法转换为整型数,获取所述整型数在该存储服务器的值地址数组中的偏移量,在所述值地址数组中该偏移量对应的位置获取所述键对应的值的存储地址,根据所述存储地址获取所述值。
9.根据权利要求6所述的数据访问方法,其特征在于,所述文件夹标识包括所述文件夹所属用户的用户标识与所述文件夹的用户文件夹ID的组合。
10.根据权利要求8所述的数据访问方法,其特征在于,所述根据所述存储地址获取所述值包括:
根据所述存储地址获取相应的数据包,将所述数据包按照预设格式进行解码得到所述值。
11.一种数据存储***,其特征在于,包括至少一个云文件***和多个存储服务器,其中:
所述云文件***用于获取待存储的文件夹的文件夹标识以及该文件夹下的所有对象,以所述文件夹标识为键、以所述文件夹下的所有对象为值组成键值对,将键值对发送给所述键对应的存储服务器;
所述存储服务器用于接收所述云文件***发送的键值对,根据所述键存储所述值。
12.根据权利要求11所述的数据存储***,其特征在于,所述云文件***还用于在将键值对发送给所述键对应的存储服务器时,将所述键通过预设算法转换为整型数,获取整型数对应的存储服务器,将所述键值对传送到所述对应的存储服务器。
13.根据权利要求11或12所述的数据存储***,其特征在于,所述存储服务器用于接收到所述键值对时,存储所述值,获取所述值的存储地址,将所述键通过预设算法转换为整型数,获取所述整型数在该存储服务器的值地址数组中的偏移量,在所述值地址数组中该偏移量对应的位置保存所述值的存储地址。
14.根据权利要求11所述的数据存储***,其特征在于,所述文件夹标识包括所述文件夹所属用户在云文件***中的用户标识与所述文件夹的用户文件夹ID的组合。
15.一种数据访问***,其特征在于,包括至少一个云文件***和多个存储服务器;
所述云文件***用于获取数据访问请求,所述数据访问请求中包含待访问的文件夹的文件夹标识;
所述云文件***还用于以所述文件夹标识为键,将所述键发送给所述键对应的存储服务器;
所述存储服务器用于接收所述云文件***发送的键,获取所述键对应的值,将所述键对应的值返回给云文件***,所述值存储了所述文件夹下的所有对象;
所述云文件***还用于将所述键对应的值还原为所述文件夹下的对象。
16.根据权利要求15所述的数据访问***,其特征在于,所述云文件***还用于在将所述键发送给所述键对应的存储服务器时,将所述键通过预设算法转换为整型数,获取整型数对应的存储服务器,将所述键传送到对应的存储服务器。
17.根据权利要求15或16所述的数据访问***,其特征在于,所述存储服务器还用于在获取所述键对应的值时,将所述键通过预设算法转换为整型数,获取所述整型数在该存储服务器的值地址数组中的偏移量,在所述值地址数组中该偏移量对应的位置获取所述键对应的值的存储地址,根据所述存储地址获取所述值。
18.根据权利要求15所述的数据访问***,其特征在于,所述文件夹标识包括所述文件夹所属用户的在云文件***中的用户标识与所述文件夹的用户文件夹ID的组合。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210079243.XA CN103327052B (zh) | 2012-03-22 | 2012-03-22 | 数据存储方法和***以及数据访问方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210079243.XA CN103327052B (zh) | 2012-03-22 | 2012-03-22 | 数据存储方法和***以及数据访问方法和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103327052A true CN103327052A (zh) | 2013-09-25 |
CN103327052B CN103327052B (zh) | 2018-04-03 |
Family
ID=49195582
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210079243.XA Active CN103327052B (zh) | 2012-03-22 | 2012-03-22 | 数据存储方法和***以及数据访问方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103327052B (zh) |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104077374A (zh) * | 2014-06-24 | 2014-10-01 | 华为技术有限公司 | 一种实现ip盘文件存储的方法及装置 |
CN104184822A (zh) * | 2014-08-29 | 2014-12-03 | 海视云(北京)科技有限公司 | 一种数据同步的方法及*** |
CN104537076A (zh) * | 2014-12-31 | 2015-04-22 | 北京奇艺世纪科技有限公司 | 一种文件读写方法及装置 |
CN104537023A (zh) * | 2014-12-19 | 2015-04-22 | 华为技术有限公司 | 一种反向索引记录的存储方法及装置 |
CN104951540A (zh) * | 2015-06-19 | 2015-09-30 | 阿里巴巴集团控股有限公司 | 文件处理方法及装置 |
WO2015154625A1 (zh) * | 2014-09-05 | 2015-10-15 | 中兴通讯股份有限公司 | 一种定时事件处理方法、存储方法、执行方法及相应装置 |
WO2015180650A1 (zh) * | 2014-05-29 | 2015-12-03 | 华为技术有限公司 | 在存储网络中的键值生成方法及装置 |
CN105930104A (zh) * | 2016-05-17 | 2016-09-07 | 百度在线网络技术(北京)有限公司 | 数据存储方法和装置 |
CN106202848A (zh) * | 2015-05-05 | 2016-12-07 | 北大方正集团有限公司 | 医学影像文件的获取方法、用户终端及主服务器 |
CN106649451A (zh) * | 2016-09-22 | 2017-05-10 | 北京奇虎科技有限公司 | 数据更新方法及装置 |
CN107301183A (zh) * | 2016-04-14 | 2017-10-27 | 杭州海康威视数字技术股份有限公司 | 一种文件存储方法及装置 |
CN107301177A (zh) * | 2016-04-14 | 2017-10-27 | 杭州海康威视数字技术股份有限公司 | 一种文件存储方法及装置 |
CN108460054A (zh) * | 2017-02-22 | 2018-08-28 | 北京京东尚科信息技术有限公司 | 一种改进云存储***性能的方法、***和装置 |
CN108846129A (zh) * | 2018-07-02 | 2018-11-20 | 腾讯科技(深圳)有限公司 | 存储数据访问方法、装置及存储介质 |
CN109063051A (zh) * | 2018-07-19 | 2018-12-21 | 佛山科学技术学院 | 一种工业大数据的存储方法 |
CN109164977A (zh) * | 2018-07-23 | 2019-01-08 | 中国建设银行股份有限公司 | 一种数据存储***和方法、存储介质 |
CN109474827A (zh) * | 2018-12-03 | 2019-03-15 | 四川巧夺天工信息安全智能设备有限公司 | 监控视频快速转码的方法 |
CN112035402A (zh) * | 2019-06-04 | 2020-12-04 | 顺丰科技有限公司 | 一种文件存储方法、装置及终端设备 |
CN112437078A (zh) * | 2020-11-20 | 2021-03-02 | 腾讯科技(深圳)有限公司 | 文件存储方法、装置、设备及计算机可读存储介质 |
CN112637327A (zh) * | 2020-12-21 | 2021-04-09 | 北京奇艺世纪科技有限公司 | 一种数据处理方法、装置及*** |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090177721A1 (en) * | 2008-01-09 | 2009-07-09 | Yasuyuki Mimatsu | Management of quality of services in storage systems |
CN101496005A (zh) * | 2005-12-29 | 2009-07-29 | 亚马逊科技公司 | 具有网络服务客户接口的分布式存储*** |
CN101504670A (zh) * | 2009-03-04 | 2009-08-12 | 成都市华为赛门铁克科技有限公司 | 数据操作方法、***、客户端和数据服务器 |
CN101692239A (zh) * | 2009-10-19 | 2010-04-07 | 浙江大学 | 一种分布式文件***元数据分配方法 |
CN102298641A (zh) * | 2011-09-14 | 2011-12-28 | 清华大学 | 一种基于键值库的文件与结构化数据统一存储方法 |
-
2012
- 2012-03-22 CN CN201210079243.XA patent/CN103327052B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101496005A (zh) * | 2005-12-29 | 2009-07-29 | 亚马逊科技公司 | 具有网络服务客户接口的分布式存储*** |
US20090177721A1 (en) * | 2008-01-09 | 2009-07-09 | Yasuyuki Mimatsu | Management of quality of services in storage systems |
CN101504670A (zh) * | 2009-03-04 | 2009-08-12 | 成都市华为赛门铁克科技有限公司 | 数据操作方法、***、客户端和数据服务器 |
CN101692239A (zh) * | 2009-10-19 | 2010-04-07 | 浙江大学 | 一种分布式文件***元数据分配方法 |
CN102298641A (zh) * | 2011-09-14 | 2011-12-28 | 清华大学 | 一种基于键值库的文件与结构化数据统一存储方法 |
Cited By (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015180650A1 (zh) * | 2014-05-29 | 2015-12-03 | 华为技术有限公司 | 在存储网络中的键值生成方法及装置 |
US10437849B2 (en) | 2014-06-24 | 2019-10-08 | Huawei Technologies Co., Ltd. | Method and apparatus for implementing storage of file in IP disk |
CN104077374A (zh) * | 2014-06-24 | 2014-10-01 | 华为技术有限公司 | 一种实现ip盘文件存储的方法及装置 |
WO2015196899A1 (zh) * | 2014-06-24 | 2015-12-30 | 华为技术有限公司 | 一种实现ip盘文件存储的方法及装置 |
CN104184822A (zh) * | 2014-08-29 | 2014-12-03 | 海视云(北京)科技有限公司 | 一种数据同步的方法及*** |
WO2015154625A1 (zh) * | 2014-09-05 | 2015-10-15 | 中兴通讯股份有限公司 | 一种定时事件处理方法、存储方法、执行方法及相应装置 |
CN104537023B (zh) * | 2014-12-19 | 2018-07-31 | 华为技术有限公司 | 一种反向索引记录的存储方法及装置 |
CN104537023A (zh) * | 2014-12-19 | 2015-04-22 | 华为技术有限公司 | 一种反向索引记录的存储方法及装置 |
CN104537076A (zh) * | 2014-12-31 | 2015-04-22 | 北京奇艺世纪科技有限公司 | 一种文件读写方法及装置 |
CN104537076B (zh) * | 2014-12-31 | 2017-12-08 | 北京奇艺世纪科技有限公司 | 一种文件读写方法及装置 |
CN106202848A (zh) * | 2015-05-05 | 2016-12-07 | 北大方正集团有限公司 | 医学影像文件的获取方法、用户终端及主服务器 |
CN104951540A (zh) * | 2015-06-19 | 2015-09-30 | 阿里巴巴集团控股有限公司 | 文件处理方法及装置 |
CN107301183A (zh) * | 2016-04-14 | 2017-10-27 | 杭州海康威视数字技术股份有限公司 | 一种文件存储方法及装置 |
CN107301177A (zh) * | 2016-04-14 | 2017-10-27 | 杭州海康威视数字技术股份有限公司 | 一种文件存储方法及装置 |
CN107301183B (zh) * | 2016-04-14 | 2020-02-18 | 杭州海康威视数字技术股份有限公司 | 一种文件存储方法及装置 |
CN105930104A (zh) * | 2016-05-17 | 2016-09-07 | 百度在线网络技术(北京)有限公司 | 数据存储方法和装置 |
CN106649451A (zh) * | 2016-09-22 | 2017-05-10 | 北京奇虎科技有限公司 | 数据更新方法及装置 |
CN108460054A (zh) * | 2017-02-22 | 2018-08-28 | 北京京东尚科信息技术有限公司 | 一种改进云存储***性能的方法、***和装置 |
CN108846129A (zh) * | 2018-07-02 | 2018-11-20 | 腾讯科技(深圳)有限公司 | 存储数据访问方法、装置及存储介质 |
CN108846129B (zh) * | 2018-07-02 | 2023-04-18 | 腾讯科技(深圳)有限公司 | 存储数据访问方法、装置及存储介质 |
CN109063051A (zh) * | 2018-07-19 | 2018-12-21 | 佛山科学技术学院 | 一种工业大数据的存储方法 |
CN109164977B (zh) * | 2018-07-23 | 2022-01-11 | 中国建设银行股份有限公司 | 一种数据存储***和方法、存储介质 |
CN109164977A (zh) * | 2018-07-23 | 2019-01-08 | 中国建设银行股份有限公司 | 一种数据存储***和方法、存储介质 |
CN109474827A (zh) * | 2018-12-03 | 2019-03-15 | 四川巧夺天工信息安全智能设备有限公司 | 监控视频快速转码的方法 |
CN109474827B (zh) * | 2018-12-03 | 2022-11-29 | 四川巧夺天工信息安全智能设备有限公司 | 监控视频快速转码的方法 |
CN112035402A (zh) * | 2019-06-04 | 2020-12-04 | 顺丰科技有限公司 | 一种文件存储方法、装置及终端设备 |
CN112437078A (zh) * | 2020-11-20 | 2021-03-02 | 腾讯科技(深圳)有限公司 | 文件存储方法、装置、设备及计算机可读存储介质 |
CN112637327A (zh) * | 2020-12-21 | 2021-04-09 | 北京奇艺世纪科技有限公司 | 一种数据处理方法、装置及*** |
CN112637327B (zh) * | 2020-12-21 | 2022-07-22 | 北京奇艺世纪科技有限公司 | 一种数据处理方法、装置及*** |
Also Published As
Publication number | Publication date |
---|---|
CN103327052B (zh) | 2018-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103327052A (zh) | 数据存储方法和***以及数据访问方法和*** | |
CN103141060B (zh) | 内容路由器转发设备 | |
US9268716B2 (en) | Writing data from hadoop to off grid storage | |
CN111177302B (zh) | 业务单据处理方法、装置、计算机设备和存储介质 | |
US20140181116A1 (en) | Method and device of cloud storage | |
CN102971732A (zh) | 键/值存储器的集成分级查询处理的***结构 | |
CN104133882A (zh) | 一种基于hdfs的小文件处理方法 | |
CN104408111A (zh) | 一种删除重复数据的方法及装置 | |
CN105812351A (zh) | 实现会话共享的方法和*** | |
CN108717457B (zh) | 一种电子商务平台大数据处理方法和*** | |
CN104679665A (zh) | 一种实现分布式文件***块存储的方法及*** | |
CN103761102B (zh) | 一种统一数据服务平台及其实现方法 | |
CN106874348A (zh) | 文件存储和索引方法、装置及读取文件的方法 | |
CN103049574B (zh) | 实现文件动态副本的键值文件***及方法 | |
CN108959562B (zh) | 应用在区块链上的海量规则数据处理方法和*** | |
CN105260429A (zh) | 一种基于多重布隆过滤器的icn网络信息名字查找方法 | |
CN104217023A (zh) | 一种利用打包技术解决地图瓦片存储的方法 | |
CN105354250A (zh) | 一种面向云存储的数据存储方法及装置 | |
CN111045857A (zh) | 数据备份和恢复的方法、电子设备和计算机可读存储介质 | |
CN105045762A (zh) | 一种配置文件的管理方法及装置 | |
Von der Weth et al. | Multiterm keyword search in NoSQL systems | |
CN102622352B (zh) | 一种实现共享文件的方法、服务器及*** | |
CN102378407B (zh) | 一种物联网中的对象名字解析***及其解析方法 | |
CN106919696A (zh) | Seo站点构建方法及seo请求的响应方法 | |
CN103136294A (zh) | 文件操作方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |