CN103383690B - 分布式数据存储方法及系统 - Google Patents

分布式数据存储方法及系统 Download PDF

Info

Publication number
CN103383690B
CN103383690B CN201210137501.5A CN201210137501A CN103383690B CN 103383690 B CN103383690 B CN 103383690B CN 201210137501 A CN201210137501 A CN 201210137501A CN 103383690 B CN103383690 B CN 103383690B
Authority
CN
China
Prior art keywords
page
disk
storage unit
data resource
cryptographic hash
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
Application number
CN201210137501.5A
Other languages
English (en)
Other versions
CN103383690A (zh
Inventor
李雅卿
朱建平
程彬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Tencent Computer Systems Co Ltd
Original Assignee
Shenzhen Tencent Computer Systems Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Tencent Computer Systems Co Ltd filed Critical Shenzhen Tencent Computer Systems Co Ltd
Priority to CN201210137501.5A priority Critical patent/CN103383690B/zh
Publication of CN103383690A publication Critical patent/CN103383690A/zh
Application granted granted Critical
Publication of CN103383690B publication Critical patent/CN103383690B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种分布式数据存储方法,包括以下步骤:获取数据资源和与所述数据资源对应的数据标识;计算所述数据标识的哈希值;根据所述哈希值计算所述数据资源对应的磁盘页在存储单元中的页号和所述磁盘页中的磁盘块的块号;根据所述磁盘页的页号和磁盘块的块号将所述数据资源存储到对应的所述磁盘页的所述磁盘块中。此外,还提供了一种分布式数据存储系统。上述分布式数据存储方法和系统可以减小内存损耗,提高存储效率。

Description

分布式数据存储方法及系统
【技术领域】
本发明涉及分布式存储领域,特别涉及一种分布式数据存储方法及系统。
【背景技术】
分布式存储即将数据资源分散存储在多台独立的设备上,每台设备即为用于存储数据的独立的存储单元。传统的网络存储系统采用集中的存储服务器存放所有数据资源,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。而分布式存储采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。通常当数据量达到TB甚至PB时,对数据资源进行分布式存储。
传统技术中的分布式数据存储方法中,预设有全局索引。全局索引中以键值对的形式记录了数据资源的数据标识和数据对应的存储区域。例如,若全局索引中A资源对应1号磁盘,B资源对应2号磁盘,则A资源存储于1号磁盘上,B资源存储于2号磁盘上,通常采用数据库存储该全局索引。当全局索引较大时,则采用分表的形式存储。
传统技术中的分布式数据存储方法为了提高查询效率,避免与硬盘的I/O(硬盘读写)操作,全局索引存储于内存中。当存储的单条数据较小时,全局索引会变得非常庞大,且全局索引会随着数据量的增大而增大,从而占用大量内存。例如,web应用中需要存储大量的图片或图标文件作为素材。图片或图标文件通常单个文件占用的存储空间较小,但文件数量庞大,需要在全局索引中存在与其对应的庞大的索引项,从而消耗了大量内存。
【发明内容】
基于此,有必要提供一种降低内存消耗的分布式数据存储方法。
一种分布式数据存储方法,包括以下步骤:
获取数据资源和与所述数据资源对应的数据标识;
计算所述数据标识的哈希值;
根据所述哈希值计算所述数据资源对应的磁盘页在存储单元中的页号和所述磁盘页中的磁盘块的块号;
根据所述磁盘页的页号和磁盘块的块号将所述数据资源存储到对应的所述磁盘页的所述磁盘块中。
此外,还提供了一种相应的降低内存消耗的分布式数据存储方法。
一种分布式数据存储方法,所述数据存储于存储单元的磁盘页中,所述磁盘页包括基本页和溢出页,包括以下步骤:
获取数据资源和与所述数据资源对应的数据标识;
计算所述数据标识的哈希值;
根据所述哈希值计算所述数据资源对应的基本页在存储单元中的页号和所述基本页中的磁盘块的块号;
根据所述基本页的页号和磁盘块的块号将所述数据资源存储到对应的所述基本页的所述磁盘块中。
在其中一个实施例中,所述基本页中的磁盘块还包括块头区域,所述块头区域内存储有所述磁盘块和溢出页中的磁盘块之间的对应关系;
所述方法还包括:
当所述基本页的磁盘块的空间不足时,根据所述磁盘块的块头区域内存储的所述对应关系将所述数据资源存储到所述基本页和与所述基本页中的磁盘块对应的溢出页中的磁盘块中。
在其中一个实施例中,所述根据所述磁盘页/基本页的页号和磁盘块的块号将所述数据资源存储到对应的所述磁盘页/基本页的所述磁盘块中的步骤包括:
根据所述磁盘页/基本页的页号和磁盘块的块号将所述数据资源以类型-长度-数据的形式存储到对应的所述磁盘页/基本页的所述磁盘块中。
在其中一个实施例中,在所述根据所述哈希值计算所述数据资源对应的磁盘页/基本页在存储单元中的页号和所述磁盘页/基本页中的磁盘块的块号的步骤之前,还包括:
根据所述哈希值获取所述数据资源对应的存储单元,每个所述的存储单元对应多个哈希值。
在其中一个实施例中,所述方法还包括:
当需扩容时,添加扩容存储单元;
获取存储单元对应的至少1个哈希值;
将所述至少1个哈希值在所述存储单元中对应的数据资源移动到所述扩容存储单元中;
将所述至少1个哈希值与所述存储单元之间的对应关系更改为所述至少1个哈希值与所述扩容存储单元之间的对应关系。
此外,还有必要提供一种降低内存消耗的分布式数据存储系统。
一种分布式数据存储系统,包括:
数据资源获取模块,用于获取数据资源和与所述数据资源对应的数据标识;
哈希值计算模块,用于计算所述数据标识的哈希值;
磁盘块定位模块,用于根据所述哈希值计算所述数据资源对应的磁盘页在存储单元中的页号和所述磁盘页中的磁盘块的块号;
数据资源存储模块,用于根据所述磁盘页的页号和磁盘块的块号将所述数据资源存储到对应的所述磁盘页的所述磁盘块中。
此外,还提供了一种相应的降低内存消耗的分布式数据存储系统。
一种分布式数据存储系统,所述数据存储于存储单元的磁盘页中,磁盘页包括基本页和溢出页,包括以下模块:
数据资源获取模块,用于获取数据资源和与所述数据资源对应的数据标识;
哈希值计算模块,用于计算所述数据标识的哈希值;
磁盘块定位模块,用于根据所述哈希值计算所述数据资源对应的基本页在存储单元中的页号和所述基本页中的磁盘块的块号;
数据资源存储模块,用于根据所述基本页的页号和磁盘块的块号将所述数据资源存储到对应的所述基本页的所述磁盘块中。
在其中一个实施例中,所述基本页中的磁盘块还包括块头区域,所述块头区域内存储有所述磁盘块和溢出页中的磁盘块之间的对应关系;
所述数据资源存储模块还用于当所述基本页的磁盘块的空间不足时,根据所述磁盘块的块头区域内存储的所述对应关系将所述数据资源存储到所述基本页和与所述基本页中的磁盘块对应的溢出页中的磁盘块中。
在其中一个实施例中,所述数据资源存储模块还用于根据所述磁盘页/基本页的页号和磁盘块的块号将所述数据资源以类型-长度-数据的形式存储到对应的所述磁盘页/基本页的所述磁盘块中。
在其中一个实施例中,所述系统还包括:
存储单元路由模块,用于根据所述哈希值获取所述数据资源对应的存储单元,每个所述的存储单元对应多个哈希值。
在其中一个实施例中,所述系统还包括:
扩容模块,用于当需扩容时添加扩容存储单元,获取存储单元对应的至少1个哈希值,将所述至少1个哈希值在所述存储单元中对应的数据资源移动到所述扩容存储单元中;
所述扩容模块还用于将所述至少1个哈希值与所述存储单元之间的对应关系更改为所述至少1个哈希值与所述扩容存储单元之间的对应关系。
上述分布式数据存储方法和系统,由于存储单元划分多个磁盘页/基本页,而磁盘页/基本页又包含多个磁盘块,根据数据资源的数据标识定位数据资源对应的磁盘页/基本页和磁盘块,并将数据资源存储到对应的磁盘块中。当磁盘块的物理位置连续排列时,不需要在内存中维护数据标识和数据存储位置的全局索引;当磁盘块的物理位置随机时,由于磁盘块的数量固定,磁盘块的编号与物理位置的映射表的大小固定,使得耗费的内存大小固定,不会因为数据量的增加而变大。且由于一个磁盘块中可存储多个数据资源,因此磁盘块的编号与物理位置的映射表中的记录数必然小于传统技术中全局索引的记录数。因此,上述分布式数据存储方法和系统能有效地减少内存损耗。
【附图说明】
图1为一个实施例中分布式数据存储方法的流程图;
图2为一个实施例中存储单元的逻辑结构图;
图3为另一个实施例中存储单元的逻辑结构图;
图4为一个实施例中路由装置查询路由表定位存储单元的过程示意图;
图5为一个实施例中存储单元在扩容时的过程示意图;
图6为另一个实施例中分布式数据存储方法的流程图;
图7为另一个实施例中存储单元的逻辑结构图;
图8为另一个实施例中存储单元的逻辑结构图;
图9为另一个实施例中存储单元的逻辑结构图;
图10为另一个实施例中基本页中的磁盘块与溢出页中的磁盘块的对应关系的示意图;
图11为一个实施例中分布式数据存储系统的结构示意图;
图12为另一个实施例中分布式数据存储系统的结构示意图;
图13为另一个实施例中分布式数据存储系统的结构示意图;
图14为另一个实施例中分布式数据存储系统的结构示意图。
【具体实施方式】
在一个实施例中,如图1所示,一种分布式数据存储方法,包括以下步骤:
步骤S102,获取数据资源和与数据资源对应的数据标识。
数据资源的形式可以是文件、字符串、数据流。数据标识可以是字符串或数字,用于区分数据资源。一个实施例中,先获取数据存储请求,从数据存储请求中提取数据资源和与数据资源对应的数据标识。在另一个实施例中,可在获取数据资源后,根据数据资源计算得到与数据资源对应的数据标识。
例如,web应用中,先获取文件上传请求,然后从文件上传请求中提取出文件(数据资源)和文件名(数据标识)。当文件较大时,可将文件切分成多个小文件,然后通过计算每个小文件的MD5(MessageDigestAlgorithm5,消息摘要算法第五版)码获取每个小文件的数据标识(即(md5(key))。
步骤S104,计算数据标识的哈希值。
可通过预设的哈希函数计算数据标识的哈希值。在一个实施例中,可通过预设的哈希函数计算得到在预设的数字范围内的数据标识的哈希值。例如,预设的哈希函数可定义数字范围1至9999,然后将任意数据标识映射到1至9999之间的任意数字上。
步骤S106,根据哈希值计算数据资源对应的磁盘页在存储单元中的页号和磁盘页中的磁盘块的块号。
存储单元为底层存储资源(磁盘、磁带)上划分的独立的存储区域,多个存储单元可以位于分布式存储中的多个存储节点上。如图2和图3所示,存储单元内包括多个磁盘页,每个磁盘页包括多个磁盘块。磁盘页和磁盘块均为存储单元内的子存储区域。
在一个实施例中,存储单元内的磁盘页由1至m编号,每个磁盘页中的磁盘块由1至n编号,且磁盘页和磁盘块的大小固定。然后根据哈希值、磁盘页的数量以及磁盘块的数量获取与数据资源对应的磁盘页在存储单元中的页号以及磁盘页中的磁盘块的块号。
进一步的,可通过下列公式计算数据资源对应的磁盘页在存储单元中的页号以及磁盘页中的磁盘块的块号:
remainder=hashcode%(m×n);
page_no=remainder/m;
bucket_no=remainder%m
其中,%表示取余,hashcode为由步骤S104计算的到的哈希值,m为每个磁盘页中磁盘块的个数,n为一个存储单元中的磁盘页的个数,remainder为计算的中间数据,page_no为数据资源对应的磁盘页在存储单元中的页号,bucket_no为数据资源对应的磁盘页中的磁盘块的块号。
例如,当哈希值(hashcode)为263,每个磁盘页中磁盘块的个数(m)为20,存储单元内磁盘页的数量(n)为12时,可计算得到数据资源对应的磁盘页在存储单元中的页号(page_no)为1号,数据资源对应的1号磁盘页中的磁盘块的块号(bucket_no)为3号。
步骤S108,根据磁盘页的页号和磁盘块的块号将数据资源存储到对应的磁盘块中。
在一个实施例中,存储单元内的磁盘页和磁盘块的物理存储位置连续,其编号按照物理存储位置排列。在计算得到数据资源对应的磁盘页在存储单元中的页号以及磁盘页中的磁盘块的块号之后,可先获取存储单元的起始位置,根据该页号和块号在存储单元的物理存储位置中顺序查找与该页号和块号对应的磁盘块,然后将数据资源存储到该磁盘块中。
在另一个实施例中,可预设磁盘页和磁盘块与物理存储位置的映射表。该映射表可存储在内存中,在计算得到数据资源对应的磁盘页在存储单元中的页号以及磁盘页中的磁盘块的块号之后,可根据该页号和块号在该映射表中查询其对应的物理存储位置,然后将数据资源存储到该物理存储位置中。
进一步的,根据磁盘页的页号和磁盘块的块号将数据资源存储到对应的磁盘页中的磁盘块中的步骤可具体为:根据磁盘页的页号和磁盘块的块号将数据资源以类型-长度-数据的形式存储到对应的磁盘块中。
类型-长度-数据即TLV(type-length-value)。即将数据资源的类型信息和长度信息与数据资源整合后存储。采用TLV的方式存储,可以避免当两个不相同的数据资源对应的哈希值相同,需要存储在同一个磁盘块时产生的数据冲突。
在一个实施例中,在将待存储的数据资源存储到存储单元中时,可先根据步骤S102、S104、S106确定数据资源对应的磁盘块,然后读取该磁盘块中已存储的数据资源集合,并将待存储的数据资源以TLV的形式插入到读取的已存储的数据资源集合中,然后将插入后的数据资源集合存储到该磁盘块中。
在根据数据标识从存储单元中读取数据资源时,可通过步骤S104、步骤S106确定该数据标识对应的磁盘块,然后读取该磁盘块中已存储的数据资源集合,并根据该数据标识、数据资源的类型和长度在读取的已存储的数据资源集合中查找对应的数据资源。
在根据数据标识从存储单元中删除数据资源时,可通过步骤S104、步骤S106确定该数据标识对应的磁盘块,然后读取该磁盘块中已存储的数据资源集合,并根据该数据标识、数据资源的类型和长度在读取的已存储的数据资源集合中删除对应的数据资源,然后将删除后的数据资源集合存储到该磁盘块中。
进一步的,磁盘页还包括元数据区,元数据区可包含页头信息区(Head区域)和位图区域(Bitmap位图区域),其中页头信息区用于存储磁盘页的容量统计信息,位图区域则可标识磁盘页中的磁盘块的使用状态(即标识是否磁盘块是否被使用)。设置磁盘页的元数据区后,能够减少一次磁盘的IO来判断该磁盘页中的磁盘块中是否存在数据,从而为快速找出多个未使用的磁盘块提供了便利。
在一个实施例中,在根据哈希值计算数据资源对应的磁盘页在存储单元中的页号和磁盘页中的磁盘块的块号的步骤之前还包括:根据哈希值获取数据资源对应的存储单元,每个存储单元对应多个哈希值。
在本实施例中,可预先设置x个存储单元,每个存储单元对应多个哈希值,存储单元和哈希值的对应关系如表1所示:
表1
0至99 存储单元0
100至199 存储单元1
200至299 存储单元2
...... ......
100x至100x+99 存储单元x
例如,由步骤S104得到哈希值为263,则其对应了存储单元2,所有哈希值为263的数据资源将被存储到编号为2的存储单元上。存储单元x对应了100x至100x+99之间的哈希值,则所有与在100x至100x+99内的哈希值对应的数据资源将被存储到编号为x的存储单元中。
在一个实施例中,如图4所示,Key为数据标识,可预设路由表,该路由表中存储了存储单元和哈希值之间的对应关系,可通过路由装置根据哈希值查询路由表,返回哈希值对应的存储单元,然后将哈希值对应的数据资源存储到该存储单元中。
进一步的,在一个实施例中,还可存储单元进行扩容,具体过程为:当需扩容时,添加扩容存储单元;获取存储单元对应的至少1个哈希值;将至少1个哈希值在存储单元中对应的数据资源移动到扩容存储单元中;将至少1个哈希值与存储单元的对应关系更改为该至少1个哈希值与扩容存储单元的对应关系。
在本实施例中,如图5所示,存储单元A为扩容之前已有的存储单元,对应0至99的哈希值;存储单元B为添加的扩容存储单元。先获取存储单元A对应的50个哈希值(50至99),然后将该50个哈希值在存储单元A中对应的数据资源移动到存储单元B中(即从存储单元A中剪切读取,然后写入存储单元B),然后更改哈希值与存储单元的对应关系,将0至49的哈希值对应存储单元A,将50至99的哈希值对应存储单元B。
上述扩容的步骤在添加了扩容存储单元之后,通过移动少量数据,更改部分存储单元与哈希值之间的对应关系来完成扩容。具有较小的数据迁移量,且扩容前后哈希值与数据资源的对应关系没有受到影响,使得分布式存储在扩容时更加方便,数据安全性更高。
在另一个实施例中,如图6所示,一种分布式数据存储方法,该方法中数据存储于预设的存储单元的磁盘页中,磁盘页包括基本页和溢出页,该方法包括以下步骤:
步骤S202,获取数据资源和与数据资源对应的数据标识。
数据资源的形式可以是文件、字符串、数据流。数据标识可以是字符串或数字,用于区分数据资源。一个实施例中,先获取数据存储请求,从数据存储请求中提取数据资源和与数据资源对应的数据标识。在另一个实施例中,可在获取数据资源后,根据数据资源计算得到与数据资源对应的数据标识。
例如,web应用中,先获取文件上传请求,然后从文件上传请求中提取出文件(数据资源)和文件名(数据标识)。当文件较大时,可将文件切分成多个小文件,然后通过计算每个小文件的MD5(MessageDigestAlgorithm5,消息摘要算法第五版)码获取每个小文件的数据标识(即md5(key))。
步骤S204,计算数据标识的哈希值。
可通过预设的哈希函数计算数据标识的哈希值。在一个实施例中,可通过预设的哈希函数计算得到在预设的数字范围内的数据标识的哈希值。例如,预设的哈希函数可定义数字范围1至9999,然后将任意数据标识映射到1至9999之间的任意数字上。
步骤S206,根据哈希值计算数据资源对应的基本页在存储单元中的页号和基本页中的磁盘块的块号。
存储单元为底层存储资源(磁盘、磁带)上划分的独立的存储区域,多个存储单元可以位于分布式存储中的多个存储节点上。如图7和图8所示,存储单元内包括多个磁盘页。磁盘页包括基本页和溢出页。每个磁盘页包括多个磁盘块。磁盘页和磁盘块均为存储单元内的子存储区域。
在一个实施例中,存储单元内的基本页由1至m编号,每个基本页中的磁盘块由1至n编号,且基本页和磁盘块的大小固定。然后根据哈希值、基本页的数量以及磁盘块的数量获取与数据资源对应的基本页在存储单元中的页号以及基本页中的磁盘块的块号。
进一步的,可通过下列公式计算数据资源对应的基本页在存储单元中的页号以及基本页中的磁盘块的块号:
remainder=hashcode%(m×n);
page_no=remainder/m;
bucket_no=remainder%m
其中,%表示取余,hashcode为由步骤S204计算的到的哈希值,m为每个基本页中磁盘块的个数,n为一个存储单元中的基本页的个数,remainder为计算的中间数据,page_no为数据资源对应的基本页在存储单元中的页号,bucket_no为数据资源对应的基本页中的磁盘块的块号。
例如,当哈希值(hashcode)为263,每个基本页中磁盘块的个数(m)为20,存储单元内基本页的数量(n)为12时,可计算得到数据资源对应的基本页在存储单元中的页号(page_no)为1号,数据资源对应的1号基本页中的磁盘块的块号(bucket_no)为3号。
步骤S208,根据基本页的页号和磁盘块的块号将数据资源存储到对应的基本页的磁盘块中。
在一个实施例中,存储单元内的基本页以及其内的磁盘块的物理存储位置连续,其编号按照物理存储位置排列。在计算得到数据资源对应的基本盘页在存储单元中的页号以及基本页中的磁盘块的块号之后,可先获取存储单元的起始位置,根据该页号和块号在存储单元的物理存储位置中顺序查找与该页号和块号对应的磁盘块,然后将数据资源存储到该磁盘块中。
在另一个实施例中,可预设基本页和磁盘块与物理存储位置的映射表。该映射表可存储在内存中,在计算得到数据资源对应的基本页在存储单元中的页号以及基本页中的磁盘块的块号之后,可根据该页号和块号在该映射表中查询其对应的物理存储位置,然后将数据资源存储到该物理存储位置中。
进一步的,根据基本页的页号和磁盘块的块号将数据资源存储到对应的基本页的磁盘块中的步骤可具体为:根据基本页的页号和磁盘块的块号将数据资源以类型-长度-数据的形式存储到对应的基本页的磁盘块中。
类型-长度-数据即TLV(type-length-value)。即将数据资源的类型信息和长度信息与数据资源整合后存储。采用TLV的方式存储,可以避免当两个不相同的数据资源对应的哈希值相同,需要存储在同一个磁盘块时产生的数据冲突。
在一个实施例中,在将待存储的数据资源存储到存储单元中时,可先根据步骤S202、S204、S206确定数据资源对应的磁盘块,然后读取该磁盘块中已存储的数据资源集合,并将待存储的数据资源以TLV的形式插入到读取的已存储的数据资源集合中,然后将插入后的数据资源集合存储到该磁盘块中。
在根据数据标识从存储单元中读取数据资源时,可通过步骤S204、步骤S206确定该数据标识对应的磁盘块,然后读取该磁盘块中已存储的数据资源集合,并根据该数据标识、数据资源的类型和长度在读取的已存储的数据资源集合中查找对应的数据资源。
在根据数据标识从存储单元中删除数据资源时,可通过步骤S204、步骤S206确定该数据标识对应的磁盘块,然后读取该磁盘块中已存储的数据资源集合,并根据该数据标识、数据资源的类型和长度在读取的已存储的数据资源集合中删除对应的数据资源,然后将删除后的数据资源集合存储到该磁盘块中。
在一个实施例中,如图9所示,基本页和溢出页的数量可以按照一定比例设置。优选的,基本页和溢出页的数量的比例为3:1。例如,存储单元中包括12个基本页和4个溢出页,每个基本页中包含20个磁盘块。则当哈希值为263时,可计算得到数据资源对应的基本页的页号为1号,数据资源对应的基本页中的磁盘块的块号为3号,即数据资源对应的存储单元内的磁盘块为1号基本页中的3号磁盘块。
进一步的,磁盘页还包括元数据区,元数据区可包含页头信息区(Head区域)和位图区域(Bitmap位图区域),其中页头信息区用于存储基本页或溢出页的容量统计信息,位图区域则可标识基本页中的磁盘块和溢出页中的磁盘块的使用状态(即标识是否磁盘块是否被使用)。设置元数据区后,对于基本页中的磁盘块,能够减少一次磁盘的IO来判断该磁盘块中是否存在数据;对于溢出页中的磁盘块,能够为快速找出多个未使用的溢出块提供便利。
进一步的,基本页中的磁盘块还包括块头区域,块头区域内存储有该磁盘块和溢出页中的磁盘块的对应关系。
当基本页的磁盘块的空间不足时,可根据该磁盘块的块头区域内存储的对应关系将数据资源存储到基本页和与该基本页中的磁盘块对应的溢出页中的磁盘块中。也即,一个完整的Hash桶的数据由一个基本块或一个基本块加上至少一个(或多个)溢出块组成(磁盘块空间不足时)。
如图10所示,磁盘块的块头区域中存储的基本页中的磁盘块和溢出页中的磁盘块的对应关系可以为:基本页中的一个磁盘块对应溢出页中的多个磁盘块。由于通常情况下,可能出现数据资源的数据标识的哈希值分布不均匀的情况,即每个哈希值对应数据资源的数目和大小不同。此时,通过设置溢出页,可以将基本页中的某个负载比较大的磁盘块与溢出页中的一个或多个磁盘块对应。当该基本页中的磁盘块容量满时,可通过获取该磁盘块的块头区域中的对应关系,将数据资源存储到与该基本页中的磁盘块对应的溢出页中的磁盘块中,使得数据资源可以在存储单元内均匀存储,从而避免了存储负载不平衡时的数据溢出。
进一步的,如表2所示,对存储单元进行的读写操作可分为6种:
表2
其中,基本块即基本页中的磁盘块,溢出块即溢出页中的磁盘块。
在一个实施例中,在根据哈希值计算数据资源对应的基本页在存储单元中的页号和基本页中的磁盘块的块号的步骤之前还可根据哈希值获取数据资源对应的存储单元,每个存储单元对应多个哈希值。
在本实施例中,可预先设置x个存储单元,每个存储单元对应多个哈希值,存储单元和哈希值的对应关系如表3所示:
表3
0至99 存储单元0
100至199 存储单元1
200至299 存储单元2
...... ......
100x至100x+99 存储单元x
例如,由步骤S204得到哈希值为263,则其对应了存储单元2,所有哈希值为263的数据资源将被存储到编号为2的存储单元上。存储单元x对应了100x至100x+99之间的哈希值,则所有与在100x至100x+99内的哈希值对应的数据资源将被存储到编号为x的存储单元中。
在一个实施例中,如图6所示,Key为数据标识,可预设路由表,该路由表中存储了存储单元和哈希值之间的对应关系,可通过路由装置根据哈希值查询路由表,返回哈希值对应的存储单元,然后将哈希值对应的数据资源存储到该存储单元中。
进一步的,在一个实施例中,还可存储单元进行扩容,具体过程为:当需扩容时,添加扩容存储单元;获取存储单元对应的至少1个哈希值;将至少1个哈希值在存储单元中对应的数据资源移动到扩容存储单元中;将至少1个哈希值与存储单元的对应关系更改为该至少1个哈希值与扩容存储单元的对应关系。
在本实施例中,如图7所示,存储单元A为扩容之前已有的存储单元,对应0至99的哈希值;存储单元B为添加的扩容存储单元。先获取存储单元A对应的50个哈希值(50至99),然后将该50个哈希值在存储单元A中对应的数据资源移动到存储单元B中(即从存储单元A中剪切读取,然后写入存储单元B),然后更改哈希值与存储单元的对应关系,将0至49的哈希值对应存储单元A,将50至99的哈希值对应存储单元B。
上述扩容的步骤在添加了扩容存储单元之后,通过移动少量数据,更改部分存储单元与哈希值之间的对应关系来完成扩容。具有较小的数据迁移量,且扩容前后哈希值与数据资源的对应关系没有受到影响,使得分布式存储在扩容时更加方便,数据安全性更高。
在一个实施例中,如图11所示,一种分布式数据存储系统100,包括数据资源获取模块102、哈希值计算模块104、磁盘块定位模块106和数据资源存储模块108,其中:
数据资源获取模块102,用于获取数据资源和与数据资源对应的数据标识。
数据资源的形式可以是文件、字符串、数据流。数据标识可以是字符串或数字,用于区分数据资源。一个实施例中,数据资源获取模块102用于先获取数据存储请求,从数据存储请求中提取数据资源和与数据资源对应的数据标识。在另一个实施例中,数据资源获取模块102用于在获取数据资源后,根据数据资源计算得到与数据资源对应的数据标识。
哈希值计算模块104,用于计算数据标识的哈希值。
可通过预设的哈希函数计算数据标识的哈希值。在一个实施例中,哈希值计算模块104可用于通过预设的哈希函数计算得到在预设的数字范围内的数据标识的哈希值。
磁盘块定位模块106,用于根据哈希值计算数据资源对应的磁盘页在存储单元中的页号以及数据资源对应的磁盘页中的磁盘块的块号。
存储单元为底层存储资源(磁盘、磁带)上划分的独立的存储区域,多个存储单元可以位于分布式存储中的多个存储节点上。如图2和图3所示,存储单元内包括多个磁盘页,每个磁盘页包括多个磁盘块。磁盘页和磁盘块均为存储单元内的子存储区域。
在一个实施例中,存储单元内的磁盘页由1至m编号,每个磁盘页中的磁盘块由1至n编号,且磁盘页和磁盘块的大小固定。磁盘块定位模块106可用于根据哈希值、磁盘页的数量以及磁盘块的数量获取与数据资源对应的磁盘页在存储单元中的页号以及磁盘页中的磁盘块的块号。
进一步的,磁盘块定位模块106可用于通过下列公式计算数据资源对应的磁盘页在存储单元中的页号以及磁盘页中的磁盘块的块号:
remainder=hashcode%(m×n);
page_no=remainder/m;
bucket_no=remainder%m
其中,%表示取余,hashcode为由哈希值计算模块104计算的到的哈希值,m为每个磁盘页中磁盘块的个数,n为一个存储单元中的磁盘页的个数,remainder为计算的中间数据,page_no为数据资源对应的磁盘页在存储单元中的页号,bucket_no为数据资源对应的磁盘页中的磁盘块的块号。
数据资源存储模块108,用于根据磁盘页的页号和磁盘块的块号将数据资源存储到对应的磁盘页的磁盘块中。
在一个实施例中,存储单元内的磁盘页和磁盘块的物理存储位置连续,其编号按照物理存储位置排列。数据资源存储模块108可用于在获取到数据资源对应的磁盘页在存储单元中的页号以及磁盘页中的磁盘块的块号之后,先获取存储单元的起始位置,根据该页号和块号在存储单元的物理存储位置中顺序查找与该页号和块号对应的磁盘块,然后将数据资源存储到该磁盘块中。
在另一个实施例中,可预设磁盘页和磁盘块与物理存储位置的映射表,该映射表可存储在内存中。数据资源存储模块108可用于在获取到数据资源对应的磁盘页在存储单元中的页号以及磁盘页中的磁盘块的块号之后,根据该页号和块号在该映射表中查询其对应的物理存储位置,然后将数据资源存储到该物理存储位置中。
进一步的,哈希值计算模块104可用于根据磁盘页的页号和磁盘块的块号将数据资源以类型-长度-数据的形式存储到对应的磁盘块中。
类型-长度-数据即TLV(type-length-value)。即将数据资源的类型信息和长度信息与数据资源整合后存储。采用TLV的方式存储,可以避免当两个不相同的数据资源对应的哈希值相同,需要存储在同一个磁盘块时产生的数据冲突。
进一步的,磁盘页还包括元数据区,元数据区可包含页头信息区(Head区域)和位图区域(Bitmap位图区域),其中页头信息区用于存储磁盘页的容量统计信息,位图区域则可标识磁盘页中的磁盘块的使用状态(即标识是否磁盘块是否被使用)。设置磁盘页的元数据区后,能够减少一次磁盘的IO来判断该磁盘页中的磁盘块中是否存在数据,从而为快速找出多个未使用的磁盘块提供了便利。
在一个实施例中,如图12所示,分布式数据存储系统100还包括存储单元路由模块110,用于根据哈希值获取数据资源对应的存储单元,每个存储单元对应多个哈希值。
在一个实施例中,存储单元路由模块110可用于预设路由表,该路由表中存储了存储单元和哈希值之间的对应关系。存储单元路由模块110则可用于根据哈希值查询该路由表,得到哈希值对应的存储单元。
进一步的,在一个实施例中,分布式数据存储系统100还包括扩容模块(图中未标示),用于在扩容时添加扩容存储单元,获取存储单元对应的至少1个哈希值,将至少1个哈希值在存储单元中对应的数据资源移动到扩容存储单元中。本实施例中,扩容模块还用于将至少1个哈希值与存储单元之间的对应关系更改为该至少1个哈希值与扩容存储单元之间的对应关系。
上述扩容模块在添加了扩容存储单元之后,可通过移动少量数据,更改部分存储单元与哈希值的对应关系来完成扩容。具有较小的数据迁移量,且扩容前后哈希值与数据资源的对应关系没有受到影响,使得分布式存储系统在扩容时更加方便,数据安全性更高。
在另一个实施例中,如图13所示,一种分布式数据存储系统200,该系统中数据存储于预设的存储单元的磁盘页中,磁盘页包括基本页和溢出页,该系统包括数据资源获取模块202、哈希值计算模块204、磁盘块定位模块206和数据资源存储模块208,其中:
数据资源获取模块202,用于获取数据资源和与数据资源对应的数据标识。
数据资源的形式可以是文件、字符串、数据流。数据标识可以是字符串或数字,用于区分数据资源。一个实施例中,数据资源获取模块202用于先获取数据存储请求,从数据存储请求中提取数据资源和与数据资源对应的数据标识。在另一个实施例中,数据资源获取模块202用于在获取数据资源后,根据数据资源计算得到与数据资源对应的数据标识。
哈希值计算模块204,用于计算数据标识的哈希值。
可通过预设的哈希函数计算数据标识的哈希值。在一个实施例中,哈希值计算模块204可用于通过预设的哈希函数计算得到在预设的数字范围内的数据标识的哈希值。
磁盘块定位模块206,用于根据哈希值计算数据资源对应的基本页在存储单元中的页号以及数据资源对应的基本页中的磁盘块的块号。
存储单元为底层存储资源(磁盘、磁带)上划分的独立的存储区域,多个存储单元可以位于分布式存储中的多个存储节点上。如图2和图3所示,存储单元内包括多个磁盘页。磁盘页包括基本页和溢出页。每个磁盘页包括多个磁盘块。磁盘页和磁盘块均为存储单元内的子存储区域。
在一个实施例中,存储单元内的基本页由1至m编号,每个基本页中的磁盘块由1至n编号,且基本页和磁盘块的大小固定。磁盘块定位模块206可用于根据哈希值、基本页的数量以及磁盘块的数量获取与数据资源对应的基本页在存储单元中的页号以及基本页中的磁盘块的块号。
进一步的,磁盘块定位模块206可用于通过下列公式计算数据资源对应的基本页在存储单元中的页号以及基本页中的磁盘块的块号:
remainder=hashcode%(m×n);
page_no=remainder/m;
bucket_no=remainder%m
其中,%表示取余,hashcode为由哈希值计算模块204计算的到的哈希值,m为每个基本页中磁盘块的个数,n为一个存储单元中的基本页的个数,remainder为计算的中间数据,page_no为数据资源对应的基本页在存储单元中的页号,bucket_no为数据资源对应的基本页中的磁盘块的块号。
数据资源存储模块208,用于根据基本页的页号和磁盘块的块号将数据资源存储到对应的基本页的磁盘块中。
在一个实施例中,存储单元内的基本页以及其内的磁盘块的物理存储位置连续,其编号按照物理存储位置排列。数据资源存储模块208可用于在获取到数据资源对应的基本页在存储单元中的页号以及基本页中的磁盘块的块号之后,先获取存储单元的起始位置,根据该页号和块号在存储单元的物理存储位置中顺序查找与该页号和块号对应的磁盘块,然后将数据资源存储到该磁盘块中。
在另一个实施例中,可预设基本页和磁盘块与物理存储位置的映射表,该映射表可存储在内存中。数据资源存储模块208可用于在获取到数据资源对应的基本页在存储单元中的页号以及基本页中的磁盘块的块号之后,根据该页号和块号在该映射表中查询其对应的物理存储位置,然后将数据资源存储到该物理存储位置中。
进一步的,哈希值计算模块204可用于根据基本页的页号和磁盘块的块号将数据资源以类型-长度-数据的形式存储到对应的基本页的磁盘块中。
类型-长度-数据即TLV(type-length-value)。即将数据资源的类型信息和长度信息与数据资源整合后存储。采用TLV的方式存储,可以避免当两个不相同的数据资源对应的哈希值相同,需要存储在同一个磁盘块时产生的数据冲突。
在一个实施例中,如图4所示,基本页和溢出页的数量可以按照一定比例设置。优选的,基本页和溢出页的数量的比例为3:1。进一步的,磁盘页还包括元数据区,元数据区可包含页头信息区(Head区域)和位图区域(Bitmap位图区域),其中页头信息区用于存储基本页或溢出页的容量统计信息,位图区域则可标识基本页中的磁盘块和溢出页中的磁盘块的使用状态(即标识是否磁盘块是否被使用)。设置元数据区后,对于基本页中的磁盘块,能够减少一次磁盘的IO来判断该磁盘块中是否存在数据;对于溢出页中的磁盘块,能够为快速找出多个未使用的溢出块提供便利。
进一步的,在一个实施例中,基本页中的磁盘块还包括块头区域,块头区域内存储有基本页中的磁盘块和溢出页中的磁盘块的对应关系。本实施例中,数据资源存储模块208还可用于当磁盘块的空间不足时,根据该磁盘块的块头区域存储的对应关系将数据资源存储到基本页和与该基本页中的磁盘块对应的溢出页中的磁盘块中。也即,一个完整的Hash桶的数据由一个基本块或一个基本块加上至少一个(或多个)溢出块组成(磁盘块空间不足时)。
通过设置溢出页,可以将基本页中的某个负载比较大的磁盘块与溢出页中的一个或多个磁盘块对应。当该基本页中的磁盘块容量满时,可通过获取该磁盘块的块头区域中的对应关系,将数据资源存储到与该基本页中的磁盘块对应的溢出页中的磁盘块中,使得数据资源可以在存储单元内均匀存储,从而避免了存储负载不平衡时的数据溢出。
在一个实施例中,如图14所示,分布式数据存储系统200还包括存储单元路由模块210,用于根据哈希值获取数据资源对应的存储单元,每个存储单元对应多个哈希值。
在一个实施例中,存储单元路由模块210可用于预设路由表,该路由表中存储了存储单元和哈希值之间的对应关系。存储单元路由模块210则可用于根据哈希值查询该路由表,得到哈希值对应的存储单元。
进一步的,在一个实施例中,分布式数据存储系统200还包括扩容模块(图中未标示),用于在扩容时添加扩容存储单元,获取存储单元对应的至少1个哈希值,将至少1个哈希值在存储单元中对应的数据资源移动到扩容存储单元中。本实施例中,扩容模块还用于将至少1个哈希值与存储单元之间的对应关系更改为该至少1个哈希值与扩容存储单元之间的对应关系。
上述扩容模块在添加了扩容存储单元之后,可通过移动少量数据,更改部分存储单元与哈希值的对应关系来完成扩容。具有较小的数据迁移量,且扩容前后哈希值与数据资源的对应关系没有受到影响,使得分布式存储系统在扩容时更加方便,数据安全性更高。
上述分布式数据存储方法和系统,由于存储单元被划分为多个磁盘页,且磁盘页又包含多个磁盘块,根据数据资源的数据标识定位数据资源对应的磁盘页和磁盘块,并将数据资源存储到对应的磁盘块中。当磁盘块的物理位置连续排列时,不需要在内存中维护数据标识和数据存储位置的全局索引;当磁盘块的物理位置随机时,由于磁盘块的数量固定,磁盘块的编号与物理位置的映射表的大小固定,使得耗费的内存大小固定,不会因为数据量的增加而变大。且由于一个磁盘块中可存储多个数据资源,因此磁盘块的编号与物理位置的映射表中记录数必然小于传统技术中全局索引的记录数。因此,上述分布式数据存储方法和系统能有效地减少内存损耗。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (12)

1.一种分布式数据存储方法,包括以下步骤:
获取数据资源和与所述数据资源对应的数据标识;
计算所述数据标识的哈希值;
根据所述哈希值计算所述数据资源对应的磁盘页在存储单元中的页号和所述磁盘页中的磁盘块的块号;
根据所述磁盘页的页号和磁盘块的块号将所述数据资源存储到对应的所述磁盘页的所述磁盘块中,包括:根据所述磁盘页的页号和磁盘块的块号将所述数据资源以类型-长度-数据的形式存储到对应的所述磁盘页的所述磁盘块中。
2.根据权利要求1所述的分布式数据存储方法,其特征在于,在所述根据所述哈希值计算所述数据资源对应的磁盘页在存储单元中的页号和所述磁盘页中的磁盘块的块号的步骤之前,还包括:
根据所述哈希值获取所述数据资源对应的存储单元,每个所述的存储单元对应多个哈希值。
3.根据权利要求2所述的分布式数据存储方法,其特征在于,所述方法还包括:
当需扩容时,添加扩容存储单元;
获取存储单元对应的至少1个哈希值;
将所述至少1个哈希值在所述存储单元中对应的数据资源移动到所述扩容存储单元中;
将所述至少1个哈希值与所述存储单元之间的对应关系更改为所述至少1个哈希值与所述扩容存储单元之间的对应关系。
4.一种分布式数据存储方法,其特征在于,所述数据存储于存储单元的磁盘页中,所述磁盘页分为基本页和溢出页,包括以下步骤:
获取数据资源和与所述数据资源对应的数据标识;
计算所述数据标识的哈希值;
根据所述哈希值计算所述数据资源对应的基本页在存储单元中的页号和所述基本页中的磁盘块的块号;
根据所述基本页的页号和磁盘块的块号将所述数据资源存储到对应的所述基本页的所述磁盘块中,包括:根据所述基本页的页号和磁盘块的块号将所述数据资源以类型-长度-数据的形式存储到对应的所述基本页的所述磁盘块中;
所述基本页中的磁盘块还包括块头区域,所述块头区域内存储有所述磁盘块和溢出页中的磁盘块之间的对应关系;当所述基本页的磁盘块的空间不足时,根据所述磁盘块的块头区域内存储的所述对应关系将所述数据资源存储到所述基本页和与所述基本页中的磁盘块对应的溢出页中的磁盘块中。
5.根据权利要求4所述的分布式数据存储方法,其特征在于,在所述根据所述哈希值计算所述数据资源对应的基本页在存储单元中的页号和所述基本页中的磁盘块的块号的步骤之前,还包括:
根据所述哈希值获取所述数据资源对应的存储单元,每个所述的存储单元对应多个哈希值。
6.根据权利要求5所述的分布式数据存储方法,其特征在于,所述方法还包括:
当需扩容时,添加扩容存储单元;
获取存储单元对应的至少1个哈希值;
将所述至少1个哈希值在所述存储单元中对应的数据资源移动到所述扩容存储单元中;
将所述至少1个哈希值与所述存储单元之间的对应关系更改为所述至少1个哈希值与所述扩容存储单元之间的对应关系。
7.一种分布式数据存储系统,其特征在于,包括:
数据资源获取模块,用于获取数据资源和与所述数据资源对应的数据标识;
哈希值计算模块,用于计算所述数据标识的哈希值;
磁盘块定位模块,用于根据所述哈希值计算所述数据资源对应的磁盘页在存储单元中的页号和所述磁盘页中的磁盘块的块号;
数据资源存储模块,用于根据所述磁盘页的页号和磁盘块的块号将所述数据资源存储到对应的所述磁盘页的所述磁盘块中;
所述数据资源存储模块还用于根据所述磁盘页的页号和磁盘块的块号将所述数据资源以类型-长度-数据的形式存储到对应的所述磁盘页的所述磁盘块中。
8.根据权利要求7所述的分布式数据存储系统,其特征在于,所述系统还包括:
存储单元路由模块,用于根据所述哈希值获取所述数据资源对应的存储单元,每个所述的存储单元对应多个哈希值。
9.根据权利要求8所述的分布式数据存储系统,其特征在于,所述系统还包括:
扩容模块,用于当需扩容时添加扩容存储单元,获取存储单元对应的至少1个哈希值,将所述至少1个哈希值在所述存储单元中对应的数据资源移动到所述扩容存储单元中;
所述扩容模块还用于将所述至少1个哈希值与所述存储单元之间的对应关系更改为所述至少1个哈希值与所述扩容存储单元之间的对应关系。
10.一种分布式数据存储系统,其特征在于,所述数据存储于存储单元的磁盘页中,磁盘页分为基本页和溢出页,所述系统包括以下模块:
数据资源获取模块,用于获取数据资源和与所述数据资源对应的数据标识;
哈希值计算模块,用于计算所述数据标识的哈希值;
磁盘块定位模块,用于根据所述哈希值计算所述数据资源对应的基本页在存储单元中的页号和所述基本页中的磁盘块的块号;
数据资源存储模块,用于根据所述基本页的页号和磁盘块的块号将所述数据资源存储到对应的所述基本页的所述磁盘块中;
所述数据资源存储模块还用于根据所述基本页的页号和磁盘块的块号将所述数据资源以类型-长度-数据的形式存储到对应的所述基本页的所述磁盘块中;
所述基本页中的磁盘块还包括块头区域,所述块头区域内存储有所述磁盘块和溢出页中的磁盘块之间的对应关系;所述数据资源存储模块还用于当所述基本页的磁盘块的空间不足时,根据所述磁盘块的块头区域内存储的所述对应关系将所述数据资源存储到所述基本页和与所述基本页中的磁盘块对应的溢出页中的磁盘块中。
11.根据权利要求10所述的分布式数据存储系统,其特征在于,所述系统还包括:
存储单元路由模块,用于根据所述哈希值获取所述数据资源对应的存储单元,每个所述的存储单元对应多个哈希值。
12.根据权利要求11所述的分布式数据存储系统,其特征在于,所述系统还包括:
扩容模块,用于当需扩容时添加扩容存储单元,获取存储单元对应的至少1个哈希值,将所述至少1个哈希值在所述存储单元中对应的数据资源移动到所述扩容存储单元中;
所述扩容模块还用于将所述至少1个哈希值与所述存储单元之间的对应关系更改为所述至少1个哈希值与所述扩容存储单元之间的对应关系。
CN201210137501.5A 2012-05-04 2012-05-04 分布式数据存储方法及系统 Active CN103383690B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210137501.5A CN103383690B (zh) 2012-05-04 2012-05-04 分布式数据存储方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210137501.5A CN103383690B (zh) 2012-05-04 2012-05-04 分布式数据存储方法及系统

Publications (2)

Publication Number Publication Date
CN103383690A CN103383690A (zh) 2013-11-06
CN103383690B true CN103383690B (zh) 2016-04-13

Family

ID=49491480

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210137501.5A Active CN103383690B (zh) 2012-05-04 2012-05-04 分布式数据存储方法及系统

Country Status (1)

Country Link
CN (1) CN103383690B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015196470A1 (zh) * 2014-06-27 2015-12-30 华为技术有限公司 一种将数据写入闪存装置的方法、闪存装置和存储系统
CN104301233A (zh) * 2014-10-31 2015-01-21 易准科技发展(上海)有限公司 路由访问方法、路由访问系统及用户终端
CN105808560B (zh) * 2014-12-29 2020-07-31 腾讯科技(深圳)有限公司 一种同机多业务的检索方法及系统
CN106815258B (zh) * 2015-11-27 2020-01-17 华为技术有限公司 一种数据存储方法和协调节点
CN106682109A (zh) * 2016-12-05 2017-05-17 深圳市中博睿存科技有限公司 分布式文件系统及其数据处理方法和装置
CN106878415B (zh) * 2017-02-15 2020-09-01 阿里巴巴集团控股有限公司 数据消费的负载均衡方法及装置
CN107911713B (zh) * 2017-11-08 2020-05-22 北京奇艺世纪科技有限公司 一种磁盘的确定方法及装置
CN107798257B (zh) * 2017-11-17 2020-04-03 郑州云海信息技术有限公司 一种md5值存储方法及存储系统
CN109522739B (zh) * 2018-10-09 2020-11-20 北京医拍智能科技有限公司 一种基于区块链哈希算法的抗攻击处理方法及装置
CN111803917A (zh) * 2020-06-30 2020-10-23 北京金山云网络技术有限公司 资源的处理方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101188544A (zh) * 2007-12-04 2008-05-28 浙江大学 分布式文件服务器基于缓冲区的文件传输方法
CN101673289A (zh) * 2009-10-10 2010-03-17 成都市华为赛门铁克科技有限公司 分布式文件存储构架的构建方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7870174B2 (en) * 2007-10-11 2011-01-11 Oracle International Corporation Reference partitioned tables

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101188544A (zh) * 2007-12-04 2008-05-28 浙江大学 分布式文件服务器基于缓冲区的文件传输方法
CN101673289A (zh) * 2009-10-10 2010-03-17 成都市华为赛门铁克科技有限公司 分布式文件存储构架的构建方法和装置

Also Published As

Publication number Publication date
CN103383690A (zh) 2013-11-06

Similar Documents

Publication Publication Date Title
CN103383690B (zh) 分布式数据存储方法及系统
CN104346357B (zh) 一种嵌入式终端的文件存取方法及系统
CN102222085B (zh) 一种基于相似性与局部性结合的重复数据删除方法
KR100285265B1 (ko) 데이터 베이스 관리 시스템과 정보 검색의 밀결합을 위하여 서브 인덱스와 대용량 객체를 이용한 역 인덱스 저장 구조
KR100856245B1 (ko) 파일 시스템 장치 및 그 파일 시스템의 파일 저장 및 파일 탐색 방법
CN102663086B (zh) 一种数据块索引的检索方法
CN106874348B (zh) 文件存储和索引方法、装置及读取文件的方法
CN103605758B (zh) 一种移动终端文件查找的方法及装置
CN103577123A (zh) 一种基于hdfs的小文件优化存储方法
CN100399325C (zh) 一种嵌入式数据库的数据备份和恢复方法
CN102467572B (zh) 支持重复数据删除程序的数据区块查询方法
CN102831222A (zh) 一种基于重复数据删除的差量压缩方法
CN102375853A (zh) 分布式数据库系统、在其中建立索引的方法和查询方法
CN102915278A (zh) 重复数据删除方法
CN106682110B (zh) 一种基于哈希格网索引的影像文件存储和管理系统及方法
CN103198150B (zh) 一种大数据索引方法及系统
CN103473314A (zh) 一种基于共享内存的键值对存储方法及装置
CN104239377A (zh) 跨平台的数据检索方法及装置
CN101526965B (zh) 一种磁盘文件的索引节点定位方法和装置
CN101464901A (zh) 一种对象存储设备中的对象查找方法
CN102999637B (zh) 根据文件特征码为文件自动添加文件标签的方法及系统
CN104111924A (zh) 一种数据库系统
CN106874481A (zh) 一种分布式文件系统元数据信息读取方法及系统
CN103714013A (zh) 一种文件系统的存储空间的配置方法及装置
CN102542041A (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
C14 Grant of patent or utility model
GR01 Patent grant