CN108431807B - 分区数据存储空间中结构化数据记录的复制 - Google Patents
分区数据存储空间中结构化数据记录的复制 Download PDFInfo
- Publication number
- CN108431807B CN108431807B CN201680073896.3A CN201680073896A CN108431807B CN 108431807 B CN108431807 B CN 108431807B CN 201680073896 A CN201680073896 A CN 201680073896A CN 108431807 B CN108431807 B CN 108431807B
- Authority
- CN
- China
- Prior art keywords
- data
- change
- structured data
- data record
- data center
- 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
Images
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/273—Asynchronous replication or reconciliation
-
- 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/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
这里提供了用于管理分区数据存储空间的***、方法和软件。一种示例性方法包括在分区数据存储空间中存储结构化数据记录集合,其中结构化数据记录的数据字段通过关系关联在这些集合之间相关。该方法包括在接收与结构化数据记录相关的更改动作的数据中心中选择性地将更改动作放入多个更改进给中,其中更改进给可并行地交换执行以实现更改动作。该方法还包括实现更改动作并在多个更改进给中传播包括更改动作的复制数据。
Description
背景技术
数据存储***可以包括各种数据结构来保存和关联数据记录,例如数据库、表和其他数据结构。结构化查询语言(SQL)可用于关系数据库管理***(RDBMS)来查询各种数据结构。与基于SQL的数据相比,非关系数据库(如无模式或NoSQL类型的数据库)具有各种灵活性。NoSQL数据库可以将数据存储在一个或多个表中,并使用可能不会在整个数据库***中提供即时数据一致性的更新过程。但是,这些NoSQL数据库可能更适合分布式存储***,例如云存储***、多数据中心***以及其他冗余和非本地数据存储***。
发明内容
这里提供了用于管理分区数据存储空间的***、方法和软件。一种示例性方法包括在分区数据存储空间中存储结构化数据记录集合,其中结构化数据记录的数据字段通过关系关联在这些集合之间相关。该方法包括在接收与结构化数据记录相关的更改动作的数据中心中选择性地将更改动作放入多个更改进给(feed)中,其中更改进给可并行地交换执行以实现更改动作。该方法还包括实施更改动作并在多个更改进给中传播包括更改动作的复制数据。
提供该发明内容以便以简化的形式来引入下面的具体实现方式中进一步描述的概念的选择。该发明内容不旨在确定所要求保护的主题的关键特征或主要特征,也不旨在用于限定所要求保护的主题的范围。
附图说明
参考以下附图可以更好地理解本公开的许多方面。虽然结合这些附图描述了几个实现方式,但是本公开不限于这里公开的实现方式。相反,其目的是涵盖所有替代方案、修改方案和等同方案。
图1图示了示例中的数据存储环境。
图2图示了示例中的处理数据记录的方法。
图3图示了示例中的数据记录的视图。
图4图示了示例中的处理数据记录中的提升的属性。
图5图示了示例中的处理数据记录中的提升的属性。
图6图示了示例中的数据记录中的更改提醒。
图7图示了示例中的数据记录中的更改提醒。
图8图示了示例中的数据的复制排序。
图9图示了示例中的数据更改的验证。
图10图示了示例中的数据存储环境。
图11图示了示例中的数据中心的控制。
图12示出了适合于实现本文公开的任何体系结构、过程和操作场景的计算***。
具体实施方式
与基于SQL的数据相比,非关系数据库(例如无模式或NoSQL类型的数据库)允许各种灵活性。NoSQL数据库可以将数据存储在一个或多个表中,并使用“最终一致”进程,这些进程可能无法在整个数据库***中提供即时数据一致性。在下面的示例中,预先计算了各种视图以将数据记录存储在一个或多个表中。这些视图可以将包含数据记录的数据集排列成不同的配置,并且可以存储在不同的数据分区中。与基于SQL的数据库(通常需要“JOIN”或其他函数作用于单个数据集或视图)相比,预先计算的视图可以加快对数据库访问的查询响应速度。如果对此处讨论的NoSQL数据库中的数据记录进行更改(如更改现有数据记录,删除数据记录或添加新数据记录),则会更新各种视图以反映这些更改。更新过程需要一定的时间才能完成,并且各种视图最终会根据这些更改而彼此保持一致。因此,在一个视图中进行的更改可能不会立即完全传播到所有其他视图或数据记录。
各种面向用户的应用程序可以使用这些数据库***,例如用于项目管理、计划、任务管理、日历或其他类型软件的软件。任何分布式数据服务也可以使用这些数据库***。数据库***包含可为其建立预先计算视图的数据库或数据集。虽然任何数据都可以保存在关联的数据库中,但本文中的许多示例都会讨论项目和任务的上下文以说明各种增强功能。在项目管理或任务管理示例中,项目可以包含一个或多个要为项目完成的任务。可以使用结构化数据记录来建立项目和任务的安排,这些结构化数据记录使用键控数据或其他关系相互关联。
规范化的数据存储***是其中仅保存数据的一个副本并且在其之上构建索引以便于查询的数据存储***。相比之下,在非规范化的数据存储***中,整个文档或文档的各个部分在“视图”中被复制多次,每个副本索引不同以支持相应的查询。例如,在代表项目和相关任务的***中,***可以提供查询:“此项目中的任务是什么?”以及“为此用户分配了哪些任务?”。为了服务这些查询,非规范化存储***可以存储“按项目索引的任务”和“按分配用户索引的任务”的视图,这两个视图都将具有整个任务文档。
当使用该***的开发人员希望创建数据的逻辑“连接”的体验(这不能由单个索引服务)时,这可能导致困难。在我们的示例中,这样的查询可能是:“分配给此用户的每个任务的项目名称是什么?”。在规范化的***中,这是一个简单的查询,因为索引可以“连接”,因为规范化的事务***几乎总是在“本地化”(非分布式)硬件上以提升事务处理。例如,它们通常位于一台计算机上,或者甚至是同一台物理硬盘上。
由于非规范化存储***是为了扩展而构建的,它们通常具有以分布式方式遍布许多机器的复制索引数据。在非规范化***中,为用户检索任务可以作为“按分配用户索引的任务”的单个查询来完成,但是为每个任务查找项目名称是每个任务的查找操作,并且由于项目可能跨不同物理节点分布,运行所有这些查询在计算和事务处理方面可能是昂贵的。
规范化***可能是不合需要的,因为规范化***具有单个事务***,这成为大规模部署中的瓶颈。其他***使用非规范化存储,但为每个可能的查询构建新的非规范化索引或视图。这可能会迅速增长到大量可能的查询。虽然这些实现方式可以并行完成,但所需的存储量会增加成本、空间和时间,并且会降低分布式***的存储和计算效率。第三个实现方式使用扇出查询,通过读取来自不同数据存储库的所有数据来实现数据的“连接”。这会降低查询的服务速度,因为查询需要的时间与子查询的最大持续时间一样长。由于许多查询需要成功执行,相关***也变得不太可靠。
本文讨论的示例通过使用提升的数据字段通过将实体的属性置于与关联相关的其他实体上而大大扩展了可由***服务的查询的范围。关联可能与遏制、链接、成员关系或任何其他关系类似。将属性置于另一对象上称为“提升属性”,属性本身就是“提升的属性”。这里讨论的示例还允许跨越关系聚合信息,诸如维持某个关系中的实体的数量的计数,或者获取关系中的实体的一些字段的值的总和以及其他聚合的信息。像这样的属性可以称为“聚合属性”。
在维护任务和项目数据的***中,可以使用关联的项目名称对任务进行非正规化,使得项目名称在任何任务可用的查询中可用。同样,该项目可以保留项目包含的任务数量的计数。这样,数据在非规格化索引中存储之前,数据与“预连接”数据相似。
在每次编辑、创建或删除实体时,可将提升的属性提升‘为’实体。示例过程包括:(1)读取关联实体以找到必须提升到修改后实体的任何属性;(2)增加具有待提升属性的实体;(3)将实体复制到实体的所有非正规化副本;(4)删除实体的任何废弃副本,以及(5)验证自步骤1以来没有任何关联实体已经更改。如果他们有,则该过程可以返回到步骤1。可以在实体每次编辑、创建或删除时‘从’实体提升属性。示例过程包括(1)找到不再与实体相关联的实体,(2)从这些实体中去除提升,以及(3)找到仍与实体相关联或与实体新关联的实体,和(4)用修改的属性更新实体。
可以在实体的每次编辑、创建或删除时复制聚合属性。示例过程包括(1)查找新关联的实体,对每个实体提供一个提升的属性特定独占锁定,并将聚合添加到这些实体。独占锁定是必要的,因为只有修改的实体被锁定,并且在任何点都不对相关实体进行面向用户的锁定。该示例过程还包括(2)查找通过编辑删除其关联的实体,对每个实体提供一个提升的属性特定独占锁定,并从这些实体中减去聚合。聚合属性可能会对存储***中编辑的可变性提出特别的担忧,因为重试加法和减法不是幂等的。为了解决这个问题,编辑注册时,一个唯一的键可以与编辑相关联。在应用编辑之前,当注册独占锁定时,可以存储聚合属性的旧值。然后,如果后续编辑发现过期的锁定,则必须在获得新的独占锁定之前恢复先前的值。
从这里的实现方式中可以意识到对使用提升的属性的数据记录处理和数据中心管理技术的各种改进。数据中心管理***以较少的单个查询处理数据记录查询的能力提供了对任何相关数据记录、数据库和用户交互的增强操作。技术效果改善了可能包括数据库、应用程序(如项目管理应用程序)和数据存储***的计算机和计算机***的运行。这提供了减少数据存储***的响应时间,减少数据存储***的处理器负载以及增加与相关应用程序的代码执行效率的各种技术效果和优点。
作为数据***的第一个例子,呈现了图1。图1示出了数据存储环境100。环境100包括多个数据中心110-112,其可以向用户101提供数据服务。在该示例中,用户101可以经由用户接口120与数据中心110连接。数据中心110还包括逻辑121,其执行由用户发出的指令,诸如用户101的用户输入。逻辑121还管理存储在存储一个或多个结构化数据记录集合的一个或多个分区130中的数据。图1中的每个数据中心可以包括与数据中心110类似的元件。
分区130包括一个或多个数据阵列,诸如结构化数据记录集合、预先计算的视图、数据行、数据表或其他数据结构。在图1中,为项目管理配置显示了一个示例数据类型,尽管其他配置也是可能的。项目131可以涉及任意数量的任务132。可以进行进一步的区分,例如针对分配给特定项目上的任务的个人用户。因此,许多项目可以存储在单独的分区中,其中每个项目具有保存在数据字段中的属性,该数据字段可以与关联于用户、任务或其他项目的其他数据字段有关或相关。
本文讨论的数据元素(例如数据记录)可以包括固有字段、提升字段和聚合字段等。例如,任务132可以各自包括固有字段133和提升字段134。提升数据字段引用至少另一组数据记录的数据字段的属性,并且在一些示例中包括包含在另一组数据记录中的数据记录的信息或值。固有字段与每个任务的数据字段相关,该任务的数据字段对应于该特定任务,例如任务名称或其他任务属性。与提升的数据字段相比,固有数据字段不会引用另一组数据记录中的数据字段的属性。聚合数据可以包含计算的字段,例如表示其他字段的聚合属性的字段。在一个示例中,聚合数据值指示项目记录的总数或任务记录的总数,并且响应于任务记录或项目记录的数量的变化而被重新计算。
如上所述,所提升的字段涉及其他表或数据结构(例如项目131)的数据字段。例如,每个任务可以具有指示项目131的属性的一个或多个附加数据字段,诸如分配给特定任务的项目名称。当执行查找或查询来检索任务时,会响应于查找或查询提供固有字段和提升字段。这可以节省额外的处理时间和查找延迟,因为任务的查询也将提供来自另一外部数据结构的其他“提升”属性或数据字段的指示。
回到图1的元件,数据中心110-112可以位于不同的物理或地理位置,并且通过一个或多个网络链路和分组网络耦合。数据中心110-112各自包括用于接收数据、存储数据和处理数据的计算机处理***和设备,以及本文讨论的其他操作。每个数据中心110-112可以包括通信或网络接口、用户接口以及计算机***、微处理器、电路、基于云的***或一些其他处理设备或软件***,并且可以分布在多个处理设备中。数据中心110-112的示例还可以包括存储在一个或多个计算机可读介质上的诸如操作***、数据库、实用程序、驱动程序、联网软件以及其他软件或数据结构的软件。在一些示例中,数据中心110-112各自包括下面在图11中讨论的元件。
图1的元件可以包括云存储平台,诸如用于跨各种设备、存储***、服务和其他元件的数据的存储和同步,包括管理、维护和开发***。图1的元件可以包括诸如平台即服务(PaaS)***或基础设施即服务(IaaS)***的执行平台,以向最终用户提供虚拟化和分布式应用级服务。云存储和应用程序级服务的示例平台包括MicrosoftMicrosoftMicrosoftMicrosoftGoogleApple和DropboxTM等。然而,至少在这里的例子中,讨论了各种改进,其提供了对最终一致的数据***中的数据记录集的增强管理。
用户接口120通过一个或多个网络链路接收用户输入。用户输入被转换为一个或多个动作以由逻辑121执行,逻辑121可以由诸如操作***或应用程序之类的其他元件来解释。可以向用户101呈现图形或文本用户接口,其包括呈现给用户的一个或多个图形或文本用户接口元素,用于与其他数据中心中的数据中心110-112的元件进行交互。应用程序接口(API)也可以由用户接口120提供,用于接收用户输入、用户指令、更改动作、数据、数据记录、查询、搜索或其他用户输入。用户接口120还可以包括用于向用户指示数据记录或操作结果的各种输出元件。
逻辑121包括处理电路和存储***。逻辑121可以包括从存储***检索和执行软件的一个或多个微处理器和其他处理电路。逻辑121可以在单个处理设备内实现,但也可以分布在执行程序指令时协作的多个处理设备或子***之中。逻辑121的例子包括通用中央处理单元、专用处理器和逻辑器件以及任何其他类型的处理器件其组合或变型。在一些示例中,逻辑121的部分在物理上与数据中心的一些元件分离并且被包括在远程服务器、基于云的处理***或虚拟化计算***中。
分区130被包括在每个数据中心的一个或多个数据存储***上。数据存储***可以包括能够存储数据记录的任何计算机可读存储介质。数据存储***还可以包括数据结构,数据结构包括一个或多个数据库、表格、列表、数据记录集合或其他数据结构,包括其组合和变化。数据存储***可以包括以用于存储信息(例如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。在任何情况下计算机可读存储介质都不是传播信号。
对提升的属性的进一步讨论包括在图2中。图2是示出操作权利要求1的元素的示例方法的流程图。图2的操作可以由数据中心110-112的元素执行,诸如用户接口120、逻辑121、数据存储元件或其他相关元件。在图2中,数据中心110-112在分区数据存储空间中存储(201)结构化数据记录集合,其中结构化数据记录的数据字段通过一个或多个关系关联在这些集合之间相互关联。在具体示例中,图1示出了项目131和任务132,其中每个项目可以具有分配给它的一个或多个任务。这些数据的视图可以被计算并存储在关联数据中心中,其中视图包括基础数据的各种表示。其他数据类型和关系是可能的。结构化数据记录可以包括表格、数据库或其他结构化数据。当采用表格时,通常使用记录和字段类型名称,但在某些示例中可以使用行列名称。
数据中心110-112将这些数据字段维护(202)在结构化数据记录集合中,例如第一集合和第二集合。结构化数据记录集合可以由任何数据中心110-112存储在任何关联的分区中。因此,这些结构化数据记录集合可以分布在由任何数据中心110-112提供的各种存储空间中。在一些示例中,例如当使用视图时,每个视图可以被存储在不同的分区或不同的数据中心上。在其他示例中,跨多于一个分区或数据中心复制一组视图以实现冗余、故障切换或加速对关联数据的访问。
数据字段包括引用数据字段,其引用至少另一结构化数据记集合的数据字段的属性。在一些示例中,提升的数据字段包括包含在另一数据记录集合的数据记录中的信息或值,但是可以包括聚合数据。聚合数据可以包括计算数据,例如表示其他字段的聚集属性的数据。在一个示例中,聚合数据字段指示项目记录的总数或任务记录的总数,并且响应于任务记录或项目记录的数量的变化而被重新计算。
数据中心110-112监视用户交互,诸如用户对由数据中心110-112维护的数据的更新。在图1中,使用相关的用户接口来监视用户交互并提供图形、基于文本或基于网络的用户接口。当发生用户更新时,数据中心110-112确定(203)用户更新是否涉及提升的数据字段。当用户更新与提升的数据字段无关时,则数据中心110-112实现(204)更新并将更新传播到任何相关联的结构化数据记录。
当用户更新涉及提升的数据字段时,则数据中心110-112在第二结构化数据记录集合中实现(205)更新的一部分,并将更新以及针对关联的提升数据字段收到的任何中间更改传播到第一结构化数据记录集合中的关联的提升数据字段。当用户对提升的数据字段引用的数据进行进一步的更改时,例如当多用户环境由数据中心110-112提供时,可能发生中间更改。可以合并中间更改以确保对由提升数据字段引用的字段、属性或数据所做的更新能够正确传播到提升的数据字段。
提升的数据字段的使用可以有利地减少需要执行以检索数据或记录的查询的数量。此外,当数据采用提升的数据字段时,数据中心110-112的处理工作量减少。具体而言,对具有提升的数据字段的数据记录的查询将返回包含在提升的数据字段中的数据。当提升的数据字段包含其他视图或数据集的信息或属性时,可以避免对这些视图或数据集的多个查询。在不使用提升的数据字段的示例中,可能需要多个查询或JOIN函数才能返回用户所需的数据。
图3中包括对提升属性的进一步讨论。图3是示出了各种结构化数据记录集合之间的关系的逻辑图300,各种结构化数据记录集在图3中被称为文档。其他逻辑组的结构化数据记录集合可以用来代替结构化数据记录集合。
图3示出了管理分区数据存储空间之间的数据一致性的方法。该方法包括在分区数据存储空间中存储结构化数据记录集合,其中结构化数据记录的字段通过一个或多个关系关联在这些集合之间相关。该方法还包括维护引用第一结构化数据记录集合的属性的第二结构化数据记录集合中的提升数据字段。响应于将新条目添加到第一集合中的用户指令,该方法包括在第二集合中添加模型数据记录以保存新条目的位置,建立反映新条目的模型数据记录的字段的值,并将这些值与对影响模型数据记录的提升数据字段的任何中间更改合并传播到第二集合中的模型数据记录。模型数据记录的字段值最初可以在日志数据结构中建立。
另一示例方法包括:在分区数据存储空间中存储结构化数据记录集合,其中结构化数据记录的字段通过一个或多个关系关联在集合之间相关;以及在引用至少第二结构化数据记录集合的字段的属性的至少第一结构化数据记录集合中维护提升的数据字段。响应于更新至少分区数据存储空间中的第一结构化数据记录的字段的用户指令,该方法包括确定更新是否涉及提升的数据字段。基于与提升的数据字段无关的更新,该方法包括实施更新并将更新传播到任何相关联的结构化数据记录。基于与提升的数据字段有关的更新,该方法包括在第二结构化数据记录集合中实现更新的一部分,并将更新以及对于相关的提升数据字段接收到的任何中间更改传播到第一结构化数据记录集合中的关联的提升数据字段。
在图3中,文档301包括结构化数据记录集合,其包括由特定项目管理软件环境管理的项目列表。文档301列出了三个示例项目P1-P3,每个项目都有与项目标识符(PI,P2,P3)相关的固有字段、与项目名称(P1NAME,P2NAME,P3NAME)相关的固有字段以及表示更多的固有字段的项目详情(比如项目描述)。
项目P1在详细视图中显示为与至少两个任务相关联,即任务T1和T2。这些任务可以被包括在另一结构化数据记录集合中,即文档302中。在文档302中列出了两个示例任务T1-T2,每个任务具有与任务编号(T1,T2)、任务名称(T1NAME,T2NAME)以及表示更多固有字段的任务详情(如任务描述)有关的固有字段。此外,文档302中的每个任务包括由PP指示符指示的至少一个提升的字段或提升的属性。在本示例中这些提升的属性指示任务分配给的项目的名称,例如P1NAME。可替代地,项目标识符或其他项目属性可作为提升属性包含在任务中,而不是项目名称。本示例中的提升属性允许任何查询检索任务或任务属性,以便还自动检索任务分配给的项目名称。在不使用提升属性的***中,执行前N个查询或搜索以查找关联的项目名称,随后在关联项目中(例如文档301中)进行后续查询或搜索。有利地,使用提升的属性,更少的查询可以被执行并且可以发生更快的数据检索和分析。
图3还示出了添加具有提升属性的附加数据记录的简要过程。具体地,图3中的操作‘1’示出了可以由诸如图1的用户101或图1的逻辑121的用户发起的添加任务操作。该添加任务操作首先提示逻辑121针对新任务303添加模型或占位符数据记录到文档302中。通常,在任务添加期间不会立即解析或获知提升的属性,因此使用空白提升属性创建模型数据记录。例如,可能首先创建一个新任务,然后将该任务分配给一个项目。将任务分配给项目后,项目名称作为提升的属性可以包含在新任务中。如果发生图3操作'2'所指示的中间更改,这可能会影响提升的属性,则可以将该更改成功合并到新任务记录中,并且可以保持项目列表和任务列表之间的数据一致性。具体而言,如果操作'2'包含为新任务分配的项目的重命名操作,则一旦将项目名称放入针对文档302中的新任务创建的模型数据记录的提升的属性字段中,新任务数据记录的提升属性字段将反映新项目名称。操作'3'反映任务203的更新过程,以用来自操作'2'中的中间更改的名称,即新的P1NAME更新空白占位符项目名称条目。
有利地,利用提升的属性对文档302的查询可以更高效。具体来说,操作'4'指示检索文档302或文档302中任务子集的查询。由于使用了任务记录中的提升属性,该查询将自动返回与每个任务相关联的项目。对于任务T1的查询将返回任务T1的属性/字段以及与另一个视图或文档的属性相关的提升属性,即在该示例中与任务T1相关联的项目名称。可以执行其他查询,例如新任务303,其将返回任务303的属性/字段以及与任务303相关联的与项目名称相关的提升属性。对由提升属性引用的字段的更新被传播到提升的属性字段,并因此反映在对任务记录的查询中。在不使用提升属性的示例中,可能需要多个查询或JOIN函数才能返回与任务关联的项目名称。
图4示出了在最终一致的***中提升的属性的进一步的示例和操作情景,诸如图1中所示。在图4中,用户可编辑的属性驻留在一个文档中。这是将属性显示在其他文档中用于读取操作的一种方式,以便可以在一次读取中完成可能需要多次读取的查询。例如,可以将项目的标题(通过使用提升的属性字段)提升为该项目中的任务,以便在读取任务时检索项目标题而无需额外的处理或时间成本。
在图4中,在操作场景400和401中详述过程,其中(1)选择实体的属性被复制到通过关联相关的其他实体;(2)对这些属性的更新更新相关实体的副本;以及(3)随着关联被创建或破坏,属性被适当地更新。具体而言,操作方案400示出逻辑项目文档410和几个视图411-413,其中一个包含项目数据(411)。视图411包含增强数据,在这种情况下包括项目中的任务总数,当前为0。这是一个聚合属性,它不是项目的用户可设置属性,而是基于项目属性进行计算。
在操作方案401中,在项目A中创建Task1。聚合的总任务属性被响应地计算和更新。在此过程中,项目A上会放置一个锁。该锁只在聚合属性上,并且用户可编辑的属性在该锁定期间仍可编辑。当任务1被复制到相应的视图时,计算增强属性父项目标题(Parent_Title)并将其复制到相应的视图,如视图412和413所示。
图5继续图4的示例。在图5的操作场景500中,已经在逻辑文档410中创建了新项目(项目B),并且任务1已经从项目A移至项目B。重新计算聚合属性,删除视图中过时的任务1副本。
现在转到关于传播对数据集的更改的讨论,将讨论图6-9。在最终一致的数据存储***中,在对数据记录进行编辑时,必须在性能和功能之间进行权衡。当用户编辑实体(如数据记录)时,***必须防止另一用户同时进行冲突编辑。这可以通过乐观资源锁定(其中,同时编辑会导致冲突错误)或悲观资源锁定(其中,用户在提交更改前首先获取资源锁)来完成。在这两种情况下,资源锁定的范围都决定了编辑的宽度。例如,在代表项目及其构成任务的***中,更新任务时,***可能会在任务级别(狭窄的资源锁定)或整个项目的范围(广泛的资源锁定)进行资源锁定。广泛的资源锁定允许跨多个实体进行复杂的编辑,但强制编辑可能与串行编辑平行,但只能进行串行编辑。
窄资源锁定可以提供比宽资源锁定更高的吞吐量。但是,狭窄的锁定可能会阻碍跨文档级联的操作,如级联删除。相关的,有一些具有后续的工作的编辑必须在一段时间后完成。例如,某项服务可能希望在一段时间内(例如数天)保留已删除的文档,以允许“回收站”或“垃圾箱”功能,并且在项目进入回收站几天后永久删除。在很多无索引的存储***中,如键值存储***,查找已经“回收”给定时间量的项目可能非常昂贵。
一些***使用更宽的锁定方案并接受吞吐量损失,或者使用扫描所有数据记录寻找指示工作需要完成的状态的处理。这里的示例使用提醒来提供增强的操作。提交编辑时,可以将提醒添加到“提醒列表”中,以便稍后进行跟踪。第一个示例提醒是“在30天内将该数据记录从回收站中删除,如果它仍在那里。”。这第一个示例提醒提供了延迟用户编辑/动作的后续工作。第二个示例提醒是“如果此任务在已删除的项目中,请删除该任务。”。该第二示例提醒可以帮助处理事务范围之外的级联效应。示例提醒和相关***采取的行动可以实现自动冲突解决。例如,在处理规则“如果此任务位于已删除的项目中,请删除该任务”时,无论是否对任务进行任何中间编辑,任务删除过程都可以继续。有利地,提醒列表和相关联的操作可以避免数据锁和数据锁吞吐量损失。
这里的示例可以提供增强的操作,用于调度数据记录的删除或清除以满足数据保留周围的监管和合规要求。在一些实现方式中,诸如政府、受监管行业等的客户期望数据或数据记录被保留'x'天的时间并在'y'天内清除的各种认证和合规水平。有利地,这里采用的提醒和提醒列表可以为NoSQL环境中的各种客户需求提供这些数据记录处理特征。合规程序的审计也可以通过可查询的提醒列表来提供,以确定关联的数据保留和清除计划。
提醒列表包括能够在后续动作被安排发生时的时间查询的工作列表。为了服务查询,提醒列表可能与单个索引相关联,或者可能与正在编辑的实体的某些分区的每个分片中的索引相关联。后台进程可以定期检查应该立即执行或在预定时间范围内执行的提醒索引。该后台进程可以评估***状态,可能跨多个文档,决定是否执行规则,然后执行(或不执行,如果适用)。一旦执行,提醒可以被删除,并且下一个要执行的提醒总是可以方便地从索引中获得。
执行提醒的过程做出关于多个对象的决定,但是在这里的示例中,不能对所有多个对象锁定。在防止多重锁定的第一个示例中,***可能会确保由于相关联的状态而导致所作用于的对象不可编辑。例如,如果关联的规则要清除回收站,***可以确保没有其他进程可以编辑回收站中的实体。在阻止多重锁定的第二示例中,***可能会将对象的乐观并发标记(可称为“电子标签(eTag)”)放入提醒中。如果电子标签不再有效,则执行提醒的过程可以跳过操作或提醒用户。对于后续工作,该过程可能会尽最大努力提交编辑,并忽略可能存在冲突的编辑。
从前述示例可以理解对数据操纵操作、数据集锁定和数据中心管理技术的各种改进。数据中心管理***使用基于提醒的处理高效处理数据锁和数据集更改的能力可以增强对任何关联数据记录、数据库和用户交互的操作。技术效果改善了可能包括数据库、应用程序(如项目管理应用程序)和数据存储***的计算机和计算机***的运作。这通过增加数据存储***的响应时间和减少处理器负载以及相关应用程序的更高效的代码执行来提供了各种技术效果和优势。
图6示出了使用提醒来管理分区数据存储空间之间的更改的示例方法600。图6示出了用于在最终一致的***中进行处理的提醒,并且可以在本文讨论的任何***(诸如图1中的***100,图10中的***1000或图12中的***1201)上实现,但也可能有变化。方法600包括在分区数据存储空间中存储(601)结构化数据记录集合,其中结构化数据记录的字段通过一个或多个关系关联在这些集合之间相关。这些数据记录可以包含任何数据或数据集。在这里的许多例子中,讨论了项目和任务以提供存储在数据记录中的示例性数据,其中一些任务与项目相关联。应该理解,可以采用其他数据、数据类型或数据关系。
方法600还包括接收(602)与结构化数据记录相关的更改动作。更改动作可以接收到用户接口中并由各种处理***或逻辑平台解释。更改动作可以包含对数据记录的编辑、重命名、删除、关系或其他操作。响应于更改动作,该方法包括基于更改动作建立(603)用于结构化数据记录的部分的数据锁,以防止在执行更改动作之前对部分进一步更改。这些数据锁可以针对更改动作指示的数据记录建立。在一些示例中,当更改动作待定时,数据锁防止在更改动作未决时其他进程或用户对关联数据记录的修改或中间更改。应该注意的是,对于引用更改动作中指示的数据记录的其他数据记录,未建立进一步的数据锁。例如,当更改动作指示对任务进行修改时,可能会在任务的更改未决期间将数据锁置于任务上,但进一步的数据锁不会放在可能引用或包含这些任务的项目上。可以对项目进行中间编辑。
该方法还包括调度执行索引或提醒索引中的更改动作的执行(604)。在一些示例中,一旦安排了更改动作,则移除任何相关联的数据锁以允许在更改动作在提醒索引中未决时对相关联的数据记录进行***编辑或更改。但是,其他示例可以在更改动作未决时将数据锁放置在关联的数据记录上。定时信息(例如定时器或时间延迟)可以指示何时执行更改动作,并且这个定时信息在每个相关数据记录的更改索引中被指示。当提醒索引中的更改动作未决时,允许至少另外的结构化数据记录的中间更改(605),诸如当另外的数据记录引用或包含提示索引中指示的数据记录时。这些中间的更改可以在执行相关的更改动作后解决。可以周期性地执行更改动作(606),诸如根据与提醒索引中的更改动作一起存储的定时信息。更改动作之间的冲突可以在没有任何原始更改提交者(例如用户或其他数据***)的交互的情况下解决。
除了由更改动作指示的数据记录的更改动作之外,还可以在提醒索引中建立一个或多个规则以影响其他数据记录。例如,当更改动作中指示任务时,关联项目可以在执行任务的更改动作时应用规则。通过这种方式,项目和相关数据记录不会被锁定,并且可以在提醒索引中的相关任务未决期间接收更多的用户更改。规则可以包括一旦对提示索引中指示的关联数据记录执行更改动作就对另外的或其他数据记录执行动作。在项目任务制度中,当更改动作对于某些任务未决时,则可以建立规则并将其与提醒索引中的更改动作一起包含。这些规则可以包括修改(例如删除)在执行任务的更改动作时引用任务的项目。相反,规则可以包括在执行项目的更改动作时修改(例如删除)与项目关联的任务。例如,删除项目时,规则可以指示与该项目关联的任务也将被删除。
此外,可以直接从提醒索引查询更改动作、规则和关联的定时信息。与更改动作相关的信息(例如更改动作信息、任务标识符、定时信息和相关规则)可以响应于查询而传送给请求者。通过这种方式,可以通过关联的数据***直接发现挂起的更改,而不是搜索所有数据记录以发现附加到数据记录本身中的任何数据记录的任何挂起的更改。此外,如上所述,提升属性可以包含在更改动作指示的数据记录中。可以在执行更改动作期间使用这些提升属性,以识别可能受任何规则或更改动作影响的任何父数据记录、关联数据记录或相关数据记录或数据记录属性。
为了进一步说明项目/任务示例中的更改提醒和提醒索引,呈现了图7。图7示出了在示例中数据记录中的更改提醒。图7示出了用于在最终一致的***中进行处理的提醒,并且可以在本文讨论的任何***(诸如图1中的***100、图10中的***1000或图12中的***1201)上实现,尽管可能有变化。图7示出了在提醒索引713中保留执行索引,以便更高级定时器***可以定期扫描它并执行后续任务。图7示出了一个过程,其中包括:(1)基于逻辑创建一个提醒,在稍后的特定时间进行有状态评估;(2)后台进程定期查询这些提醒并执行这些提醒。步骤(1)中的这种提醒可以允许在大于***所允许的事务锁定范围的范围内模拟“级联”编辑,并且还可以允许稍后推迟编辑。
操作700示出了将任务A移动到回收站712的动作,该动作包括最初对该任务进行更改锁定。在将任务A放入回收站712和在提醒索引713中建立提醒期间,更换锁被包括在事务锁710中。一旦任务A被放入回收站712并且提醒被放入提醒索引713中,可以释放用于任务A的更改锁以允许来自其他进程和用户的中间编辑,同时任务A位于回收站中等待推迟的清除。该示例***具有定时规则,在回收站中具有目标数据记录(即,任务A)的预定天数之后,还应删除引用目标数据记录的另外的数据记录(即项目A)。在这个例子中,根据包含在任务A的提醒索引713中的逻辑规则,在任务A保留在回收站中的预定时间量之后,将删除项目A(其包含任务A)。***规则720指示用于评估与回收站712中的任务A有关的提醒操作的示例逻辑规则。具体而言,***规则720指示应在回收站中的30天之后从回收站清除数据记录(任务A),并且任何包含该任务的相应项目都应该被删除。可以将***规则配置为全局,每个记录类型(即,所有任务具有类似的规则),或者对每个记录特定,包括其组合。
在操作701中,任务A显示在回收站712中。提醒索引713还包括在稍后的时间'X'再次检查任务A的提醒。在对于提醒的配置的时间量过去后,提醒过程将执行任务A的提醒。图7示出了操作702,其中提醒过程714周期性地“拉”或检查提醒索引713中的提醒以确定规则的时间阈值是否被满足,即是否30天已经过去。图7进一步示出了操作702,其中提醒过程714通过为与任务(项目A)相关联的项目建立锁定并删除项目A来执行关联的规则。因为提醒过程714或任何相关的删除过程在任何中间时间期间都没有保持任务或项目的更改锁,所以可能已经对任务A或项目A进行了中间编辑。提醒过程714可以自动解决那些中间编辑,以确保对受影响的数据记录采取适当的动作(即,删除适当的项目数据记录和任务数据记录)。中间编辑可以包括对任务A等待从回收站712清除时发生的项目和任务的项目名称、任务名称或其他关联数据记录的各种属性的更改。在替代示例中,在任务A处于回收站中的同时在任务A中保持更改锁,直到执行任务A的提醒。在这些替代示例中,由于事务锁定,不允许对任务A进行中间更改。
现在转向图8-11,讨论了增强数据和更改复制以及其他特征。许多数据处理平台和***(例如本文讨论的那些)包括多于一个关联的数据中心。在图1中,显示了多个数据中心,这些数据中心可以彼此远程或本地定位。在一些示例中,数据中心包括“云”或分布式计算***。但是,在处理多组冗余数据的多个数据中心上复制数据更改时可能会出现困难。在所有复制编辑都强排序的示例中,处理可能难以并行化。但是,在下面的例子中,通过放弃一些强排序的措施,***可以实现更高水平的并行性。有利的是,这个想法提高了数据存储***中异步复制的性能。
一项服务的数据可以存储在一个称为主要数据中心的数据中心中,并可以复制到一个或多个其他数据中心(二级、三级等)。用户通常在主要数据中心接收更改和编辑。复制可以是同步的,在向用户确认编辑之前,每个编辑都写入每个复制品。相反,复制可以是异步的,即在主要数据中心从用户接收到编辑时确认编辑,并且稍后将其写入辅助数据中心。
如果数据要在复制品上保持一致,则需要对异步复制进行排序。例如,假设文档存储***允许更改文档的标题。用户使用两项更新编辑文档:(A)将标题设置为“收入”;(B)将标题设置为“利润”。最终的效果是文档标题设置为“利润”。如果这些编辑以不正确的顺序复制到辅助数据中心,编辑将按以下顺序执行:(B)将标题设置为“利润”;(A)将标题设置为“收入”。如果发生这种情况,文档的标题在辅助数据中心和主要数据中心上会有所不同,这是错误的。
处理复制的一种方式是完全排序更新。例如,对存储***中每个文档的每个编辑都会给出一个序列号,并且更新在复制品上以完全相同的顺序运行。由于所有编辑都是严格排序的,因此它们都不能并行运行。如果数据中心负载增加,这可能会成为瓶颈。这里的例子交换了一些并行性的排序。编辑被分组为彼此可交换的“进给”,并且编辑仅在每次进给的基础上保证执行的相对顺序。交换性也指具有相同结果的来自不同进给的更新,而不管先执行哪个更新,即使更新可能针对彼此在逻辑上相关的项目。可以调整进给的数量以增加并行性,这可以提高性能,或者调整为增加排序的强度。
例如,在任务存储在项目中的***中,任务及其包含的项目可以处于单独的进给中。第一个进给中的更新可能会创建该项目,而第二个进给中的更新可能会创建该任务。乍一看,创建任务似乎不会与创建项目交换,因为项目是任务的容器。相反,如果恰好先创建任务,并使用占位符项目,并在完全创建时使用正确的细节填充项目,则可以“无序”创建任务,以使结果相同,无论哪个创建首先执行。无论首先执行哪个创建,结果是相同的,那么这两个创建(项目和任务)就被认为是可交换的。
有许多不同的方式来将文档/数据编辑组织成进给。第一个示例结构是基于对文档的标识符进行散列,将不互相交互的文档分成多个进给。例如,文档存储子***可以包括对从不会彼此交互的两个文档的编辑,即文档是独立的。假设在主要数据中心收到这些编辑:
·Edit1)用户A编辑Documentl,将标题设置为“利润”
·Edit2)用户B编辑Document2,将标题设置为“士气”
·Edit3)用户A编辑Documentl,将标题设置为“收入”
·Edit4)用户B编辑Document2,将标题设置为“事件”。
为了在辅助(复制品)数据中心上具有相同的结果,必须在Edit3之前执行Edit1,并且必须在Edit4之前执行Edit2。但是对Documentl和Document2的编辑的相关排序并不重要。因此,编辑可以根据相关文档基于其标识符分为多个进给:
进给1:
·Edit1)用户A编辑Documentl,将标题设置为“利润”。
·Edit3)用户A编辑Documentl,将标题设置为“收入”。
进给2:
·Edit2)用户B编辑Document2,将标题设置为“士气”。
·Edit4)用户B编辑Document2,将标题设置为“事件”。
现在可以在辅助数据中心上并行执行两个进给,并且相关联的吞吐量增加一倍。
进一步的示例进给算法可将相关文档组合在一起。例如,如果编辑文档应该导致对子文档进行级联更新,则实现方式可以要求编辑和级联更新位于相同的进给中。同样,例如在包含任务和项目的示例中,可以使用占位符容器将“容纳”或结构关系模型化为可交换更新,从而允许占位符容器和包含的对象位于不同的进给中。
从前述实现方式中可以意识到对数据验证、数据集一致性检查和数据中心管理技术的各种改进。数据中心管理***使用并行进给高效处理数据验证的能力提供了对任何关联数据记录、数据库和用户交互的增强操作。技术效果改善了可能包括数据库、应用程序(如项目管理应用程序)和数据存储***的计算机和计算机***的功能。这通过增加数据存储***的响应时间和减少处理器负载以及相关应用程序更高效的代码执行提供了各种技术效果和优势。
现在转向图8的操作,操作800-803图示了示例中的数据的复制排序。图8说明了跨文档最终一致性***中的复制排序。在图8所示的示例中,可以将文档编辑或数据编辑分组为进给,其中不同进给中的操作完全相互交换。可以并行处理进给,在不影响数据正确性的情况下提高性能。进给的数量和编辑的排序强度是可以在此想法的每个实现方式中进行优化的规模。
图8示出了管理冗余数据存储空间中的更改的方法。该方法包括跨越多个数据中心冗余地存储结构化数据记录集合,其中结构化数据记录的字段通过一个或多个关系关联在集合之间相关。该方法包括在第一数据中心中接收与结构化数据记录相关的更改动作,并选择性地将更改动作中的一些更改动作放入多个更改进给中,其中更改进给可并行执行以实现更改动作。该方法还包括将更改动作传播到数据中心中的一些数据中心作为在每个更改进给内排序的操作,其中每个数据中心并行地在更改进给中实现更改动作以影响由关联数据中心存储的结构化数据记录。
在操作800中,两个文档首先处于原始状态,即文档1“利润”和文档2“士气”。如图8的操作800中的复制流水线所示,将这些文档从主要数据中心810复制到辅助数据中心811。然后在操作801中重命名文档,诸如响应于在第一和第二编辑中编辑名称的用户命令。主要数据中心810可将与编辑有关的更改动作放置在一个或多个可交换更改进给中,以便在主要数据中心810中并行地实现更改动作。关于更改进给的更多细节在下面的操作803中讨论。一旦实现更改动作,主要数据中心810将复制数据传输到一个或多个冗余数据中心(例如辅助数据中心811)。该复制数据可以包括用于改变结构化数据记录的更改动作、编辑或其他信息的指示。可以在复制数据中将更改动作指示为位于一个或多个更改进给中。此外,此复制数据可以包含校验和或散列数据,用于验证冗余数据中心中更改动作的完成情况。散列数据与实施伴随更改动作之后在数据记录(或其一部分)上生成的散列进行比较。如果发生不匹配,则更改动作可能没有正确执行。这个散列比较的进一步讨论可以在下面的图9中找到。主要数据中心810可以在实现更改记录之后生成与结构化数据记录的状态相关的该散列数据。散列数据的其他例子包含在图9中。
操作802显示传统的***,其中所有编辑被强排序,因而形成瓶颈。具体而言,编辑820和编辑821按顺次的顺序传播到辅助数据中心811。该顺序通常是由主要数据中心810接收编辑的顺序,并且因此编辑820和821被复制到辅助数据中心811,如图8所示。操作803示出了使用进给的增强操作。有利的是,在操作803中,编辑被装桶,使得每个桶中的编辑是可交换的,并且可以并行运行。交换进给可以相互并行执行,以便与其他进给相比,进给可以按任何顺序执行,但是按顺序执行特定进给内的更改动作。在此示例中,重命名不同文档的操作是可交换的,并且编辑820和821并行发生。由主要数据中心810传送的复制数据将编辑820和821指示给辅助数据中心811,并且该复制数据将编辑指示为在一个或多个可交换进给内,如图8所示。
图9图示了示例中的数据更改的验证,其可以与可交换的进给一起被包括,如图8所示。图9示出了多文档复制中的即时和最终验证。图9还示出了管理分区数据存储空间之间的一致性的方法。该方法包括:将结构化数据记录集合存储在分区数据存储空间中,其中结构化数据记录的字段通过一个或多个关系关联在集合之间相关;接收与结构化数据记录相关的更改动作;以及选择性地将更改动作中的一些更改动作转换为多个更改进给,其中更改进给可以并行地可交换执行以实现更改动作。该方法还包括,当在相关联的更改进给中实现更改动作时,在完成更改动作中的第一更改动作中的每个时执行更改动作中的第一更改动作的一致性检验,以及选择性地延迟第二更改动作的一致性检验直到至少执行影响相似结构化数据记录的后续更改动作。在一些示例中,一旦有选择地延迟,延迟一致性验证可以可选地被忽略。
现在转向图9的操作,操作900示出在主要数据中心910中处于原始状态的项目(项目A)和包含的任务(任务A)。该原始状态可以由用户创建一个项目并向该项目添加一个或多个任务来建立。然后将项目A和相关联的任务A复制到辅助数据中心911。在操作901中,例如响应于在主要数据中心910处接收到的用户输入而重命名项目和任务。类似于图8的操作,重命名编辑可以被放置在主要数据中心910中的可交换进给中,在主要数据中心910中实现并且被复制到辅助数据中心911。项目和任务编辑被复制到辅助数据中心911,如在用于项目复制数据920和任务复制数据921的操作902中看到的。将两个相关联的编辑920/921(项目和任务名称)复制到辅助数据中心911是并行完成的,诸如在由主要数据中心910建立的可交换进给中。如在操作902,在包含项目重命名复制之前,任务重命名可以复制到辅助数据中心911。
任务复制数据921在图9中详细展开。该任务复制数据可以表示针对图8中讨论的项目和复制数据所讨论的复制数据,尽管可能有变化。例如,在一些示例中,散列数据可能被省略。在该示例中,任务复制数据921包括与重命名任务相关联的更改的描述,例如在更改任务属性922中指示的新任务名称。更改任务属性922还可以指示相关联的更改进给或可交换的进给是为哪些更改安排的。任务复制数据921还包括一个或多个散列,即“所有任务属性923的散列”和“所有父项目属性924的散列”。这些散列在本例中包含散列校验和,并且可以使用各种散列过程进行计算。在图9中,对任务的所有编辑都是严格排序的,并且任务散列必须匹配。父项目散列只需要机会性匹配,因为如上所示,当任务更改复制时,它可能不会被完全复制。
下面是使用散列的复制和验证过程的进一步讨论。图9显示了对于仅取决于单个文档的复制的属性复制时可以立即完成的“即时”或“一致”验证,以及在复制时立即尝试但可能依赖于尚未复制的文档则可以稍后重试的“最终”验证。这个例子说明了可以与复制记录一起发送的两种散列,即散列923和924。一致性/即时散列验证数据记录原有或固有的属性,这些属性会立即进行正确性/一致性验证。最终散列可以包括数据记录中包含的提升属性,并且验证可能首先需要以在散列匹配之前处理其他记录(可以在不同的进给中复制)。在该示例中,散列923包括一致/即时散列类型,并且散列924包括最终散列类型。
大型分布式或云数据服务通常具有称为主要数据中心的单个数据中心。然后将数据集合(这里称为“文档”)复制到其他数据中心,如二级、三级等,这样如果主要数据中心没有响应的话可以使流量“故障转移”到另一个数据中心。两个主要复制风格是同步的(其中在确认之前将编辑写入所有复制品)和异步的(其中编辑被确认并且随后被复制)。异步***经常被使用,因为它们更快,更容错。同步***必须等待对多个复制品进行编辑的确认,并且如果大多数复制品没有响应,则不能成功,但异步***的一个主要缺点是复制难以正确实现。在异步复制文档时,几类错误可能会导致出现文档数据丢失或损坏。无论更新在每次编辑时是以“deltas”(更改)还是以全文档发送都如此。图9中的示例显示了使用散列方案以及即时和最终验证检测丢失或损坏文档的各种方法。
在一些***中,定期校验和在复制期间由文档发送,以便复制品可以检查其所有文档是否匹配。例如,每个记录中每个字段的字节可以通过散列函数合并为一个值,并且可以在数据中心之间比较散列。但是,这限制了复制品在单个“进给”中运行,这意味着所有复制的编辑必须强排序。强排序编辑意味着它们不能并行运行,因而降低吞吐量。有利地,在这里的示例中,对文档的更改以这样的方式分布在多个进给中,使得它们的编辑不会彼此交互。但是,这可能会导致多个文档的编辑,这些文档可能会在主要数据中心和辅助数据中心中以不同的顺序出现。
如果编辑在辅助数据中心中以不同的顺序发生,然后评估校验和或散列,则辅助数据中心中的中间状态可能不匹配主要数据中心的中间状态。这与此处讨论的“提升属性”特别相关,其包括在另一个文档中可用的一个文档的性质或属性,反映在外键关联中反映的属性。例如,在任务管理***中,项目的标题可以被“提升”到该项目所包含的任务中,以便在读取任务时提升的属性可用,并且所提升的属性在包含的外键关联上可用。该任务的最终状态是该任务已创建,并且还将项目标题提升为该任务的一个字段。但是,任务的复制/创建和项目的创建可以在辅助数据中心上按任意顺序进行。
此外,单进给方式通常使每个数据中心周期性地“冻结”,并且在计算校验和时不接受编辑。冻结状态表示主要数据中心在足以计算校验和的持续时间内停止接受编辑,并且辅助数据中心需要处理相同的编辑并暂停处理足以计算和比较校验和的持续时间。这里使用多个进给的示例的优点在于'何时'检查复制对象的属性,部分原因在于虽然跨多个文档的编辑没有强排序,但对单个文档的编辑是强排序的。这里的例子区分了“即时”或“一致”验证和“最终”验证。即时验证是对只取决于单个对象的字段进行验证,并且可以在每次复制相关对象时对其进行评估。
例如,考虑一个示例***,如图9所示,其中包含任务的项目,其中任务和项目都具有名称。但是,在本例中,任务对象至少有两个字段,这些字段在读取任务时返回:任务名称(固有字段)和项目名称(图9中由'PP-x'表示的提升属性字段)。项目名称被提升为任务(即项目的属性,而不是任务的属性)。在操作900中,任务A显示具有提升属性的数据字段,该属性包括包含任务A的项目的名称,即表示项目名称(项目A)的“PP-A”。从“-A”到“-B”编辑任务名称和项目名称,并更改关联的数据记录属性。具体而言,项目A被重命名为项目B,其中项目名称是项目的固有属性或固有数据字段。任务A也重命名为任务B,任务名称是任务的固有属性或固有数据字段。包含在反映项目数据记录属性的任务中的提升属性也应该更新以反映对项目名称的编辑,并且因此操作901显示导致任务B的“PP-B”。
在图9中,采用冗余数据中心,并且在主要数据中心910处接收到的任何更改被复制到辅助数据中心911。当对任务的编辑被复制到辅助数据中心时,可以验证任务名称以确保在辅助数据中心中编辑的复制是正确的。这是即时验证的一个例子:只要在主要数据中心上执行关联的编辑,所有可即时验证的属性的值就会散列在一起,并且稍后在辅助数据中心上执行编辑时,散列被重新计算。如果两个散列值不匹配,则会出现错误,并且可能会采取纠正措施(例如向用户提示错误)或等待预定的时间量,然后再次尝试关联的散列比较。如果这两个散列匹配,则不会有错误,并且将更改/编辑复制到辅助数据中心。
最终验证是其值取决于其他对象的字段的验证。在这里讨论的项目/任务的示例中,提升为任务的项目名称(即“PP-x”)是任务中取决于另一个对象的字段的示例,并且可以对更改/编辑进行最终验证到项目名称(包含在相关任务的字段中)。当任务和项目独立复制时(例如在不同的进给中),当在主要数据中心和辅助数据中心上对任务的编辑进行评估时,编辑的属性是否匹配都会产生不确定性。
考虑主要数据中心的这个序列:
·项目已创建,名称为ProjectA。
·任务已创建,名称为Taskl,并包含提升的项目标题ProjectA。即时验证散列值仅利用值Taskl执行,最终验证散列值仅利用值ProjectA执行。
·项目重命名为ProjectB。
在辅助数据中心,序列可能会像这样复制:
·项目已创建,名称为ProjectA。
·任务已创建,名称为Taskl,并具有提升的项目标题ProjectA。即时验证散列值仅利用值Taskl执行,最终验证散列值仅利用值ProjectA执行。
·项目重命名为ProjectB。
在上面的序列中,即时散列和最终散列将在两个数据中心上匹配。但是,项目和任务可以按照彼此不同的顺序进行复制,而在辅助数据中心上,顺序可能会像这样复制:
·项目已创建,名称为ProjectA。
·项目重命名为ProjectB。
·任务已创建,名称为Taskl,并具有提升的项目标题ProjectB。即时验证散列仅利用值Taskl执行,并且最终验证散列仅利用值ProjectB执行。
在上述情况下,项目的重命名已经与创建任务交换。结果是即时散列仍然匹配任务名称,但最终的散列最初不匹配项目名称。即时散列(绝不会失败,否则报告错误)与最终散列(最初可能因合法原因失败,但稍后通过)不同。在某些情况下,最终散列失败可以被忽略,即时散列失败会导致错误。在其他情况下,失败的最终散列可以通过以下任何一种方式处理:(1)观察可能解决不匹配的进一步复制编辑,(2)如果在指定时间之后不匹配未解决,则发出警报,或者(3)每次看到文档或在提升属性关系中的文档更改时都重置定时器。从另一种方式说明(3),如果数据仍然不一致并且自编辑出现以来的时间量超过***的预期复制延迟,则可以发出警报。为了解决最终散列失败,辅助数据中心可以与主要数据中心进行核对以直接解决不匹配问题,请求重新发送关联的复制数据或散列,或者收集相关统计数据以监视可能指示复制问题的趋势,包括其组合。
因此,上面的示例讨论了可以从前述实现方式中意识到的数据验证、数据集一致性检查和数据中心管理技术的各种改进。数据中心管理***使用具有即时和延迟验证的并行进给高效处理数据验证的能力可以增强对任何相关数据记录、数据库和用户交互的操作。技术效果改善了可能包括数据库、应用程序(如项目管理应用程序)和数据存储***的计算机和计算机***的运作。这通过增加数据存储***的响应时间和减少处理器负载以及相关应用程序的更高效的代码执行而提供了各种技术效果和优势。
如上所述,大型分布式数据服务通常具有主要数据中心。数据集合(这里称为“文档”)然后被复制到其他数据中心,如二级、三级等。这样,如果主要数据中心被销毁,数据中心流量就可以“故障转移”到另一个数据中心。图10和11图示了用于经由拓扑状态的复制控制的示例数据存储环境。
图10图示了***1000。***1000包括三个数据中心1010、1020和1030以及拓扑控制节点1040。这些数据中心可以包括与图1中所讨论的类似的元件,尽管变化是可能的。例如,数据中心1010包括逻辑1011和数据存储装置1012,数据中心1020包括逻辑1021和数据存储装置1022,并且数据中心1030包括逻辑1031和数据存储装置1032。图10中的每个数据中心通过可以通过一个或多个分组网络耦合的一个或多个网络链路可通信地耦合。在一些示例中,数据中心位于彼此远离的地理位置并且经由因特网或其他分布式网络耦合。图10中的每个数据中心都提供了关联数据存储元件中数据记录的冗余存储。最初,图10示出了被指定为主要数据中心的第一数据中心(1010),被指定为辅助数据中心的第二数据中心(1020)以及被指定为第三数据中心的第三数据中心(1030)。用户输入和用户交互由主要数据中心处理,如由拓扑控制节点1040路由的。如以下将讨论的,提供增强的操作以更改数据中心之间的状态指定。
图10的操作的示例可以包括管理冗余数据存储中心的方法。该方法包括跨冗余数据存储中心冗余地存储数据记录,其中第一数据存储中心作为主要数据存储中心进行操作,被配置为至少响应与数据记录相关的用户输入。响应于指定第二数据存储中心作为主要数据存储中心,该方法包括将第一数据存储中心置于中间模式,该中间模式停止对第一数据存储中心对用户输入的响应,并且在第一和第二数据存储中心执行与第一数据存储中心接收的先前用户输入有关的未决操作。该方法还包括将第二数据存储中心指定为主要数据存储中心,该主要数据存储中心被配置为响应与数据记录相关的至少另外的用户输入。在一些示例中,将第二数据存储中心指定为主要数据存储中心包括确定每个数据存储中心之间的票数(quorum)以将第二数据存储中心指定为主要数据存储中心。当第一数据存储中心处于中间模式时,第一数据存储中心可以以只读模式运行。在进一步的示例中,一旦第一数据存储中心完成了所有挂起的操作,则可以将第一数据存储中心置于停用模式。
图11示出了用于在数据中心之间更改状态的示例过程,并且图11的操作也可以应用于图10的元件。在操作1100中,数据中心1110和1120处于原始状态,原始主要数据中心1110和原始辅助数据中心1120。可以包括更多的数据中心,但是为了清楚起见在图11中被省略。拓扑状态1111指示数据中心1110被设置为主要数据中心,并且拓扑状态1121指示数据中心1121被设置为辅助数据中心。后台进程1112、1113、1122、1123各自处理相关数据中心的各种功能,诸如接收和实现更改/编辑,复制数据,检查散列,发布警报/错误等功能。主要数据中心1110接收用户流量,诸如编辑,更改,添加,删除,查询或其他数据操作。响应于对在主要数据中心1110中管理的数据所做的更改,复制数据1130一般从主要数据中心1110传输到辅助数据中心1120或其他数据中心。
在操作1101中,启动更改哪个数据中心是主要数据中心的过程。除了其它启动触发之外,该过程可以响应于针对当前主要数据中心检测到的停机、问题或无响应、响应于控制节点或管理员针对主要数据中心的停机或维护而启动该过程的指令、或者定期地在主要数据中心在预定时间量内已经是主要数据中心之后而启动。原始主要数据中心1110首先被设置为中间状态,该中间状态等待后台进程1112-1113退出并且等待关联的数据刷新,诸如复制数据1131被复制到数据中心1120。拓扑状态1111指示数据中心1110被设置为中间的并且拓扑状态1121指示数据中心1121被设置为辅助的。
在操作1102中,另一个数据中心1120被设置为主要的,使得数据中心1120开始接受用户流量。拓扑状态1111指示数据中心1110被设置为中间的,并且拓扑状态1121指示数据中心1121被设置为主要的。数据中心1102可以开始接受用户流量并且响应于用户流量来实现数据处理。对数据的更改/编辑可以从数据中心1120进一步复制到未在图11中示出的其他数据中心。在操作1103中,旧的主要数据中心1110被设置为处于拓扑状态1111中的停止服务状态,并且数据中心1120仍处于主要状态。一旦数据中心1110的维护或修理完成,主要指定可以改回数据中心1110或仍是数据中心1120。停止服务状态防止数据中心1110接收来自用户的用户输入以及来自目前的主要数据存储中心的任何复制数据。
在图11中,后台进程和其他状态特定的动作,例如接受用户流量,可以由单个拓扑控制节点来控制。非计划故障转移是通过使用图11中的过程的扩展而不是广泛的特例来实现的。例如,可以使用票数***处理主要数据中心的失控情况,以建立数据中心状态。具体而言,其余数据中心可以“投票”确定主要数据中心已无响应或进入非活动状态。可以基于预定的排序或其他因素(例如性能、容量或延迟因子)在剩余的数据中心中选择新的主要数据中心。
有利地,图10和图11中的过程高效地管理复制分布式数据服务的后台操作。复制分布式数据服务包括将数据存储在一个数据中心(主要数据中心)中并将数据复制到另一个数据中心(辅助数据中心)并可选地将数据复制到其他数据中心(如第三级数据中心)的数据服务。如果主要数据中心被禁用,则可以将流量路由到辅助数据中心(称为“故障转移”或“执行故障转移”)。
拓扑指代一组数据中心和相关联的状态,包括哪个数据中心是主要的,辅助的等等。因此,拓扑包括指示哪个数据中心当前是主要的,哪些是次要的信息。数据中心在硬件和软件组成方面可能在很大程度上相似,但其中一个被指定为拓扑控制节点中的主要数据中心。每个角色可能有需要运行的不同的关联作业。例如,主要数据中心需要导出复制数据,而辅助数据中心需要导入复制数据。使这些作业与拓扑控制节点保持同步非常重要。例如,可能会出现错误,使数据中心成为主要数据中心,但不是运行主要数据中心所需的所有作业。同样,只有主要数据中心通常可以接受用户流量。
一些数据中心控制方案为从开始状态到完成状态的每个可能的状态变化定义步骤,诸如:(A)将状态设置为中间状态;(B)停止在开始状态下运行的每个作业;(C)启动在完成状态下运行的每个作业;(D)将状态设置为完成。其他数据中心拓扑对于影响多个数据中心的转换更为复杂,如故障转移。考虑一些数据中心拓扑的示例步骤,将原始数据中心从主要数据中心移动到停止服务,并将新数据中心从辅助数据中心移动到主要数据中心:(A)将原始状态设置为中间状态;(B)停止每个与主要数据中心有关的作业(可能有很多作业,所以这些作业可能有很多子步骤);(C)确保数据从原始刷新为新的;(D)在新的上面开始与主要数据中心相关的每个作业;(E)在原始上开始与停止服务有关的每项作业;(F)将原始设置为停止服务;(G)将新的设置为主要的。
前一段中描述的过程可能容易出错,部分原因是两个数据中心同时运行主要作业(或两者均接受用户流量)时会出现错误。另外,上一段中描述的方法有很多明确的步骤,可能编码不正确。当一个数据中心在尽可能多的时间内运行主要作业时,停机时间被最小化。此外,数据中心状态转换的一个重要方面是它们应该对错误具有弹性,比如具有可重试的能力。当***工作不正常时,前一段中描述的过程通常是特殊情况(用于翻转或不翻转许多不同的控制/网络交换机或拓扑控制节点设置)。当许多交换机一次翻转一个时,某些过程可能会比由主控交换机控制的情况花费更多时间关闭。一个这样的问题就是“非计划故障转移”的情况,意味着关联的复制流水线没有完全冲洗。当每个子***独立调用以刷新数据时,其中一个子***的处理操作可能难以正确管理。前一段中描述的过程的另一个难点是“失控”场景,其中拓扑控制节点无法联系主要数据中心来设置其状态。在许多子***必须明确更改其状态的方法中,操作过程可能不会考虑其中一个不可达。
这里的示例的有利方面是作业调度器连续评估所有作业以查看它们是否应该在拓扑上运行。从每个作业到其应该运行的拓扑状态的直接映射被建立,其中开始和停止作业的步骤不需要被编码到数据中心状态更改中。影响多个数据中心的转换,例如故障转移,也可以被高效地处理。例如,将原始主要数据中心从主要数据中心移动到停止服务以及将新数据中心从辅助数据中心移动到主要数据中心的故障转移过程如下所示:
·(1)将原始主要数据中心的状态设置为中间
·(2)在原始主要数据中心上等待与主要数据中心相关的每个作业完成执行
·(3)确保复制数据已从原始主要数据中心刷新到新的主要数据中心
·(4)将新数据中心设置为主要数据中心
·(5)将原始主要数据中心设置为停止服务
前面的示例具有比在其他拓扑和控制方案中更少的步骤,部分因为作业不需要针对新状态明确地开始,因为关联数据中心的作业管理器将处理该作业。而且,停止作业仅仅包括等待这些作业完成,所以有更少的使重试变得复杂的状态转换和子步骤。这种增强方案还允许通过简单地从工作流中省略上述步骤(1)来实现用于非计划故障转移的非常简单的机制。不需要考虑不同的子***,在故障转移操作中只需要一个设置开关。最后,这种增强型方案通过省略上面的步骤(1),(2)和(3)来允许失控场景。这允许***在原始主要数据中心无响应时建立新的主要数据中心。
然而,原始主要数据中心应当仍然被设置为停止服务(以便原始主要数据中心不接受用户流量),并且包括另外的机制。这可以通过制定数据中心的票数***(在拓扑中使用三个或更多数据中心)来实现。当第一数据中心认为它是主要数据中心时,第一数据中心将定期与相关拓扑中的其他数据中心进行核对,以确保他们同意。如果超过一半的数据中心同意第一数据中心是主要的,那么第一数据中心可以继续作为主要数据中心。否则,如果超过一半的数据中心认为第一数据中心不是主要的或者无法进行投票,那么第一数据中心将自动停止接受用户流量。这还允许运营商强制第一数据中心在拓扑结构中停止旋转/使用,即使运营商无法到达第一数据中心,只要运营商可以到达超过一半的其他数据中心来将该变化通知他们。这大大增加了***的弹性。
图10中示出了一个示例的票数。图10包括票数1050,票数1050包括来自每个数据中心的关于当前将哪个数据中心设置为主要数据中心的投票。两个数据中心当前指示数据中心1010是主要的,并且一个数据中心当前指示数据中心1020是主要的。因此,拓扑控制节点和关联的数据中心根据数据中心1010作为主要的来进行操作。如果数据中心1010无响应,那么它不会提供“投票”,而另一个数据中心可能会接管成为主要数据中心。类似地,拓扑控制节点1040可以通过向每个数据中心报告所选择的主要指示来控制哪个数据中心是主要的。如果其中一个数据中心最初未能收到此指定,则由于票数过程,其余数据中心仍可指示正确的主要数据中心。每个数据中心可以与其他数据中心交换指示当前主要指定的票数数据,并且可以从拓扑控制节点1040接收拓扑状态变化。
在这些票数示例中,每个数据中心将例如通过从其他数据中心接收票数数据或向其他数据中心请求票数数据来周期性地检查票数。如果当前非主要数据中心(例如辅助数据中心)接收到指示辅助数据中心现在是主要数据中心的票数数据,则辅助数据中心可以将对应状态从辅助更改为主要并且将接收用户流量并将更改复制到其他数据中心。票数数据可以指示来自每个数据中心的关于哪个数据中心是主要的当前“投票”,以及其他指定或状态。票数数据可以指示主要数据中心的标识符,诸如数据中心的网络标识符、数据中心的唯一标识符或其他指定。票数数据还可以包含多于一个指定,并包含可能的主要数据中心的排名。
从前述实现方式中可以意识到对复制控制和数据中心管理技术的各种改进。数据中心管理***高效处理故障转移和角色改变的能力可增强对任何关联数据记录、数据库和用户交互的操作。技术效果改善了可能包括数据库、应用程序(如项目管理应用程序)和数据存储***的计算机和计算机***的运作。这通过增加数据存储***的响应时间和减少处理器负载以及相关应用程序的更高效的代码执行提供了各种技术效果和优势。
图12示出了计算***1201,其表示其中可以实现在此公开的各种操作体系结构、场景和过程的任何***或***集合。计算***1201的示例包括但不限于服务器计算机、机架式服务器、web服务器、云计算平台和数据中心设备以及任何其他类型的物理或虚拟化服务器机器,以及其任何变型或组合。计算***1201可以表示图1的数据中心110-112的元件或者图10的数据中心1010、1020和1030,尽管可能有变化。
计算***1201可以被实现为单个装置、***或设备,或者可以以分布式方式被实现为多个装置、***或设备。计算***1201包括但不限于处理***1202、存储***1203、软件1205、通信接口***1207和用户接口***1208。处理***1202可操作地与存储***1203、通信接口***1207和用户接口***1208耦合。
处理***1202从存储***1203加载并执行软件1205。软件1205包括结构化数据处理环境1206,其表示关于前面的附图讨论的过程。当由处理***1202执行以增强数据记录处理和数据中心处理时,软件1205引导处理***1202如本文所述的至少针对前述实现方式中讨论的各种过程、操作场景和序列进行操作。计算***1201可以可选地包括为了简洁而未讨论的附加设备、特征或功能性。
仍然参照图12,处理***1202可以包括微处理器和处理电路,其从存储***1203检索并执行软件1205。处理***1202可以在单个处理设备内实现,但也可以分布在执行程序指令时协作的多个处理设备或者子***。处理***1202的示例包括通用中央处理单元、专用处理器和逻辑设备,以及任何其他类型的处理设备、其组合或变型。
存储***1203可以包括可由处理***1202读取并且能够存储软件1205的任何计算机可读存储介质。存储***1203可以包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。存储介质的示例包括随机存取存储器、只读存储器、磁盘、光盘、闪存、虚拟存储器和非虚拟存储器、盒式磁带、磁带、磁盘存储器或其他磁存储设备或任何其他合适的存储介质。在任何情况下计算机可读存储介质都不是传播信号。
除了计算机可读存储介质之外,在一些实现方式中,存储***1203还可以包括计算机可读通信介质,在该介质上可以在内部或外部传送软件1205中的至少一些。存储***1203可以被实现为单个存储设备,但是也可以跨相对于彼此共处或者分布的多个存储设备或者子***来实现。存储***1203可以包括能够与处理***1202或可能的其他***通信的附加元件,诸如控制器。
软件1205可以在程序指令中实现,并且除了其他功能之外,当由处理***1202执行时,引导处理***1202如关于本文所示的各种操作场景、序列和过程所描述的那样进行操作。例如,软件1205可以包括用于实现用于数据中心操作的增强型数据记录处理和处置的程序指令。
具体而言,程序指令可以包括协作或以其他方式交互以执行本文描述的各种过程和操作场景的各种组件或模块。各种组件或模块可以以编译或解释的指令,或以某些其他变型或指令组合来体现。各种组件或模块可以以同步或异步方式,串行或并行,单线程环境或多线程,或根据任何其他合适的执行范例、变体或其组合来执行。除了或包括环境1206之外,软件1205还可以包括附加的过程、程序或组件,诸如操作***软件或其他应用软件。软件1205还可以包括固件或能够通过处理***1202的执行的一些其他形式的机器可读处理指令。
通常,软件1205在被加载到处理***1202中并且被执行时,可以将合适的装置、***或设备(其计算***1201是代表性的)整体从通用计算***转换为定制以促进增强的数据记录处理和数据中心处置的专用计算***。实际上,在存储***1203上编码软件1205可以转换存储***1203的物理结构。物理结构的特定转换可以取决于本说明的不同实现方式中的各种因素。这些因素的示例可以包括但不限于用于实现存储***1203的存储介质的技术以及计算机存储介质是否被表征为主存储器或辅助存储器以及其他因素。
例如,如果计算机可读存储介质被实现为基于半导体的存储器,则软件1205可以在程序指令在其中被编码时变换半导体存储器的物理状态,诸如通过变换晶体管、电容器或构成半导体存储器的其他分立电路元件。对于磁性或光学介质可能会发生类似的转换。在不脱离本说明书的范围的情况下,物理介质的其他转换是可能的,前述示例仅用于促进本讨论。
结构化数据处理环境1206包括一个或多个软件元件,诸如OS 1221、应用程序1222和数据控制逻辑1223。这些元件可以描述在一个或多个数据中心上用户与之交互或管理结构化数据记录的计算***1201的各个部分。例如,OS 1221可以提供执行用户应用程序的软件平台,并允许接收和处理数据记录,更改数据记录以及查询数据记录集。用户应用程序1222可以是本文讨论的任何应用程序,例如项目管理,计划,任务管理,日历或任何其他数据记录处理应用程序,并且可以包括用户接口元素。数据控制逻辑1223在最终一致的***中提供提升的属性,用于在最终一致的***中处理的提醒,多文档最终一致性***中的复制进给,跨文档最终一致性***中的复制排序,多文档复制中的即时和最终验证,以及通过拓扑状态进行复制控制,以及其它操作。
通信接口***1207可以包括允许通过通信网络(未示出)与其他计算***(未示出)通信的通信连接和设备。一起允许***间通信的连接和设备的示例可以包括网络接口卡、天线、功率放大器、RF电路、收发器和其他通信电路。连接和设备可以通过通信介质进行通信以与其他计算***或***网络(例如金属、玻璃、空气或任何其他合适的通信介质)交换通信。
用户接口***1208是可选的并且可以包括用于交换与查询、数据记录、对数据记录的更改或其他输入有关的用户输入的一个或多个网络接口。用户接口***1208可以包括能够接收来自用户的用户输入的其他输入设备和关联的处理元件。用户接口***1208可以通过诸如通信接口***1207之类的网络接口提供输出和接收输入。用户接口***1208还可以包括由处理***1202可执行以支持上面讨论的各种用户输入和输出设备的相关联的用户接口软件。单独地或彼此结合地以及其他硬件和软件元件,用户接口软件和用户接口设备可以支持图形用户接口、自然用户接口或任何其他类型的用户接口。
计算***1201与其他计算***(未示出)之间的通信可以通过一个或多个通信网络并且根据各种通信协议、协议的组合或其变体来进行。示例包括内联网、互联网、因特网、局域网、广域网、无线网络、有线网络、虚拟网络、软件定义网络、数据中心总线、计算背板或任何其他类型的网络、网络组合或它们的变体。上述通信网络和协议是众所周知的,因此不需要在这里详细讨论。然而,可以使用的一些通信协议包括但不限于互联网协议(IP、IPv4、IPv6等)、传输控制协议(TCP)以及用户数据报协议(UDP)作为任何其他合适的通信协议、变体或其组合。
在交换数据、内容或任何其他类型的信息的任何前述示例中,信息的交换可根据多种协议中的任一种来发生,所述协议包括FTP(文件传输协议)、HTTP(超文本传输协议)、REST(代表状态传输)、Web Socket、DOM(文档对象模型)、HTML(超文本标记语言)、CSS(级联样式表)、HTML5、XML(可扩展标记语言)、JavaScript、JSON(JavaScript对象符号)和AJAX(异步JavaScript和XML)以及任何其他合适的协议、变体或其组合。
从前述公开可以意识到某些发明方面,其中以下是各种示例。
示例1:一种操作存储结构化数据记录的多个数据中心的方法,该方法包括,跨越所述多个数据中心,存储结构化数据记录的集合,其中所述结构化数据记录的字段通过一个或多个关系关联在所述集合之间相关。在接收与所述结构化数据记录相关的更改动作的第一数据中心中,该方法包括,选择性地将更改动作放入多个更改进给中,其中所述更改进给可并行地交换执行以实现所述更改动作。在所述第一数据中心中,该方法包括实现所述更改动作并将包括在多个更改进给中指示的更改动作的复制数据传播到至少第二数据中心。
示例2:示例1的方法,还包括,在所述第二数据中心接收包括在所述多个更改进给中指示的更改动作的所述复制数据,并且根据所述更改进给并行地实现所述更改动作以影响所述第二数据中心中的所述结构化数据记录。
示例3:示例1-2的方法,还包括,在关联的更改进给中实现所述更改动作的同时,在完成更改动作中的第一更改动作中的每个第一更改动作时,执行对更改动作中的第一更改动作的一致性验证,选择性地延迟对更改动作中的第二更改动作的一致性验证,直到执行影响相关结构化数据记录的至少后续更改动作为止。
示例4:示例1-3的方法,还包括:对受所述更改动作中的第一更改动作影响的结构化数据记录的固有数据字段执行第一散列比较,以对更改动作中的所述第一更改动作执行一致性验证,以及延迟对受所述更改动作中的所述第一更改动作影响的所述结构化数据记录的提升数据字段的第二散列比较。
示例5:示例1-4的方法,其中,提升数据字段包括引用受更改动作中的第一更改动作影响的结构化数据记录的其他结构化数据记录的一个或多个属性。
示例6:示例1-5的方法,还包括:延迟对受所述更改动作中的所述第一更改动作影响的所述结构化数据记录的提升数据字段的所述第二散列比较,直到影响相关结构化数据记录的所述更改动作中的所述第二更改动作完成后为止。
示例7:示例1-6的方法,其中所述复制数据进一步包括在第一散列比较中使用的第一散列数据和在第二散列比较中使用的第二散列数据。
示例8:示例1-7的方法,还包括:执行所述第二散列比较,并且如果所述第二散列比较中出现故障,则忽略故障,并且在等待预定时间之后重新执行所述第二散列比较。
示例9:示例1-8的方法,还包括:在所述第一数据中心中,在第一数据中心中实现所述更改记录之后,生成与结构化数据记录的状态有关的散列数据,并将所述散列数据包括在所述复制数据中。
示例10:一种装置,包括一个或多个计算机可读存储介质以及存储在一个或多个计算机可读存储介质上的程序指令。当由处理***执行时,程序指令引导处理***至少存储结构化数据记录,其中所述结构化数据记录的字段通过一个或多个关系关联相互关联。程序指令引导处理***接收与结构化数据记录相关的更改动作,并选择性地将更改动作放入多个更改进给中,其中更改进给可并行地交换执行以实现更改动作。程序指令引导处理***实现更改动作并传播包括在多个更改进给中指示的更改动作的复制数据。
示例11:示例10的装置,包括另外的程序指令,所述程序指令在由处理***执行时引导处理***至少根据更改进给实现更改动作以影响结构化数据记录。
示例12:示例10-11的装置,包括另外的程序指令,当由处理***执行时,引导处理***至少,在关联的更改进而中实现所述更改动作的同时,在完成更改动作中的第一更改动作中的每个更改动作时,执行对更改动作中的第一更改动作的一致性验证,并选择性地延迟对更改动作中的第二更改动作的一致性验证,直到执行影响相关结构化数据记录的至少后续更改动作。
示例13:示例10-12的装置,包括另外的程序指令,当由处理***执行时,引导处理***对受所述更改动作中的所述第一更改动作影响的所述结构化数据记录的固有数据字段执行第一散列比较,以对所述更改动作中的所述第一更改动作执行所述一致性验证,并延迟对受所述更改动作中的所述第一更改动作影响的所述结构化数据记录的提升数据字段的第二散列比较。
示例14:示例10-13的方法,其中所述提升数据字段包括引用受所述更改动作中的第一更改动作影响的所述结构化数据记录的其他结构化数据记录的一个或多个属性。
示例15:示例10-14的装置,包括另外的程序指令,所述程序指令在由处理***执行时引导处理***至少延迟对受所述更改动作中的所述第一更改动作影响的所述结构化数据记录的提升数据字段的所述第二散列比较,直到影响相关结构化数据记录的所述更改动作中的所述第二更改动作完成后为止。
示例16:示例10-15的方法,其中所述复制数据还包括在第一散列比较中使用的第一散列数据和在所述第二散列比较中使用的第二散列数据。
示例17:示例10-16的装置,包括另外的程序指令,当由处理***执行时,引导处理***至少执行所述第二散列比较,并且如果所述第二散列比较中出现故障,则忽略故障,并且在等待预定时间之后重新执行所述第二散列比较。
示例18:一种管理冗余数据存储空间之间的更改的方法,该方法包括,跨越多个数据中心冗余地存储结构化数据记录集合,其中所述结构化数据记录的字段通过一个或多个关系关联在这些集合之间相关,接收与所述结构化数据记录相关的更改动作并选择性地将所述更改动作中的一些更改动作放入多个更改进给中,其中所述更改进给可并行地交换执行以实现所述更改动作。该方法包括将所述更改动作传播到数据中心中的一些数据中心作为在每个更改进给内排序的操作,其中所述数据中心中的一些数据中心并行地实现所述更改进给中的更改动作以影响由相关数据中心存储的结构化数据记录。
示例19:示例18的方法,还包括:在关联的更改进给中实现更改动作的同时,在完成更改动作中的第一更改动作中的每个时,执行对更改动作中的第一更改动作的一致性验证,并且选择性地延迟对更改动作中的第二更改动作的一致性验证,直到执行影响类似结构化数据记录的至少后续更改动作为止。
示例20:示例18-19的方法,还包括:对受所述更改动作中的所述第一更改动作影响的所述结构化数据记录的固有数据字段执行第一散列比较,以对所述更改动作中的所述第一更改动作执行所述一致性验证,并延迟受所述更改动作中的所述第一更改动作影响的所述结构化数据记录的提升数据字段的第二散列比较,其中所述提升数据字段包括引用受所述更改动作中的第一更改动作影响的所述结构化数据记录的其他结构化数据记录的一个或多个属性。
附图中提供的功能框图、操作场景和序列以及流程图表示用于执行本公开的新颖方面的示例性***、环境和方法。尽管为了简化说明的目的,这里包括的方法可以是功能图、操作场景或序列或流程图的形式,并且可以被描述为一系列动作,但是应该理解和意识到,方法不受行为顺序的限制,因为一些行为可以据此以不同顺序和/或与本文所示和所述的其他行为同时发生。例如,本领域的技术人员将理解和意识到,方法可以替代地表示为一系列相互关联的状态或事件,诸如在状态图中。此外,并非所有方法中阐述的行为都可能是新颖实现方式所必需的。
本文包括的描述和附图描绘了用于教导本领域技术人员如何制作和使用最佳选项的具体实现方式。为了教导发明原理的目的,一些传统方面已被简化或省略。本领域技术人员将意识到落入本发明范围内的这些实现方式的变化。本领域技术人员还将意识到,上述特征可以以各种方式组合以形成多个实现方式。因此,本发明不限于上述的具体实现方式,而仅受于权利要求及其等同物限制。
Claims (10)
1.一种用于操作存储结构化数据记录的多个数据中心的方法,所述方法包括:
在接收与所述结构化数据记录相关的更改动作的第一数据中心中,实现所述更改动作并将包括所述更改动作的复制数据传播到冗余数据中心,其中,所述更改动作包括针对所述结构化数据记录的编辑、重命名、或删除;
在所述冗余数据中心,接收包括所述更改动作的所述复制数据,并且并行地实现所述更改动作以影响所述冗余数据中心中的所述结构化数据记录;
在所述冗余数据中心中,延迟对所述更改动作中的第一多个更改动作的一致性验证,直到影响相关结构化数据记录的后续的更改动作被执行为止,其中,所述第一多个更改动作影响所述冗余数据中心中的所述结构化数据记录的第一部分;以及
在实现所述更改动作时,在所述更改动作中的第二多个更改动作中的一个更改动作完成时立即执行对所述一个更改动作的一致性验证,所述一个更改动作影响所述结构化数据记录的第二部分。
2.如权利要求1所述的方法,还包括:
执行对所述结构化数据记录的所述第二部分的数据字段的第二散列比较,以执行对所述更改动作中的所述第二多个更改动作的一致性验证,其中,所述结构化数据记录的所述第二部分的数据字段不包括引用所述结构化数据记录的所述第一部分的属性;以及
延迟对所述结构化数据记录的所述第一部分的所述数据字段的第一散列比较,其中,所述结构化数据记录的所述第一部分的所述数据字段包括引用受所述更改动作中的所述第二多个更改动作影响的所述结构化数据记录的所述第二部分的一个或多个属性。
3.如权利要求2所述的方法,还包括:
延迟对所述结构化数据记录的所述第一部分的所述数据字段的所述第一散列比较,直到影响所述结构化数据记录的所述第二部分的所述更改动作中的所述第二多个更改动作完成后为止,并且其中,所述复制数据进一步包括在所述第一散列比较中使用的第一散列数据和在所述第二散列比较中使用的第二散列数据。
4.如权利要求2所述的方法,还包括:
执行所述第一散列比较,并且如果所述第一散列比较中出现故障,则忽略所述故障,并且在等待预定时间之后重新执行所述第一散列比较。
5.如权利要求1所述的方法,还包括:
在所述第一数据中心中,在所述第一数据中心中实现所述更改动作之后,生成与所述结构化数据记录的状态有关的散列数据,并将所述散列数据包括在所述复制数据中。
6.一种装置,包括:
一个或多个计算机可读存储介质;
存储在所述一个或多个计算机可读存储介质上的程序指令,所述程序指令在由处理***执行时引导所述处理***至少:
存储结构化数据记录;
从第一数据中心接收包括与所述结构化数据记录相关的更改动作的复制数据,其中,所述更改动作包括针对所述结构化数据记录的编辑、重命名、或删除;
并行地实现所述更改动作以影响所述结构化数据记录;
延迟对所述更改动作中的第一多个更改动作的一致性验证,直到影响相关结构化数据记录的后续的更改动作被执行为止,其中,所述第一多个更改动作影响所述结构化数据记录的第一部分;以及
在实现所述更改动作时,在所述更改动作中的第二多个更改动作中的一个更改动作完成时立即执行对所述一个更改动作的一致性验证,所述一个更改动作影响所述结构化数据记录的第二部分。
7.如权利要求6所述的装置,包括另外的程序指令,所述另外的程序指令在由所述处理***执行时引导所述处理***至少:
对所述结构化数据记录的所述第二部分的数据字段执行第二散列比较,以对所述更改动作中的所述第二多个更改动作执行所述一致性验证,其中,所述结构化数据记录的所述第二部分的所述数据字段不包括引用所述结构化数据记录的所述第一部分的属性;以及
延迟对所述结构化数据记录的所述第一部分的数据字段的第一散列比较,其中,所述结构化数据记录的所述第一部分的所述数据字段包括引用受所述更改动作中的所述第二多个更改动作影响的所述结构化数据记录的所述第二部分的一个或多个属性。
8.如权利要求7所述的装置,包括另外的程序指令,所述另外的程序指令在由所述处理***执行时引导所述处理***至少:
延迟对所述结构化数据记录的所述第一部分的所述数据字段的所述第一散列比较,直到影响所述结构化数据记录的所述第二部分的所述更改动作中的所述第二多个更改动作完成后为止,其中,所述复制数据还包括在所述第一散列比较中使用的第一散列数据和在所述第二散列比较中使用的第二散列数据。
9.如权利要求7所述的装置,包括另外的程序指令,所述另外的程序指令在由所述处理***执行时引导所述处理***至少:
执行所述第一散列比较,并且如果所述第一散列比较中出现故障,则忽略所述故障,并且在等待预定时间之后重新执行所述第一散列比较。
10.一种用于管理冗余数据存储空间中的更改的方法,所述方法包括:
接收与结构化数据记录相关的更改动作,其中,所述更改动作包括针对所述结构化数据记录的编辑、重命名、或删除;
将包括所述更改动作的复制数据传播到冗余数据中心;
接收包括所述更改动作的所述复制数据,并且并行地实现所述更改动作以影响所述冗余数据中心中的所述结构化数据记录;
延迟对所述更改动作中的第一多个更改动作的一致性验证,直到影响相关结构化数据记录的后续的更改动作被执行为止,其中,所述第一多个更改动作影响所述冗余数据中心中的所述结构化数据记录的第一部分;以及
在实现所述更改动作时,在所述更改动作中的第二多个更改动作中的一个更改动作完成时立即执行对所述一个更改动作的一致性验证,所述一个更改动作影响所述结构化数据记录的第二部分。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562267311P | 2015-12-15 | 2015-12-15 | |
US201562267307P | 2015-12-15 | 2015-12-15 | |
US62/267,307 | 2015-12-15 | ||
US62/267,311 | 2015-12-15 | ||
US15/181,751 | 2016-06-14 | ||
US15/181,751 US11226985B2 (en) | 2015-12-15 | 2016-06-14 | Replication of structured data records among partitioned data storage spaces |
PCT/US2016/065223 WO2017105935A1 (en) | 2015-12-15 | 2016-12-07 | Replication of structured data records among partitioned data storage spaces |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108431807A CN108431807A (zh) | 2018-08-21 |
CN108431807B true CN108431807B (zh) | 2022-11-01 |
Family
ID=59018750
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680073896.3A Active CN108431807B (zh) | 2015-12-15 | 2016-12-07 | 分区数据存储空间中结构化数据记录的复制 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11226985B2 (zh) |
EP (1) | EP3391249B1 (zh) |
CN (1) | CN108431807B (zh) |
WO (1) | WO2017105935A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10599676B2 (en) | 2015-12-15 | 2020-03-24 | Microsoft Technology Licensing, Llc | Replication control among redundant data centers |
US10248709B2 (en) | 2015-12-15 | 2019-04-02 | Microsoft Technology Licensing, Llc | Promoted properties in relational structured data |
US10235406B2 (en) | 2015-12-15 | 2019-03-19 | Microsoft Technology Licensing, Llc | Reminder processing of structured data records among partitioned data storage spaces |
US11226985B2 (en) | 2015-12-15 | 2022-01-18 | Microsoft Technology Licensing, Llc | Replication of structured data records among partitioned data storage spaces |
WO2019203735A1 (en) * | 2018-04-19 | 2019-10-24 | Vechain Foundation Limited | Transaction processing |
DE112021005779T5 (de) * | 2021-05-12 | 2024-01-04 | Mitsubishi Electric Corporation | Datenversandprogramm, Servervorrichtung, Endvorrichtung, Datenversandverfahren und Datenversandsystem |
US11893042B2 (en) * | 2021-07-09 | 2024-02-06 | Mongodb, Inc. | Methods and systems for automatically resharding a sharded collection of data |
US20230145054A1 (en) * | 2021-11-01 | 2023-05-11 | Cockroach Labs, Inc. | Multi-region database systems and methods |
US20240045887A1 (en) * | 2022-08-04 | 2024-02-08 | Cockroach Labs, Inc. | Systems and methods for controlling replica placement in multi-region databases |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1498815A2 (en) * | 2003-06-30 | 2005-01-19 | Gravic, Inc. | Methods for ensuring referential integrity in multi-threaded replication engines |
US8037024B1 (en) * | 2008-06-04 | 2011-10-11 | Google Inc. | Data propagation in a multi-shard database system |
US9116862B1 (en) * | 2012-01-17 | 2015-08-25 | Amazon Technologies, Inc. | System and method for data replication using a single master failover protocol |
Family Cites Families (106)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5369761A (en) | 1990-03-30 | 1994-11-29 | Conley; John D. | Automatic and transparent denormalization support, wherein denormalization is achieved through appending of fields to base relations of a normalized database |
US6073129A (en) | 1997-12-29 | 2000-06-06 | Bull Hn Information Systems Inc. | Method and apparatus for improving the performance of a database management system through a central cache mechanism |
US6826556B1 (en) | 1998-10-02 | 2004-11-30 | Ncr Corporation | Techniques for deploying analytic models in a parallel |
US6493721B1 (en) | 1999-03-31 | 2002-12-10 | Verizon Laboratories Inc. | Techniques for performing incremental data updates |
US7058853B1 (en) | 2000-06-09 | 2006-06-06 | Hewlett-Packard Development Company, L.P. | Highly available transaction processing |
US7539828B2 (en) | 2000-08-08 | 2009-05-26 | Faronics Corporation | Method and system for automatically preserving persistent storage |
GB2372843A (en) | 2000-10-12 | 2002-09-04 | Strategic Thought Ltd | Integrative project risk management system |
US6978281B1 (en) | 2000-11-21 | 2005-12-20 | Microsoft Corporation | Versioned project data |
US20020078007A1 (en) | 2000-12-20 | 2002-06-20 | Carlos Herrero | Task management program |
US7177866B2 (en) * | 2001-03-16 | 2007-02-13 | Gravic, Inc. | Asynchronous coordinated commit replication and dual write with replication transmission and locking of target database on updates only |
US7305658B1 (en) | 2001-05-07 | 2007-12-04 | Microsoft Corporation | Method and system for application partitions |
US6898590B1 (en) | 2001-12-28 | 2005-05-24 | Edsmart, Inc. | School system database |
US7139690B2 (en) * | 2002-07-22 | 2006-11-21 | Microsoft Corporation | Object-level conflict detection in an object-relational database system |
BR0312989A (pt) | 2002-07-26 | 2008-03-04 | Ron Everett | base de dados e sistema de operação de conhecimento |
US7523397B2 (en) | 2002-09-30 | 2009-04-21 | Microsoft Corporation | Centralized alert and notifications repository, manager, and viewer |
US7496574B2 (en) | 2003-05-01 | 2009-02-24 | International Business Machines Corporation | Managing locks and transactions |
US7447786B2 (en) | 2003-05-09 | 2008-11-04 | Oracle International Corporation | Efficient locking of shared data that is accessed for reads in a cluster database |
US7043665B2 (en) | 2003-06-18 | 2006-05-09 | International Business Machines Corporation | Method, system, and program for handling a failover to a remote storage location |
US7243088B2 (en) | 2003-08-06 | 2007-07-10 | Oracle International Corporation | Database management system with efficient version control |
US7464109B2 (en) | 2003-09-30 | 2008-12-09 | U-Haul International, Inc. | System and method of compiling real property information from a central database |
US20050091231A1 (en) | 2003-10-24 | 2005-04-28 | Shankar Pal | System and method for storing and retrieving XML data encapsulated as an object in a database store |
CN100388805C (zh) | 2003-11-10 | 2008-05-14 | 华为技术有限公司 | 一种归属位置寄存器的数据容灾方法 |
GB2408814A (en) | 2003-12-05 | 2005-06-08 | Caplin Systems Ltd | Symbol mapping for browser based data retrieval |
US7237184B2 (en) | 2003-12-18 | 2007-06-26 | Microsoft Corporation | Data property promotion system and method |
US8819072B1 (en) | 2004-02-02 | 2014-08-26 | Microsoft Corporation | Promoting data from structured data files |
WO2005078606A2 (en) | 2004-02-11 | 2005-08-25 | Storage Technology Corporation | Clustered hierarchical file services |
US7490083B2 (en) | 2004-02-27 | 2009-02-10 | International Business Machines Corporation | Parallel apply processing in data replication with preservation of transaction integrity and source ordering of dependent updates |
US7058731B2 (en) | 2004-08-03 | 2006-06-06 | Hitachi, Ltd. | Failover and data migration using data replication |
US7890545B1 (en) | 2005-03-31 | 2011-02-15 | Troux Technologies | Method and system for a reference model for an enterprise architecture |
JP2006309447A (ja) * | 2005-04-27 | 2006-11-09 | Hitachi Ltd | 記憶システム及びバックアップ方法 |
US20070067354A1 (en) | 2005-09-16 | 2007-03-22 | Microsoft Corporation | Productivity suite to line of business synchronization mechanism |
US7882079B2 (en) | 2005-11-30 | 2011-02-01 | Oracle International Corporation | Database system configured for automatic failover with user-limited data loss |
US8996482B1 (en) | 2006-02-10 | 2015-03-31 | Amazon Technologies, Inc. | Distributed system and method for replicated storage of structured data records |
US7925624B2 (en) * | 2006-03-31 | 2011-04-12 | Amazon Technologies, Inc. | System and method for providing high availability data |
US7430646B2 (en) * | 2006-03-31 | 2008-09-30 | Emc Corporation | Planned switchover in connection with triangular asynchronous replication |
US7647525B2 (en) * | 2006-03-31 | 2010-01-12 | Emc Corporation | Resumption of operations following failover in connection with triangular asynchronous replication |
US8468313B2 (en) | 2006-07-14 | 2013-06-18 | Oracle America, Inc. | Asynchronous replication with write concurrency grouping |
US7725764B2 (en) | 2006-08-04 | 2010-05-25 | Tsx Inc. | Failover system and method |
US7899822B2 (en) | 2006-09-08 | 2011-03-01 | International Business Machines Corporation | Automatically linking documents with relevant structured information |
US8694472B2 (en) | 2007-03-14 | 2014-04-08 | Ca, Inc. | System and method for rebuilding indices for partitioned databases |
US7783598B1 (en) * | 2007-04-27 | 2010-08-24 | Network Appliance, Inc. | Avoiding frozen-volume write penalties |
US7774318B2 (en) | 2007-07-30 | 2010-08-10 | Sap Ag | Method and system for fast deletion of database information |
US20090144338A1 (en) * | 2007-11-30 | 2009-06-04 | Yahoo! Inc. | Asynchronously replicated database system using dynamic mastership |
EP2073118A1 (en) | 2007-12-17 | 2009-06-24 | Nokia Siemens Networks Oy | Load distribution in distributed database system |
US20100049715A1 (en) | 2008-08-20 | 2010-02-25 | Yahoo! Inc. | Controlled parallel propagation of view table updates in distributed database systems |
WO2010045456A1 (en) | 2008-10-15 | 2010-04-22 | Workscape. Inc. | Performance driven compensation for enterprise-level human capital management |
US8468170B2 (en) | 2008-12-15 | 2013-06-18 | Microsoft | Creating ad hoc relationships between entities |
US20100192077A1 (en) | 2009-01-26 | 2010-07-29 | Raytheon Company | Parent/Child Control System for a Workflow Automation Tool |
US8121980B2 (en) * | 2009-02-13 | 2012-02-21 | Microsoft Corporation | Transactional record manager |
US20120072392A1 (en) | 2009-03-13 | 2012-03-22 | Wrays Pty Ltd | Management system and method |
US8201169B2 (en) | 2009-06-15 | 2012-06-12 | Vmware, Inc. | Virtual machine fault tolerance |
EP2302534B1 (en) | 2009-09-18 | 2017-12-13 | Software AG | Method for mass-deleting data records of a database system |
JP5508798B2 (ja) | 2009-09-29 | 2014-06-04 | 株式会社日立製作所 | クラスタを考慮してレプリケーションを管理する管理方法及びシステム |
US9031987B2 (en) | 2009-09-30 | 2015-05-12 | Red Hat, Inc. | Propagation of data changes in distribution operations in hierarchical database |
US20110196900A1 (en) | 2010-02-09 | 2011-08-11 | Alexandre Drobychev | Storage of Data In A Distributed Storage System |
DE112011101200T5 (de) | 2010-04-05 | 2013-01-17 | Google Inc. | Spaltenorientierte Speicher-Darstellungen von Datensätzen |
US20110276549A1 (en) * | 2010-05-04 | 2011-11-10 | Microsoft Corporation | Optimistic locking in a distributed file system replication environment |
US9015126B2 (en) | 2010-05-22 | 2015-04-21 | Nokia Corporation | Method and apparatus for eventually consistent delete in a distributed data store |
US8825982B2 (en) * | 2010-06-10 | 2014-09-02 | Global Supercomputing Corporation | Storage unsharing |
US8667236B2 (en) | 2010-09-29 | 2014-03-04 | Hewlett-Packard Development Company, L.P. | Host based write ordering for asynchronous replication |
US8667057B1 (en) * | 2010-10-01 | 2014-03-04 | Google Inc. | Method and system for delivering object update messages including payloads |
US8473775B1 (en) | 2010-12-14 | 2013-06-25 | Amazon Technologies, Inc. | Locality based quorums |
US8572031B2 (en) | 2010-12-23 | 2013-10-29 | Mongodb, Inc. | Method and apparatus for maintaining replica sets |
US8566635B2 (en) | 2011-01-21 | 2013-10-22 | Lsi Corporation | Methods and systems for improved storage replication management and service continuance in a computing enterprise |
US9064004B2 (en) | 2011-03-04 | 2015-06-23 | Microsoft Technology Licensing, Llc | Extensible surface for consuming information extraction services |
FI20115269A0 (fi) | 2011-03-18 | 2011-03-18 | Tekla Corp | Yhteisesti käytettävän tiedon viivästetty päivittäminen |
US8726066B1 (en) | 2011-03-31 | 2014-05-13 | Emc Corporation | Journal based replication with enhance failover |
US8751863B2 (en) | 2011-05-23 | 2014-06-10 | Microsoft Corporation | Implementing failover processes between storage stamps |
US9251021B2 (en) | 2011-05-23 | 2016-02-02 | Bradley Gene Calder | Asynchronous replication in a distributed storage environment |
US8850261B2 (en) | 2011-06-01 | 2014-09-30 | Microsoft Corporation | Replaying jobs at a secondary location of a service |
US8954786B2 (en) | 2011-07-28 | 2015-02-10 | Oracle International Corporation | Failover data replication to a preferred list of instances |
CN102354289B (zh) | 2011-09-21 | 2012-10-10 | 苏州大学 | 一种并发事务的调度方法和相关装置 |
US8874751B2 (en) | 2011-12-01 | 2014-10-28 | International Business Machines Corporation | Candidate set solver with user advice |
US8812564B2 (en) | 2011-12-20 | 2014-08-19 | Sap Ag | Parallel uniqueness checks for partitioned tables |
US8880565B2 (en) | 2011-12-23 | 2014-11-04 | Sap Se | Table creation for partitioned tables |
JP5948933B2 (ja) | 2012-02-17 | 2016-07-06 | 日本電気株式会社 | ジョブ継続管理装置、ジョブ継続管理方法、及び、ジョブ継続管理プログラム |
US9218371B2 (en) | 2012-02-29 | 2015-12-22 | International Business Machines Corporation | Automatic table cleanup for relational databases |
CN104303176A (zh) | 2012-05-15 | 2015-01-21 | 惠普发展公司,有限责任合伙企业 | 查询处理 |
US9031932B2 (en) | 2012-09-06 | 2015-05-12 | Oracle International Corporation | Automatic denormalization for analytic query processing in large-scale clusters |
US9935907B2 (en) | 2012-11-20 | 2018-04-03 | Dropbox, Inc. | System and method for serving a message client |
US10496640B2 (en) | 2012-12-19 | 2019-12-03 | Salesforce.Com, Inc. | Querying a not only structured query language (NoSQL) database using structured query language (SQL) commands |
US8893101B2 (en) * | 2012-12-21 | 2014-11-18 | International Business Machines Corporation | Hybrid dependency analysis using dynamic and static analyses |
US9083766B2 (en) | 2012-12-27 | 2015-07-14 | Dropbox, Inc. | Maintaining consistent globally unique identifiers via an asynchronous interface |
US9053167B1 (en) | 2013-06-19 | 2015-06-09 | Amazon Technologies, Inc. | Storage device selection for database partition replicas |
US9632878B1 (en) * | 2013-09-20 | 2017-04-25 | Amazon Technologies, Inc. | Verification of database table partitions during backup |
GB2519157A (en) | 2013-10-14 | 2015-04-15 | Ibm | Robust data replication |
CN103544303B (zh) | 2013-10-31 | 2017-06-20 | 北京锐安科技有限公司 | 一种数据同步方法、***和设备 |
US9934255B2 (en) | 2013-11-11 | 2018-04-03 | International Business Machines Corporation | End of retention processing using a database manager scheduler |
US20150244795A1 (en) * | 2014-02-21 | 2015-08-27 | Solidfire, Inc. | Data syncing in a distributed system |
US9870401B2 (en) | 2014-04-17 | 2018-01-16 | Wisoncsin Alumni Research Foundation | Database system with highly denormalized database structure |
US9870416B2 (en) | 2014-04-24 | 2018-01-16 | International Business Machines Corporation | Method for rebalancing data partitions |
US10025710B2 (en) * | 2014-04-30 | 2018-07-17 | Walmart Apollo, Llc | Pattern for integrating primary and secondary data stores in a sharded data domain |
US10698924B2 (en) | 2014-05-22 | 2020-06-30 | International Business Machines Corporation | Generating partitioned hierarchical groups based on data sets for business intelligence data models |
US9619544B2 (en) * | 2014-06-26 | 2017-04-11 | Amazon Technologies, Inc. | Distributed state management using dynamic replication graphs |
US9529882B2 (en) * | 2014-06-26 | 2016-12-27 | Amazon Technologies, Inc. | Coordinated suspension of replication groups |
US10373247B2 (en) * | 2014-09-19 | 2019-08-06 | Amazon Technologies, Inc. | Lifecycle transitions in log-coordinated data stores |
CN104462258B (zh) | 2014-11-21 | 2017-07-25 | 浙江中测新图地理信息技术有限公司 | 一种多版本的非结构化模型的组织管理方法 |
US10242082B2 (en) * | 2014-12-12 | 2019-03-26 | Microsoft Technology Licensing, Llc | Context-driven multi-user communication |
US10698767B1 (en) * | 2014-12-22 | 2020-06-30 | Amazon Technologies, Inc. | Decentralized management of multi-service workflows |
AU2015203450B1 (en) | 2015-02-09 | 2016-07-21 | Octopus Ventures, Inc. | System for processing customer records |
US9892150B2 (en) | 2015-08-03 | 2018-02-13 | Sap Se | Unified data management for database systems |
US9448893B1 (en) * | 2015-08-26 | 2016-09-20 | Zetta, Inc. | Asynchronous replication correctness validation |
US10235406B2 (en) | 2015-12-15 | 2019-03-19 | Microsoft Technology Licensing, Llc | Reminder processing of structured data records among partitioned data storage spaces |
US10599676B2 (en) | 2015-12-15 | 2020-03-24 | Microsoft Technology Licensing, Llc | Replication control among redundant data centers |
US10248709B2 (en) | 2015-12-15 | 2019-04-02 | Microsoft Technology Licensing, Llc | Promoted properties in relational structured data |
US11226985B2 (en) | 2015-12-15 | 2022-01-18 | Microsoft Technology Licensing, Llc | Replication of structured data records among partitioned data storage spaces |
-
2016
- 2016-06-14 US US15/181,751 patent/US11226985B2/en active Active
- 2016-12-07 EP EP16823086.0A patent/EP3391249B1/en active Active
- 2016-12-07 WO PCT/US2016/065223 patent/WO2017105935A1/en unknown
- 2016-12-07 CN CN201680073896.3A patent/CN108431807B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1498815A2 (en) * | 2003-06-30 | 2005-01-19 | Gravic, Inc. | Methods for ensuring referential integrity in multi-threaded replication engines |
US8037024B1 (en) * | 2008-06-04 | 2011-10-11 | Google Inc. | Data propagation in a multi-shard database system |
US9116862B1 (en) * | 2012-01-17 | 2015-08-25 | Amazon Technologies, Inc. | System and method for data replication using a single master failover protocol |
Non-Patent Citations (1)
Title |
---|
Verifying Data Migration Correctness: The Checksum Principle;Bin Wei等;《RTI International》;20140331;第1-8页 * |
Also Published As
Publication number | Publication date |
---|---|
EP3391249A1 (en) | 2018-10-24 |
WO2017105935A1 (en) | 2017-06-22 |
EP3391249B1 (en) | 2021-04-14 |
US20170169091A1 (en) | 2017-06-15 |
CN108431807A (zh) | 2018-08-21 |
US11226985B2 (en) | 2022-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108369601B (zh) | 关系结构化数据中的提升属性 | |
CN108431807B (zh) | 分区数据存储空间中结构化数据记录的复制 | |
US10599676B2 (en) | Replication control among redundant data centers | |
US10235406B2 (en) | Reminder processing of structured data records among partitioned data storage spaces | |
US20240211461A1 (en) | Customer-requested partitioning of journal-based storage systems | |
US9081841B2 (en) | Asynchronous distributed garbage collection for replicated storage clusters | |
US10621156B1 (en) | Application schemas for journal-based databases | |
US20180004777A1 (en) | Data distribution across nodes of a distributed database base system | |
US10866865B1 (en) | Storage system journal entry redaction | |
US11860892B2 (en) | Offline index builds for database tables | |
US11704335B2 (en) | Data synchronization in a data analysis system | |
US10235407B1 (en) | Distributed storage system journal forking | |
CN116134420A (zh) | 使用多个区块链以将事务应用于持久存储***中的持久数据对象集 | |
CN109710698A (zh) | 一种数据汇聚方法、装置、电子设备及介质 | |
JP5832592B1 (ja) | データ管理装置 | |
US12007977B1 (en) | Selectively applying a replication log for logical database replica creation | |
Selvaraj | Advanced Database Techniques and Optimization | |
CN116414848A (zh) | 数据库主备复制一致性验证方法、装置和计算机设备 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |