CN114327239A - 存储和访问数据的方法、电子设备和计算机程序产品 - Google Patents
存储和访问数据的方法、电子设备和计算机程序产品 Download PDFInfo
- Publication number
- CN114327239A CN114327239A CN202011034970.5A CN202011034970A CN114327239A CN 114327239 A CN114327239 A CN 114327239A CN 202011034970 A CN202011034970 A CN 202011034970A CN 114327239 A CN114327239 A CN 114327239A
- Authority
- CN
- China
- Prior art keywords
- data
- metadata
- storing
- servers
- data blocks
- 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
- 238000000034 method Methods 0.000 title claims abstract description 47
- 238000004590 computer program Methods 0.000 title claims abstract description 18
- 230000004044 response Effects 0.000 claims abstract description 17
- 238000012545 processing Methods 0.000 claims description 31
- 230000005540 biological transmission Effects 0.000 abstract description 8
- 238000010586 diagram Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 12
- 238000013500 data storage Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000013524 data verification Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0617—Improving the reliability of storage systems in relation to availability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开的实施例涉及用于存储和访问数据的方法、电子设备和计算机程序产品。一种用于存储数据的方法包括:响应于从客户端接收到存储数据的请求,将该数据划分成多个数据块;将多个数据块分别存储在多个服务器中;生成该数据的元数据,以记录多个服务器中用于存储多个数据块的相应地址;以及将生成的元数据存储在元数据存储库中。本公开的实施例能够有效提高云存储***中的数据传输效率、数据可用性和数据安全性。
Description
技术领域
本公开的实施例总体涉及数据存储领域,具体涉及用于存储和访问数据的方法、电子设备和计算机程序产品。
背景技术
随着云存储技术的发展,越来越多的数据存储***利用混合云或多个云来存储数据。不同的云提供商所提供的功能和接口往往是不同的。这为在多个云之间进行数据存储、数据访问和数据迁移等操作提出了挑战。一些方案在云存储服务器和客户端之间设计了抽象层,从而为客户提供统一的数据处理功能和接口。然而,这些方案仍然存在一些明显缺点,诸如数据可用性降低、数据安全性不足以及数据传输效率较低等等。
发明内容
本公开的实施例提供了用于存储和访问数据的方法、电子设备和计算机程序产品。
在本公开的第一方面,提供了一种用于存储数据的方法。该方法包括:响应于从客户端接收到存储数据的请求,将该数据划分成多个数据块;将多个数据块分别存储在多个服务器中;生成该数据的元数据,以记录多个服务器中用于存储多个数据块的相应地址;以及将生成的元数据存储在元数据存储库中。
在本公开的第二方面,提供了一种用于访问数据的方法。该方法包括:响应于从客户端接收到访问数据的请求,从元数据存储库获取该数据的元数据,该数据被划分成多个数据块并且元数据记录多个服务器中用于存储多个数据块的相应地址;基于元数据,确定多个服务器中用于存储多个数据块的相应地址;从多个服务器中的相应地址处获取多个数据块;以及响应于多个数据块被获取,将多个数据块组合成数据,以供客户端访问。
在本公开的第三方面,提供了一种电子设备。该电子设备包括至少一个处理单元和至少一个存储器。至少一个存储器被耦合到至少一个处理单元并且存储用于由至少一个处理单元执行的指令。该指令当由至少一个处理单元执行时使得电子设备执行动作,该动作包括:响应于从客户端接收到存储数据的请求,将该数据划分成多个数据块;将多个数据块分别存储在多个服务器中;生成该数据的元数据,以记录多个服务器中用于存储多个数据块的相应地址;以及将生成的元数据存储在元数据存储库中。
在本公开的第四方面,提供了一种电子设备。该电子设备包括至少一个处理单元和至少一个存储器。至少一个存储器被耦合到至少一个处理单元并且存储用于由至少一个处理单元执行的指令。该指令当由至少一个处理单元执行时使得电子设备执行动作,该动作包括:响应于从客户端接收到访问数据的请求,从元数据存储库获取该数据的元数据,该数据被划分成多个数据块并且元数据记录多个服务器中用于存储多个数据块的相应地址;基于元数据,确定多个服务器中用于存储多个数据块的相应地址;从多个服务器中的相应地址处获取多个数据块;以及响应于多个数据块被获取,将多个数据块组合成数据,以供客户端访问。
在本公开的第五方面,提供了一种计算机程序产品。该计算机程序产品被有形地存储在非瞬态计算机存储介质中并且包括机器可执行指令。该机器可执行指令在由设备执行时使该设备执行根据本公开的第一方面或第二方面所描述的方法的任意步骤。
在本公开的第六方面,提供了一种计算机可读存储介质,其上存储有计算机程序。该计算机程序在由处理器执行时实现根据本公开的第一方面或第二方面所描述的方法的任意步骤。
提供发明内容部分是为了以简化的形式来介绍对概念的选择,它们在下文的具体实施方式中将被进一步描述。发明内容部分无意标识本公开的关键特征或必要特征,也无意限制本公开的范围。
附图说明
通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施例中,相同的参考标号通常代表相同部件。
图1示出了本公开的实施例能够在其中被实施的示例环境的示意图;
图2示出了根据本公开的实施例的用于存储数据的示例方法的流程图;
图3示出了根据本公开的实施例的将数据划分成多个数据块并且利用默克尔树来管理多个数据块的示意图;
图4示出了根据本公开的实施例的用于存储多个数据块的元数据及其校验块的校验块元数据的示例分布式哈希表的示意图;
图5示出了根据本公开的实施例的用于访问数据的示例方法的流程图;以及
图6示出了可以用来实施本公开内容的实施例的示例设备的示意性框图。
在各个附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施例。虽然附图中显示了本公开的优选实施例,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如上所述,随着云存储技术的发展,越来越多的数据存储***利用混合云或多个云来存储数据。不同的云提供商所提供的功能和接口往往是不同的。这为在多个云之间进行数据存储、数据访问和数据迁移等操作提出了挑战。一些方案在云存储服务器和客户端之间设计了抽象层,从而为客户提供统一的数据处理功能和接口。然而,这些方案仍然存在一些明显缺点。
如果仅将数据存储在一个目的地中,则数据是不安全的。考虑到数据中心或云帐户被黑客入侵的情况,用户的数据可能会受到恶意方的攻击。此外,这些存储平台还存在其他不安全因素或风险,例如离职员工的盗窃等,这导致大量数据不安全且缺乏隐私保护。此外,在分布式存储***中,每个节点都可以独立地从云服务器中获取数据,这在数据吞吐率方面会导致潜在的性能限制。如果海量节点同时查询特定数据,则云存储提供商可能会耗尽其带宽并成为整个数据处理过程中的瓶颈。在某些情况下,例如当某个云提供商的服务发生中断是,存储在来自该云提供商提供的云服务器中的数据可能不可用。也即,用户可能会在云服务出现故障时丢失其数据访问权限。一些方案还提出在多个云提供商处存储数据的多个副本,这样当某个数据源不可用时,用户可以从其他数据源获取数据。尽管这些方案能够提高数据可用性并且缓解访问带宽方面的限制,然而所消耗的数据存储空间将大大增加,并且数据同步和维护成本也大大提高。
本公开的实施例提出了一种用于存储和访问数据的方案,以解决上述问题和/或其他潜在问题。该方案以更经济的方式提高云存储***中的数据传输效率、数据可用性和数据安全性。该方案广泛适用于期望以经济有效的方式方便地存储大量数据的用户和/或应用场景。
以下将进一步结合附图来详细描述本公开的实施例。图1示出了本公开的实施例能够在其中被实现的示例环境100的框图。应当理解,仅出于示例性的目的描述环境100的结构,而不暗示对于本公开的范围的任何限制。
如图1所示,环境100可以包括客户端110,存储服务器120-1、120-2……120-N(其中N>1,统称为或单独称为“服务器120”)以及由一个或多个中间节点130-1、130-2……130-M(其中M>1,统称为或单独称为“中间节点130”)组成的抽象层。例如,客户端110、服务器120和中间节点130可以分别利用任何物理主机、服务器、虚拟机等来实现。
客户端110可以发起用于存储数据的请求,以将数据存储在中间节点130或服务器120处。客户端110还可以发起用于访问数据的请求,以访问在中间节点130或服务器120处存储的数据。多个服务器120可以来自相同或不同的云提供商。由于不同云提供商所提供的功能和接口往往是不同的,由中间节点130组成的抽象层可以为客户端110提供统一的数据处理功能和接口。
图2示出了根据本公开的实施例的用于存储数据的示例方法200的流程图。例如,方法200可以由如图1所示的中间节点130来执行。以下结合图1来详细描述方法200。应当理解,方法200还可以包括未示出的附加动作和/或可以省略所示出的动作,本公开的范围在此方面不受限制。
在框210处,中间节点130响应于从客户端110接收到存储数据的请求,将数据划分成多个数据块。在此所述的“数据”例如可以是文件,或者其他任何待存储的数据单元。在一些实施例中,数据块划分也可以在客户端110处实现。
附加地或备选地,为了提高容错性,在框250处,中间节点130可以基于多个数据块来生成校验块。校验块可以利用任何已知或将来开发的算法来生成,以使得当多个数据块中的某个数据块的数据丢失时,能够基于校验块和其他数据块的内容来恢复该数据块的内容。
在框220处,中间节点130将多个数据块分别存储在多个服务器120中。在一些实施例中,不同的数据块可以被存储在不同的服务器120中。备选地,多个数据块中的至少一部分数据块也可以被存储在相同的服务器120中。
附加地或备选地,在多个数据块的校验块被生成的情况下,在框260处,中间节点130将校验块存储在多个服务器120中的至少一个服务器120中。校验块的存储位置可以由不同的因素来决定。在一些实施例中,例如,为了达到最高吞吐率,用于存储校验块的服务器可以与用于存储生成该校验块的多个数据块的服务器不同。在一些实施例中,由于通常情况下校验块很少被使用,因此可以将校验块存储在较低端的服务器中。在一些实施例中,多个数据块和校验块的写入可以被并行地执行,以提高数据写入的效率。
在框230处,中间节点130生成该数据的元数据,以记录多个服务器120中用于存储多个数据块的相应地址。然后,在框240处,中间节点130将所生成的元数据存储在元数据存储库中。附加地或备选地,在多个数据块的校验块被生成的情况下,在框270处,中间节点130可以生成校验块的校验块元数据,以记录至少一个服务器120中用于存储校验块的地址。然后,在框280处,中间节点130将所生成的校验块元数据存储在元数据存储库中。应当理解,在另一些实施例中,元数据的生成和写入也可以在数据块和/或校验块的写入之前执行。本公开的实施例在此方面不受限制。
在一些实施例中,可以基于数据被划分成的多个数据块来生成与该数据对应的默克尔树(Merkle Tree),诸如默克尔有向无环图(Merkle DAG)。在数据访问过程中,该默克尔树可以被用于验证所获取的多个数据块的完整性。
图3示出了根据本公开的实施例的将数据划分成多个数据块并且利用默克尔树来管理多个数据块的示意图。图3示出了数据310及其对应的默克尔树320。数据310例如是某个文件,其可以被划分成多个数据块A~H。可以利用预定哈希函数来生成多个数据块的哈希值HA~HH。如图3所示,默克尔树320中的每个节点可以具有相应的标识符。哈希值HA~HH可以分别作为默克尔树320的叶子节点的标识符。父节点的标识符由子节点的哈希值决定,例如父节点的标识符可以是由两个子节点的哈希值拼接得到的字符串的哈希值。默克尔树320中的每个节点的标识符可以被唯一链接到其有效载荷的内容和其所有的子节点。例如,默克尔树320中的每个非叶子节点可以被实现为含有两个域的数据结构:数据域(“data”)和链接域(“Links”),其中数据域用于记录该节点的有效载荷,而链接域用于记录其每个子节点的哈希值、名称和大小等信息。根节点中的数据域例如可以记录该默克尔树320所对应的文件名。以此方式,在进行数据访问时,可以基于待访问的数据文件名通过查找对应的默克尔树来确定该数据被划分成的多个数据块的哈希值。在一些实施例中,在配置了用于校验数据块的校验块的情况下,默克尔树320的根节点中还可以包括与校验块有关的配置信息,以指示用于生成校验块的数据块的数目。该配置信息能够节省用于记录校验块的非叶子节点的存储开销,同时使得用户能够灵活地配置用于生成校验块的数据块的数目。
多个数据块的元数据及其校验块的校验块元数据可以被存储在元数据存储库中。在一些实施例中,元数据存储库可以利用与多个中间节点130相关联的分布式哈希表(DHT)来实现。
图4示出了根据本公开的实施例的用于存储多个数据块的元数据及其校验块的校验块元数据的示例DHT的示意图。图4示出了数据410,其被划分成3个数据块L、M和N。在此假设,用户设置的配置信息指示每3个数据块生成1个校验块。图4示出了校验块420,其基于数据块L、M和N,被表示为f(L,M,N),其中f表示用于生成校验块的函数。图4还示出了DHT 430,其包括多个条目,每个条目是<索引,目的地址>的键-值对。与数据块对应的条目的索引由该数据块的哈希值来表示,目的地址记录该数据块被存储在多个服务器120中的位置,例如,全球资源***(URL)。与校验块对应的条目的索引由该校验块的哈希值来表示,目的地址记录该校验块被存储的位置,例如URL。DHT 430可以被分布在如图1所示的多个中间节点130中。例如,每个中间节点130可以仅存储DHT 430中的一部分。此外,DHT 430还可以被持久化地存储在某个服务器120或者其他数据中心中,以防止某个中间节点130处存储的条目被丢失。应当理解,针对DHT的写入和查找可以基于任何已知或将来开发的算法来实现,本公开的范围在此方面不受限制。
应当理解,在一些情况下,校验块也可以不被生成和使用。也即,在此情况下,如图5所示的框250~280可以不被执行。
此外,在一些实施例中,当需要对已存储的数据块进行更新时,可以将更新数据以新生成的数据块的形式进行写入,而非修改旧数据块。以此方式,能够避免由于更新与旧数据块相关联的校验块而导致的大量写入操作。当新数据块和与之关联的校验块被写入后,旧数据块和与之关联的旧校验块可以被设置成无效,从而不被访问。
图5示出了根据本公开的实施例的用于访问数据的示例方法500的流程图。例如,方法500可以由如图1所示的中间节点130来执行。以下结合图1来详细描述方法500。应当理解,方法500还可以包括未示出的附加动作和/或可以省略所示出的动作,本公开的范围在此方面不受限制。
如图5所示,在框510处,中间节点130响应于从客户端接收到访问数据的请求,从元数据存储库(例如,与中间节点130相关联的DHT)获取该数据的元数据。在一些实施例中,该数据被划分成多个数据块并且该元数据记录多个服务器120中用于存储多个数据块的相应地址。
在框520处,中间节点130基于元数据,确定多个服务器120中用于存储多个数据块的相应地址。然后,在框530处,中间节点130从多个服务器120中的相应地址处获取多个数据块。
在框540处,中间节点130确定是否存在未成功获取的数据块。例如,发生故障的服务器120所存储的数据块可能无法访问。又例如,中间节点130可以进一步利用默克尔树来验证所获取的多个数据块的完整性,以确定各个数据块是否损坏。数据完整性的验证可以利用任何已知或者将来开发的算法实现,本公开的范围在此方面不受限制。如果所有数据块被成功获取,则方法500进行至框590,中间节点130组合多个数据块以提供给客户端110进行访问。
如果存在未成功获取的数据块,在框550处,中间节点130从元数据存储库(例如,与中间节点130相关联的DHT)获取校验块的校验块元数据,该校验块元数据记录多个服务器120中用于存储校验块的地址。
在框560处,中间节点130基于校验块元数据,确定多个服务器120中用于存储校验块的地址。然后,在框570处,中间节点130从该地址处获取校验块。
在框580处,中间节点130基于校验块和多个数据块中已获取的其他数据块,确定未成功获取的数据块的内容。然后,在框590处,中间节点130组合多个数据块以提供给客户端110进行访问。
应当理解,在具体实现中,方法500中被示出为串行执行的一些框可以被并行执行以提高执行效率。例如,在图5中,数据块的读取和校验块的读取被示出为串行执行。然而,在具体实现中,可以基于各种因素(诸如,云提供商的延迟、数据源的故障率、历史故障信息、数据查询延迟与数据传输开销之间的平衡等)来确定校验块的读取机制。例如,在一些实施例中,校验块的读取可以与数据块的读取并行地执行,以提高执行效率。
从以上描绘能够看出,本公开的实施例能够有效解决现有技术中存在的各种问题。例如,通过将数据分成多个块并上载到来自不同云提供商的云服务器,使得每个云服务器都无法获得数据的完整视图,从而防止了由云提供商导致的数据泄露。在数据存储和访问过程中,由于多个数据块可以在不同数据源之间被并行处理和传输,因此有效提高了数据存储和访问的效率。校验块的引入能够有效提高数据可用性。当某个数据块未成功获取时,可以利用校验块来恢复未成功获取的数据块的内容从而将正确的数据返回给客户端。此外,本公开的实施例利用校验块而非数据副本来还原故障情况,从而在有效节省云存储空间的同时实现提高数据可用性以及数据存储和访问的效率。也即,本公开的实施例能够以更经济的方式提高云存储***中的数据传输效率、数据可用性和数据安全性,因此广泛适用于期望以经济有效的方式方便地存储大量数据的用户和/或应用场景(例如,物联网领域)。
图6示出了可以用来实施本公开内容的实施例的示例设备600的示意性框图。例如,如图1所示的客户端110、服务器120和/或中间节点130可以由设备600实施。如图6所示,设备600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的计算机程序指令或者从存储页面608加载到随机访问存储器(RAM)603中的计算机程序指令,来执行各种适当的动作和处理。在RAM 603中,还可存储设备600操作所需的各种程序和数据。CPU 601、ROM602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
设备600中的多个部件连接至I/O接口605,包括:输入单元606,例如键盘、鼠标等;输出单元607,例如各种类型的显示器、扬声器等;存储页面608,例如磁盘、光盘等;以及通信单元609,例如网卡、调制解调器、无线通信收发机等。通信单元609允许设备600通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如方法200和/或500,可由处理单元601执行。例如,在一些实施例中,方法400可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储页面608。在一些实施例中,计算机程序的部分或者全部可以经由ROM 602和/或通信单元609而被载入和/或安装到设备600上。当计算机程序被加载到RAM 603并由CPU601执行时,可以执行上文描述的方法200和/或500的一个或多个动作。
本公开可以是方法、装置、***和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是——但不限于——电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (19)
1.一种用于存储数据的方法,包括:
响应于从客户端接收到存储数据的请求,将所述数据划分成多个数据块;
将所述多个数据块分别存储在多个服务器中;
生成所述数据的元数据,以记录所述多个服务器中用于存储所述多个数据块的相应地址;以及
将生成的所述元数据存储在元数据存储库中。
2.根据权利要求1所述的方法,还包括:
生成用于校验所述多个数据块的校验块;
将所述校验块存储在所述多个服务器中的至少一个服务器中;
生成所述校验块的校验块元数据,以记录所述至少一个服务器中用于存储所述校验块的地址;以及
将生成的所述校验块元数据存储在所述元数据存储库中。
3.根据权利要求1所述的方法,其中所述元数据存储库利用分布式哈希表来实现。
4.根据权利要求1所述的方法,其中所述多个服务器来自不同的云提供商。
5.一种用于访问数据的方法,包括:
响应于从客户端接收到访问数据的请求,从元数据存储库获取所述数据的元数据,所述数据被划分成多个数据块并且所述元数据记录多个服务器中用于存储所述多个数据块的相应地址;
基于所述元数据,确定所述多个服务器中用于存储所述多个数据块的相应地址;
从所述多个服务器中的相应地址处获取所述多个数据块;以及
响应于所述多个数据块被获取,将所述多个数据块组合成所述数据,以供所述客户端访问。
6.根据权利要求5所述的方法,还包括:
响应于所述多个数据块中的至少一个数据块获取失败,基于用于校验所述多个数据块的校验块和所述多个数据块中已获取的其他数据块,确定所述至少一个数据块的内容;以及
将所述多个数据块组合成所述数据,以供所述客户端访问。
7.根据权利要求6所述的方法,还包括:
从所述元数据存储库获取所述校验块的校验块元数据,所述校验块元数据记录所述多个服务器中用于存储所述校验块的地址;
基于所述校验块元数据,确定所述多个服务器中用于存储所述校验块的所述地址;以及
从所述地址处获取所述校验块。
8.根据权利要求5所述的方法,其中所述元数据存储库利用分布式哈希表来实现。
9.根据权利要求5所述的方法,其中所述多个服务器来自不同的云提供商。
10.一种电子设备,包括:
至少一个处理单元;
至少一个存储器,所述至少一个存储器被耦合到所述至少一个处理单元并且存储用于由所述至少一个处理单元执行的指令,所述指令当由所述至少一个处理单元执行时,使得所述电子设备执行动作,所述动作包括:
响应于从客户端接收到存储数据的请求,将所述数据划分成多个数据块;
将所述多个数据块分别存储在多个服务器中;
生成所述数据的元数据,以记录所述多个服务器中用于存储所述多个数据块的相应地址;以及
将生成的所述元数据存储在元数据存储库中。
11.根据权利要求10所述的电子设备,其中所述动作还包括:
生成用于校验所述多个数据块的校验块;
将所述校验块存储在所述多个服务器中的至少一个服务器中;
生成所述校验块的校验块元数据,以记录所述至少一个服务器中用于存储所述校验块的地址;以及
将生成的所述校验块元数据存储在所述元数据存储库中。
12.根据权利要求10所述的电子设备,其中所述元数据存储库利用分布式哈希表来实现。
13.根据权利要求10所述的电子设备,其中所述多个服务器来自不同的云提供商。
14.一种电子设备,包括:
至少一个处理单元;
至少一个存储器,所述至少一个存储器被耦合到所述至少一个处理单元并且存储用于由所述至少一个处理单元执行的指令,所述指令当由所述至少一个处理单元执行时,使得所述电子设备执行动作,所述动作包括:
响应于从客户端接收到访问数据的请求,从元数据存储库获取所述数据的元数据,所述数据被划分成多个数据块并且所述元数据记录多个服务器中用于存储所述多个数据块的相应地址;
基于所述元数据,确定所述多个服务器中用于存储所述多个数据块的相应地址;
从所述多个服务器中的相应地址处获取所述多个数据块;以及
响应于所述多个数据块被获取,将所述多个数据块组合成所述数据,以供所述客户端访问。
15.根据权利要求14所述的电子设备,其中所述动作还包括:
响应于所述多个数据块中的至少一个数据块获取失败,利用用于校验所述多个数据块的校验块和所述多个数据块中已获取的其他数据块,确定所述至少一个数据块的内容;以及
将所述多个数据块组合成所述数据,以供所述客户端访问。
16.根据权利要求15所述的电子设备,其中所述动作还包括:
从所述元数据存储库获取所述校验块的校验块元数据,所述校验块元数据记录所述多个服务器中用于存储所述校验块的地址;
基于所述校验块元数据,确定所述多个服务器中用于存储所述校验块的所述地址;以及
从所述地址处获取所述校验块。
17.根据权利要求14所述的电子设备,其中所述元数据存储库利用分布式哈希表来实现。
18.根据权利要求14所述的电子设备,其中所述多个服务器来自不同的云提供商。
19.一种计算机程序产品,所述计算机程序产品被有形地存储在计算机存储介质中并且包括机器可执行指令,所述机器可执行指令在由设备执行时使所述设备执行根据权利要求1-9中的任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011034970.5A CN114327239A (zh) | 2020-09-27 | 2020-09-27 | 存储和访问数据的方法、电子设备和计算机程序产品 |
US17/072,363 US11934674B2 (en) | 2020-09-27 | 2020-10-16 | Method, electronic device, and computer program product for storing and accessing data across multiple servers utilizing metadata of a distributed hash table |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011034970.5A CN114327239A (zh) | 2020-09-27 | 2020-09-27 | 存储和访问数据的方法、电子设备和计算机程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114327239A true CN114327239A (zh) | 2022-04-12 |
Family
ID=80822431
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011034970.5A Pending CN114327239A (zh) | 2020-09-27 | 2020-09-27 | 存储和访问数据的方法、电子设备和计算机程序产品 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11934674B2 (zh) |
CN (1) | CN114327239A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114168083A (zh) * | 2021-12-10 | 2022-03-11 | 四川爱联科技股份有限公司 | 一种数据存储***、方法及电子设备 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117412061A (zh) * | 2022-07-08 | 2024-01-16 | 清华大学 | 数据存储方法、读取方法、装置、存储介质及程序产品 |
CN117195300B (zh) * | 2023-09-20 | 2024-03-29 | 全拓科技(杭州)股份有限公司 | 一种大数据安全防护方法、装置及*** |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1771495A (zh) * | 2003-05-07 | 2006-05-10 | 国际商业机器公司 | 分布式文件服务体系结构*** |
US20160080111A1 (en) * | 2014-09-12 | 2016-03-17 | Fujitsu Limited | Receiver, transmitter and data transmission system |
CN106453244A (zh) * | 2016-08-30 | 2017-02-22 | 董学章 | 采用物理分割的多云安全技术 |
US9613046B1 (en) * | 2015-12-14 | 2017-04-04 | Netapp, Inc. | Parallel optimized remote synchronization of active block storage |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5737344A (en) * | 1995-05-25 | 1998-04-07 | International Business Machines Corporation | Digital data storage with increased robustness against data loss |
US7971126B2 (en) * | 2007-06-27 | 2011-06-28 | International Business Machines Corporation | Apparatus, system, and method for hard disk drive redundancy |
US20100162003A1 (en) * | 2008-12-23 | 2010-06-24 | David Dodgson | Retrieval of cryptographically-split data blocks from fastest-responding storage devices |
US8799746B2 (en) * | 2012-06-13 | 2014-08-05 | Caringo, Inc. | Erasure coding and replication in storage clusters |
US20150280996A1 (en) * | 2014-04-01 | 2015-10-01 | Hewlett-Packard Development Company, L.P. | Cloud topology visualizations |
EP3430515B1 (en) * | 2016-03-15 | 2021-09-22 | Datomia Research Labs Ou | Distributed storage system data management and security |
US10216740B2 (en) * | 2016-03-31 | 2019-02-26 | Acronis International Gmbh | System and method for fast parallel data processing in distributed storage systems |
JP7312251B2 (ja) * | 2018-10-15 | 2023-07-20 | ネットアップ,インコーポレイテッド | 様々なデータ冗長性スキームを備えた、システムにおける利用可能なストレージ空間を改善すること |
US20210286734A1 (en) * | 2020-03-11 | 2021-09-16 | Orca Data Technology (Xi'an) Co., Ltd | Persistent read cache in a scale out storage system |
US20220083392A1 (en) * | 2020-09-16 | 2022-03-17 | Ingram Micro Inc. | Systems and methods for implementing trans-cloud application templates |
-
2020
- 2020-09-27 CN CN202011034970.5A patent/CN114327239A/zh active Pending
- 2020-10-16 US US17/072,363 patent/US11934674B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1771495A (zh) * | 2003-05-07 | 2006-05-10 | 国际商业机器公司 | 分布式文件服务体系结构*** |
US20160080111A1 (en) * | 2014-09-12 | 2016-03-17 | Fujitsu Limited | Receiver, transmitter and data transmission system |
US9613046B1 (en) * | 2015-12-14 | 2017-04-04 | Netapp, Inc. | Parallel optimized remote synchronization of active block storage |
CN106453244A (zh) * | 2016-08-30 | 2017-02-22 | 董学章 | 采用物理分割的多云安全技术 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114168083A (zh) * | 2021-12-10 | 2022-03-11 | 四川爱联科技股份有限公司 | 一种数据存储***、方法及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
US20220100372A1 (en) | 2022-03-31 |
US11934674B2 (en) | 2024-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10922196B2 (en) | Method and device for file backup and recovery | |
WO2020143853A2 (en) | Distributed blockchain data storage under account model | |
US10474632B2 (en) | Segmented hashing for secure data modification | |
CN114327239A (zh) | 存储和访问数据的方法、电子设备和计算机程序产品 | |
US11693908B2 (en) | System and methods for dynamic generation of object storage datasets from existing file datasets | |
US20140304513A1 (en) | Storage drive processing multiple commands from multiple servers | |
CN108733311B (zh) | 用于管理存储***的方法和设备 | |
CN111295650A (zh) | 在基于区块链的***中执行映射迭代 | |
CN111226209B (zh) | 在基于区块链的***中执行映射迭代 | |
US9600486B2 (en) | File system directory attribute correction | |
US11431799B2 (en) | Method, electronic device and computer program product for storing and accessing data | |
US10671709B2 (en) | Data isolation in distributed hash chains | |
US11210003B2 (en) | Method, device and computer program product for restoring data based on replacing child node identifiers with parent node identifier | |
US10983718B2 (en) | Method, device and computer program product for data backup | |
CN112486403A (zh) | 管理存储对象的元数据的方法、装置和计算机程序产品 | |
US9684668B1 (en) | Systems and methods for performing lookups on distributed deduplicated data systems | |
EP4394619A1 (en) | Data processing method and apparatus based on blockchain, and device and readable storage medium | |
CN112148728A (zh) | 用于信息处理的方法、设备和计算机程序产品 | |
CN113220500A (zh) | 基于逆向差异恢复的恢复方法、设备和程序产品 | |
CN115277668B (zh) | 一种基于以太坊和星际文件***的云文件动态完整性保护和验证方法 | |
US11513913B2 (en) | Method for storage management, electronic device, and computer program product | |
US11243932B2 (en) | Method, device, and computer program product for managing index in storage system | |
US11163642B2 (en) | Methods, devices and computer readable medium for managing a redundant array of independent disks | |
CN112947847A (zh) | 用于存储数据的方法、设备和计算机程序产品 | |
US11301492B1 (en) | Network address range storage and retrieval |
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 |