CN114930281A - 动态自适应分区分割 - Google Patents
动态自适应分区分割 Download PDFInfo
- Publication number
- CN114930281A CN114930281A CN201980103426.0A CN201980103426A CN114930281A CN 114930281 A CN114930281 A CN 114930281A CN 201980103426 A CN201980103426 A CN 201980103426A CN 114930281 A CN114930281 A CN 114930281A
- Authority
- CN
- China
- Prior art keywords
- partition
- computing device
- metric
- information
- snapshot
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1466—Management of the backup or restore process to make the backup process non-disruptive
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- 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
- G06F16/2308—Concurrency control
- G06F16/2336—Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
- G06F16/2343—Locking methods, e.g. distributed locking or locking implementation details
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
- G06F16/24573—Query processing with adaptation to user needs using data annotations, e.g. user-defined metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2094—Redundant storage or storage space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/80—Database-specific techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/81—Threshold
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/84—Using snapshots, i.e. a logical point-in-time copy of the data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Library & Information Science (AREA)
- Computational Linguistics (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
在一些示例中,计算设备可以在第一时间点将数据状态的第一快照存储在第一分区内。计算设备可以创建第二分区和第三分区以各自接收数据的一部分,所述第二分区和所述第三分区各自包括度量模式,并且可以基于所述第一快照中的信息来确定用于度量模式的信息。在确定用于度量模式的信息期间,计算设备可以接收对第一分区的写入。计算设备可以基于写入来更新第一分区,并且可以基于写入来向数据结构添加分割更新命令。另外,计算设备可以基于所述分割更新命令来更新所述第二分区或所述第三分区中的度量模式中的至少一个。
Description
技术领域
本公开涉及数据库、数据存储和存储管理的技术领域。
背景技术
多分区分布式数据库可以通过在多个计算设备(也称为“计算节点”)之间划分数据来提供水平可缩放性。作为示例,随着分区变得更大,分区可以被分割或以其它方式划分为两个分区,诸如用于改善对分区中的数据的访问和/或控制分区的大小。因此,分割分区可以实现存储的弹性缩放。然而,当执行分区分割时,在系统执行处理以维持原始分区和新分区之间的数据一致性的同时,可以限制对经受分割的分区的访问。在此时间期间的受限访问可能对处理分区中的数据的用户不方便。
发明内容
一些实现包括计算设备,其在第一时间点将数据的状态的第一快照存储在第一分区内。计算设备可以创建第二分区和第三分区以各自接收数据的一部分,所述第二分区和所述第三分区各自包括度量模式。此外,计算设备可以基于第一快照中的信息来确定用于度量方案的信息。在确定用于度量模式的信息期间,计算设备可以接收对第一分区的写入。计算设备可以基于写入来更新第一分区,并且可以基于写入来向数据结构添加分割更新命令。另外,计算设备可以基于所述分割更新命令来更新所述第二分区或所述第三分区中的度量模式中的至少一个。
附图说明
将参照附图进行详细说明。在附图中,附图标记的最左边的数字标识附图标记首先出现的附图。在不同附图中使用相同的附图标记指示相似或相同的术语或特征。
图1示出了根据一些实现的包括分区数据的系统的示例性架构。
图2是示出根据一些实现的在执行分区分割期间系统的示例逻辑配置的框图。
图3示出了根据一些实现将第一分区划分为第二分区和第三分区之后的系统。
图4是示出根据一些实现将第一分区204(1)分割为两个新分区的简化示例的框图。
图5示出了根据一些实现的在开始分区分割之前和之后的第一分区。
图6示出了根据一些实现的在允许在第一分区处接收新写入的同时处理第一分区快照的示例。
图7示出了根据一些实现将新写入应用于第二分区和第三分区的示例。
图8是示出根据一些实现的在分割第一分区之后第一分区、第二分区和第三分区的示例配置的框图。
图9是示出根据一些实现的用于动态自适应分区分割的示例过程的流程图。
图10示出了可以用于实现本文描述的系统的功能中的至少一些功能的服务计算设备的选择示例组件。
具体实施方式
本文中的一些实现涉及用于减少或消除在将分区划分为多个分区(也称为分区分割)期间阻止对分区的写入的时间量的技术和结构。例如,与传统技术相比,本文的技术可导致显著改进的可用性和更少的数据访问停机时间。在一些示例中,可以在后台执行异步预分割优化阶段,而不涉及分区的锁定,其中防止对分区的写入。在对分区执行分割操作期间,系统通常可以阻止的对分区的写入操作的示例可以包括对现有对象的数据写入、对象创建、对象删除、元数据的改变等。
为了减少在分区分割期间阻止写入的时间窗口,这里的一些示例可以使用分区的快照将分区中的现有记录处理为后台进程,同时仍然允许诸如由客户端等对分区的写入。作为一个示例,在处理期间接收的新写入的记录信息可以作为分割更新命令存储在数据结构中。在处理分区中当前的所有现有记录之后,系统然后可以阻止写入并处理已经存储到分割更新数据结构的任何新记录,以用于在处理分区中的现有记录时接收到的写入。另外,在一些情况下,可以对包括新写入的分区采取附加快照,并且可以使用附加快照来进一步减少或消除阻止写入的需要。在处理分割更新数据结构中的所有记录之后,系统可以启动在分割操作期间创建的新分区,关闭并标记用于删除旧分区,并且允许写入操作由新分区服务。因此,通过仅在处理分割更新数据结构中的记录的小子集期间阻止写入,该写入对应于在对快照执行分割处理时接收的写入,本文的示例显著地减少了客户端不能向分区写入的时间量。
另外,当执行分区分割时,这里的实现能够以相对于传统技术改进的速度处理分区中的每个记录。例如,当根据指示的模式处理分区中的记录时,系统可以散列每个键以定位每个记录。不同于如常规技术中那样采用加密安全散列算法,本文的实现通过使用低冲突非加密安全散列算法来提高处理速度。合适的散列算法的一个示例是FarmHashFingerprint64开放源码算法,其可用于散列本文中的键,这实质上改进了每个记录的处理时间。因此,通过减少所处理的记录的数量并通过加速处理每个记录的时间,本文的实现能够显著地减少在分区分割期间阻止写入的时间量。
在一些实现中,每个模式(例如,数据库、数据或其一部分的组织或结构)可以从集群或其它多个计算节点中的一个或更多个分区开始。随着特定分区变得更大,分区可达到大小阈值或其它度量阈值,其可触发分区的分割。作为一个示例,分区可以被动态地划分为两个子分区,并且那些子分区可以被分布到多个计算节点内的分离节点,这基本上可以使该模式的吞吐量加倍。
本文的一些示例可以包括能够实现水平可缩放性的基于Raft算法的分区和分布式数据库。例如,假设数据库以模式的单个分区开始。随着分区变得更大,分区可以被分割为两个或更多个子分区。此外,这些子分区可以被分布到多个计算节点内的单独的计算节点中,这提高了该模式的吞吐量。随着越来越多的数据被摄取,分区将继续变得更大,并且根据这里的实现,可以连续地动态地分割。这使得分区中的数据能够分布在离散分区中的集群中的所有计算设备上,从而使得集群中的多个计算设备上的负载均匀分布。此外,随着更多的计算设备被添加到集群,分区的数量可以继续增加,并且当附加的计算节点被添加到系统时,分区可以弹性地和无限地分布在系统上。另外,通过使用非加密安全散列函数,分区内的记录可以被均匀地散布,以为分布式分区提供最佳吞吐量。
这里的示例通过在跨多个服务计算设备的分布式分区配置中存储数据的强一致副本,使得所存储的数据高度可用。在一些情况下,可以使用Raft一致性算法来维持分布式分区中的分布式数据的一致性。在Raft一致性算法中,可以选择一个计算节点作为前导,并且可以负责服务所有读取和写入操作。其它计算节点是接收所有事务的副本以使它们能够更新其自身的分区的跟随节点。如果前导计算节点发生故障,则跟随计算节点中的一个可以被选为前导,并且可以接管服务的读取和写入事务。这里的系统的客户端计算设备能够发现哪个计算节点是Raft前导并且将请求定向到该计算节点。如果分区的前导应该变化,则客户端可以被自动路由到新的前导。
出于讨论的目的,在本文的一些示例中,分区可以包含元数据数据库的元数据,元数据数据库描述存储在一个或更多个外部存储节点、系统内的存储节点、云存储设备等中的数据。然而,这里的实现不限于这种使用,并且可以应用于其它类型的数据、数据库、存储配置等。此外,在与云存储或用于使用分布式元数据数据库管理数据存储的其它网络存储系统通信的一个或更多个服务计算设备的环境中描述了一些示例实现。此外,虽然在本文的示例中描述了分区分割,但本文描述的技术也可应用于分区合并。因此,这里的实现不限于所提供的特定示例,并且可以扩展到其它类型的计算系统架构、其它类型的存储环境、其它类型的客户端配置、其它类型的数据等等,这对于本领域技术人员根据这里的公开将是显而易见的。
图1示出了根据一些实现的包括分区数据的系统100的示例性架构。系统100包括能够例如通过一个或更多个网络106与至少一个网络存储系统104通信或以其它方式联接到至少一个网络存储系统104的多个服务计算设备102(在一些示例中也称为“计算节点”)。此外,服务计算设备102能够通过网络106与一个或更多个用户计算设备108和一个或更多个管理员设备110通信,管理员设备110可以是各种类型的计算设备中的任何一个,如下面另外讨论的。
在一些示例中,服务计算设备102可以包括可以以任何数量的方式实现的一个或更多个服务器。例如,服务计算设备102的程序、其它功能组件和数据存储的至少一部分可以在至少一个服务器上实现,例如在服务器集群、服务器群、数据中心、云托管计算服务、分布式计算系统等中,尽管可以附加地或替代地使用其它计算机体系结构。服务计算设备102的附加细节在下面参照图10进行讨论。
服务计算设备102可以被配置为向用户112提供存储和数据管理服务。作为若干非限制性示例,用户112可以包括执行用于企业、企业、组织、政府实体、学术实体等的功能的用户,并且在一些示例中,用户112可以包括存储非常大量的数据。然而,这里的实现不限于系统100和这里描述的其它系统和布置的任何特定用途或应用。
在一些示例中,网络存储系统104可以被称为“云存储”或“基于云的存储”,并且在一些情况下,可以实现比在服务计算设备102处可用的本地存储更低成本的每千兆字节存储解决方案。此外,在一些示例中,网络存储系统104可以包括本领域已知的商用云存储,而在其它示例中,网络存储系统104可以包括仅可由与服务计算设备102相关联的实体或其组合访问的私有或企业存储系统。
一个或更多个网络106可以包括任何合适的网络,包括诸如互联网之类的广域网;诸如内联网之类的局域网(LAN);诸如蜂窝网络之类的无线网络、诸如Wi-Fi之类的本地无线网络和/或诸如之类的短程无线通信;有线网络,包括光纤通道、光纤、以太网或任何其它此类网络、直接有线连接或其任何组合。因此,一个或更多个网络106可以包括有线和/或无线通信技术两者。用于这种通信的组件可以至少部分地取决于网络的类型、所选择的环境或两者。用于在这样的网络上通信的协议是公知的,并且在此将不详细讨论。因此,服务计算设备102、网络存储系统104、用户设备108和管理设备110能够使用有线或无线连接及其组合在一个或更多个网络106上通信。
另外,服务计算设备102能够通过一个或更多个网络107彼此通信。在一些情况下,一个或更多个网络107可以是LAN、专用网络等,而在其它情况下,一个或更多个网络107可以包括上面讨论的网络106中的任何一个。
每个用户设备108可以是任何合适类型的计算设备,诸如台式机、膝上型计算机、平板计算设备、移动设备、智能电话、可穿戴设备、终端和/或能够通过网络发送数据的任何其它类型的计算设备。用户112可以例如通过相应的用户帐户、用户登录凭证等与用户设备108相关联。此外,用户设备108能够通过一个或更多个网络106、通过单独的网络、或通过任何其它合适类型的通信连接与服务计算设备102通信。受益于本文公开内容的本领域技术人员将理解许多其它变化。
此外,每个用户设备108可以包括可在用户设备108上执行的用户应用114的相应实例,例如用于与可在服务计算设备102上执行的用户web应用116通信,诸如用于发送用户数据以存储在网络存储系统104上和/或用于通过数据请求118等从网络存储系统104接收所存储的数据。在一些情况下,应用114可以包括浏览器或者可以通过浏览器操作,而在其它情况下,应用114可以包括具有通信功能的任何其它类型的应用,该通信功能使得能够通过一个或更多个网络106与用户web应用116通信。
在系统100中,用户112可以将数据存储到其各自的用户设备108与之通信的服务计算设备102以及从服务计算设备102接收数据。因此,服务计算设备102可以为用户112和相应的用户设备108提供本地存储。在稳态操作期间,可以有用户108周期性地与服务计算设备102通信。
另外,管理员设备110可以是任何合适类型的计算设备,诸如台式机、膝上型计算机、平板计算设备、移动设备、智能电话、可穿戴设备、终端和/或能够通过网络发送数据的任何其它类型的计算设备。管理员120可以例如通过相应的管理员帐户、管理员登录凭证等与管理员设备110相关联。此外,管理员设备110能够通过一个或更多个网络106、通过单独的网络、或通过任何其它合适类型的通信连接与服务计算设备102通信。
此外,每个管理员设备110可以包括可以在管理员设备110上执行的管理员应用122的相应实例,例如用于传送在服务计算设备上执行的程序以管理多个服务计算设备。作为一个示例,管理员应用可以与可在服务计算设备102上执行的管理web应用124通信,例如用于发送用于管理系统100的管理指令,以及用于发送用于存储在网络存储系统104上的管理数据和/或用于例如通过管理请求126等从网络存储系统104接收存储的管理数据。在一些情况下,管理员应用122可以包括浏览器或可以通过浏览器操作,而在其它情况下,管理员应用122可以包括具有通信功能的任何其它类型的应用,该通信功能使得能够通过一个或更多个网络106与管理web应用124或在服务计算设备102上执行的其它程序进行通信。
服务计算设备102可以执行存储程序130,该存储程序130可以向网络存储系统104提供网关,诸如用于发送要存储到网络存储系统104的数据以及用于从网络存储系统104检索所请求的数据。另外,存储程序142可以管理系统100存储的数据,诸如用于管理数据保持周期、数据保护级别、数据复制等。
服务计算设备102还可以包括数据库(DB)132,其可以被划分为多个DB分区134(1)-134(N),并且其可以分布在多个服务计算设备102上。例如,DB 132可以用于管理存储在网络存储系统104处的对象数据136。DB 132可以存储或可以另外包括关于对象数据136的许多元数据,诸如关于个体对象的信息、如何访问个体对象、对象数据的存储保护级别、存储保持时段、对象所有者信息、对象大小、对象类型等。此外,DB管理程序138可以管理和维护DB 132,诸如用于向DB 132添加新的计算节点、在存储新对象时协调DB132的更新、删除旧对象、迁移对象等。
另外,协调服务程序140可以向所选择的分区前导发送指令,以指示分区前导执行分区分割。例如,协调服务程序140可以监视其上具有分区前导的服务计算设备102,并且还可以监视每个服务计算设备102上的数据库分区134的大小。在一些示例中,协调服务程序140可以例如基于分区达到分区大小阈值、通信量阈值、响应等待时间阈值等来确定向分区前导发送划分分区的指令。
如上所述,DB分区134可以包括多个分区,这些分区包括分布在多个服务计算设备102上的重复分区。在一些示例中,包括DB分区134的多个服务计算设备102可以配置在用于管理分区数据的Raft一致性算法配置中,诸如用于在多个服务计算设备102处提供DB 132的冗余。本文中的分区DB 132可以通过使得在分区的分割期间以最小的停机时间执行写入和删除来提供高可用性。此外,这里的DB 132通过划分元数据并跨用作DB计算节点的不同服务计算设备分发元数据来提供可缩放性。每个分区134可以具有用作分区前导的单个服务计算设备。分区前导可以负责为该特定分区134的所有请求提供服务。此外,本文的解决方案优化了诸如用户应用114之类的客户端应用向分区134写入数据的能力,同时与传统技术相比,显著减少了分区分割期间阻止数据写入的时间。
在一些示例中,如下面另外讨论的,当执行分割时,维护前导分区的服务计算设备102可以在开始处理以分割分区之前获取分区134的快照142。分区前导还可以为正被分割的分区维护分割更新数据结构(DS)144,并且可以通过在分割更新DS 144中存储相应的记录来处理在拍摄快照之后接收到的对分区的写入。在一些示例中,分割更新DS 144可以是任何合适类型的数据结构,诸如单独的模式、表等。在一些情况下,分割更新DS 144可以是持久数据结构,使得分割更新DS 144能够经受系统崩溃等的影响。作为一个示例,可以根据Raft算法来复制分割更新DS 144,例如以提供存储在服务计算设备102的其它设备上的分割更新DS 144的两个附加副本。这里的实现不限于用于分割更新DS 144的任何特定配置。
此外,服务计算设备102可以包括节点管理程序146,该节点管理程序146由服务计算设备102执行以执行分区的划分和本文中属于服务计算设备102的其它功能。当在后台中对快照142执行用于划分分区的处理时,可以将接收到的对分区的任何写入存储到分区,并且可以利用与接收到的写入相对应的分割更新命令来更新分割更新DS 144。当用于分割分区的处理已经完成时,分区前导可以将存储在分割更新DS 144中的命令应用于新分区,这可以指示快照142上的度量改变,诸如对象的总数或对象的总大小。另外,在一些情况下,不是在完成新分区的更新时在此阶段阻止写入,而是可以获取包括存储到分区的新接收的写入的原始分区的第二快照142。在一些示例中,该递归过程可以被重复有限次数,诸如三次或四次,使得其不会导致无结束循环。此外,在一些情况下,如果分割更新DS 144中没有任何更新,则不需要在该点阻止对分区的写入,并且由原始分区的分割产生的新分区可以被投入服务并且可以开始接收任何新的写入。下面讨论这里的分区分割技术的附加细节。
在一些情况下,可以在站点150处将服务计算设备102布置成一个或更多个组、集群、系统等。在一些情况下,多个站点150可以在地理上彼此分散,诸如用于提供数据复制、灾难恢复保护等。此外,在一些情况下,在多个不同站点150处的服务计算设备102可以被配置用于彼此安全地通信,诸如用于提供多个站点150的联合。
图2是示出根据一些实现的在执行分区分割期间系统200的示例逻辑配置的框图。在一些示例中,系统200可以对应于系统100,并且服务计算设备202可以对应于以上讨论的服务计算设备102或者各种其它可能的计算系统体系结构中的任何一个,这对于受益于本文公开的本领域技术人员将是显而易见的。在系统200中,可通过逻辑地划分所存储的数据以及通过基于达到的一个或更多个阈值来动态地划分分区以提供两个或更多个分区以服务于原始分区的功能来提供可伸缩性。
在所示示例中,系统200中包括多个服务计算设备202(1)-202(4)。例如,假设已经在系统200中创建了第一分区,并且第一分区包括前导分区204(1)和两个跟随分区204(2)和204(3),例如基于Raft一致性算法。如上所述,关于分区分割和分区跨多个服务计算设备202的分配的确定可以由协调服务程序140(图2中未示出)管理,这确保分区在整个多个计算设备中被均匀地平衡。在一些示例中,协调服务程序140可以托管在其自身的无状态容器中。此外,在一些情况下,当分区达到某一大小阈值或满足某一其它度量阈值时,可以指示分区进行分割。在一些情况下,大小阈值可以是动态的,和/或可以被动态地调整以增加或抑制分区分割频率。用于确定划分哪些分区的其它标准可以取决于地理、分区驻留在其上的服务计算设备的磁盘或存储器利用率、分区驻留在其上的服务计算设备的网络等待时间、通信量阈值、响应等待时间阈值等。
在所示示例中,假设维护第一分区前导204(1)的服务计算设备202(1)已经从协调服务程序接收到分割第一分区204的指令。因此,在一些情况下,分区的分割可以由维护分区前导204(1)的服务计算设备202(1)来处理。当维护第一分区204(1)的服务计算设备202(1)接收到分割第一分区204的分割请求时,服务计算设备202(1)可以例如通过任何合适的技术(例如,使用如下面参照图5至图8所讨论的指示符)将第一分区标记为当前正在分割。如上所述,可以通过在服务计算设备202(1)上执行节点管理程序146来执行分割。
在一些示例中,所有三个第一分区可以执行分割操作,而在其它示例中,仅第一分区前导驻留在其上的服务计算设备202(1)可以执行分割,并且新的分区可以随后被复制到其它服务计算设备202。在所示示例中,假设服务计算设备202(1)、202(1)和202(1)的所有三个第一分区执行其自身的分割操作。然而,为了说明的清楚起见,在该示例中仅示出了服务计算设备202(1)上的分割操作的细节,其中由服务计算设备202(2)执行的分割操作基本相同,除了第一分区前导服务计算设备202(1)将任何新的写入转发到第一分区跟随者服务计算设备202(2)和202(4)之外,但是跟随者装置不必执行该操作。
就在初始化分割之前,服务计算设备202(1)可以获取当前存在于第一分区204中的所有记录的存储器内快照142(1)。例如,可以在获取快照142(1)时锁定第一分区204(1),然后立即解锁第一分区204(1),使得例如来自客户端计算设备等的写入206能够继续。例如,快照142(1)可以是第一分区204中的记录或其它数据的只读副本,其在获取快照142(1)的时间点被冻结。服务计算设备202(1)可以使用快照142(1)来执行分割所需的必要计算(例如,确定每个新分区的度量模式的信息),同时仍然允许针对第一分区执行写入206。服务计算设备202(1)可以将这些计算的结果记录到新分区中的适当模式,例如,在该示例中,第二分区208(1)和第三分区210(1)。可以将任何计算的度量存储在每个新分区208(1)、210(1)中的度量模式中。
服务计算设备202(1)可以使用快照142(1)执行用于分割分区的计算,这可以包括识别第一分区内的每个记录属于哪个新分区。为了加速该计算,一些实现方式可以采用FarmHash指纹算法,诸如上文讨论的FarmHash指纹64开放源码算法,其针对低冲突和速度而优化。FarmHash算法允许快速比较分区中的多个条目,以确定它们是否映射到新的键空间。因此,在使用FarmHash算法的处理期间,可以创建第二分区208(1)和第三分区210(1),并且基于散列算法在第二分区208(1)和第三分区210(1)之间划分存储在第一分区204(1)中的数据。例如,散列算法可以将存储在第一分区204(1)中的每个记录的路径转换为字符串等,并且可以基于该字符串的值将该字符串分配给第二分区208(1)或第三分区210(1)中的一个。
如上所述,在使用快照142(1)来分割第一分区204(1)执行的处理期间,写入206可以继续被应用于第一分区204(1),并且可以根据Raft算法从第一分区领导204(1)传播到第一分区跟随者204(2)和204(3)。计算的结果被记录到新分区208(1)或210(1)中的适当模式。例如,任何计算的度量被存储在每个新分区208(1)或210(1)中的度量模式中。度量的一些示例是对象计数和对象大小。为了计算这些度量,处理器可遍历源分区204(1)中的每个条目,识别相应条目是否属于第一分区或第二分区,并基于属于每个特定分区的记录来计算这些度量的值。
当在通过快照142(1)的处理分割第一分区204的同时接收到写入206时,除了对第一分区的主模式执行正常写入操作之外,服务计算设备202(1)还可以将分割更新命令记录到新模式或本文中称为分割更新DS 144的其它数据结构。例如,当分区未被分割并且接收到新写入206时,分割更新不被记录到分割更新DS 144。然而,当分割正在进行并且接收到新的写入时,分割更新DS 144捕获在后台执行的原始计算将如何受到该新写入的影响。例如,如果一个新对象被添加到第一个分区,这将使对象计数增加1。对象计数将递增1的事实可以作为记录存储在分割更新DS 144中。类似地,如果对象被删除,则服务计算设备202(1)可以将对象计数将减1的事实存储为分割更新DS 144中的记录。存储在分割更新DS中的分割更新记录可具有对应于应应用所接收更新的新分区的相关联密钥。
作为一个示例,在将键是字符串并且键空间在零值和零值之间的第一分区204(1)(源分区)分割成两个新的目标分区期间,假设将称为“foo”的新记录添加到第一分区,例如,第二分区208和第三分区210,其键空间分别在零值和最大值以及最大值和零值之间。作为响应,服务计算设备202(1)可以存储与密钥为2的foo相关联的分割更新记录。在一些情况下,因为针对每个新写入将记录for存储在分割更新DS中,所以当分割分区正被分割时发生的写入响应时间可以略微增加。然而,这可以被认为是如在传统替代方案中那样完全阻止写入的优越解决方案,即,如果终端用户注意到写入的仅略微额外的等待时间而不是完全不能写入,则终端用户体验可以好得多。
在一些示例中,在服务计算设备202(1)完成对快照142(1)的处理之后,服务计算设备202(1)阻塞写入,然后使用从在对快照142(1)进行处理时接收到的写入累积的分割更新命令来更新刚记录的结果。通常,分割更新DS 144中的分割更新命令的数量将比从快照142(1)处理的记录的数量小几个数量级。由于通常可仅处理分割更新DS 144中的记录的小子集,因此用于处理的时间窗实质上小于其中可阻止写入的常规时间窗。
另外,为了进一步减少停机时间,这里的实现具有递归地处理在处理先前快照被执行时写入的任何记录的附加快照的能力。服务计算设备202(1)然后可以仅在记录的数量达到阈值计数时或者在设置数量的递归调用之后阻止写入以确保分区分割最终完成。该技术使得在其间阻止写入的时间窗口非常小,从而使得系统200在分割期间响应性更强。例如,可以获取第一分区204(1)的第二快照142(2),其包括在处理第一快照142(1)时接收的写入206。在处理第二快照142(2)期间接收到的任何写入以及分割更新DS 144中的对应记录可继续存储在第一分区204中,但由于仅处理先前快照上的增量,因此处理时间通常将比第一快照142(1)短得多,从而在快照142(2)的处理期间可能接收到实质上更少的写入206。因此,在几次这样的迭代之后,实际上可能有很少的或没有额外的写入要处理,并且第二分区208和第三分区210可以投入使用。
由于上述过程可以在服务计算设备202(1)、202(2)和202(4)上同时执行,所以该过程可以产生三个第二分区208(1)、208(2)和208(3)以及三个第三分区210(1)、210(2)和210(3)。或者,在其它示例中,仅分区前导计算设备可以执行处理,并且例如基于Raft算法或者根据来自协调服务程序140的指令,可以将得到的第二分区208(1)和第三分区210(1)分别复制到其它服务计算设备202。
图3示出了根据一些实现将第一分区划分为第二分区和第三分区之后的系统200。例如,在分割之后,可以重新平衡系统以跨系统中的服务计算设备分配处理和/或存储负载。如上所述,在本文的一些示例中,每个分区可以被配置为根据Raft一致性算法操作,以提供分区的冗余备份。例如,Raft算法确保每个服务计算设备202同意对相应分区中的数据的相同改变。Raft组经由选定的前导(例如,包括特定分区的Raft组中的特定服务计算设备202)实现共识,该Raft组可以是该特定分区的前导或跟随者。前导可以负责将对分区的改变复制到跟随计算节点。前导可以通过发送心跳消息来定期地通知跟随者其存在。如果前导没有在阈值时间段内发送心跳消息,则跟随者可以从跟随者中选择新的前导。
因此,在一些示例中,基于Raft一致性算法,本文中分布式数据库中的每个分区可以包括三个分区成员,其复制分区中的数据以实现高可用性和冗余。可以使用Raft一致性算法来实现划分成员之间的一致性。在Raft一致性算法中,前导可以是服务于所有客户端请求(例如,读取、写入等)的分区成员。维护前导分区的服务计算设备202可以将前导分区中的改变复制到服务计算设备202中的其它服务计算设备上的跟随分区。任何服务计算设备202可以成为其管理的任何分区的前导。
在该示例中,服务计算设备202(2)管理作为前导的第二分区208(2)和作为跟随者的第三分区210(2)。此外,例如为了负载平衡,最初在服务计算设备202(1)上创建的第三分区210(1)可以被移动到服务计算设备202(3),服务计算设备202(3)可以作为跟随者来管理第三分区210(1)。因此,每个服务计算设备202可以是多个单独的Raft组的一部分,每个Raft组表示不同的分区。另外,在第二分区和第三分区投入使用之后,如310所示,对于第一分区204的每个成员,第一分区可以被标记为删除。此外,在第三分区210(3)被移动到服务计算设备202(3)之后,服务计算设备202(1)上的第三分区210(1)可以被去激活并被标记为删除,如314处所指示的。
每个服务计算设备202可以维护分区映射条目和Raft组之间的分区映射。当服务计算设备202从客户端接收到请求时,可以咨询分区映射以确定该请求属于哪个Raft组。如果服务计算设备202不具有针对特定请求的映射,则可以向请求客户端返回错误。否则,可以将请求转发到正确的Raft组。如果服务计算设备202是该Raft组的前导,则该请求由服务计算设备服务。否则,例如在服务计算设备是该Raft组的跟随者的情况下,向请求客户端返回包含Raft组的前导的连接信息的错误。因此,在返回的错误消息中向请求客户端提供关于哪个服务计算设备重定向该请求的信息。
图4是示出根据一些实现将第一分区204(1)分割为两个新分区208(1)和210(1)的简化示例400的框图。在此,数据中的数据划分允许通过跨系统中的不同服务计算设备划分数据区域的责任来缩放数据。分割分区可包括将由单个分区服务的键空间范围分割成两个或更多个新分区。分割分区可以在包括分区的元数据的量已经变大并且期望将元数据散布在更大数量的服务计算设备上时发生。在该示例中,通过将键空间(即,所有可能键的集合)划分为与新分区(即,第二分区208(1)和第三分区210(1))相关联的键空间范围来实现第一分区204(1)的分割。每个分区可以被给予分区标识符和管理分区的服务计算设备负责的一组键空间范围。
在所示示例中,假设第一分区204(1)包括其中键空间以零值开始且以264结束的模式,即,包括键空间范围402、404、406、…、408、410和412。此外,假设使用分割点232分割第一分区204(1),并且创建第二分区208(1)和第三分区210(1)。第二分区208(1)具有其具有键小于232的键空间范围的模式,即,包括记录范围402、404、406、…、414;而第三分区210(1)具有键大于232且小于264的键空间范围的模式,即416、…、408、410、412。如上所述,计算节点可以动态地确定分割或以其它方式划分分区,诸如用于平衡由每个服务计算设备管理的数据量、管理到特定计算节点的通信量等。
此外,在该示例中,可以在键空间的分割点处分割第一分区,该分割点可以例如由协调服务程序140或由各种其它技术中的任何技术确定。例如,在其它示例中,根据密钥空间和包括在其中的记录是如何生成的,分割点可以被确定为处于不同位置。在本文的一些示例中,为了在键空间内均匀地分布记录,使用诸如上述FarmHash指纹64函数的散列函数来散列每个记录的路径。散列函数的使用有助于防止密钥空间中的区域被密钥空间内的特定位置处的记录填充,并且替代地用于在整个密钥空间中更随机地分布记录。此外,如上所述,因为在密钥空间中可能存在非常大量的记录,并且因为对每个记录执行散列函数可能消耗大量时间,所以本文的实现可以采用快速的、低冲突的非密码散列函数来确定存储在分区数据库中的记录的密钥。
图5至图8示出了根据一些实现将第一分区分割为两个新分区的更详细示例。图5示出了根据一些实现的在开始分区分割之前和之后的第一分区。在该示例中,如在500处所指示的,第一分区502包括主模式504、键空间范围506、当前事务状态508、当前状态510、以及对于该分区来说分割还是合并是未决的指示符512。在该示例中,没有针对第一分区指示的未决分区合并或分割,因此该值被指示为假。另外,第一分区502包括如514处所指示的在分区中维护的多个对象,并且还包括度量模式516,度量模式516包括第一分区的总大小518和存储在第一分区中的对象的对象计数520。
在530,假设维护第一分区502的服务计算设备已经接收到分割第一分区502的指令。作为响应,服务计算设备可以更新第一分区,包括将用于待决分割合并的指示符512从假变为真,如532处所指示的。另外,服务计算设备可以生成第一分区514中的对象的当前状态的快照534。
如536所示,在生成快照之前和之后,允许向第一分区502写入。然而,在一些情况下,当为第一分区生成快照534时,写入可被临时暂停。此外,为了便于说明,在该示例中仅示出了第一分区内的七个现有对象514。然而在实践中,当要执行分割时,在要分割的分区中可能存在数十万条记录。
图6示出了根据一些实现的在允许在第一分区处接收新写入的同时处理第一分区快照的示例。在图6的示例中,如602所示,当执行第一分区快照534的处理时,允许对第一分区502的写入。例如,在该示例中示出了对第一分区502的新写入604,包括添加四个新对象和删除另一对象。当在执行第一分区快照534的处理以将第一分区502分割为第二分区606和第三分区608时,当接收到新写入604时,可以将新写入604添加到第一分区502。例如,如610处所指示的,对第一分区快照的处理可以包括当权限仍在第一分区502的主模式中发生时重新计算来自快照534的度量。重新计算来自快照534的度量可以确定第二分区606和第三分区608的新度量模式。
例如,第二分区606包括主模式612、范围614、事务状态616、状态618和未决分割合并指示符620。在该示例中,因为第二分区606还不活动,所以事务状态616被禁止,状态618是不活动的,并且未决分割合并指示符620是假的。此外,第二分区606包括来自第一分区的多个对象622,以及包括对象622的总大小626和对象计数628的度量模式624。
类似地,第三分区608包括主模式630、范围632、事务状态634、状态636和未决分割合并指示符638。在该示例中,因为第三分区608还不活动,所以事务状态634被禁止,状态636是不活动的,并且未决分割合并指示符638是假的。此外,第三分区608包括来自第一分区的多个对象640,以及包括对象640的总大小644和对象计数646的度量模式642。
此外,在该示例中,假设第一分区502的主模式504的分割点在键空间范围“最大值”处。因此,第二分区606的范围614在最大值处结束,并且第三分区608的键空间范围在最大值处开始。因此,包括在第二分区606中的对象622对应于范围614,而包括在第三分区中的对象640对应于范围632。
当接收到对第一分区502的新写入604时,服务计算设备执行对分区分割的处理,可以检查以查看对于第一分区是否将未决分割和合并指示符512设置为真。如果是,如650处所指示的,当接收到对第一分区502的主模式504的新写入604时,还为分割更新数据结构(DS)652生成分割更新命令,以使第二分区606和第三分区608中的度量模式624、642能够在稍后被更新。
分割更新DS 652包括指示分区ID的键654和指示命令将被执行以更新指定模式的值656。另外,分割更新DS 652包括多个分割更新命令658,该多个分割更新命令658包括键指示符2或3,以指示该命令是要应用于第二分区606还是第三分区608的度量模式。因此,当每个新写入604被第一分区接收时,执行分割的服务计算设备可以用相应的分割更新命令658来更新分割更新DS652,相应的分割更新命令658指示对该新写入最终将被添加到的分区的相应度量模式624或642的改变。
图7示出了根据一些实现将新写入应用于第二分区和第三分区的示例。例如,如702处所指示,在图7的过程期间,当快照被用于计算第二分区和第三分区的度量模式时,当针对在第一分区602处接收到的新写入604更新第二分区606和第三分区608时,可以阻止对第一分区的写入。例如,第一分区502的事务状态可以从读取和写入改变为只读。
在该示例中,基于在第一分区502处接收的新写入604来更新第二分区606和第三分区608中的对象。例如,添加到第一分区502的“cat”对象和“apple”对象被添加到第二分区606中的对象622。类似地,添加到第一分区502的“zebra”对象被添加到第三分区608中的对象640,并且从第一分区502删除的“van”对象被从第三分区608中的对象640删除。
另外,来自分割更新数据结构652的分割更新命令658用于分别更新第二分区606和第三分区608的度量模式624和642。例如,具有键“2”的分割更新命令被应用于第二分区606的度量模式624。类似地,具有键“3”的分割更新命令被应用于第三分区608的度量模式642。因此,基于分割更新命令的应用,第二分区的度量模式624的总大小626从182 350增加,而对象计数628从4增加到5。类似地,第三分区608的度量模式642的总大小644从100增加到140,而对象计数646保持相同,因为一个对象被添加而另一个对象被删除。因此,当处理快照以反映接收到的任何新写入时,将分割更新应用于第二分区606和第三分区608的度量模式用于更新现有度量。因此,阻止写入的时间量可以明显短于如果在第二分区606和第三分区608的度量模式的整个计算期间阻止写入的情况。
此外,如上面所讨论的,在替代实现中,可以获取第一分区502的第二快照(图7中未示出)。第二快照和分割更新数据结构652可用于在执行更新时更新第二分区606和第三分区608而不阻挡权限,并且替代地,新的写入可继续由第一分区502接收。该过程可以递归地执行固定次数,从而连续地减少可以阻止写入的时间量。
图8是示出根据一些实现的在分割第一分区之后第一分区502、第二分区606和第三分区608的示例配置的框图。在完成分割之后,如802处所指示的,可以去激活第一分区502,可以永久地不允许任何将来的权限。例如,可以将第一分区的事务状态508改变为“不允许”,并且可以将第一分区的状态510改变为“不活动”。此外,第一分区502可以被删除和/或被标记为删除,以导致诸如通过垃圾收集特征等从系统中最终删除第一分区。
此外,如804所示,激活新的第二分区606和第三分区608,并且允许对新分区的写入。例如,第二分区606和第三分区608的事务状态616和634分别被切换到“读取-写入”,并且状态618和636分别被设置为活动。此外,在分割之后,可以根据如上所述的raft算法将第二分区和第三分区复制到系统中的其它服务计算设备。
图9是示出根据一些实现的用于动态自适应分区分割的示例过程的流程图。该过程被示为逻辑流程图中的块的集合,该逻辑流程图表示操作序列,其中的一些或全部可以硬件、软件或其组合来实现。在软件的上下文中,块可以表示存储在一个或更多个计算机可读介质上的计算机可执行指令,当由一个或更多个处理器执行该指令时,该指令对处理器编程以执行所述操作。通常,计算机可执行指令包括执行特定功能或实现特定数据类型的例程、程序、对象、组件、数据结构等。描述块的顺序不应被解释为限制。可以以任何顺序和/或并行地组合任何数量的所描述的块以实现过程或替换过程,并且不需要执行所有块。出于讨论的目的,参考本文示例中描述的环境、框架和系统来描述该过程,尽管该过程可以在各种其他环境、框架和系统中实现。在图9中,过程900可以至少部分地由执行节点管理程序146的一个或更多个服务计算设备92、202来执行。
在902处,计算设备可以将数据划分为第一分区。在一些示例中,计算设备可以使用非密码散列算法来将各个数据对象分配给第一分区内的各个密钥范围。
在904,基于与第一分区相关联的至少一个阈值被超过,计算设备可以确定分割第一分区。例如,可以至少部分地基于第一分区满足与第一分区相关联的至少一个阈值来接收分割指令,所述至少一个阈值指定阈值分区大小、通信量阈值、响应等待时间阈值、磁盘或存储器利用率阈值或网络等待时间阈值中的至少一个。
在906,计算设备可以在第一时间点将数据的状态的快照存储在第一分区内。
在908,计算设备可以创建第二分区和第三分区以各自接收数据的一部分,所述第二分区和所述第三分区各自包括度量模式。
在910,计算设备可以基于快照中的信息来确定第二分区和第三分区中的度量模式的信息。
在912,在确定期间,计算设备可以接收对第一分区的写入。例如,写入可以包括写入命令、删除命令、创建命令或更新命令中的至少一个。
在914,计算设备可以存储对第一分区的写入,并基于该写入向数据结构添加分割更新命令。
在916,计算设备阻止对第一分区的写入。例如,计算设备在用更新分割命令更新度量模式中的至少一个的同时阻止对第一分区的写入。
在918,计算设备可以基于分割更新命令来更新第二分区或第三分区中的度量模式中的至少一个,并且基于写入来更新度量模式被更新的第二分区或第三分区中的至少一个中的数据部分。例如,分割更新命令可以包括用于将至少一个度量模式改变为对应于在第二分区或第三分区中的相应一个中包括写入的条件的信息。另外,在一些示例中,在基于第一快照中的信息确定第二分区和第三分区中的度量模式的信息之后,计算设备可以获取第一分区的第二快照。计算设备可以基于第二快照和数据结构中的信息来确定第二分区和第三分区中的度量模式的附加信息。此外,在基于第二快照和数据结构中的信息来确定第二分区和第三分区中的度量模式的附加信息期间,计算设备可以接收到对第一分区的附加写入,并且可以基于附加写入来更新第一分区,并且可以基于附加写入来向数据结构添加附加分割更新命令。另外,计算设备可以基于附加分割更新命令来更新所述第二分区或所述第三分区中的度量模式中的至少一个。
在920,计算设备可以通过激活第二分区和第三分区来启用写入。
在922,计算设备可以去激活第一分区并将第一分区标记为删除。
这里描述的示例过程仅是为了讨论目的而提供的过程的示例。根据本文的公开内容,许多其它变化对于本领域技术人员将是显而易见的。此外,虽然本文的公开阐述了用于执行过程的适当框架、体系结构和环境的几个示例,但是本文的实现不限于示出和讨论的特定示例。此外,如在附图中所描述和示出的,本公开提供了各种示例实现。然而,本公开不限于本文中所描述和示出的实现方式,而是可以扩展到本领域技术人员已知或已知的其它实现方式。
图10示出了可以用于实现本文描述的系统的功能中的至少一些功能的服务计算设备102、202的选择示例组件。服务计算设备102可以包括一个或更多个服务器或可以以任何数量的方式实现的其它类型的计算设备。例如,在服务器的情况下,程序、其它功能组件和数据可以在单个服务器、服务器集群、服务器群或数据中心、云托管计算服务等上实现,尽管可以附加地或替代地使用其它计算机体系结构。多个服务计算设备102、202可以定位在一起或分开,并且例如被组织为虚拟服务器、服务器库和/或服务器群。所描述的功能可以由单个实体或企业的服务器提供,或者可以由多个不同实体或企业的服务器和/或服务提供。
在所示示例中,服务计算设备102、202包括或可以与其相关联的一个或更多个处理器1002、一个或更多个计算机可读介质1004和一个或更多个通信接口1006。每个处理器1002可以是单个处理单元或多个处理单元,并且可以包括单个或多个计算单元或多个处理核。处理器1002可以被实现为一个或更多个中央处理单元、微处理器、微计算机、微控制器、数字信号处理器、状态机、逻辑电路和/或基于操作指令来操纵信号的任何设备。作为一个示例,处理器1002可以包括一个或更多个硬件处理器和/或任何适当类型的逻辑电路,该硬件处理器和/或逻辑电路被特别编程或配置为执行本文描述的算法和过程。处理器1002可以被配置为获取并执行存储在计算机可读介质1004中的计算机可读指令,其可对处理器1002编程以执行本文所述的功能。
计算机可读介质1004可以包括易失性和非易失性存储器和/或以用于存储信息(诸如计算机可读指令、数据结构、程序模块或其它数据)的任何类型的技术实现的可移动和不可移动介质。例如,计算机可读介质1004可以包括但不限于RAM、ROM、EEPROM、闪存或其它存储技术、光存储、固态存储、磁带、磁盘存储、RAID存储系统、存储阵列、网络附连存储、存储区域网络、云存储,或者可以用于存储期望信息并且可以由计算设备访问的任何其它介质。取决于(一个或多个)服务计算设备102、202的配置,计算机可读介质1004可以是有形的非瞬态介质,其程度在于,当提到时,非瞬态计算机可读介质排除诸如能量、载波信号、电磁波和/或信号本身的介质。在一些情况下,计算机可读介质1004可以位于与服务计算设备102、202相同的位置,而在其它示例中,计算机可读介质1004可以部分地远离服务计算设备102、202。例如,在一些情况下,计算机可读介质1004可以包括上文关于图1所讨论的网络存储104中的存储的一部分。
计算机可读介质1004可用于存储可由处理器1002执行的任意数量的功能组件。在许多实施方式中,这些功能组件包括可由处理器1002执行的指令或程序,并且当被执行时,这些指令或程序具体地对处理器1002编程以执行本文中归因于服务计算设备102、202的动作。存储在计算机可读介质1004中的功能组件可以包括节点管理程序146,节点管理程序146可以由相应的服务计算设备102、202执行,用于管理服务计算设备102、202上的分区,诸如通过执行分区分割和合并、接收和响应来自其它服务计算设备102、202和客户端设备的通信、根据Raft算法执行操作等。存储在服务计算设备102、202中的一个或更多个中的附加功能组件可包括用户web应用106、管理web应用124、存储程序130、数据库管理程序138和协调服务程序140,其中的每一个可包括一个或更多个计算机程序、应用、可执行代码或其部分。此外,虽然在该示例中一起示出了这些程序,但是在使用期间,这些程序中的部分或全部可以在单独的服务计算设备102、202上执行。
另外,计算机可读介质1004可以存储用于执行本文描述的功能和服务的数据、数据结构和其它信息。例如,计算机可读介质1004可以存储包括DB分区134的元数据数据库132,并且可以至少临时地存储快照142和分割更新数据结构144。此外,虽然在该示例中一起示出了这些数据结构,但是在使用期间,这些数据结构中的部分或全部可以存储在单独的服务计算设备102、202上。服务计算设备102、202还可以包括或维护其它功能组件和数据,其可以包括程序、驱动程序等,以及由功能组件使用或生成的数据。此外,服务计算设备102、202可以包括许多其它逻辑、编程和物理组件,上面描述的那些组件仅仅是与这里的讨论相关的示例。
一个或更多个通信接口1006可以包括用于实现例如通过一个或更多个网络106、107与各种其它设备的通信的一个或更多个软件和硬件组件。例如,通信接口1006可以实现通过LAN、互联网、电缆网络、蜂窝网络、无线网络(例如Wi-Fi)和有线网络(例如光纤信道、光纤、以太网)、直接连接以及诸如等近距离通信中的一个或更多个的通信,如本文其它地方另外列举的。
本文中描述的各种指令、方法和技术可在计算机可执行指令(例如存储在计算机可读介质上的计算机程序和应用)的一般上下文中考虑,并由本文中的处理器执行。通常,术语程序和应用可以互换地使用,并且可以包括用于执行特定任务或实现特定数据类型的指令、例程、模块、对象、组件、数据结构、可执行代码等。这些程序、应用等可以作为本地代码来执行,或者可以例如在虚拟机或其它即时编译执行环境中下载和执行。通常,程序和应用的功能可以根据需要在各种实现中组合或分布。这些程序、应用和技术的实现可以存储在计算机存储介质上或通过某种形式的通信介质传输。
虽然已经用针对结构特征和/或方法行为的语言对主题进行了描述,应当理解,所附权利要求中限定的主题不一定限于所描述的具体特征或行为。而是,具体特征和行为以实现权利要求的示例性方式被公开。
Claims (15)
1.一种系统,所述系统包括:
由可执行指令配置以执行操作的一个或更多个处理器,所述操作包括:
通过所述一个或更多个处理器接收用于分割包括多个元数据对象的第一分区的指令;
通过所述一个或更多个处理器在第一时间点存储所述多个元数据对象的状态的第一快照;
通过所述一个或更多个处理器创建第二分区和第三分区以各自接收所述元数据对象的一部分,所述第二分区和所述第三分区各自包括度量模式;
通过所述一个或更多个处理器基于所述第一快照中的信息,来确定所述第二分区和所述第三分区中的所述度量模式的信息;
在所述确定期间,通过所述一个或更多个处理器接收对所述第一分区的写入;
通过所述一个或更多个处理器基于所述写入更新所述第一分区,并基于所述写入向数据结构添加分割更新命令;
通过所述一个或更多个处理器基于所述分割更新命令来更新所述第二分区或所述第三分区中的所述度量模式中的至少一个。
2.根据权利要求1所述的系统,其中,所述分割更新命令包括:用于将至少一个度量模式改变为对应于在所述第二分区或所述第三分区中的相应一个中包括写入的条件的信息。
3.根据权利要求2所述的系统,其中,所述操作还包括:在用所述更新分割命令更新所述度量模式中的至少一个的同时,阻止对所述第一分区的写入。
4.根据权利要求1所述的系统,所述操作还包括:
在基于所述第一快照中的信息确定所述第二分区和所述第三分区中的度量模式的信息之后,获取所述第一分区的第二快照;以及
基于所述第二快照和数据结构中的信息,来确定所述第二分区和所述第三分区中的度量模式的附加信息。
5.根据权利要求4所述的系统,所述操作还包括:
在基于所述第二快照和所述数据结构中的所述信息确定所述第二分区和所述第三分区中的所述度量模式的所述附加信息期间,接收对所述第一分区的附加写入;
基于所述附加写入更新所述第一分区,并基于所述附加写入向所述数据结构添加附加分割更新命令;以及
基于所述附加分割更新命令,来更新所述第二分区或所述第三分区中的度量模式中的至少一个。
6.根据权利要求1所述的系统,所述操作还包括:基于所述写入来更新所述第二分区或第三分区中的至少一个中的所述元数据对象的所述部分,其中所述度量模式是基于所述分割更新命令来更新的。
7.根据权利要求1所述的系统,所述操作还包括:激活所述第二分区和所述第三分区以接收写入,并标记所述第一分区以进行删除。
8.根据权利要求1所述的系统,所述操作还包括:使用非密码散列算法,来将所述元数据对象分配给所述第一分区内的相应密钥范围。
9.根据权利要求1所述的系统,其中,至少部分地基于所述第一分区满足与所述第一分区相关联的至少一个阈值来接收分割指令,所述至少一个阈值指定阈值分区大小、通信量阈值、响应等待时间阈值、磁盘或存储器利用率阈值或网络等待时间阈值中的至少一个。
10.根据权利要求1所述的系统,其中,所述写入包括写入命令、删除命令、创建命令或更新命令中的至少一个。
11.根据权利要求1所述的系统,其中,所述系统与网络存储通信,并且所述元数据对象包括关于由网络存储所存储的对象的信息。
12.一种方法,该方法包括以下步骤:
通过计算设备在第一时间点将多个数据对象的状态的第一快照存储在第一分区内;
通过所述计算设备创建第二分区和第三分区以各自接收数据对象的一部分,所述第二分区和所述第三分区各自包括度量模式;
通过所述计算设备基于所述第一快照中的信息,来确定所述第二分区和所述第三分区中的所述度量模式的信息;
在所述确定期间,通过所述一个或更多个处理器接收对所述第一分区的写入;
通过所述计算设备基于所述写入更新所述第一分区,并基于所述写入向数据结构添加分割更新命令;以及
通过所述计算设备基于所述分割更新命令来更新所述第二分区或所述第三分区中的所述度量模式中的至少一个。
13.根据权利要求13所述的方法,其中,所述分割更新命令包括:用于将至少一个度量模式改变为对应于在所述第二分区或所述第三分区中的相应一个中包括写入的条件的信息。
14.一个或更多个非暂时性计算机可读介质,其存储指令,当由一个或更多个处理器执行时,将所述一个或更多个处理器配置为执行操作,所述操作包括:
通过计算设备在第一时间点将数据状态的第一快照存储在第一分区内;
通过所述计算设备创建第二分区和第三分区以各自接收数据的一部分,所述第二分区和所述第三分区各自包括度量模式;
通过所述计算设备基于所述第一快照中的信息来确定所述第二分区和所述第三分区中的所述度量模式的信息;
在所述确定期间,通过所述一个或更多个处理器接收对所述第一分区的写入;
通过所述计算设备基于所述写入更新所述第一分区,并基于所述写入向数据结构添加分割更新命令;以及
通过所述计算设备基于所述分割更新命令来更新所述第二分区或所述第三分区中的所述度量模式中的至少一个。
15.根据权利要求14所述的一个或更多个非暂时性计算机可读介质,其中,所述分割更新命令包括:用于将至少一个度量模式改变为对应于在所述第二分区或所述第三分区中的相应一个中包括写入的条件的信息。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2019/068666 WO2021133405A1 (en) | 2019-12-27 | 2019-12-27 | Dynamic adaptive partition splitting |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114930281A true CN114930281A (zh) | 2022-08-19 |
Family
ID=76574997
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980103426.0A Pending CN114930281A (zh) | 2019-12-27 | 2019-12-27 | 动态自适应分区分割 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20220391411A1 (zh) |
EP (1) | EP4081888A4 (zh) |
JP (1) | JP7398567B2 (zh) |
CN (1) | CN114930281A (zh) |
WO (1) | WO2021133405A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220121667A1 (en) * | 2020-10-15 | 2022-04-21 | Salesforce.Com, Inc. | Database virtual partitioning |
CN113687855B (zh) * | 2021-07-22 | 2022-07-12 | 荣耀终端有限公司 | 电子设备及其系统升级包的制作方法、系统升级方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4199888B2 (ja) | 1999-11-15 | 2008-12-24 | 株式会社日立製作所 | データベース管理方法 |
US8131957B2 (en) * | 2007-08-16 | 2012-03-06 | International Business Machines Corporation | Splitting writes between a storage controller and replication engine |
US7779010B2 (en) | 2007-12-12 | 2010-08-17 | International Business Machines Corporation | Repartitioning live data |
US9805108B2 (en) * | 2010-12-23 | 2017-10-31 | Mongodb, Inc. | Large distributed database clustering systems and methods |
US9740762B2 (en) * | 2011-04-01 | 2017-08-22 | Mongodb, Inc. | System and method for optimizing data migration in a partitioned database |
US8930312B1 (en) | 2012-01-17 | 2015-01-06 | Amazon Technologies, Inc. | System and method for splitting a replicated data partition |
US9489443B1 (en) | 2013-05-24 | 2016-11-08 | Amazon Technologies, Inc. | Scheduling of splits and moves of database partitions |
US10025673B1 (en) * | 2013-09-20 | 2018-07-17 | Amazon Technologies, Inc. | Restoring partitioned database tables from backup |
US9405783B2 (en) * | 2013-10-02 | 2016-08-02 | Netapp, Inc. | Extent hashing technique for distributed storage architecture |
US10067969B2 (en) * | 2015-05-29 | 2018-09-04 | Nuodb, Inc. | Table partitioning within distributed database systems |
US10346434B1 (en) * | 2015-08-21 | 2019-07-09 | Amazon Technologies, Inc. | Partitioned data materialization in journal-based storage systems |
US11182372B1 (en) * | 2017-11-08 | 2021-11-23 | Amazon Technologies, Inc. | Tracking database partition change log dependencies |
-
2019
- 2019-12-27 WO PCT/US2019/068666 patent/WO2021133405A1/en unknown
- 2019-12-27 CN CN201980103426.0A patent/CN114930281A/zh active Pending
- 2019-12-27 JP JP2022539389A patent/JP7398567B2/ja active Active
- 2019-12-27 EP EP19957752.9A patent/EP4081888A4/en active Pending
- 2019-12-27 US US17/774,498 patent/US20220391411A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2023509900A (ja) | 2023-03-10 |
EP4081888A4 (en) | 2023-09-06 |
WO2021133405A1 (en) | 2021-07-01 |
EP4081888A1 (en) | 2022-11-02 |
US20220391411A1 (en) | 2022-12-08 |
JP7398567B2 (ja) | 2023-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9489443B1 (en) | Scheduling of splits and moves of database partitions | |
US10853242B2 (en) | Deduplication and garbage collection across logical databases | |
US9053167B1 (en) | Storage device selection for database partition replicas | |
US11847098B2 (en) | Metadata control in a load-balanced distributed storage system | |
US11734248B2 (en) | Metadata routing in a distributed system | |
US10908834B2 (en) | Load balancing for scalable storage system | |
CN112565325B (zh) | 镜像文件管理方法、装置及系统、计算机设备、存储介质 | |
US11188229B2 (en) | Adaptive storage reclamation | |
US11960442B2 (en) | Storing a point in time coherently for a distributed storage system | |
JP7398567B2 (ja) | 動的適応型パーティション分割 | |
US11609716B2 (en) | Implementing coherency and page cache support for a storage system spread across multiple data centers | |
US20240176762A1 (en) | Geographically dispersed hybrid cloud cluster | |
WO2018235132A1 (en) | DISTRIBUTED STORAGE SYSTEM | |
US20230283663A1 (en) | Randomization of heartbeat communications among multiple partition groups | |
US20230333760A1 (en) | Capacity and performance optimization in non-homogeneous storage | |
WO2024005829A1 (en) | Conflict resolution for object metadata |
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 |