CN105447075B - 用于动态划分的计算机实现方法 - Google Patents
用于动态划分的计算机实现方法 Download PDFInfo
- Publication number
- CN105447075B CN105447075B CN201510599564.6A CN201510599564A CN105447075B CN 105447075 B CN105447075 B CN 105447075B CN 201510599564 A CN201510599564 A CN 201510599564A CN 105447075 B CN105447075 B CN 105447075B
- Authority
- CN
- China
- Prior art keywords
- fragment
- storage
- subrange
- predetermined
- mobile
- 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
Links
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
-
- 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/23—Updating
-
- 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/21—Design, administration or maintenance of databases
-
- 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
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及用于动态划分的计算机实现方法。当处理对于至少一个键(12)的数据(11)的请求(13)时:向预定分片存储(20)提供该请求(13);该预定分片存储(20)通过其局部子范围集合(42)校验所述至少一个键(12)是否存在于存储在所述预定分片存储(20)上的分片(30)的局部子范围(40)内;以及当至少一个键(12)不存在于存储在所述预定分片存储(20)上的分片(30)的局部子范围(40)内时,返回包括所述预定分片存储(20)的所述局部子范围集合(42)的消息(60)。
Description
技术领域
本发明主要涉及一种用于动态划分包括由包含在全局排序范围内的键可识别的数据的数据库的计算机实现方法。
背景技术
数据库分片是数据库的水平分区。每个此个别分区被称为分片或数据库分片。水平分区是一种数据库设计原理,由此将多行数据库的不同子集保持在单独的水平分区中。因而,每个此水平分区形成一个分片。当数据库被水平地分区为多个分片时,这在可扩展性方面提供潜在优点,因为可能将分片布置在例如为数据库服务器的不同分片存储上,因而允许数据库的扩大超过单个数据库服务器的性能和存储容量限制。
可使用各种对数据库分片的方法以满足此扩展,并且已经出现了分区数据库架构,其横跨不同分片存储自动分片并且使负荷均衡,从而使分片更容易。这些架构通常使用基于键的哈希分区或范围分区,以将数据分配给存储该数据库的分布计算系统的分片存储。例如在US2014/0108421中描述了基于键的哈希分区的示例,其中计算键的模或者更复杂的哈希,并且向每个分片存储分配特定范围的这些已计算哈希,其中预期分布将是均衡的。采用此方法的第一问题在于,在大规模数据库系统中,根据键的这些哈希的计算的需要相当大的计算功率和时间,因此导致在处理对这些键的数据的请求时延迟增大。另外,即使当使用复杂的哈希机制时,也难以确保在不同的数据存储之间均衡分布,特别是对于不能够提前可靠地评价其键和其相关联的数据的大规模分布数据库。
又进一步问题在于,例如US2014/0108421中所述的,高百分比的分布操作的此分布数据库系统的降低的性能。在这些分布操作期间,必须访问多个分片存储,以便执行需要多个键的数据,诸如单个客户的一系列订单记录,的请求。为了降低分布操作的比重,并且提高单个分片读和写操作的比重,US2014/0108421提出使用分片控制记录,其使单调键范围与通过辅助哈希方法在其上分布多个记录或多行的多个分片存储相关联。虽然这导致在处理与如图3中所示的特定顾客ID相关联的数据时单个分片的读和写操作的比重增大,并且虽然分片控制记录提供与键范围相关联的分片列,而不需要将此元数据存储在个别键级别上,但是对于需要对其检索数据的每个键列,仍需要计算辅助哈希,以便确定将访问分片列的哪个分片存储。另外,使用单调键,例如顾客ID,导致标准应用水平情况下的不良性能,其中例如需要为了由用户检索和/或选择而产生顾客的排序列。应明白,在此标准情况中,诸如例如当向用户提出用户界面以通过用户的按字母顺序分类列而分页时,因为按字母顺序存储的列中的相邻顾客的单调顾客id不是必然存在于相同顾客id范围内,并且即使它们将处于相同范围内,也不确保它们将被存储在该分片列中的相同分片存储上,所以这将导致该分片控制记录的大量访问请求。另外,US2014/0108421的方法要求在可由系统的所有分片存储可访问的中心位置处的始终最新的分片控制记录,这产生了单一故障点,并且对此系统的可扩展性和响应性产生限制,尤其是在其中涉及大量分片存储的大规模分布数据库系统中。
从WO2013/147785已知划分数据库的进一步方法,其中通过与用于在存储节点之间分布目标的相同基于哈希的划分方法划分用于复制的目标存储系统的索引,然后在系统中的所有存储节点之间分布这些索引分片。同样地,这里需要同步保持在不同存储节点上存储的所有索引分片,这导致延迟更长并且对此系统的可扩展性产生限制。另外,该索引产生基于哈希的分片,这导致高比率的分布操作,其中当执行标准操作,诸如例如列举存储在所选容器,诸如例如文件夹、组、标签等等中的数据目标的按字母顺序分类列时,需要访问多个不同的分片存储。随着其在对分片索引做出的请求以及涉及数据目标自身的要求两者的水平上显现,此效果被进一步恶化。
从US2012/0271795已知划分数据库的又进一步方法,其中协同服务管理涉及总键范围的键的对每个可响应为总键范围一部分的局部键子范围的多个节点的请求的分布。根据数据库表中的节点的数目以及行或键数目选择每个节点的局部键子范围。此系统要求节点上的所有键子范围彼此同步并且与协同服务同步,这对可扩展性产生限制。另外,如果不可获得关于用于总键范围的数据库中的键分布的知识,就存在下列高风险,即所选局部键子范围将导致在节点之间的数据的不均衡分布。
从US2012/0254175已知划分数据库的又进一步方法,其中该数据库包含由全局排序范围内所包含的键可识别的数据。提供也称为块的多个分片,每个分片被配置成处理对局部子范围内的至少一个键的数据的请求,此局部子范围包含所述全局排序范围的排序子范围,例如,通过键的最小值和键的最大值之间的范围定义该全局排序范围。将请求发送至正确分片的路由进程访问来自配置服务器所存储的信息以及关于每个分片的信息,诸如最小和最大键值,以及在其上存储该分片的分片存储。应明白,该配置服务器的此信息必须始终与每个分片存储上的实际情况同步,这导致延迟增大,并且对可扩展性产生限制。为了提高再均衡该系统时的灵活性,每个分片的最大大小被限于例如200MB,并且当分片达到其最大大小时,其就分为每个包括分开分片的局部子范围的分片的两个新分片。以此方式,可在系统的每个分片存储上获得大量的小分片,并且能够通过简单地将这些小分片从它们的分片存储移动至另一负载较小的分片存储而执行再均衡。然而,因为必须在能够执行请求之前,由配置服务器以最新配置信息更新路由器,这要求配置服务器持续地与这些频繁更新同步,这些频繁更新是由大量分片、频繁产生的新分片以及分片在分片存储之间的频繁再定位产生的,这对系统的可扩展性产生限制,并且提高了延迟。另外,分片的尺寸越小,涉及键的排序子集,诸如例如容器中的数据目标、文件夹中的文件、表格中的顾客等等的按字母顺序排序列导致的标准要求将导致需要访问分布在多个分片存储上的多个分片的机会越高,因此减少了单个分片操作的比重,并且导致相应的性能降低。
在WO2012/068184中还公开了一种可动态扩展的冗余分布存储系统。其公开了一种使用副本,例如RAID,或者使用纠错码或者ECC,诸如例如纠删码,以实现特定冗余水平的存储系统。该存储系统包括文件管理器控制器和存储管理器控制器,将文件标识符和数据块与存储该文件和数据块的存储装置相关联。能够使用分布哈希表实现此文件管理控制器,分布哈希表例如作为哈希表列实现,其包含与该文件管理器负责的独特文件标识符值的范围相关联,例如该公开的图2C中所示。如图所示,每个文件管理器必须了解其自身的键值的局部子范围,其为圆形总键范围的一定比重。另外,其也必须了解至少关于管理在其自身局部子范围之前的局部子范围的文件管理器,以及管理在其自身局部子范围之后的子范围的文件管理器的信息。认为由于分布哈希表的分布特性,所以当使用时,节点可用的此哈希表列可能不完全精确,这是因为配置此列需要时间,在此期间可能发生节点故障或者分布哈希表再均衡。该系统依赖于下列假定,即使信息过时,此过时信息也将在任何情况下通往具有更靠近期望节点的范围的节点,因此最终导致通过一个或更多中间跳而访问期望节点。然而,在大规模分布数据库系统中,此假定不是始终成立,并且例如当相邻节点的信息和/或它们的相应局部子范围将过时的时候,会导致不可逆数据或不可接受的延迟。不难想象下列情况,其中请求将在仍将彼此视为相邻节点的两个过时节点之前前后跳动。另外,基于哈希的分片需要对每个键,例如文件标识符,产生适当的哈希,如上文解释的,这将导致在执行标准请求时,诸如产生容器中的数据目标、文件夹中的文件、表中的顾客等等的按字母顺序排序列时单个分片操作的比重降低。此性能退化在WO2012/068184的系统中甚至更严重,因为为了允许特定水平的再均衡灵活性,该系统使用两个分布哈希表系统,一个用于负责管理文件元数据的文件管理器,一个用于负责管理存储装置的存储管理器。
因而,仍存在一种用于数据库的动态划分的改进的计算机实现方法的需求,其克服上述现有技术的缺点,并且以鲁棒而且简单的方式确保可扩展性,当处理涉及键的排序子集的数据导致的标准请求时保证更高性能。
发明内容
根据本发明的第一方面,提供一种用于动态划分数据库的计算机实现方法,所述数据库包括由包含在全局排序范围内的键可识别的数据,其中所述方法包括下列步骤:
-提供多个分片存储,其每个包括分片存储标识符并且每个受限于存储容量限制;
-提供多个分片,其每个被配置成处理对于局部子范围内的至少一个键的数据的请求,该局部子范围包括所述全局排序范围的排序子范围;
-在该分片存储上提供分片,以便单个分片不延伸超过单个分片存储;
-在每个分片存储上提供局部子范围集合,每个局部子范围集合包括存储在其相应的分片存储上的分片的一个或更多局部子范围;
-当处理对于至少一个键的数据的所述请求时:
-向预定分片存储提供该请求;
-该预定分片存储通过其局部子范围集合校验该至少一个键是否存在于存储在该预定分片存储上的分片的局部子范围内;以及
-当至少一个键不存在于存储在该预定分片存储上的分片的局部子范围内时,返回包括该预定分片存储的局部子范围集合的消息。
以此方式,即使在大规模数据库的背景下,因为每个分片存储仅需要了解其自身的局部子范围集合,也能够保证鲁棒操作。这避免了在需要在所有分片存储之间和/或具有中心管理应用程序的系统宽水平上同步此信息的系统中存在的任何延迟。通过答复包括不存在于一个其局部子范围内的键的请求而返回包含该局部子范围集合的消息,该分片存储仅在与请求方相关的时间,向该请求方动态地提供关于其存储的子范围的数据的最新反馈。另外,使用在排序键子范围内存储键的分片降低了通过该分片存储检查是否能够处理请求的一个或更多键的复杂性,因为其仅需要检查键是否存在于其局部子范围集合的其局部子范围内。因为这些局部子范围为排序子范围,所以能够通过简单地检查键是否位于子范围的边界之间,例如其是否大于此排序子范围的最小限制并且小于最大限制,而执行此检查。为了执行此检查,不需要执行键的哈希或者任何其它转换。
通过使用被配置成处理对于全局排序范围的排序子范围的请求的分片,可能以有效方式处理对于涉及排序子集的数据的请求。应明白,需要考虑以产生此排序键子集的分片的数目在最理想的情况下将被最小化为包括此键子集的单个分片,但是在任何情况下最多被最小化为涉及跨越此排序键子集的子范围的分片。这意味着,例如在分布目标存储系统的背景下,其中通过独特目标标识符提供排序键,例如其以之前有更高水平等级组的一个或更多名称的目标的名称形成。以此方式,当对数据的此标准请求需要经过以按字母顺序分类列形式的数据目标而分页时,此请求能够通过如下来处理:访问其键子范围包括将显示的第一键的分片,并且继续检索该分片的按字母顺序排序子集例如包括来自该分片的预定后续键数的数据。
根据进一步实施例,当该预定分片存储返回所述消息时,该请求随后被提供给另外的分片存储。
以此方式,实现了一种用于动态划分数据库的鲁棒、简单并且高度可扩展方法,其不需要分片存储之间的大量同步或者采用中心管理进程。每个分片存储能够有效地处理涉及存在于存储在其上的分片中的键的请求,以有效方式通过不存在的任何键的其局部子范围集合更新请求方,以便然后能够将这部分请求联结至另外的分片存储,从而以相同的有效方式处理。以此方式,即使在其中发生分片的非常动态的分布再均衡的大规模分布系统中,被提供有此请求的每个分片存储仍将能够有效地确定,以及基于其局部子范围集合形式的最新局部信息确定其是否能够处理此请求,并且如果不能,向请求方提供其当前局部状态的最新信息。
根据进一步实施例,该方法还包括下列步骤:
-提供分片路由器,其可连接至所述多个分片存储,并且适合处理对于至少一个键的数据的请求;
-在所述分片路由器上提供适合将全局排序范围的全局子范围与分片存储标识符相关联的全局子范围集合,
-当处理对于至少一个键的数据的请求时:
-向该分片路由器提供该请求;
-该分片路由器确定与包括该请求的至少一个键的全局子范围相关联的分片存储标识符;
-该分片路由器向该相关联的分片存储标识符的预定分片存储提供该请求;
-该预定分片存储通过其局部子范围集合校验该至少一个键是否存在于存储在该预定分片存储上的分片的局部子范围内;
-当至少一个键不存在于存储在该预定分片存储上的分片的一个或更多局部子范围内时,
-返回包括该预定分片存储的局部子范围集合的消息;以及
-该分片路由器通过将预定分片存储的分片存储标识符与相应于所述消息的局部子范围集合的局部子范围的全局子范围相关联,根据所述消息,而更新其全局子范围集合。
以此方式,以有效方式动态地更新全局子范围集合,因为通过包括局部子范围集合的消息而在全局子范围集合上执行的更新关注于正在提供给数据库系统的实际请求中涉及的用于键的子范围的更新。以此方式,路由器能够动态地产生其全局子范围集合,甚至从最开始开始,同时处理对数据的请求,因此系统性地提高其发送效率,同时仍以可靠方式保持应对任何分片存储中的分片的分布局部变化的足够鲁棒性,而产生不必要的同步开销和延迟。
根据进一步实施例,处理请求的预定分片存储的局部子范围集合还包括外部子范围集合,其包括存储在与其相应的分片存储标识符相关联的其它分片存储上的分片的一个或更多外部子范围,并且其中该方法还包括下列步骤:
当由该预定分片存储处理请求时,当至少一个键不存在于存储在该预定分片存储上的分片的一个或更多局部子范围中时:
-返回包括局部子范围集合的消息;
-验证该请求的至少一个键是否被包含在该局部子范围集合的外部子范围集合的预定外部子范围内;
-随后向其分片存储标识符与该外部子范围相关联的另外的分片存储提供该请求。
以此方式,在不危及大规模分布数据库背景的同时,仍进一步最优化路由效率。当请求方向分片存储发送对于不再存在于其局部子范围集合内的键的请求时,例如由于请求方基于关于存储在该分片存储上的分片的过时信息而提出请求,很可能这是其间分片的至少一部分数据移动至另外的分片时的再均衡操作的结果。以外部子范围的形式存储关于其它分区存储的子范围的信息提供一种简单的方式,以通过下列相同发消息机制由特定分片存储将该信息提供给请求方,该发消息机制用于提供关于存储在此特定分片存储自身上的分片的局部子范围的请求方信息。然后,关于存储在其它分片存储上的分片的此信息能够对预期包括涉及该请求的分片的该另外的分片存储提供有效路由。
根据进一步实施例,该方法还包括下列步骤:
当至少一个键不存在于存储在该预定分片存储上的分片的一个或更多局部子范围中时:
-该分片路由器通过将另外的分片存储的分片存储标识符与相应于所述消息的外部子范围集合的预定外部子范围的全局子范围相关联,根据所述消息,而进一步更新其全局子范围集合。
以此方式,因为在处理请求期间,通过外部子范围以有效和动态方式也更新了全局子范围集合,实现路由效率的进一步提高。应明白,在基于外部子范围更新全局子范围集合后,随后在将该请求发送至与该外部子范围相关联的分片存储后校验该更新,如果键不存在于其局部子范围集合内,这将导致用于更新全局子范围集合的进一步消息。
根据进一步实施例,包含移动子范围内的所有键数据的移动分片从预定分片存储移动至另外的分片存储的移动操作导致该移动子范围被从预定分片存储的局部子范围集合移除,并且作为与另外的分片存储的分片存储标识符相关联的外部子范围而被添加至该预定分片存储的外部子范围集合。
以此方式,在移动操作源自其中的分片存储上仍可获得移动操作产生的信息,以提高路由操作的效率。
根据进一步实施例,包含移动子范围内的所有键数据的移动分片从预定分片存储移动至另外的分片存储的所述移动操作导致该移动子范围作为局部子范围而被添加至该另外的分片存储的局部子范围集合。
以此方式,移动操作所产生的信息变得在移动操作目的地的分片存储上以能够在此分布背景下保证连贯性的方式可获得。
根据进一步实施例,在移动操作期间,仅移动操作中涉及的预定分片存储和/或另外的分片存储的局部子范围集合被根据移动子范围而更新。
以此方式,再均衡操作仅产生移动操作中涉及的分片存储上的局部更新,由此降低任何同步开销和延迟。
根据进一步实施例,在移动操作中涉及的该预定分片存储和该另外的分片存储包括公共局部子范围集合和私人局部子范围集合,并且其中该方法还包括下列步骤,即在该移动操作期间:
-该预定分片存储根据该移动子范围更新其公共局部子范围集合;
-该预定分片存储向该另外的分片存储发送该移动分片;
-该另外的分片存储从该预定分片存储接收该移动分片;
-当正确地接收该移动分片时,该另外的分片存储:
-根据该移动子范围,更新其公共局部子范围集合和其私人局部子范围集合两者;
-向该预定分片存储发送移动确认消息;
-当该预定分片存储从该另外的分片存储接收所述移动确认消息时,更新其私人局部子范围集合推送器的预定数据存储更新该私人局部子范围,并且该预定分片存储删除该移动分片。
以此方式,提供一种简单、鲁棒并且有效实现的移动操作,其确保最大可用性和一致性,即使在具有频繁移动操作导致的自动和动态再均衡操作的大规模分布数据库中也是如此。
根据进一步实施例,当预定分片存储在执行移动操作后的预定时间段检测出其公共局部子范围集合与其私人局部子范围集合不同时,该预定分片存储向该另外的分片存储再次发送该移动分片。
以此方式,提供一种用于确保一致性的有效机制,即使例如在移动操作中断时,例如由于网络问题或者由于移动操作中所包括的分片存储临时不可用时也是如此。分片存储不需要了解涉及网络或者其它分片存储的操作状态的状态信息,其能够仅依赖于其公共局部子范围集合及其私人局部子范围集合形式的局部信息,以便评估是否需要重试该移动操作。
根据进一步实施例,当由其中移动子范围已经存在于其公共局部子范围集合内的预定分片存储向另外的分片存储提供移动分片时;该另外的分片存储向该预定分片存储发送移动确认消息,而不接收该移动分片。
这确保了特别是在作为移动操作的另外的分片存储确实正确地接收了该移动分片,但是后续移动确认消息确实未到达该预定分片存储的情况下的有效再均衡操作。当该预定分片存储随后重试该移动操作时,该另外的分片存储就以与正常操作相同的机制对该预定分片存储确认存在移动分片,但是不耗费任何不必要的资源重复处理相同的移动操作。
根据进一步实施例,产生该移动分片,以使得其包括该预定分片存储的分片的至少一部分。
根据进一步实施例,根据移动作业,产生多个移动操作,以便每个移动操作的移动分片的大小小于或等于预定移动大小阈值,该移动作业包括用于将所有数据从预定分片存储移动至另外的分片存储的请求,直到该多个移动操作已经导致移动:
-移动作业键范围;
-键的移动作业量;和/或
-数据的移动作业大小。
根据进一步实施例,当检测出对于预定分片,在其中局部子范围与预定分片的局部子范围连续的相同分片存储上可获得另外的分片,此预定分片被与该另外的分片合并,由此形成合并分片,并且通过将该预定分片和该另外的分片的两者的连续局部子范围合并为该合并分片的合并局部子范围而更新该局部子范围集合。优选地,该预定分片的大小不超过合并大小阈值。优选地,合并大小阈值大于该移动大小阈值。
以此方式,即使在大规模分布数据库中,用于在移动操作期间最优化鲁棒性和可用性的具有大量小移动分片的再均衡操作与以仅需要局部存储在分片存储上的分片的知识的方式使分片动态地扩大的自动机制结合,以便能够提高单个分片操作的比重,并且能够实现相应的性能改进。
根据本发明的第二方面,提供了一种包括在由处理器执行时适合执行根据本发明第一方面的方法的软件代码的计算机程序。
根据本发明的第三方面,提供了一种包括根据本发明第二方面的计算机程序的计算机可读存储介质。
附图说明
图1示意性示出根据本发明的用于实现数据库的动态划分的计算机实现方法的适当系统的实施例;
图2示意性示出操作图1的系统的方法的实施例;
图3示意性示出对图1中包括分片路由器的实施例的替选实施例;
图4示意性示出操作图3的系统的方法的实施例;
图5示出移动操作的示意性表示;
图6示意性示出操作图3的系统的方法的可替选实施例;
图7示意性示出在移动操作期间包括局部子范围集合的公共和私人版本的可替选实施例;
图8示意性示出在分片存储之间再均衡数据库的方法的实施例;
图9示意性示出的分片存储上的分片的合并操作。
具体实施方式
图1示出用于实现将参考例如图2解释的用于动态划分数据库10的计算机实现方法的适当系统。数据库10包括由包含在全局预定范围14内的键12可识别的数据11。该数据库例如能够为存储大规模分布目标的存储系统的元数据的适当键值存储,诸如例如从EP2469411或EP2672387已知的,其中对于数据对象的每个键12,存储涉及例如在其上可为了检索该数据目标可获得冗余编码子块的存储节点的数据11。随着此大规模分布目标存储系统的扩大超过现有边界,存在一种对这些系统的更高性能和鲁棒性的持续增长的需求。即使当使用高容量、专用、高性能存储装置以存储此数据库,诸如例如包含闪存装置,当该分布目标存储系统扩大时,其元数据的键值存储也扩大,并且最终将达到这些存储装置的存储容量限制,并且元数据将需要以尽可能多地在延迟、吞吐量、可靠性、粒度方面保持性能的方式,在多个此存储系统上分散。其中,延迟为访问存储在元数据存储中的特定数据所需的时间,通常以毫秒表示。其中,吞吐量为能够从元数据存储读取或者向其写入数据的速度,通常表示为每秒的输入/输出操作次数,或者IOPS,和/或每秒兆字节,或者MB/s。其中,粒度指的是能够作为单个单元有效地访问,而不引入任何额外延迟的最大数据集合的大小。并且其中,可靠性指的是应对分布存储系统中的一般故障,诸如一个或更多存储或者网络元件的临时不可用,的能力。应明白,虽然键值存储通常为高性能数据库结构,但是对于数据库,可能存在可替选实施例,诸如其它NoSQL机制,诸如例如基于列、基于页、基于文件等等的数据结构;或者例如基于表的数据结构。另外应明白,虽然下面将进一步详述的动态划分数据库10的方法在用于大规模分布目标存储系统的元数据存储的背景下有利,但是其它适当的有利数据库应用能够从该方法受益,尤其是在需要鲁棒、高性能、大规模分布数据库的背景下,诸如因特网搜索服务索引,等等。
然而,该方法更特别有利于例如EP2469411或者EP2672387中公开的基于纠删编码的分布目标存储系统的元数据存储,其中该元数据存储允许控制器节点以有效方式确定能够在哪个特定数据目标的冗余编码子块上检索存储元素。根据这些文献中所述的纠删编码分布目标存储系统,成簇模块能够以有效方式从例如位于控制器节点中心的元数据存储确定特定存储元素存储在特定数据目标的哪个字块上。也允许解码模块有效地确定使用了哪种编码策略。此外,此元数据存储也允许基于每一数据目标确定编码策略的灵活性,这意味着冗余策略不需要对于存储在分布目标存储系统中的所有数据目标固定,而是能够对每个特定数据目标而个别地设置。应明白,根据元数据存储的又进一步实施例,对数据目标存储的元数据能够包括其它适当的实体,其包括该数据目标的特性,诸如例如该数据目标的版本信息或状态。在这些系统中,控制器节点能够管理多个存储节点,这些存储节点例如在包括低功率处理器并且配备有10或12个3TB SATA磁盘驱动器的1U机架安装服务器机柜中提供36TB的存储容量。这些控制器节点例如配备有10Gb的以太网络接口,以允许高速连接至后端存储节点。对于包括多个存储节点,例如10或更多个存储节点的机架,通常布置一个控制器节点。然后能够以控制器节点的高度可用簇组合几个这些机架的控制器,以提供对存储节点的完全共享接入,并且通过横跨多个例如三个不同SSD的副本,以适当的冗余水平对例如处于高性能固态驱动器或SSD中的分布元数据存储提供接入,由此允许例如多数表决系统,例如类似于从US2012/0271795已知的。以此方式,能够实现横跨多个机架的单个系统的可扩展性,从而提供从几百太字节(Terabyte)可扩展至泽字节(Zettabyte)全局目标命名空间容量的存储容量。应明白,根据一些实施例,能够通过控制器节点它们本身实现分布元数据存储;或者例如为可以分片为多个这些控制节点的方式获得的多个扩展器的形式。通常,此分布数据库,诸如例如分布元数据存储,将位于多个分片存储20上,诸如例如用于以分布方式存储该元数据存储的上文所述的分布目标存储系统的控制器节点的多个扩展器。
如图所示,用于键12的全局排序范围14被示意性表示为按字母顺序范围[a,z],与图1的实施例中相同,为了简单地描述该实施例,将通过单字符按字母顺序数据目标标识符以特别简单的表示形式标识这些键。然而,应明白,根据可替选、更有现实生活意义的实施例,用于键12的全局排序范围14能够包括适当的字母数字范围,例如用于键的以多字符字母数字数据目标标识符形式的[a,z[,能够对其以字母顺序排序,并且在标准请求期间,通常对数据目标的按字母顺序排序子集排队,例如以代表网页,其包括与存储在云存储服务器的用户选择的容器内的以字母顺序的前50个数据目标的链接。然而,应明白,可能存在任何其它适当的排序范围,无论是闭或开端的,其适合包括所有数据库键。对于多字符字母数字键,例如能够将该范围表现为[“,+inf[,意思是从空字符串开始并且开端直到正无穷大的右手开端范围,这实际上意味着键12能够在该数据库系统的背景下实现的最大值。只要键能够通过例如响应的排序算法而服从预定的排序关系,就能够通过例如其最小和/或最大可允许键值定义该全局范围,或者在该范围在一侧或两侧为开端的情况下,仅通过该预定算法实现,以在数据库的键之间建立该排序关系,优选地该排序关系相应于在需要频繁地和/或由数据库以最小延迟执行的标准请求期间键所存在的方式。因而,这意味着键为对其定义总排序关系的集合的元素。只要能够定义适当的排序算法,其它适当的实施例例如能够包括按字母数字顺序范围、数字范围,诸如十进制范围、十六进制范围、二进制范围等等,和/或这些范围的任何适当的组合。
如图1中所示,其中提供多个这些分片存储20。每个分片存储包括分片存储标识符22。如所示,第一分片存储20包括分片存储标识符20.1,并且第二分片存储20包括分片存储标识符20.2。这些分片存储20为适当的计算装置,其提供对适当的数据结构的访问,通常是存储在一个或更多适当的高性能存储装置,诸如SSD或任何其它适当形式的存储装置或组合上的数据库结构。应明白,通常每个分片存储20受存储容量限制的限制,例如当所存储的数据量达到计算装置中存在的所有存储装置,例如可在控制器节点或者上述扩展器中获得的所有SSD的最大容量时,达到该存储容量限制。然而,即使在其中存储容量横跨多个这些计算装置以分片方式扩展的实施例中,最终也在与此分片接入有关的性能退化不再可接受时达到存储容量限制。优选地,该分片存储提供高性能,横跨局部、高吞吐量数据总线对它们存储装置的低水平接入,使得每秒的输入/输出操作能够为最大水平。
如图1中进一步所示的,其中提供多个分片30。每个分片30处理对于局部子范围40内的至少一个键12的数据11的请求13。这意味着每个分片30处理对其键12处于局部子范围40内的数据库10的数据11子集的读取和存储请求。如图所示,存储在具有分片存储标识符20.1的分片存储20上的分片30的局部子范围40被指示为[a,d)。因而,此局部子范围40包括下列排序子范围,其包括从包括直至并且包括z的所有按字母顺序排序键的全局排序范围14[a,z]的直至但是不包括d的所有按字母顺序排序键。存储在具有分片存储标识符20.2的分片存储20上的分片30的局部子范围40被指示为[d,g)和[i,n)。因而,此局部子范围40分别包括下列排序子范围,其包括从包括直至并且包括z的全局排序范围14[a,z]的从d直至但是不包括g,以及分别从i直至但是不包括n的所有按字母顺序排序键。应明白,分片30的局部子范围之间不存在重叠,并且分片30的所有局部子范围连续,这意味着存储在数据库10内的所有键12能够被分配给特定分片30的局部子范围40。因而,这意味着虽然为了简单而在图1中不可见,但是其它分片30应包括下列局部子范围,其覆盖未由具有标识符20.1和20.2的分片存储20上的分片30覆盖的全局排序范围14的所有子范围。如图所示,提供分片存储20上的分片30,以便单个分片30不延伸超过单个分片存储20。这意味着,通常大多数分片存储20将存储一个或更多这些分片30,然而,也可能是一些分片存储20不包括分片30。例如,这能够是当对于系统一个或更多分片存储20可用时的情况,从该系统存储容量当前还不可用,或者作为替选,对于该系统一个或更多分片存储20仍可用,但是被预定为不久的将来从该系统退出。
如图1中所示,每个分片存储20包括局部子范围集合42。此局部子范围集合42包括存储在其相应的分片存储20上的分片30的一个或更多局部子范围40。如图所示,因而具有分片存储标识符20.1的分片存储20的局部子范围集合42包括其单个分片30的局部子范围40:[a,d)。具有分片存储标识符20.2的分片存储20的局部子范围集合42包括其两个分片30的两个局部子范围40:[d,f)和[I,n)。应明白,所示示例仅是为了例示,并且能够提供包括任何适当数目的分片30的任何适当数目的分片存储20,然后,相应的局部子范围集合42包括存储在其上的适当数目的局部子范围40。如所示,每个分片30包括键值存储或另一适当的数据库结构,其包括例如为按字母顺序的数据目标标识符键12,以及例如为涉及此数据目标的元数据的相关联数据11,提供在其上存储此数目目标的冗余编码字块的分布存储系统的存储节点的一列存储节点标识符。以此方式,因而存储在分片存储20.1上的分片30包括数据库10的子集,其包括处于[a,d)的其局部子范围40内的键12,例如a、c等等。优选地,此键12子集及其相关联数据11被存储,或者能够从顺序列、序列、树形数据结构,诸如B树形式的这些分片30有效地检索,B树是其中一个节点能够具有超过两个子节点的二进制搜索树的概括,或者为其它适当的结构,从而响应来自客户端应用程序1的请求13,从分片30提供适当的连续键12的选择或者它们相应的数据11。
如图1中所示,所有分片存储30可连接至适当的网络3,优选的在数据中心中可获得的高速网络;然而,由于该数据库可以在几个地理分布数据中心之间分布,所以此网络3也能够包括这些不同数据中心之间的外部网络链接,例如,其可能为适当的因特网连接。如进一步所示的,例如能够为适当的API接口或者甚至是基于云存储系统的用户接口访问网络的用户浏览器的客户端应用程序1同样可通过适当的网络连接2,诸如因特网连接,而连接至该网络3。应明白,该客户端应用程序1能够为任何适当的应用,或者系统的任何适当水平的模块,只要通常其提供需要向分布数据库提出对一个或更多键12的数据11的请求的功能。
如图1中所示,此请求13‘get(‘f’)包括例如对键‘f’的数据11的检索请求,然而,应明白,能够提供其它适当的请求,诸如产生、更新、删除、列举等等数据库10的一个或更多键12的数据11的请求。如所示,由客户端应用程序1将对键‘f’的数据11的此检索请求13提供给分片存储20.1。如下文将参考图3的实施例更详细解释的,客户端应用程序1能够使用适当的路由器,以做出向哪个分片存储发送其请求的选择,然而,在可动态扩展的大规模分布数据库中,任何此系统可能已经过时,并且与评估该系统的可靠全局状态有关的延迟将不再可接受。因此,根据图1的特定简单实施例,通过简单地向其中一个可用分片存储20提出请求13,在于分片存储30的局部状态信息对客户端应用程序1不可获得时,也能够初始化该请求。如图1中所示,接收检索请求13的该预定分片存储20包括作为分片存储标识符22的20.1,其相应于如图2中所示的方法的步骤102。随后,在步骤104,该预定分片存储20.1将通过其局部子范围集合42校验该至少一个键12是否存在于存储在该预定分片存储20.1上的分片30的局部子范围40中。如图1中所示,该局部子范围集合42仅包括一个局部子范围40:[a,d),其不包括请求13的键‘f’。因而,这意味着图2的方法将继续至步骤108,因为请求13涉及不存在于存储在该预定分片存储20.1上的分片30的局部子范围40中的至少一个键12。在步骤108,分片存储20.1返回包括该预定分片存储20.1的局部子范围集合42的消息60。在该实施例中,然后使客户端应用程序1明白下列事实,即分片存储20.1仅包括具有用于在其局部子范围集合中定义的局部子范围40[a,d)的键12的数据11的分片30。应明白,例如将在下文中进一步解释的,除了局部子范围40之外,消息60和/或局部子范围集合42能够包括另外的信息。消息60例如能够被表示为“20.1:[a:20.1:d:…:z]”,因此“20.1:”提供发送消息60的分片存储的分片存储标识符22的指示,“[a:20.1:d”提供局部子范围40[a,d)的指示,并且“:…:z]”提供其中分片存储20.1不具有可在其局部子范围集合42中可获得的信息的该部分全局排序范围14的指示。如图2中进一步所示的,根据该实施例,在步骤110,然后能够将请求13提供给另外的分片存储20,例如分片存储20.2。如图1中所示,客户端应用程序1被提供有消息60,并且因而将最可能响应其而初始化对另外的分片存储的请求13,然而,应明白,根据可替选实施例,其它元件或模块,或者甚至先前接收该请求的分片存储,能够是该对另外的分片存储20的请求13的提供的指示符,并且另外应明白,如下文将进一步详细解释的,消息60也能够被发送给其它实体或模块而非客户端应用程序1,诸如例如一个或更多其它分片存储20、路由器,等等。
当在图2的步骤110,分片存储20.2被提供有对于键‘f’的检索请求13时,其将再次继续至步骤104,并且通过其局部子范围集合42校验该键12是否存在于存储在该预定分片存储20.2上的分片30的局部子范围40中。如图1中所示,局部子范围集合42包括两个局部子范围40:[d,g)和[i,n),其中一个:[d,g)包括检索请求13的键‘f’。因而,这意味着图2的方法将继续至步骤106,其中分片存储20.2将通过下列方式执行该请求13,例如通过提供存储在局部子范围[d,g)的分片30内的分片存储20.2上的与键‘f’有关的数据11,其向例如客户端应用程序1或任何其它适当的实体或模块提供例如由键‘g’形式的数据目标标识符所标识的数据目标的冗余编码子块的检索的存储节点的标识符。
图3示意性示出类似于图1但是现在另外包括分片路由器的实施例;并且图4示意性示出操作图3的实施例的方法的实施例。已经以相同参考标记标识了诸如与数据库10、分片30、分片存储20等等有关的类似元件,并且它们在上文中关于图1提供的详细说明将仅重复到指示图4的操作方法所需的详细程度。如图3中所示,相同例证性数据库10具有全局排序范围14[a,z],其包括从直至并且包括z的所有按字母顺序排序的键,并且相同分片存储20存储处理对其键12处于与图1中相同的相应局部子范围40内的数据库10的数据11子集的读取和存储请求的相同分片30。因而,应明白,这些分片存储20包括与上文参考图1所述的相同局部子范围集合42。然而,现在例如通过适当的网络连接2,诸如因特网,将客户端应用程序1连接至分片路由器50。此分片路由器50通过适当的网络连接3可连接至分片存储20,并且例如能够作为适当模块实现,该模块在用于上述分布目标存储系统的多个控制器节点的一个或更多扩展器中运行,从而以分布方式存储分布目标存储的元数据。如所示,现在是分片路由器50处理上文关于图1所述的,客户端应用程序1以检索请求‘get(‘f’)’的形式提出的对至少一个键12的数据11的请求13。如所示,由客户端应用程序1将该请求13提供给分片路由器50,然而,应明白,通常任何其它适当的应用程序或模块也能够完成该操作。
如图3中所示,分片路由器50具有全局子范围集合52。表示为‘a:20.1:g:...:i:20.2:n:...:z’的此全局子范围集合52将全局排序范围14的全局子范围54与分片存储标识符22相关联。以此方式,与上文关于局部子范围集合的解释类似地,此表示提供全局排序范围14‘[a,z]’的全局子范围54‘[a,g)’和分片存储标识符22‘20.1’之间的关联。以相同方式,其提供全局排序范围14‘[a,z]’的全局子范围54‘[a,g)’和分片存储标识符22‘20.2’之间的关联。‘g:…:n’指示对于全局子范围54的分片路由器50没有可获得的信息。该全球子范围54例如能够是已存储或提供给分片路由器50的先前信息的结果,但是如下文将更详细解释的,关于图3中示意性示出的系统的状态,其当前过时。作为请求13,在图4的步骤202,将来自客户端应用程序的对键‘f’的数据11的‘get(‘f)’提供给分片路由器50,相应于图4的步骤204,分片路由器50确定与包括此键12‘f’的全局子范围54相关联的分片存储标识符22。在图3所示的情况下,因而这意味着如从表示‘[a:20.1:g:’得出的,全局子范围54[a,g)与分片存储标识符20.1相关联;并且该分片路由器50将此请求13‘20.1:get(‘f’)’提供给该相关联分片存储标识符20.1的该预定分片存储20。然后,该预定分片存储20.1在步骤206通过其局部子范围集合42校验该键12‘f’是否存在于存储在该预定分片存储20上的分片30的局部子范围40中。由于键‘f’不存在于该预定分片存储20.1的局部子范围集合42的单独的局部子范围40[a,d)内,所以该方法将继续至步骤210,其中预定分片存储20.1将向分片路由器50返回包括其局部子范围集合42的消息60。应明白,例如下文将进一步解释的,除了局部子范围40之外,消息60和/或局部子范围集合42还能够包括另外的信息。在步骤212,分片路由器50然后根据该消息60,通过将预定分片存储20的分片存储标识符22与相应于该消息60的局部子范围集合42的局部子范围40的全局子范围54相关联,而更新其全局子范围集合52。如所示,因为从例如能够表示为‘[a:20.1:d:...:z]’的分片存储20.1的局部子范围集合42应明白,分片存储20.1不包括先前在分片路由器50的全局子范围集合52的过时信息中提供的用于子范围[d:g)的分片30,然后将图3中的全局子范围集合52从‘[a:20.1:g:...:i:20.2:n:...:z]’变为‘[a:20.1:d:...:g:...:i:20.2:n:...:z]’。
如图4中进一步所示的,根据该实施例,在步骤214,然后能够将请求13提供给另外的分片存储20,例如分片存储20.2。如图3中所示,分片路由器50被提供有消息60并且因而将最可能响应其而初始化对另外的分片存储20的请求13,应明白,根据可替选实施例,其它元件或者模块,或者甚至是先前从分片路由器50接收请求13的分片存储20.1能够是提供对另外的分片存储20的请求13的初始器,并且另外应明白,另外也能够将消息60发送给不同于分片路由器50的其它实体或模块,例如一个或更多其它分片存储20、客户端应用程序1等等。
当在图4的步骤214,分片存储20.2被提供有对于键‘f’的检索请求13时,其将再次继续至步骤206,并且通过其局部子范围集合42校验该键12是否存在于存储在该预定分片存储20.2上的分片30的局部子范围40中。如图3中所示,局部子范围集合42包括两个局部子范围40:[d,g)和[i,n),其中一个:[d,g)包括检索请求13的键‘f’。因而,这意味着图4的方法将继续至步骤208,其中分片存储20.2将通过下列方式执行该请求13,例如通过提供存储在局部子范围[d,g)的分片30内的分片存储20.2上的与键‘f’有关的数据11,其向例如分片路由器50或客户端应用程序1或任何其它适当的实体或模块提供例如由键‘g’形式的数据目标标识符所标识的数据目标的冗余编码子块的检索的存储节点的标识符。可选地,如图4中进一步所示,也能够对在其局部子范围集合42中包括键的分片存储20.2执行步骤216和218,其与上文参考步骤210和212所解释的类似。这意味着在该情况下,在步骤216,分片存储20.2也将把包括其局部子范围集合42的消息60返回至分片路由器50。在步骤218,分片路由器50然后通过使预定分片存储20的分片存储标识符22与相应于该消息60的局部子范围集合42的局部子范围40的全局子范围54相关联,根据此消息60,而更新其全局子范围集合52。因为从例如能够表示为‘[a:…:d:20.2:g:...:i:20.2:n…:z]’的分片存储20.2的局部子范围集合42应明白,分片存储20.2包括用于子范围[d:g)的分片30,其中在分片路由器50的全局子范围集合52中没有可获得的最新数据信息,上文解释的先前变为‘[a:20.1:d:...:g:...:i:20.2:n:...:z]’的全局子范围集合52然后将进一步变为‘[a:20.1:d:20.2:g:...:i:20.2:n:...:z]’。
通常,响应包括预定分片存储20的局部子范围集合42的消息60而更新分片路由器50的全局子范围集合52的进程包括:
-从该全局子范围集合52清除与不作为消息60的局部子范围40存在于局部子范围集合42内的该预定分片存储20的分片存储标识符22相关联的任何全局子范围54。
-作为与该预定分片存储20的分片存储标识符22相关联的全局子范围54,向全局子范围集合52添加消息60的局部子范围集合42的局部子范围40。应明白,根据特定实施例,能够将此清除和添加组合到更新操作中,例如当它们与该消息的接收的局部子范围40重叠时,更新现有的全局子范围54;或者例如对于检测出其与所接收的局部子范围相同的全局子范围54,能够作为不改变现有全局子范围54的操作执行此清除和添加;或者此清除和添加能够关于消息60的局部子范围集合42,在需要时,作为有效地更新全局子范围集合52的任何其它适当的操作实现。
图5示出移动操作80的示意性表示图。数据库10的左手侧表示示出其在移动操作80之前的状态,而右手侧示出同一数据库10的其在移动操作80之后的状态。如图5中所示,在移动操作80期间,移动具有分片存储20.1上的子范围[a,g)的分片30的排序子集。被称为移动分片72、也被称为边缘(fringe)的此排序子集包括处于子范围[d,g)内的所有键12的数据11,其将被称为从预定分片存储20.1至另外的分片存储20.2的移动子范围70或者边缘子范围70。例如,能够执行此移动操作80,以便随着每个分片30在其子范围40内接收用于键的数据11时动态地扩大,在不同分片存储20之间再均衡存储容量。虽然如图5中所示,此移动操作关注下列情况,其中移动子范围70和相应的移动分片72为存储在分片存储20上的分片30的排序子集,但是也可能是一个分片存储的整个分片30移动至另一个分片,因此,移动分片72与该分片30相同,并且移动子范围70与该分片30的子范围40相同。如图5中所示,在移动操作之前,预定分片存储20.1的局部子范围集合42包括局部子范围40[a,g),并且另外的分片存储20.2的局部子范围集合包括局部子范围40[i,n)。如进一步所示的,在移动操作80之后,移动子范围70[d,g)不再作为来自预定分片存储20.1的局部子范围集合42的局部子范围40存在。现在,局部子范围集合42包括局部子范围40[a,d)。如下文将进一步详细解释的,现在作为外部子范围44[d,g)添加移动子范围70[d,g),外部子范围44[d,g)被添加至包含在预定分片存储20.1的局部子范围集合42中的外部子范围集合46。如所示,外部子范围44[d,g)与移动分片72移动到其的另外的分片存储20.2的分片存储标识符22’20.2’相关联。另外,具有移动子范围70[d,g)的移动分片72从预定分片存储20.1至另外的分片存储20.2的移动操作80导致移动子范围70[d,g)被添加至作为局部子范围40的另外的分片存储20的局部子范围集合42。因而应明白,在移动操作80期间,根据移动子范围70更新仅预定分片存储20和移动操作80中包含的另外的分片存储20的局部子范围集合42的局部子范围集合42。这在允许动态划分的大规模分布数据库系统的背景下特别有益,动态划分导致自动执行移动操作,例如以便在可用分片存储之间更有效地再分布存储容量,因为仅所包含的分片存储才在移动操作期间更新它们的局部状态,不再进一步需要与其它分片存储或者中心管理服务同步,这将导致同步消息的增长,以及相应的响应性和可用性降低。应明白,根据上述方法,仅对移动操作中包含的分片存储的局部子范围的这些更新足以继续处理请求。任何过时信息与对该请求相关的分片存储的局部子范围集合的局部子范围同步。因此,同步开销受限于并且被最优化至处理该实际请求所需的,同时仍足够鲁棒,以处理任何分布再均衡操作,诸如例如上述移动操作,即使是在其中难以不引入不可接受的延迟来获得系统的最新全局状态的大规模分布数据库的背景下也是如此。
如图5中所示,在其移动操作之后的状态下,预定分片存储20.1的局部子范围集合42还包括外部子范围集合46。包含存储在其它分片存储20.2上的分片30的外部子范围44“[d,g)”的该外部子范围集合46与其相应的分片存储标识符22“20.2”相关联。应明白,虽然外部子范围集合46示出为包括与仅一个分片存储标识符22相关联的仅一个外部子范围44,但是根据可替选实施例,该外部子范围集合46能够包括与任何适当数目的相应分片存储标识符22相关联的任何适当数目的外部子范围44,例如,能够已经作为多个先前移动操作的结果,或者以任何其它适当的方式收集该外部子范围集合,即预定分片存储20.1能够收集关于涉及它们的分片或局部子范围40的其它分片存储20的信息。然后,在向分片存储20发送对不存在或不再存在于其局部子范围集合的局部子范围40内的键的请求的情况下,该外部子范围集合46允许向另外的分片存储20有效路由。在图6中示出此最优化方法的示例,除了额外步骤220和222之外,其与图4中所示的类似。上文已经解释的步骤已经被以相同参考标记标识,并且将仅重复到提供用于这些额外步骤的必要背景。如图6中所示,当分片存储20处理对于不存在于存储在其上的分片的一个其局部子范围40中的键12的请求时,例如类似地,对不存在于局部子范围集合的局部子范围40[a,d).中的键‘f’的请求,图5的分片存储20.1处于其移动操作后的状态下,该方法将从步骤202、204和206继续至步骤210,其中如上文解释的,分片存储20.1返回包括局部子范围集合42的消息60。应明白,现在该局部子范围集合42也包括具有外部子范围44‘[d,g)’的外部子范围集合46。在新步骤220,例如,分片路由器50校验请求13的键12是否被包含在该局部子范围集合42的外部子范围集合46的预定外部子范围44内。在对键‘f’的请求的情况下,这将是其存在于外部子范围44‘[d,g)’内的情况。如图5中所示的外部子范围44具有“20.2”作为相关联分片存储标识符22。然后,在步骤222,使用该分片存储标识符’20.2’选择将用于在步骤214后续提供请求13的另外的分片存储20。
在该情况下,可能可选有益的是,当该请求的键12不存在于该预定分片存储20的局部子范围40内时,对于分片路由器50,除了使用消息60的局部子范围集合42的局部子范围40以更新其全局子范围集合52之外,也通过将另外的分片存储20的分片存储标识符22与相应于消息60的外部子范围集合46的预定外部子范围44的全局子范围54相关联而进一步更新其全局子范围集合52。在该情况下,参考对图3所描述的相同示例,因为在步骤212,也将考虑外部子范围44‘d:20.2:g’,这将意味着全局子范围集合52也将被从‘[a:20.1:g:...:i:20.2:n:...:z]’更新至‘[a:20.1:d:20.2:g:...:i:20.2:n:...:z]’。能够以鲁棒方式执行此更新,因为当将该请求发送至该另外的分片存储20.2时,将相对其局部子范围集合校验该请求,并且如果不正确或过时,就提供对全局子范围集合的进一步更新。然而,如果正确,对抵达分片路由器50的分片存储20.1的该外部子范围44中的键的所有请求将被更优化地路由至该另外的分片存储20.2。与已参考的类似,局部子范围集合52在图5中的表示仅为示意性的,并且能够使用任何适当的表示。与上文对全局子范围集合类似地,例如能够将移动操作后的20.1的局部子范围集合表示为‘[a:20.1:d:20.2:g:...:z]’,其中‘[a:20.1:d’代表局部子范围[a,d),因为其包括预定分片存储20.1的分片存储标识符,并且其中‘d:20.2:g’代表与另外的分片存储20.2的分片存储标识符相关联的外部子范围[d,g),并且其中‘g:…:n’指示对于全局排序范围的该子范围,对于分片存储20.1没有可获得的信息。
为了进一步提高系统的鲁棒性,特别是其中在移动操作80中包含预定分片存储20.1和另外的分片存储20.2的情况下,诸如上文参考图5所述的,每个分片存储20包括两个版本的局部子范围集合42,即公共和私人版本。公共局部子范围集合42PU是外部暴露,从而如上所述处理请求13并且发送消息60的版本。如下文进一步详细解释的,使得私人局部子范围集合42PR构造为除了分片存储20本身,对于其它组件是不可访问的。在其它方面,分片存储的公共局部子范围集合42PU和私人局部子范围集合42PR的结构和内容与上文对局部子范围集合42所解释的类似,局部子范围集合42通常包括存储在其相应的分片存储20上的分片30的一个或更多局部子范围40,并且可选地也包括具有包括一个或更多外部子范围44的外部子范围集合46。图7示意性示出分片存储20.1和20.2在此移动操作80期间的公共局部子范围集合42PU和私人局部子范围集合42PR,与参考图5解释类似的,其中具有移动子范围70[d,g)的移动分片72从预定分片存储20.1移动至另外的分片存储20.2。如所示,在移动操作80期间,在第一步骤302中,预定分片存储20.1根据移动子范围70‘d:20.2:g’将其公共局部子范围集合42PU从‘20.1PU->[a:20.1:g:...:z]’更新至‘20.1PU->[a:20.1:d:20.2:g:...:z]’,因而这意味着移动子范围作为局部子范围40被清除,并且作为外部子范围44被添加。随后,在步骤304,预定分片存储20.1开始将移动分片72发送至另外的分片存储20.2,从而其中如果能够成功地建立通信,另外的分片存储20.2就开始从预定分片存储20.1接收移动分片72。当正确地接收移动分片72时,在步骤304中,另外的分片存储20.2将根据移动子范围70将其公共局部子范围集合42PU及其私人局部子范围集合42PR两者从‘20.2PU->[a:...:i:20.2:n:...:z]’更新至‘20.2PU->[a:...:d:20.2:g:...i:20.2:n:...:z]’,因而,这意味着移动子范围70被添加作为局部子范围40。另外,然后另外的分片存储20.2也将移动确认消息74发送至预定分片存储20。当预定分片存储20.2在步骤306中从另外的分片存储20接收所述移动确认消息74时,预定分片存储20.1也将以与先前其将公共版本从‘20.1PU->[a:20.1:g:...:z]’更新至‘20.1PU->[a:20.1:d:20.2:g:...:z]’的类似方式,更新其私人局部子范围集合42PR。另外,然后预定分片存储20.1也将删除该移动分片72,由此以安全方式释放存储容量。
此设置提高了鲁棒性,因为可能出错的移动操作的每一阶段:发送该移动分片、接收该移动分片、确认等等,被覆盖,而不使系统处于不一致状态。这意味着,即使是移动操作出错,也可能不导致数据存在于数据库的超过一个分片中,因为这能够导致在数据库中对相同键的复制实体,其在分布数据库背景下能够保持不被检测,并且能够导致例如对该键的数据的不一致更新。因此,只要开始移动操作80,对预定分片存储20.1的公共局部子范围集合42PU的更新就确保移动子范围内不再有键请求由该分片存储20.1处理。另外,另外的分片存储20.2的局部子范围集合42PU和42PR的更新确保了另外的分片存储20.2仅在已经正确地接收了移动分片72时才开始处理此请求。此外,仅更新预定分片存储20.1的私人局部子范围集合42PR确保了在移动操作80期间发生的任何异常可由该分片存储20.1通过校验其局部状态而检测,不需要任何外部信息。以此方式,当预定分片存储20.1在执行移动操作80后的预定时间段内检测出其公共局部子范围集合42PU与其私人局部子范围集合42PR不同时,此分片存储20.1能够怀疑在移动操作80的任何阶段期间已经发生了故障。优选地,预定分片存储20然后将移动分片72再次发送至另外的分片存储20.2。如果在发送或接收移动分片72时已经存在问题,例如在移动操作中涉及的两个分片之间的网络连接故障或者所涉及的一个分片存储临时不可用,并且该问题在再次发送移动分片72时不再存在,然后,该进一步移动分片就将成功地接收该移动分片72,更新其局部子范围集合,并且继续发送移动确认消息74。
然而,当问题仅存在于发送或接收该移动确认消息74时,已经在另外的分片存储20.2成功地接收了移动分片72,优选地,能够更有效地处理再次发送。该另外的分片存储20.2将在下列情况下检测出该情况,即当其中移动子范围70已经存在于其公开局部子范围集合42PU内的预定分片存储20.1向另外的分片存储20.2提供移动分片72时,例如当在其公共局部子范围集合42PU已经由于此移动分片72的先前正确结果而被变为‘20.2PU->[a:...:d:20.2:g:...i:20.2:n:...:z]’,然而在此之后移动确认消息74不能到达预定分片存储20.1时,再次提供移动子范围70‘d:20.2:g’时。在该情况下,优选地,另外的分片存储20.2将移动确认消息74发送至预定分片存储20,而不接收移动分片72。例如,这能够在下列情况下实现,即当在移动操作期间,通过在前导消息中、帧头中、在适当的标识符中或者以任何其它适当的形式提供关于移动分片的信息而发送移动分片时,以便另外的分片存储20.2在检查该移动分片72后,能够中断或者防止用于发送和接收移动分片72的通信进程的初始化。
为了允许以一致方式在分片存储20之间自动并且有效地再均衡数据库10,同时减少再均衡操作中涉及的数据不可用性的量和时间段,如图8中所示,当在步骤402提供移动作业82,以移动分片30的至少一个排序子集时,首先在步骤404检查与该移动作业82相关联的分片的排序子集的大小是否超过移动大小阈值90。如果与该移动作业82相关联的分片的顺序子集不超过移动大小阈值90时,该方法就继续至步骤406,并且与上文所述类似地,作为移动操作80处理移动作业。如果移动作业82与其中该大小超过移动大小阈值90的分片的排序子集相关联,如步骤408中所示,将根据所述移动作业82产生多个移动操作80,以便每个移动操作80的移动分片72的大小小于或等于移动大小阈值90。然而,根据特定有效的实现方式,始终能够通过下列方式处理任何移动作业82,即产生一个或更多移动分片72或者预定边缘大小的边缘72,例如等于移动大小阈值90,例如10MB,直到处理了整个移动作业82,而不必进行任何提前的大小计算。移动作业82通常能够为用于将分片30的排序子集从预定分片存储20移动至另外的分片存储20的任何适当的请求,直到多个移动操作80已经导致移动了移动作业键范围,具有局部子范围[a,d)的分片30的排序范围[b,d)内的键的排序子集的移动数据;或者键12的移动作业量,例如包含100000键的分片30的最后10000键的排序子集;或者分片30的排序子集的移动作业大小,例如大于5GB的预定分片存储的分片的任何适当顺序子集。以此方式,能够在分布数据库系统的动态再均衡期间,以一致方式执行大量和/或频繁的移动作业,同时数据的不可用性保持限于每个个别移动操作所需的转移时间。如果移动作业例如处于均衡器或者适当地包含在数据库10内或者与其连接的另一适当的系统或者模块的控制之下,就能够在移动大小阈值90例如将被设置为10MB时,不需该均衡器以继续所有结果10MB移动操作的详细执行地产生例如用于移动5GB分片排序子集的大规模移动作业,通过更新所涉及的两个分片存储的局部状态信息而以鲁棒并且有效方式处理该问题。应明白,根据可替选实施例的移动大小阈值90能够被定义为预定键数、预定键范围宽度,等等。
为了防止例如由于上述移动操作的结果而导致的大量小尺寸分片30增殖,在分布数据库动态再均衡期间,优选地,当检测出时,对预定分片30,可在相同分片存储20上获得另外的分片30,其局部子范围40与预定分片30的局部子范围40连续。连续意思是接触或共享公共边界,由此诸如例如图9中所示,例如共享其范围的最大或最小限制值的局部子范围作为具有相邻范围的边界。具有局部子范围[d,e)的预定分片30例如是在具有分片存储标识符20.2的分片存储20处接收移动作业期间产生的移动分片。应明白,另外的分片[e,j)与该预定分片连续,因为其以与两个范围交界的范围限制‘e’的方式共享公共边界。这通过以‘20.2->[a:...:d:20.2:e:20.2:j:...:z]’表示的局部子范围集合42的状态也应明白。在合并操作84期间,该预定分片30[d,e)与另外的分片30[e,j)合并,因而形成合并分片30[d,j),并且通过将预定分片30和另外的分片30的连续局部子范围40‘d:20.2:e:20.2:j合并为合并分片30的合并局部子范围40“d:20.2:j”来更新局部子范围集合42。为了将合并操作的数目限于特定水平,例如可能将合并操作限于预定分片,其大小小于优选大于与移动大小阈值90的合并大小阈值,以便在产生多个小移动分片的多个移动操作导致的移动作业之后,这些移动分片被再次合并。
虽然上文给出的示例通常涉及包括单个键的请求,但是应明白,上述系统和方法在最大化涉及多个键的请求的单个分片查找的比重时特别有益。如上文已经解释的,此请求通常发生在例如大规模分布存储系统的背景下,其中用户做出的其中一个频繁请求是提供排序列,例如以通过适当容器的内容分页,例如列出先前上载至特定云存储服务的预定用户账户的特定文件夹的文件。响应于此标准请求,在浏览器中向用户呈现例如文件名的按字母顺序分类的列,其具有检索所选文件的链接。在此大规模分布存储系统中难以提前评价应选择哪种哈希函数,以便实现例如所存储的所有内容的元数据的均衡分布,并且当选择最佳哈希方法时,这通常在对这些键的排序列提出数据请求时导致对将每个个别键排队的需求,以便确定其中存储每个键的分片,不仅如此,此排序列中的后续键的这些分片通常将被分配给不同的分片。为了提高性能,上述实施例确保了在接收对多个排序键的请求时,将导致请求检索单个分片30的排序子集的机会增大。另外,由于每个分片本身形成全局键范围的排序子集,所以不再必需对每个个别键确认那个分片保持其数据,因为一旦例如确定例如请求的最低键,该请求的排序子集中的所有后续键将存在于该相同分片中,直到达到其局部子范围的限制,之后仅需要确定哪个分片连续,从而继续检索用于该键排序子集的数据。
虽然在上述示例中,仅涉及由与键的分类子集相关联的下限和上限定义的按字母顺序分类范围,但是应明白,能够选择任何其它适当的排序关系,只要通常其与在对数据库的大比重请求时需要的键的排序关系密切相关。
应明白,通常,上述方法和系统能够很大程度上作为一种计算机程序实现,其包括适合在由适当的计算系统的处理器,诸如适当的服务器或通用计算机执行时执行该方法的软件代码。
虽然已经参考特定实施例例示了本发明,但是本领域技术人员应明白,本发明不限于上述例示性实施例的细节,并且不偏离其范围,本发明可能以各种变化和变型实施。因此,应将所提出的实施例视为所有方面为例示性的而非限制性的,本发明的范围由附加权利要求而非上述说明指示,并且因此进入权利要求等效物的意义和范围内的所有变化有意被包含在其中。换句话说,预期覆盖落入基本原理的范围内,并且在本专利申请中要求其本质属性的任何和所有变型、变体或等效物。本专利申请的读者还应理解,词语“包含…”或“包含…”不排除其它元件或步骤,词语“一”或“一个”不排除多个,并且单个元件,诸如计算机系统、处理器或另一集成单元可满足权利要求中所列的几个意义的功能。不应将权利要求中的任何标识符理解为限制所关注的相应权利要求。当在说明书中或在权利要求中使用时,引入术语“第一”、“第二”、“第三”、“a”、“b”、“c”等等以在类似元件或步骤之间区分,并且不必描述连续或时间顺序。类似地,引入术语“顶部”、“底部”、“之上”、“之下”等等是为了说明,并且不必指示相对位置。应理解,如此使用的术语在适当环境下可互换,并且本发明的实施例能够根据本发明,从而以与所述或上文例示不同的其它顺序或方向运行。
Claims (14)
1.一种用于动态划分数据库的计算机实现方法,所述数据库包括由包含在全局排序范围内的键可识别的数据,所述键包括字母数字数据目标标识符,其中所述方法包括:
-提供多个分片存储,所述多个分片存储的每个包括分片存储标识符并且所述多个分片存储的每个受限于存储容量限制;
-提供多个分片,所述多个分片的每个分片被配置成处理对于局部子范围内的至少一个键的数据的请求,其中所述局部子范围包括所述全局排序范围的排序子范围;
-在所述多个分片存储上提供所述多个分片,以便单个分片不延伸超过单个分片存储;
-在所述多个分片存储的每个上提供局部子范围集合,每个局部子范围集合包括存储在对应的分片存储上的所述多个分片的一个或更多局部子范围;
-提供分片路由器,其连接至所述多个分片存储并且适合处理对于至少一个键的数据的请求;
-在所述分片路由器上提供适合将所述全局排序范围的全局子范围与分片存储标识符相关联的全局子范围集合,以及
-通过以下操作处理对于至少一个键的数据的请求:
-向所述分片路由器提供所述请求;
-所述分片路由器确定所述分片存储标识符与包括所述请求的所述至少一个键的全局子范围相关联;
-所述分片路由器向与所述相关联的分片存储标识符相关的预定分片存储提供所述请求;
-所述预定分片存储通过其局部子范围集合确定所述至少一个键是否存在于存储在所述预定分片存储上的分片的局部子范围内;以及
-响应于确定所述至少一个键不存在于存储在所述预定分片存储上的所述多个分片的所述一个或更多局部子范围内:
返回包括所述预定分片存储的所述局部子范围集合的消息;以及
通过将所述预定分片存储的所述分片存储标识符与对应于所述消息的所述局部子范围集合的局部子范围的全局子范围相关联,所述分片路由器根据所述消息更新其全局子范围集合。
2.根据权利要求1所述的方法,其中所述方法还包括:
响应于通过所述预定分片存储返回所述消息,提供所述请求给另外的分片存储。
3.根据权利要求1所述的方法,处理所述请求的所述预定分片存储的所述局部子范围集合还包括外部子范围集合,其包括存储在其它分片存储上的分片的一个或更多外部子范围,所述其它分片存储与其相应的分片存储标识符相关联,并且其中所述方法还包括下列步骤:
响应于确定所述至少一个键不存在于存储在所述预定分片存储上的所述分片的一个或更多局部子范围中,由所述预定分片存储处理所述请求,其中处理所述请求包括:
-返回包括所述局部子范围集合的所述消息;
-确定所述请求的所述至少一个键是否被包含在所述局部子范围集合的所述外部子范围集合的预定外部子范围内;以及
-随后向其所述分片存储标识符与所述外部子范围相关联的另外的分片存储提供所述请求。
4.根据权利要求3所述的方法,其中所述方法还包括:
-响应于确定所述至少一个键不存在于存储在所述预定分片存储上的所述多个分片的一个或更多局部子范围中:
-所述分片路由器通过将所述另外的分片存储的所述分片存储标识符与对应于所述消息的所述外部子范围集合的所述预定外部子范围的全局子范围相关联,根据所述消息进一步更新其全局子范围集合。
5.根据权利要求3或4所述的方法,其中所述方法还包括:
执行包含移动子范围内的所有键的数据的移动分片从所述预定分片存储移动至另外的分片存储的移动操作,其中所述移动操作导致所述移动子范围被从所述预定分片存储的所述局部子范围集合移除,并且作为与所述另外的分片存储的所述分片存储标识符相关联的外部子范围而被添加至所述预定分片存储的外部子范围集合。
6.根据权利要求5所述的方法,其中,包含所述移动子范围内的所有键的所述数据的所述移动分片从所述预定分片存储移动至所述另外的分片存储的所述移动操作导致所述移动子范围作为局部子范围而被添加至所述另外的分片存储的局部子范围集合。
7.根据权利要求6所述的方法,其中在所述移动操作期间,仅所述移动操作中涉及的所述另外的分片存储和/或所述预定分片存储的所述局部子范围集合根据所述移动子范围而被更新。
8.根据权利要求5所述的方法,其中所述移动操作中涉及的所述预定分片存储和所述另外的分片存储包括公共局部子范围集合和私人局部子范围集合,并且其中所述方法还包括,在所述移动操作期间:
-所述预定分片存储根据所述移动子范围更新其公共局部子范围集合;
-所述预定分片存储向所述另外的分片存储发送所述移动分片;
-所述另外的分片存储从所述预定分片存储接收所述移动分片;
-响应于接收所述移动分片,所述另外的分片存储:
-根据所述移动子范围,更新其公共局部子范围集合和其私人局部子范围集合两者;
-向所述预定分片存储发送第一移动确认消息;
-响应于所述预定分片存储从所述另外的分片存储接收所述第一移动确认消息,所述预定分片存储更新其私人局部子范围集合,并且删除所述移动分片。
9.根据权利要求8所述的方法,其中所述方法还包括:
响应于在执行所述移动操作后的预定时间段以及所述预定分片存储检测出其公共局部子范围集合与其私人局部子范围集合不同,所述预定分片存储向所述另外的分片存储再次发送所述移动分片。
10.根据权利要求9所述的方法,其中所述方法还包括:
响应于由所述预定分片存储向所述另外的分片存储提供移动分片以及所述移动子范围已经存在于所述另外的分片存储的所述公共局部子范围集合内,所述另外的分片存储向所述预定分片存储发送第二移动确认消息,而不接收所述移动分片。
11.根据权利要求5所述的方法,其中所述移动分片包括所述预定分片存储的分片的至少排序子集。
12.根据权利要求1所述的方法,其中所述方法还包括:
响应于移动作业被提供以移动其大小超过移动大小阈值的分片的至少排序子集,根据所述移动作业,产生多个移动操作,以便所述多个移动操作的每个的所述移动分片的大小小于或等于所述移动大小阈值,其中所述移动作业包括用于将所述分片的所述排序子集从所述预定分片存储移动至另外的分片存储的请求,直到所述多个移动操作已经导致移动:
-移动作业键范围;
-键的移动作业量;和/或
-所述分片的排序子集的移动作业大小。
13.根据权利要求1所述的方法,其中所述方法还包括:
响应于检测出对于预定分片,在其所述局部子范围与所述预定分片的所述局部子范围连续的相同分片存储上可获得另外的分片:
将所述预定分片与所述另外的分片合并,由此形成合并分片,以及
通过将所述预定分片和所述另外的分片两者的连续局部子范围合并为所述合并分片的合并局部子范围而更新所述局部子范围集合。
14.一种计算机可读介质,其上存储有计算机程序,所述计算机程序由处理器执行时适合执行根据上述权利要求中任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP14185304.4 | 2014-09-18 | ||
EP14185304.4A EP2998881B1 (en) | 2014-09-18 | 2014-09-18 | A computer implemented method for dynamic sharding |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105447075A CN105447075A (zh) | 2016-03-30 |
CN105447075B true CN105447075B (zh) | 2019-03-15 |
Family
ID=51589117
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510599564.6A Active CN105447075B (zh) | 2014-09-18 | 2015-09-18 | 用于动态划分的计算机实现方法 |
Country Status (7)
Country | Link |
---|---|
US (2) | US9965539B2 (zh) |
EP (1) | EP2998881B1 (zh) |
JP (1) | JP6198210B2 (zh) |
KR (1) | KR101852136B1 (zh) |
CN (1) | CN105447075B (zh) |
AU (1) | AU2015221548B2 (zh) |
CA (1) | CA2903841A1 (zh) |
Families Citing this family (125)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8589640B2 (en) | 2011-10-14 | 2013-11-19 | Pure Storage, Inc. | Method for maintaining multiple fingerprint tables in a deduplicating storage system |
CN106462583B (zh) | 2014-03-10 | 2020-03-24 | 因特拉纳公司 | 用于快速数据分析的系统和方法 |
US9367243B1 (en) | 2014-06-04 | 2016-06-14 | Pure Storage, Inc. | Scalable non-uniform storage sizes |
US9836234B2 (en) | 2014-06-04 | 2017-12-05 | Pure Storage, Inc. | Storage cluster |
US11960371B2 (en) | 2014-06-04 | 2024-04-16 | Pure Storage, Inc. | Message persistence in a zoned system |
US11068363B1 (en) | 2014-06-04 | 2021-07-20 | Pure Storage, Inc. | Proactively rebuilding data in a storage cluster |
US11652884B2 (en) | 2014-06-04 | 2023-05-16 | Pure Storage, Inc. | Customized hash algorithms |
US9003144B1 (en) | 2014-06-04 | 2015-04-07 | Pure Storage, Inc. | Mechanism for persisting messages in a storage system |
US10574754B1 (en) | 2014-06-04 | 2020-02-25 | Pure Storage, Inc. | Multi-chassis array with multi-level load balancing |
US9218244B1 (en) | 2014-06-04 | 2015-12-22 | Pure Storage, Inc. | Rebuilding data across storage nodes |
US9021297B1 (en) | 2014-07-02 | 2015-04-28 | Pure Storage, Inc. | Redundant, fault-tolerant, distributed remote procedure call cache in a storage system |
US8868825B1 (en) | 2014-07-02 | 2014-10-21 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of a non-volatile solid-state storage |
US11604598B2 (en) | 2014-07-02 | 2023-03-14 | Pure Storage, Inc. | Storage cluster with zoned drives |
US9836245B2 (en) | 2014-07-02 | 2017-12-05 | Pure Storage, Inc. | Non-volatile RAM and flash memory in a non-volatile solid-state storage |
US11886308B2 (en) | 2014-07-02 | 2024-01-30 | Pure Storage, Inc. | Dual class of service for unified file and object messaging |
US9811677B2 (en) | 2014-07-03 | 2017-11-07 | Pure Storage, Inc. | Secure data replication in a storage grid |
US9747229B1 (en) | 2014-07-03 | 2017-08-29 | Pure Storage, Inc. | Self-describing data format for DMA in a non-volatile solid-state storage |
US10853311B1 (en) | 2014-07-03 | 2020-12-01 | Pure Storage, Inc. | Administration through files in a storage system |
US9495255B2 (en) | 2014-08-07 | 2016-11-15 | Pure Storage, Inc. | Error recovery in a storage cluster |
US9082512B1 (en) | 2014-08-07 | 2015-07-14 | Pure Storage, Inc. | Die-level monitoring in a storage cluster |
US10983859B2 (en) | 2014-08-07 | 2021-04-20 | Pure Storage, Inc. | Adjustable error correction based on memory health in a storage unit |
US9483346B2 (en) | 2014-08-07 | 2016-11-01 | Pure Storage, Inc. | Data rebuild on feedback from a queue in a non-volatile solid-state storage |
US10079711B1 (en) | 2014-08-20 | 2018-09-18 | Pure Storage, Inc. | Virtual file server with preserved MAC address |
US20160191508A1 (en) * | 2014-12-31 | 2016-06-30 | Nexenta Systems, Inc. | Methods and Systems for Block Sharding of Objects Stored in Distributed Storage System |
US11100285B2 (en) | 2015-01-23 | 2021-08-24 | Conversica, Inc. | Systems and methods for configurable messaging with feature extraction |
US11106871B2 (en) | 2015-01-23 | 2021-08-31 | Conversica, Inc. | Systems and methods for configurable messaging response-action engine |
US10296507B2 (en) * | 2015-02-12 | 2019-05-21 | Interana, Inc. | Methods for enhancing rapid data analysis |
US9940234B2 (en) | 2015-03-26 | 2018-04-10 | Pure Storage, Inc. | Aggressive data deduplication using lazy garbage collection |
US10178169B2 (en) | 2015-04-09 | 2019-01-08 | Pure Storage, Inc. | Point to point based backend communication layer for storage processing |
US9672125B2 (en) | 2015-04-10 | 2017-06-06 | Pure Storage, Inc. | Ability to partition an array into two or more logical arrays with independently running software |
US10846275B2 (en) | 2015-06-26 | 2020-11-24 | Pure Storage, Inc. | Key management in a storage device |
US10983732B2 (en) | 2015-07-13 | 2021-04-20 | Pure Storage, Inc. | Method and system for accessing a file |
US10108355B2 (en) | 2015-09-01 | 2018-10-23 | Pure Storage, Inc. | Erase block state detection |
US11341136B2 (en) | 2015-09-04 | 2022-05-24 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
US9768953B2 (en) | 2015-09-30 | 2017-09-19 | Pure Storage, Inc. | Resharing of a split secret |
US10762069B2 (en) | 2015-09-30 | 2020-09-01 | Pure Storage, Inc. | Mechanism for a system where data and metadata are located closely together |
US10853266B2 (en) | 2015-09-30 | 2020-12-01 | Pure Storage, Inc. | Hardware assisted data lookup methods |
US9843453B2 (en) | 2015-10-23 | 2017-12-12 | Pure Storage, Inc. | Authorizing I/O commands with I/O tokens |
US10007457B2 (en) | 2015-12-22 | 2018-06-26 | Pure Storage, Inc. | Distributed transactions with token-associated execution |
KR101765517B1 (ko) * | 2016-04-06 | 2017-08-08 | 한양대학교 산학협력단 | 데이터베이스를 저널링하는 장치 및 방법 |
US10261690B1 (en) | 2016-05-03 | 2019-04-16 | Pure Storage, Inc. | Systems and methods for operating a storage system |
US11169706B2 (en) | 2016-05-26 | 2021-11-09 | Nutanix, Inc. | Rebalancing storage I/O workloads by storage controller selection and redirection |
US10628462B2 (en) * | 2016-06-27 | 2020-04-21 | Microsoft Technology Licensing, Llc | Propagating a status among related events |
US11861188B2 (en) | 2016-07-19 | 2024-01-02 | Pure Storage, Inc. | System having modular accelerators |
US9672905B1 (en) | 2016-07-22 | 2017-06-06 | Pure Storage, Inc. | Optimize data protection layouts based on distributed flash wear leveling |
US10768819B2 (en) | 2016-07-22 | 2020-09-08 | Pure Storage, Inc. | Hardware support for non-disruptive upgrades |
US11604690B2 (en) | 2016-07-24 | 2023-03-14 | Pure Storage, Inc. | Online failure span determination |
US10203903B2 (en) | 2016-07-26 | 2019-02-12 | Pure Storage, Inc. | Geometry based, space aware shelf/writegroup evacuation |
US11797212B2 (en) | 2016-07-26 | 2023-10-24 | Pure Storage, Inc. | Data migration for zoned drives |
US11886334B2 (en) | 2016-07-26 | 2024-01-30 | Pure Storage, Inc. | Optimizing spool and memory space management |
US11734169B2 (en) | 2016-07-26 | 2023-08-22 | Pure Storage, Inc. | Optimizing spool and memory space management |
US10366004B2 (en) | 2016-07-26 | 2019-07-30 | Pure Storage, Inc. | Storage system with elective garbage collection to reduce flash contention |
US10146835B2 (en) | 2016-08-23 | 2018-12-04 | Interana, Inc. | Methods for stratified sampling-based query execution |
US11422719B2 (en) | 2016-09-15 | 2022-08-23 | Pure Storage, Inc. | Distributed file deletion and truncation |
US9747039B1 (en) | 2016-10-04 | 2017-08-29 | Pure Storage, Inc. | Reservations over multiple paths on NVMe over fabrics |
US10481798B2 (en) | 2016-10-28 | 2019-11-19 | Pure Storage, Inc. | Efficient flash management for multiple controllers |
US11550481B2 (en) | 2016-12-19 | 2023-01-10 | Pure Storage, Inc. | Efficiently writing data in a zoned drive storage system |
US11307998B2 (en) | 2017-01-09 | 2022-04-19 | Pure Storage, Inc. | Storage efficiency of encrypted host system data |
US11955187B2 (en) | 2017-01-13 | 2024-04-09 | Pure Storage, Inc. | Refresh of differing capacity NAND |
US9747158B1 (en) | 2017-01-13 | 2017-08-29 | Pure Storage, Inc. | Intelligent refresh of 3D NAND |
US10678817B2 (en) * | 2017-02-03 | 2020-06-09 | DataJaguar, Inc | Systems and methods of scalable distributed databases |
CN110622152B (zh) * | 2017-02-27 | 2021-04-13 | 分秒库公司 | 用于查询时间序列数据的可扩展数据库系统 |
CN107103032B (zh) * | 2017-03-21 | 2020-02-28 | 中国科学院计算机网络信息中心 | 一种分布式环境下避免全局排序的海量数据分页查询方法 |
US10528488B1 (en) | 2017-03-30 | 2020-01-07 | Pure Storage, Inc. | Efficient name coding |
US11016667B1 (en) | 2017-04-05 | 2021-05-25 | Pure Storage, Inc. | Efficient mapping for LUNs in storage memory with holes in address space |
US10141050B1 (en) | 2017-04-27 | 2018-11-27 | Pure Storage, Inc. | Page writes for triple level cell flash memory |
US10516645B1 (en) | 2017-04-27 | 2019-12-24 | Pure Storage, Inc. | Address resolution broadcasting in a networked device |
US11782625B2 (en) | 2017-06-11 | 2023-10-10 | Pure Storage, Inc. | Heterogeneity supportive resiliency groups |
US10425473B1 (en) | 2017-07-03 | 2019-09-24 | Pure Storage, Inc. | Stateful connection reset in a storage cluster with a stateless load balancer |
US10402266B1 (en) | 2017-07-31 | 2019-09-03 | Pure Storage, Inc. | Redundant array of independent disks in a direct-mapped flash storage system |
CN107491965B (zh) | 2017-07-31 | 2020-07-10 | 阿里巴巴集团控股有限公司 | 一种生物特征库的建立方法和装置 |
US10769126B1 (en) * | 2017-09-22 | 2020-09-08 | Amazon Technologies, Inc. | Data entropy reduction across stream shard |
US11269915B2 (en) * | 2017-10-05 | 2022-03-08 | Zadara Storage, Inc. | Maintaining shards in KV store with dynamic key range |
WO2019084321A1 (en) * | 2017-10-26 | 2019-05-02 | Conversica, Inc. | SYSTEMS AND METHODS FOR CONFIGURABLE MESSAGE RESPONSE-ACTION ENGINE |
US10496330B1 (en) | 2017-10-31 | 2019-12-03 | Pure Storage, Inc. | Using flash storage devices with different sized erase blocks |
US10545687B1 (en) | 2017-10-31 | 2020-01-28 | Pure Storage, Inc. | Data rebuild when changing erase block sizes during drive replacement |
US10860475B1 (en) | 2017-11-17 | 2020-12-08 | Pure Storage, Inc. | Hybrid flash translation layer |
CN107819875B (zh) * | 2017-11-27 | 2021-04-09 | 深信服科技股份有限公司 | 一种云平台下用户专享服务方法及装置 |
US10467527B1 (en) | 2018-01-31 | 2019-11-05 | Pure Storage, Inc. | Method and apparatus for artificial intelligence acceleration |
US10976948B1 (en) | 2018-01-31 | 2021-04-13 | Pure Storage, Inc. | Cluster expansion mechanism |
US11036596B1 (en) | 2018-02-18 | 2021-06-15 | Pure Storage, Inc. | System for delaying acknowledgements on open NAND locations until durability has been confirmed |
US11914592B2 (en) | 2018-02-27 | 2024-02-27 | Elasticsearch B.V. | Systems and methods for processing structured queries over clusters |
US11188531B2 (en) | 2018-02-27 | 2021-11-30 | Elasticsearch B.V. | Systems and methods for converting and resolving structured queries as search queries |
US10685031B2 (en) * | 2018-03-27 | 2020-06-16 | New Relic, Inc. | Dynamic hash partitioning for large-scale database management systems |
US10901845B2 (en) * | 2018-04-16 | 2021-01-26 | Microsoft Technology Licensing, Llc | Erasure coding for a single-image memory |
US11385792B2 (en) | 2018-04-27 | 2022-07-12 | Pure Storage, Inc. | High availability controller pair transitioning |
CN108874753B (zh) * | 2018-06-13 | 2022-05-10 | 百度在线网络技术(北京)有限公司 | 主题帖回复的查找方法、装置和计算机设备 |
US11251939B2 (en) * | 2018-08-31 | 2022-02-15 | Quantifind, Inc. | Apparatuses, methods and systems for common key identification in distributed data environments |
US11868309B2 (en) | 2018-09-06 | 2024-01-09 | Pure Storage, Inc. | Queue management for data relocation |
US11354058B2 (en) | 2018-09-06 | 2022-06-07 | Pure Storage, Inc. | Local relocation of data stored at a storage device of a storage system |
US11500570B2 (en) | 2018-09-06 | 2022-11-15 | Pure Storage, Inc. | Efficient relocation of data utilizing different programming modes |
US11461270B2 (en) * | 2018-10-31 | 2022-10-04 | Elasticsearch B.V. | Shard splitting |
US10922142B2 (en) | 2018-10-31 | 2021-02-16 | Nutanix, Inc. | Multi-stage IOPS allocation |
US10997204B2 (en) | 2018-12-21 | 2021-05-04 | Elasticsearch B.V. | Cross cluster replication |
RU2744028C2 (ru) | 2018-12-26 | 2021-03-02 | Общество С Ограниченной Ответственностью "Яндекс" | Способ и система для хранения множества документов |
US11943295B2 (en) | 2019-04-09 | 2024-03-26 | Elasticsearch B.V. | Single bi-directional point of policy control, administration, interactive queries, and security protections |
US11431558B2 (en) | 2019-04-09 | 2022-08-30 | Elasticsearch B.V. | Data shipper agent management and configuration systems and methods |
US11030222B2 (en) * | 2019-04-09 | 2021-06-08 | Fair Isaac Corporation | Similarity sharding |
US11099986B2 (en) | 2019-04-12 | 2021-08-24 | Pure Storage, Inc. | Efficient transfer of memory contents |
US10891165B2 (en) | 2019-04-12 | 2021-01-12 | Elasticsearch B.V. | Frozen indices |
US10996887B2 (en) * | 2019-04-29 | 2021-05-04 | EMC IP Holding Company LLC | Clustered storage system with dynamic space assignments across processing modules to counter unbalanced conditions |
US11182093B2 (en) | 2019-05-02 | 2021-11-23 | Elasticsearch B.V. | Index lifecycle management |
CN113994626B (zh) * | 2019-05-22 | 2023-01-17 | 妙泰公司 | 具有增强的安全性、弹性和控制的分布式数据存储方法及系统 |
US11281394B2 (en) | 2019-06-24 | 2022-03-22 | Pure Storage, Inc. | Replication across partitioning schemes in a distributed storage system |
US10936562B2 (en) | 2019-08-02 | 2021-03-02 | Timescale, Inc. | Type-specific compression in database systems |
US11893126B2 (en) | 2019-10-14 | 2024-02-06 | Pure Storage, Inc. | Data deletion for a multi-tenant environment |
US11494229B2 (en) * | 2019-11-25 | 2022-11-08 | Google Llc | Rule violation detection |
US11409711B2 (en) * | 2019-12-03 | 2022-08-09 | Western Digital Technologies, Inc. | Barriers for dependent operations among sharded data stores |
US11567899B2 (en) | 2019-12-03 | 2023-01-31 | Western Digital Technologies, Inc. | Managing dependent delete operations among data stores |
US11704192B2 (en) | 2019-12-12 | 2023-07-18 | Pure Storage, Inc. | Budgeting open blocks based on power loss protection |
US11847331B2 (en) | 2019-12-12 | 2023-12-19 | Pure Storage, Inc. | Budgeting open blocks of a storage unit based on power loss prevention |
US11416144B2 (en) | 2019-12-12 | 2022-08-16 | Pure Storage, Inc. | Dynamic use of segment or zone power loss protection in a flash device |
US11188432B2 (en) | 2020-02-28 | 2021-11-30 | Pure Storage, Inc. | Data resiliency by partially deallocating data blocks of a storage device |
US11474986B2 (en) | 2020-04-24 | 2022-10-18 | Pure Storage, Inc. | Utilizing machine learning to streamline telemetry processing of storage media |
US11669505B2 (en) | 2020-05-12 | 2023-06-06 | AirMettle, Inc. | Partitioning, processing, and protecting data |
CN111858771A (zh) * | 2020-07-30 | 2020-10-30 | 杭州复杂美科技有限公司 | 分布式数据存储方法、设备和存储介质 |
US11604674B2 (en) | 2020-09-04 | 2023-03-14 | Elasticsearch B.V. | Systems and methods for detecting and filtering function calls within processes for malware behavior |
US11487455B2 (en) | 2020-12-17 | 2022-11-01 | Pure Storage, Inc. | Dynamic block allocation to optimize storage system performance |
US11614880B2 (en) | 2020-12-31 | 2023-03-28 | Pure Storage, Inc. | Storage system with selectable write paths |
US11847324B2 (en) | 2020-12-31 | 2023-12-19 | Pure Storage, Inc. | Optimizing resiliency groups for data regions of a storage system |
WO2022177564A1 (en) * | 2021-02-18 | 2022-08-25 | Futurewei Technologies, Inc. | Distributed naming scheme for network-attached storage devices |
US11507597B2 (en) | 2021-03-31 | 2022-11-22 | Pure Storage, Inc. | Data replication to meet a recovery point objective |
US11620274B2 (en) * | 2021-04-30 | 2023-04-04 | Intuit Inc. | Method and system of automatically predicting anomalies in online forms |
KR20240057605A (ko) * | 2022-10-25 | 2024-05-03 | 주식회사 블룸테크놀로지 | 블록체인 네트워크에서 어카운트 생성 시스템 및 방법 |
US11995084B1 (en) | 2023-10-05 | 2024-05-28 | Timescale, Inc. | Database system for querying time-series data stored in a tiered storage using a cloud platform |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8392482B1 (en) * | 2008-03-31 | 2013-03-05 | Amazon Technologies, Inc. | Versioning of database partition maps |
CN103051737A (zh) * | 2011-11-22 | 2013-04-17 | 微软公司 | 提供融合互联架构上的网络能力 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7693813B1 (en) * | 2007-03-30 | 2010-04-06 | Google Inc. | Index server architecture using tiered and sharded phrase posting lists |
WO2012068184A1 (en) | 2010-11-15 | 2012-05-24 | File System Labs Llc | Methods and apparatus for distributed data storage |
US9740762B2 (en) | 2011-04-01 | 2017-08-22 | Mongodb, Inc. | System and method for optimizing data migration in a partitioned database |
US8386840B2 (en) | 2010-12-27 | 2013-02-26 | Amplidata Nv | Distributed object storage system |
US9037618B2 (en) * | 2011-03-31 | 2015-05-19 | Novell, Inc. | Distributed, unified file system operations |
US9047331B2 (en) | 2011-04-21 | 2015-06-02 | International Business Machines Corporation | Scalable row-store with consensus-based replication |
JP6180710B2 (ja) * | 2011-07-28 | 2017-08-16 | ネイバー コーポレーションNAVER Corporation | データ格納方法及び装置 |
US10489412B2 (en) | 2012-03-29 | 2019-11-26 | Hitachi Vantara Corporation | Highly available search index with storage node addition and removal |
EP2672387B1 (en) | 2012-06-04 | 2018-08-01 | Amplidata NV | A distributed object storage system |
US20140108421A1 (en) | 2012-10-04 | 2014-04-17 | Codefutures Corporation | Partitioning database data in a sharded database |
KR101544356B1 (ko) * | 2012-10-31 | 2015-08-13 | 삼성에스디에스 주식회사 | 메타데이터 및 트랜잭션 발생량을 고려한 동적 샤딩 기능을 지원하는 분산 데이터베이스 관리 방법 및 그 구성 노드 |
WO2014201402A1 (en) * | 2013-06-14 | 2014-12-18 | American Chemical Society | Systems and methods for searching chemical structures |
-
2014
- 2014-09-18 EP EP14185304.4A patent/EP2998881B1/en active Active
-
2015
- 2015-09-04 AU AU2015221548A patent/AU2015221548B2/en not_active Ceased
- 2015-09-10 CA CA2903841A patent/CA2903841A1/en not_active Abandoned
- 2015-09-10 JP JP2015178972A patent/JP6198210B2/ja not_active Expired - Fee Related
- 2015-09-16 US US14/855,629 patent/US9965539B2/en active Active
- 2015-09-18 CN CN201510599564.6A patent/CN105447075B/zh active Active
- 2015-09-18 KR KR1020150132596A patent/KR101852136B1/ko active IP Right Grant
-
2018
- 2018-05-07 US US15/973,491 patent/US10776396B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8392482B1 (en) * | 2008-03-31 | 2013-03-05 | Amazon Technologies, Inc. | Versioning of database partition maps |
CN103051737A (zh) * | 2011-11-22 | 2013-04-17 | 微软公司 | 提供融合互联架构上的网络能力 |
Also Published As
Publication number | Publication date |
---|---|
CN105447075A (zh) | 2016-03-30 |
US20160085839A1 (en) | 2016-03-24 |
US10776396B2 (en) | 2020-09-15 |
EP2998881B1 (en) | 2018-07-25 |
AU2015221548B2 (en) | 2017-01-19 |
AU2015221548A1 (en) | 2016-04-07 |
US9965539B2 (en) | 2018-05-08 |
JP6198210B2 (ja) | 2017-09-20 |
CA2903841A1 (en) | 2016-03-18 |
KR101852136B1 (ko) | 2018-06-08 |
JP2016062609A (ja) | 2016-04-25 |
US20180253484A1 (en) | 2018-09-06 |
KR20160037761A (ko) | 2016-04-06 |
EP2998881A1 (en) | 2016-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105447075B (zh) | 用于动态划分的计算机实现方法 | |
US10209893B2 (en) | Massively scalable object storage for storing object replicas | |
EP2498476B1 (en) | Massively scalable object storage system | |
US9531809B1 (en) | Distributed data storage controller | |
US20170220662A1 (en) | Massively Scalable Object Storage System | |
US9609060B2 (en) | Distributed storage system and method | |
WO2018059032A1 (zh) | 一种虚拟节点的数据迁移方法和虚拟节点 | |
US9305072B2 (en) | Information storage system and data replication method thereof | |
US9547706B2 (en) | Using colocation hints to facilitate accessing a distributed data storage system | |
US8930364B1 (en) | Intelligent data integration | |
CN103152395A (zh) | 一种分布式文件系统的存储方法及装置 | |
CN104301360A (zh) | 一种日志数据记录的方法、日志服务器及系统 | |
CN104035836A (zh) | 集群检索平台中的自动容灾恢复方法及系统 | |
JP6269140B2 (ja) | アクセス制御プログラム、アクセス制御方法、およびアクセス制御装置 | |
CN107948229A (zh) | 分布式存储的方法、装置及系统 | |
WO2017156855A1 (en) | Database systems with re-ordered replicas and methods of accessing and backing up databases | |
US9037762B2 (en) | Balancing data distribution in a fault-tolerant storage system based on the movements of the replicated copies of data | |
KR101035857B1 (ko) | 데이터 관리 방법 및 그 시스템 | |
Cooper et al. | PNUTS to sherpa: Lessons from yahoo!'s cloud database | |
CN108021562A (zh) | 应用于分布式文件系统的存盘方法、装置及分布式文件系统 | |
CN113495807A (zh) | 数据备份方法、数据恢复方法及装置 | |
CN104572754A (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20180921 Address after: American California Applicant after: Western Digital Technologies, Inc. Address before: Belgium Los Christie Applicant before: AMPLIDATA NV |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |