用于桥接数据库架构的控制器
背景技术:1.数据库系统被用于提供对地理空间复制数据的可靠访问。现代数据库架构可以在可缩放性、吞吐量和/或容量方面提供优势。然而,计算机技术可能使用不同的数据库架构,重新配置现有的计算机技术以避免使用不同的数据库架构可能是昂贵的。
技术实现要素:2.一种桥接第一数据库和第二数据库的方法包括维护表示第一数据库中的虚拟节点的状态的状态机,其中虚拟节点的状态符合用于第一数据库的本地节点的第一本地协议。第一数据库的第一本地协议不同于第二数据库的不同的第二本地协议。方法还包括根据第一本地协议从本地节点中的一个接收虚拟节点的传入消息,并且基于传入消息,访问第二数据库。方法还包括基于根据第一本地协议的传入消息更新虚拟节点的状态,并且基于更新后的虚拟节点的状态,根据第一本地协议向本地节点中的一个或多个发送传出消息。
3.提供本发明内容以简化形式介绍在下面的具体实施方式中进一步所描述的概念的选择。本发明内容无意确定要求保护的主题的关键特征或者基本特征,也不旨在用于限制要求保护的主题的范围。此外,要求保护的主题不限于解决在本公开的任何部分中指出的任何或者所有缺点的实现方式。
附图说明
4.图1示出了桥接具有不同数据库架构的两个不同数据库的示例控制器的示意图。
5.图2示出了桥接具有不同数据库架构的两个不同数据库的示例方法。
6.图3示出了与多个工作节点通信以访问数据库的示例控制器的示意图。
7.图4示出了示例性的计算系统。
具体实施方式
8.计算机应用程序针对广泛的目的存储数据(例如,非限制性示例包括用户数据、科学数据、应用程序特定状态数据等)。通常期望将已存储的数据冗余地存储在多个计算机设备处。这样的冗余可以减轻数据丢失的风险、提高可用性并且提供其他好处。当数据被存储在多个计算机装置处时,多个不同的计算机设备可能能够协作以提供对数据的高效访问。例如,多个计算机设备可以同时地操作的以访问数据,使得数据可以被由多个其他计算机访问。此外,多个不同的计算机设备可以提供用于将数据服务到不同的其他位置(例如,由于地理空间分布和/或由于不同的基础设施可用性)的不同的延迟,并且可以访问可以由多个计算机设备中的特定一个计算设备所提供的数据以实现所期望的延迟。
9.数据库技术经常地被使用以组织和访问冗余地存储在多个不同计算机设备处的数据。数据可以在具有特定数据库架构的数据库中被组织。数据库架构定义了可以被存储的数据类型,以及数据库可以被组织的方式。此外,用于在多个计算机上存储数据的数据库
架构通常被限制以根据预定义的数据库协议操作。数据库协议包括关于多个计算机如何存储/访问数据以及与其他计算机通信的需要的特定规则。用于实现数据库的计算机在本文中可以被称为“节点”。在一些示例中,数据库的节点可以被布置在一个或多个数据中心中,例如,对应于容纳物理基础设施的地理空间位置中。备选地或者附加地,节点可以被布置在任何合适的网络结构中。通常,数据库的节点可以与数据库的任何其他节点通信,而不管它们是被组织在相同的数据中心或者不同的数据中心,等。
10.数据库架构的非限制性示例包括cosmosdb
tm
、mongodb
tm
、cassandra
tm
、hbase
tm
、vertica
tm
和sql parallel data warehouse
tm
。这些数据库架构中的每一个数据库架构都有一个关联的、特定于架构的数据库协议。来自具有不同协议的数据库的节点通常不可以互操作,例如,mongodb
tm
节点没有被配置为参与cassandra
tm
数据库,因为mongodb
tm
节点被配置为使用与cassandra
tm
协议不兼容的mongodb
tm
协议。
11.在许多示例中,数据库架构被配置用于基础设施即服务(iaas)或者预置安装。在预置安装中,数据库被安装在专用的物理硬件上(例如,由使用数据库的计算机应用程序的供应商拥有和运营的硬件)。在iaas安装中,数据库被安装在可配置的硬件基础设施资源(例如,云计算系统)上。在任何一种情况下,数据库都被配置为具有特定的、预安装能力的特定硬件基础设施。作为非限制性示例,mongodb
tm
和cassandra
tm
是针对iaas或者本地安装所配置的数据库架构。尽管这些数据库架构可以被安装在任何合适的基础设施上,但最终的数据库配置是特定于该基础设施的。缩放数据库(例如,改变吞吐量和/或存储容量,或者添加任何其他新计算能力,诸如访问新硬件设备、新网络硬件、许可的软件产品,等)需要新的预置安装和/或iaas基础设施的安装和/或供应,然后在新硬件上安装和配置新数据库节点。通常无法直接地缩放一个或多个单个节点的功能。因此,数据库的缩放能力可能是昂贵的。
12.平台即服务(paas)数据库架构可以提供可缩放性方面的优势,特别是关于吞吐量和/或容量。例如,cosmosdb
tm
数据库架构是允许用户实例化由平台管理的可缩放的数据库的paas计算机技术。可缩放数据库可以被配置为具有任何合适的所期望的吞吐量和/或容量。例如,如果在操作期间吞吐量和/或容量需求增加,则吞吐量和/或容量可以提高以匹配需求,而不需要任何明确的基础设施的安装和/或供应。平台管理底层计算基础设施来为数据库提供所配置的吞吐量和存储容量的数量。paas数据库可以提供其他好处,诸如,地理空间分布。例如,cosmosdb
tm
允许在多个不同的地理位置复制,并且针对不同位置的复制可以被配置为自动地使得数据在地理空间上分布并且存储在不同位置处,而无需在不同位置的基础设施的安装/修改。
13.在许多情况下可以通过使用paas数据库来改进现有的计算机基础设施。然而,现有的计算机系统可能采用已经存在并且已经就位的不同的数据库架构(即不同于paas)。可能期望通过使用paas数据库(诸如cosmosdb
tm
)来代替现有数据库架构或者作为现有数据库架构的补充来提高现有技术的吞吐量和/或存储容量。例如,平台即服务数据库可以被作为现有数据库架构的补充使用来提供附加的冗余和/或提高存储容量和/或吞吐量。作为另一示例,平台即服务数据库可以被用于替换现有数据库,例如,通过减少来自管理预置安装和/或iaas基础设施的负担来简化数据库基础设施的管理。
14.重新配置现有的计算机技术以开始使用paas架构来代替现有的数据库架构或者
作为现有数据库架构的补充可能是昂贵的。特别地,现有计算机系统可能依赖于存储在现有数据库架构中的数据,并且因此可能难以或者不可能避免使用现有数据库架构。例如,现有数据库中可能有大量数据是为了计算机系统的持续运行所必需的,需要将这些数据迁移到paas数据库中。数据库迁移可能代价高昂(例如,需要人类程序员的专业知识,导致针对计算机技术停机等)。
15.本公开包括用于桥接具有不同架构的两个不同数据库的系统和方法。所公开的技术使得第一数据库(例如,iaas和/或预置数据库)能够利用由第二数据库所提供的附加的能力进行扩展。在一些示例中,第二数据库是paas数据库。备选地地或者附加地,第二数据库可以包括iaas数据库和/或预置数据库。在一些示例中,控制器维护表示第一数据库中的“虚拟节点”的状态机。虚拟节点不对应于特定的计算机基础设施,但是控制器根据第一数据库协议(第一数据库本地的协议)使得消息发送到第一数据库的本地节点/从第一数据库的本地节点接收,并且代表虚拟节点。协议消息中明显的虚拟节点的聚合行为都与第一数据库的协议一致,就好像通过配置新基础设施将本地节点添加到第一数据库一样。因此,无需对第一数据库的架构进行任何更改,并且无需实际地配置新的iaas或者预置基础设施,即可以扩展第一数据库。虚拟节点的存储和计算能力经由访问第二数据库来实现。根据由第一数据库架构定义的本地协议,虚拟节点参与与第一数据库的本地节点的通信。因此,虚拟节点可以通知其他节点关于它们的功能,满足访问/处理数据的请求等。
16.因此,第二数据库的能力(例如,吞吐量和存储容量)可以被用来扩展第一数据库的能力。第一数据库由此可以具有增加的存储容量、额外的冗余和/或更快/更高的吞吐量,而不需要对第一数据库的底层基础结构进行任何改变。此外,第二数据库可以根据第一数据库的协议开始自动地参与数据的复制,这样第二数据库最终会保存第一数据库的所有数据,例如,以便于最终迁移到第二数据库。在第二数据库具有可缩放的计算能力(例如,可缩放的吞吐量和/或存储容量,诸如cosmosdb
tm
等平台即服务数据库)的情况下,则这些特殊的计算能力可以被缩放以改变第一数据库的整体能力的,同样不需要对第一数据库的底层基础设施进行任何更改。因此,本公开的技术允许开发具有更好数据冗余的计算机技术(例如,导致数据丢失的可能性更低和/或数据访问时间更快),其可以更容易地被缩放以使用适当量的计算资源(例如,吞吐量和存储容量可以被缩放以匹配需求)。在一些示例中,除了提供不同的和/或可缩放的性能特征(例如,关于存储容量和/或吞吐量)之外,第二数据库可以具有不由第一数据库提供的数据处理能力。因此,这样的数据处理能力可以被用于以第一数据库不单独支持的方式处理在第一数据库和第二数据库中所复制的数据,从而提高包括第一数据库和第二数据库的整个数据复制系统的整体数据处理能力。
17.作为示例,第二数据库可以支持用于搜索、选择和/或聚合数据的操作,其中这样的操作不是由第一数据库提供的。例如,第二数据库可以支持用于至少基于相关联的地理位置的搜索/选择/聚合数据的地理空间操作(例如,处理与特定地理位置有关的数据和/或处理存储在特定地理位置的数据)。例如,cosmosdb
tm
提供用于搜索geojson
tm
格式的地理空间数据的功能,包括基于点之间的距离、线之间的交点、多边形区域内的包含等的搜索。与第一数据库相比,第二数据库的这种示例性额外能力是一个非限制性示例,并且第二数据库可以具有第一数据库未提供的任何合适的当前或者最先进的能力。因此,第二数据库的任何这样的能力可以被用于增强包括第一数据库和第二数据库的整个数据复制系统的数
据处理能力。
18.本公开包括用于桥接具有不同数据库协议的数据库的技术。本文关于数据库协议的示例性特征描述了这些技术。然而,本公开不限于本文示出的示例,并且本文所描述的系统和方法可以被用于桥接具有不同协议的任何两个数据库。特别地,方法包括根据第一数据库协议维护针对虚拟节点的状态机,并且根据第一数据库协议使得消息发送到本地节点/从本地节点接收消息。第二数据库可以以任何合适的方式被访问,例如,根据协议存储/访问由消息指示的数据。因此,只要可以以某种方式访问第二数据库(例如,即使第二数据库具有不兼容或着未知的协议),本方法可以应用于第一数据库协议可以被决定的任何时候(例如,第一数据库协议来自规范或者经由逆向工程获得)。虚拟节点仅根据第一协议与第一数据库交互,但具有由整个第二数据库所提供的底层能力。在一些示例中,与第一数据库的本地节点相比,虚拟节点可以充当具有相对大的吞吐量和/或存储容量的大容量节点。
19.数据库协议的特征的非限制性示例包括节点可以相互发送的不同种类的消息的规范。例如,数据库协议可以指定一个节点可以发送以通知其他节点它们在数据库中的存在、计算能力和数据库的当前信息(例如,由该节点所看到的最新数据库模式)的“心跳”消息。因此,数据库协议可以进一步指定节点应该如何接收和可选地响应心跳消息,例如,通过更新数据库中其他节点的内部表示。
20.作为另一示例,数据库协议可以指定一种或多种不同类型的“读取”和“写入”消息以用于访问存储在数据库中的数据。数据库架构和/或协议可以被设计为允许以任何合适的方式(例如,根据任何合适的实现)访问数据。作为非限制性示例,如果第一节点接收到请求“读取”数据库的消息,则第一节点可以直接访问相关数据并且因此可以返回相关数据。或者,相关数据可以被存储在某个其他第二节点,并且第一节点可以根据协议发送一个或多个其他消息,以确保其他第二节点最终提供相关数据。
21.在一些示例中,每个节点都可以被配置为复制数据库中的所有数据,以便在新数据被写入数据库后,每个节点最终都可以直接访问新数据(例如,通过在与节点关联的存储设备中存储新数据)。在这些示例中,数据库协议可以确保数据最终在每个节点处被复制,同时允许数据仅在某些位置临时存在(例如,在立刻写入新数据之后,根据协议在它传播到数据库中的其他节点之前)。在其他示例中,节点可以被配置为仅复制数据库中的一些数据(例如,每个节点可以负责数据的特定子集,或者任何其他合适的数据到节点的分配)。作为非限制性示例,cassandra
tm
数据库具有被称为“gossip”的本地协议,其中节点定期和/或不定期地向一个或多个其他节点发送心跳和/或数据消息。
22.图1示出了用于桥接两个数据库的示例性控制器100:第一数据库110和第二数据库120。作为示例,第一数据库可以是现有计算机技术所使用的具有超过第一数据库的当前能力的存储和/或吞吐量需求的数据库。,并且可能认为扩展第一数据库的基础设施或者替换第一数据库的成本会很高。例如,第一数据库可以是cassandra
tm
数据库。在一些示例中,数据库120是paas数据库,例如诸如cosmosdb
tm
之类的可扩展数据库。尽管控制器100被描述为与cassandra
tm
和cosmosdb
tm
相关,但是控制器100可以被用于桥接任何合适的数据库。
23.在示例中,第一数据库110被实现为四个本地节点的组合:预置节点114a和114b,以及iaas节点112a和112b。在一些示例中,这些节点可以被组织成数据中心,例如,基于节点的地理空间位置。在任何情况下,节点彼此被通信地耦合并且被配置为根据第一数据库
110的协议进行通信。尽管在图1中仅示出了两个iaas节点(112a和112b)和两个预置节点(114a和114b),数据库110可以包括任何合适数量的iaas和/或预置节点。尽管节点被示为被连接到每个其他节点,但是可以使用任何合适的网络拓扑(例如,每个节点可以被连接到其他节点的任何合适的子集)。应当理解,大型数据库系统可以包括数百、数千或者更多节点。
24.控制器100被配置为维护表示虚拟节点130的状态的状态机102。根据第一数据库的本地数据库协议,控制器100还被配置为通过使得关于虚拟节点130的消息的传递和接收来在数据库110中实例化虚拟节点130。如图1所示,虚拟节点130表现得好像通信地耦合到数据库110的所有本地节点,虽然该示例连接性是非限制性的并且虚拟节点130可以被连接到数据库110中的任何合适的节点的子集。
25.控制器100编排这样的消息的传递/接收,使得其呈现出好像虚拟节点130是遵循本地数据库协议的本地节点。特别地,根据本地协议通过数据库110的本地节点(iaas节点112a和112b,以及预置节点114a和114b)接收的消息呈现与存在展示虚拟节点130的行为的新本地节点一致。在一些示例中,虚拟节点130的“虚拟”状态可能无法区分,使得基于协议下的所有可观察的质量,虚拟节点130呈现为本地节点。然而,虚拟节点130不需要对应于任何特定的物理基础设施。相反,控制器100确保发送和接收消息就好像这样的本地节点存在一样,确保其行为与本地协议和状态机102一致。虚拟节点130的行为可以由任何合适的硬件和/或软件的组合提供,例如,由控制器110提供。在一些示例中,虚拟节点130的行为可以由控制器110与一个或多个工作节点合作提供,如下面将关于图3所描述的。
26.控制器100还被配置为根据需要访问数据库120以响应由虚拟节点130接收的消息(例如,访问数据库以检索数据、复制数据等)并且相应地更新状态机102。作为非限制性示例,如果来自指定给虚拟节点130的iaas节点112a的消息指示新数据值应当由虚拟节点130存储在数据库中,则控制器100可以被配置为代表虚拟节点130接收消息,访问数据库120以存储新数据值,更新状态机102以指示新数据值已被存储,并且将响应消息发送回iaas节点112a以指示数据已存储。因此,控制器100通过访问数据库120来提供虚拟节点130的行为。
27.具有虚拟节点130的数据库110的扩展不需要任何改变或者重新配置,除了数据库110中新节点的标准注册。数据库110中新节点的注册通常由数据库110的本地协议定义,基于新节点向现有节点发送通告其可用性的消息。因此,登记虚拟节点130可以以任何合适的方式完成,例如,由控制器100向数据库110的本地节点发送新消息。因此,使用数据库110的计算机技术可以自动地具有数据库120的附加能力(例如,吞吐量、存储容量和/或可扩展性),而不会因重新配置而产生任何开销。
28.图2示出了用于桥接第一数据库和第二数据库的方法200。例如,方法200可以由控制器100实现。方法200可以用于桥接具有不同的、相互不兼容的协议的两个数据库,例如,其中第一数据库的第一本地协议不同于第二数据库的外来协议(例如,不同的第二本地协议)。在一些示例中,第二数据库是paas数据库和/或地理空间分布式数据库。此处描述的技术可以被应用于桥接第一数据库和第二数据库的任何合适的选择。例如,第一数据库可以具有任何第一本地协议,因此第二数据库可以具有任何不同的第二本地协议。当第一本地协议和不同的第二本地协议没有被配置为用于互操作性时,不同的第二本地协议在本文中可以被称为外来协议。因此,本文描述的技术可用于桥接第一数据库和第二数据库,即使当
第二数据库具有未配置为与第一数据库的本地协议互操作的外来协议时。
29.在步骤202处,方法200包括维护表示第一数据库中的虚拟节点的状态的状态机。就可以通过第一数据库的本地节点确定而言,虚拟节点的行为与第一数据库中的本地节点完全相同。换言之,虚拟节点在概念上是第一数据库中的节点,尽管它不对应于第一数据库的特定基础设施安装。由状态机所代表的虚拟节点的状态符合第一数据库的本地节点的本地协议:虚拟节点的每个可能状态都是针对第一数据库的本地节点的有效状态,此外,根据针对第一数据库的本地协议,状态之间的所有可能的转换都是有效的状态转换。虚拟节点根据本地协议发送/接收消息,例如根据用于cassandra
tm
数据库的“gossip”协议,或者更一般地根据用于任何数据库的任何合适的协议。
30.在步骤204处,方法200包括根据第一数据库的第一本地协议为虚拟节点接收来自本地节点中的一个本地节点的传入消息。在一些示例中,传入消息是来自第一数据库的本地节点的心跳消息。心跳消息可以指示本地节点的任何相关特征,以便数据库中的其他节点可以维护本地节点的内部表示。因此,更新虚拟节点的状态包括更新由虚拟节点保持的与心跳消息相关联的本地节点的状态的内部表示。
31.在步骤206处,方法200包括,至少基于传入消息,访问第二数据库。访问第二数据库可以以任何合适的方式完成,例如,访问第二数据库可以包括使用第二数据库的外部协议向第二数据库的外部节点发送/从第二数据库的外部节点接收消息。备选地或者附加地,访问第二数据库可以包括调用第二数据库的应用程序编程接口(api)。如下文将进一步描述的,在一些示例中,访问第二数据库被实现为使用被配置用于对第二数据库进行低级别访问的一个或多个工作节点计算机以访问第二数据库。在一些示例中:访问第二数据库包括调用第二数据库的应用编程接口。
32.在一些示例中,根据本地协议,传入消息是数据有效载荷消息。例如,数据有效载荷消息可以包括由虚拟节点指定用于复制的更新数据。因此,至少基于传入消息访问第二数据库包括更新第二数据库以包括更新数据。
33.在步骤208处,方法200包括根据本地协议至少基于传入消息更新虚拟节点的状态。例如,更新虚拟节点的状态可以包括至少基于传入消息来指示接收到传入消息和/或指示访问了数据库。通常,更新虚拟节点的状态可以包括对状态机的任何合适的改变以确保与第一数据库的本地协议下针对本地节点的有效状态和/或状态转换的一致性。
34.在步骤210处,方法200包括至少基于虚拟节点的更新状态,根据本地协议向本地节点中的一个或多个发送传出消息。在一些示例中,传入消息是指示待通过虚拟节点所提供的所请求的数据的数据请求消息。因此,至少基于传入消息访问第二数据库包括从第二数据库获取所请求的数据,并且传出消息包括所请求的数据。
35.在一些示例中,传出消息是根据本地协议通告虚拟节点的状态的心跳消息。例如,心跳消息可以指示虚拟节点最近在数据库中被注册,指示由虚拟节点所评估的数据库的状态(例如,数据库模式),和/或指示虚拟节点的计算能力。在一些示例中,第二数据库被配置为改变第二数据库的计算能力。例如,这样的可变计算能力可以包括可缩放的数据库存储容量和/或可缩放的数据处理吞吐量。因此,状态机可以被配置为根据本地协议向本地节点中的一个或多个本地节点通告虚拟节点的相应计算能力。在一些示例中,可以通过向本地节点中的一个或多个本地节点发送指示计算能力的心跳消息来通告虚拟节点的计算能力。
36.除了发送和/或接收心跳消息和数据有效载荷消息之外,虚拟节点行为可以包括协议的任何其他方面(例如,发送/接收用于改变模式的其他类型的消息、遵守所定义的数据复制策略等)。
37.图3示出了图1的控制器100桥接数据库110和120。在一些示例中,如照图3所示,控制器100被配置为通过使多个工作节点140通信地耦合到数据库120来访问数据库120。工作节点被配置为以任何合适的方式访问数据库120。例如,工作节点140可以被配置为经由数据库120的api、通过使用数据库120的外部协议向/从数据库120的外部节点发送/接收消息、和/或经由低级别的、通过数据库120为工作节点140呈现的专用接口访问数据库120。。尽管图3示出了三个工作节点(节点140a、节点140b和节点140c),但可以采用任何合适数量的工作节点。在一些示例中,可以改变工作节点的数量以匹配当前吞吐量需求(例如,基于在到虚拟节点130的消息中所请求的数据量)。
38.因此,响应于虚拟节点130的传入消息访问第二数据库120可以包括将状态机102通信地耦合到一个或多个工作节点140,以使得一个或多个工作节点140通信地耦合到第二数据库120。在通信地耦合之后,工作节点140被配置为访问由虚拟节点的传入消息指示的第二数据库中的数据。
39.在一些示例中,访问第二数据库120还包括使得工作节点140至少基于第二数据库120中的数据执行附加的数据处理计算。因此,从虚拟节点130到第一数据库110的本地节点的传出消息包括由工作节点140返回的附加的数据处理计算的结果。
40.换言之,控制器100维护表示虚拟节点130的预期行为的状态机102,并且将工作委托给工作节点140。工作节点140可以访问数据库120并且执行附加的计算,并且最终至少基于这样的访问和计算,控制器100根据协议使得消息代表虚拟节点130发送到数据库110的本地节点。在一些示例中,工作节点140被配置为经由控制器100与数据库110通信,并且控制器100相应地被配置为作为工作节点140和数据库110之间的中间体。注意,可缩放数据库120可以允许大量的连接,因此多个工作节点140可以实现大吞吐量。
41.在一些示例中,多个工作节点140可以被配置为协作以执行计算(例如,数据聚合、汇总、“映射-归约”计算等)。因此,工作节点140可以以任何合适的方式(例如,图3中所示的示例或者任何其他网络拓扑)相互通信地耦合。例如,如果向虚拟节点130发送请求大量数据(例如,被复制并且在数据库120中可用的数据)的汇总的消息,则三个工作节点140a、140b和140c可以被配置为打开到数据库120的三个连接,检索大量数据,在一个工作节点140a处聚合汇总结果,然后将结果提供到控制器100以代表虚拟节点130发送到数据库110的本地节点中的一个或多个本地节点。
42.本文所描述的方法和过程可以被绑定到一个或多个计算设备的计算系统。特别地,这样的方法和进程可以被实现为可执行的计算机应用程序、网络可访问的计算服务、应用程序编程接口(api)、库、或者以上和/或其他计算资源的组合。
43.图4示意性地示出了被配置为提供任何本文所描述的所有计算功能的计算系统400的简化表示。作为示例,控制器100可以是计算系统400。计算系统400可以采用一个或多个个人计算机、可网络访问的服务器计算机、平板计算机、家庭娱乐计算机、游戏设备、移动计算设备、移动通信的形式设备(例如,智能手机)、虚拟/增强/混合现实计算设备、可穿戴计算设备、物联网(iot)设备、嵌入式计算设备和/或其他计算设备。
44.计算系统400包括逻辑子系统402和存储子系统404,以及通信子系统410。计算系统400可以可选地包括输入/输出子系统412和/或未在图4中示出的其他子系统。
45.逻辑子系统402包括被配置为执行指令的一个或多个物理设备。例如,逻辑子系统可以被配置为执行作为一个或多个应用程序、服务或者其他逻辑构造的一部分的指令。逻辑子系统可以包括被配置为执行软件指令的一个或多个硬件处理器。附加地或者替代地,逻辑子系统可以包括被配置为执行硬件或者固件指令的一个或多个硬件或者固件设备。逻辑子系统的处理器可以是单核或者多核,并且其上执行的指令可以被配置为顺序、并行和/或分布式处理。逻辑子系统的各个组件可选地可以分布在两个或者更多个单独的设备中,这些设备可以远程定位和/或被配置为用于协调处理。逻辑子系统的各方面可以由在云计算配置中所配置的远程访问的联网计算设备所虚拟化和执行。
46.存储子系统404包括被配置为临时和/或永久保存计算机信息的一个或多个物理设备,诸如可以由逻辑子系统执行的数据和指令。当存储子系统包括两个或者更多个设备时,这些设备可以被并置和/或远程定位。存储子系统404可以包括易失性、非易失性、动态、静态、读/写、只读、随机访问、顺序访问、位置可寻址、文件可寻址和/或内容可寻址设备。存储子系统404可以包括可移除和/或内置设备。当逻辑子系统执行指令时,存储子系统404的状态可以被转换——例如,以保持不同的数据。
47.逻辑子系统402和存储子系统404的方面可以被一起集成到一个或多个硬件逻辑组件中。例如,这样的硬件逻辑组件可以包括程序和应用专用集成电路(pasic/asics)、程序和应用专用标准产品(pssp/assps)、片上系统(soc)和复杂的可编程逻辑器件(cplds)。
48.逻辑子系统和存储子系统可以协作以实例化一个或多个逻辑机器。如本文所用,术语“机器”被用于共同地指代硬件、固件、软件、指令和/或协作以提供计算机功能的任何其他组件的组合。换句话说,“机器”从来不是抽象的概念,而是一直具有有形的形式。机器可以由单个计算设备实例化,或者机器可以包括由两个或者更多个不同计算设备实例化的两个或者更多个子组件。在一些实现中,机器包括与远程组件(例如,由服务器计算机网络提供的云计算服务)合作的本地组件(例如,由计算机处理器执行的软件应用程序)。赋予特定机器其功能的软件和/或其他指令可以可选地被保存为一个或多个合适的存储设备上的一个或多个未执行的模块。例如,控制器100可以被实例化为逻辑机器,例如,通过执行指令来实现方法200。
49.在一个示例中,一种桥接第一数据库和第二数据库的方法包括:维护表示第一数据库中的虚拟节点状态的状态机,其中虚拟节点的状态符合针对第一数据库的本地节点的第一本地协议,第一数据库的第一本地协议不同于第二数据库的不同的第二本地协议;根据第一本地协议从本地节点中的一个本地节点接收针对虚拟节点的传入消息;至少基于输入的消息,访问第二数据库;至少基于根据第一本地协议的传入消息更新虚拟节点的状态;并且至少基于更新后的虚拟节点的状态,根据第一本地协议向本地节点中的一个或多个本地节点发送传出消息。在该示例或者任何其他示例中,第二数据库被配置为改变第二数据库的计算能力,并且状态机被配置为根据第一本地协议向本地节点中的一个或多个本地节点通告虚拟节点的相应的计算能力。在该示例或者任何其他示例中,第二数据库的计算能力包括可缩放的数据库存储容量。在该示例或者任何其他示例中,第二数据库的计算能力包括可缩放的数据处理吞吐量。在该示例或者任何其他示例中,第二数据库是地理空间分
布式数据库。在该示例或者任何其他示例中,传入消息是来自第一数据库的本地节点的心跳消息,并且其中,更新虚拟节点的状态包括更新虚拟节点的与心跳消息相关联的本地节点的状态的内部表示。在该示例或者任何其他示例中,传出消息是根据第一本地协议通告虚拟节点的状态的心跳消息。在该示例或者任何其他示例中,传入消息是数据载荷消息,根据第一本地协议,数据载荷消息包括指定用于由虚拟节点复制的更新数据,并且其中,至少基于传入消息访问第二数据库包括更新第二数据库以包括更新数据。在该示例或者任何其他示例中,传入消息是指示待由虚拟节点提供的所请求的数据的数据请求消息,其中,至少基于传入消息访问第二数据库包括从第二数据库获取所请求的数据,并且其中,传出消息包括所请求的数据。在该示例或者任何其他示例中,访问第二数据库包括将状态机通信地耦合到一个或多个工作节点,以使得一个或多个工作节点以:通信地耦合到第二数据库;以及访问第二数据库中的针对虚拟节点的由传入消息指示的数据。在该示例或者任何其他示例中,访问第二数据库还包括使一个或多个工作节点至少基于第二数据库中的数据以执行附加的数据处理计算,其中传出消息包括由一个或多个工作节点所返回的附加的数据处理计算的结果。在该示例或者任何其他示例中,访问第二数据库包括根据针对第二数据库的外部节点的不同的第二本地协议来发送和接收消息。在该示例或者任何其他示例中,访问第二数据库包括调用第二数据库的应用程序编程接口。
50.在一个示例中,用于桥接第一数据库和第二数据库的计算机系统包括:处理器;计算机存储设备,保持指令,所述指令由处理器可执行以:维护表示第一数据库中的虚拟节点状态的状态机,其中虚拟节点的状态符合针对第一数据库的本地节点的第一本地协议,第一数据库的第一本地协议不同于第二数据库的不同的第二本地协议;根据第一本地协议从本地节点中的一个本地节点接收针对虚拟节点的传入消息;至少基于输入消息,访问第二数据库;至少基于根据第一本地协议的传入消息更新虚拟节点的状态;并且至少基于经更新的虚拟节点的状态,根据第一本地协议向本地节点中的一个或多个本地节点发送传出消息。在该示例或者任何其他示例中,第二数据库被配置为改变第二数据库的计算能力,并且状态机被配置为根据第一个本地协议向本地节点中的一个或多个本地节点通告虚拟节点的相应的计算能力。在该示例或者任何其他示例中,第二数据库的计算能力包括可缩放的数据库存储容量。在该示例或者任何其他示例中,第二数据库的计算能力包括可缩放的数据处理吞吐量。在该示例或者任何其他示例中,访问第二数据库包括将状态机通信地耦合到一个或多个工作节点,以使得一个或多个工作节点以:通信地耦合到第二数据库;以及访问第二数据库中针对虚拟节点的传入消息指示的数据。在该示例或者任何其他示例中,访问第二数据库还包括使得一个或多个工作节点至少基于第二数据库中的数据以执行附加的数据处理计算,其中,传出消息包括由一个或多个工作节点所返回的附加的数据处理计算的结果。
51.在一个示例中,一种桥接第一数据库和第二数据库的方法包括:维护表示第一数据库中虚拟节点状态的状态机,其中,虚拟节点的状态符合针对第一数据库的本地节点的第一本地协议,第一数据库的第一本地协议不同于第二数据库的不同的第二本地协议;根据第一本地协议从本地节点中的一个本地节点接收针对虚拟节点的传入消息;将状态机通信地耦合到一个或多个工作节点;至少基于传入消息,以使一个或多个工作节点通信地耦合到第二数据库并且访问第二数据库中的由针对虚拟节点的传入消息所指示的数据;根据
第一本地协议至少基于传入消息更新虚拟节点的状态;并且至少基于更新后的虚拟节点的状态,根据第一本地协议向本地节点中的一个或多个本地节点发送传出消息。
52.本公开是通过示例并且参考相关附图来呈现的。在一个或多个图中可能基本相同的组件、工艺步骤和其他元素被同等地标识并且用最少的重复所描述。然而,将注意到,同等地标识的元素也可能在某种程度上不同。将进一步注意,一些图可能是示意性的并且未按比例绘制。图中所示的各种绘图比例、纵横比和组件数量可能被故意地扭曲,以使某些特征或者关系更容易看到。
53.应当理解,这里所描述的配置和/或方法本质上是示例性的,并且这些具体实施例或者示例不应被视为限制性的,因为许多变化是可能的。本文所描述的特定程序或者方法可以代表任何数量的处理策略中的一个或多个处理策略。因此,所示出和/或描述的各种动作可以按照所示出和/或描述的顺序、以其他顺序、并行或者省略来执行。同样,上述过程的顺序可以被改变。