用于数据库横向扩展的方法及装置与流程

文档序号:18755294发布日期:2019-09-24 22:11阅读:284来源:国知局
用于数据库横向扩展的方法及装置与流程

本申请总体上涉及数据库,更具体地涉及用于数据库横向扩展的方法及装置。



背景技术:

数据库是支持将数据存储为称作表格的逻辑结构的集合的软件系统,每个表格包含具有指定结构的记录。随着单个数据库内应用数目的增长,对于该数据库提供合理的响应时间而言该数据库上的负载可能变得过高。解决这一问题的一种办法是在该数据库内增加更多用于附加的数据的存储。然而,这一解决方案可能增加数据递送时间,从而提供较不期望的最终用户体验。此外,在一些实例中,因为纵向扩展(例如,增加附加的盘空间、ram、cpu等)具有实践上以及物理上的限制(例如,单个数据库服务器可能仅支持特定量的ram),故而数据库的横向扩展可能是必要的。



技术实现要素:

提供本发明内容来以简化形式介绍一些概念,这些概念将在以下详细描述部分中进一步描述。本发明内容并不旨在标识出本发明的主题的关键特征或必要特征,也不旨在用于帮助确定本发明的主题的范围。

提供了诸实施例以启用数据库横向扩展。达到容量的数据库可以被实时地横向扩展以提供附加的数据库并降低单个数据库上的负载。为此,公开了提供数据库内容的向外扩展的方法和系统。第一数据库可能处于或接近容量且服务器组件可被触发以发起数据移动。服务器组件可随后执行用于创建或扩展第二数据库以及将一部分第一数据库数据转移至第二数据库的过程。

一实施例包括用于提供数据库内容的向外扩展的方法。该方法可以主要地包括:创建第二数据库的实例化,第二数据库实例化部分地基于第一数据库达到容量;配置用于转移至第二数据库的第一数据库的一个或多个分区;配置第二数据库以接收一个或多个第一数据库分区;以及将一个或多个第一数据库分区转移至第二数据库。

还公开了包括当被处理器执行时、提供数据库内容的向外扩展的可执行指令的计算机可读介质。计算机可读介质包括可被处理器执行以进行以下操作的指令:创建第二数据库的实例化,第二数据库实例化部分地基于第一数据库达到容量;配置用于转移至第二数据库的第一数据库的一个或多个分区;配置第二数据库以供接收一个或多个第一数据库分区;以及将一个或多个第一数据库分区转移至第二数据库。

还公开了包括当被处理器执行时、提供数据库内容的向外扩展的可执行指令的计算机可读介质。计算机可读介质包括可被处理器执行以进行以下操作的指令:从第一数据库接收警报消息,该警报消息指示第一数据库达到容量;创建第一数据库的第一数据子范围,第一数据子范围具有只读模式;将第二数据库的范围至少扩展至第一数据子范围的范围;在第二数据库上创建第二数据子范围,第二数据子范围具有变化模式,第二数据子范围创建在邻近第一数据子范围的数据库位置处;将与键值相关联的数据转移至所述第二数据库,该键值表示所述第一数据子范围的开始点和结束点;将第二数据子范围的模式改变成只读;将第一数据子范围的模式改变成已删除;移除第二数据库上的第二数据子范围,这将所包含数据的数据模式改变成读写;清除源数据库上的第一数据子范围,这使得源数据库数据范围收缩成排除第一数据子范围;以及删除与键值相关联的第一数据库中的数据。

附图说明

现在参考附图,在全部附图中,相同的附图标记表示相应的部分:

图1示出用于根据本公开一实施例的提供数据库横向扩展的系统的高级架构;

图2是示出根据本公开一实施例的用于提供数据库横向扩展的例程的流程图;

图3a-3f进一步示出根据本公开一实施例的用于提供数据库横向扩展的例程;

图4是示出根据本公开一实施例的用于提供数据库横向扩展的方法的流程图;

图5是示出根据本公开一实施例的用于提供数据库横向扩展的方法的流程图;

图6是示出根据本公开一实施例的用于提供数据库横向扩展的方法的流程图;以及

图7是可在其中实施本发明的各实施例的计算系统的简化框图。

具体实施方式

在下面的详细描述中,将参考构成本发明的一部分的附图,在附图中,通过例图,示出了特定实施例或示例。可以将这些方面组合起来,也可以使用其他方面,并且在不偏离本发明的精神或范围的情况下,可以进行结构更改。因此,以下详细描述并不旨在限制,并且本发明的范围由所附权利要求及其等效方案来限定。

提供各实施例以启用针对数据库达到容量的实时数据库横向扩展。公开了提供数据库横向扩展的方法和系统。在本文所述的实施例中,数据库横向扩展系统和方法在对具有快速增长的数据大小和用户基数的系统中的数据的快速访问场景中提供了改进的响应时间。诸方法和诸系统提供了其中任何数据库可被动态划分的可伸缩的横向扩展,这提供了对正在改变中的用户行为的增加的反应时间。

数据库横向扩展系统提供针对任何数据库的必要机制以在各个数据库之间执行数据转移操作。本文中的各实施例还提供了针对运行时操作的一组规则,其使得运行时操作能够与各个数据库之间的数据转移操作并行地运行。本文中的各实施例进一步提供了数据状态的数据转移历史,其可以在数据转移期间从已执行的备份来恢复数据库的情况下被用来选择数据恢复应用。

现在参考附图,其中类似标号代表类似元素,现在将描述各种解说性实施例。图1示出用于根据一实施例的提供数据库横向扩展的系统100的高级架构。图1中显示的系统仅仅出于说明目的。计算机系统100及其组件包括用于与其他计算设备、通信设备和/或其他系统通信的功能,且并不旨在限于本文中所描述的实施例和示例。

如图1所示,计算机系统100包括但不限于与服务器通信的第一数据库102和第二数据库104。第一数据库102和第二数据库104在下文中也可被分别称作源数据库和目标数据库。一般而言,数据库102、104可以被配置成存储相关数据的集合,诸如商业金融交易。在示例性实施例中,第一数据库102和第二数据库104可以被配置成能够用服务技术操作来提供对数据库102、104中所存储的数据的访问以供在工作流、文档等中使用。数据库102、104包括关联结构。关联结构对数据库的用户是透明的,但是对高效操作和数据库管理系统的控制是必要的。关联结构的示例是索引,其一般但非必须地按b树或散列索引的形式。

第一数据库102和第二数据库104可以优选是关系数据库,其中的数据被组织在多个具有二维行和列形式的表格中。例如,关系数据库可以尤其包括关系数据库管理系统(rdbms),其可以是支持数据库特征的控制系统,数据库特征包括但不限于,将数据存储在存储介质上,从存储介质检索数据,以及更新存储介质上的数据。一般而言,存储在关系数据库中的数据通过用户定义的查询来访问,该用户定义的查询由诸如sql的查询语言构成。一般地,对于任何给定的sql查询,存在需要在数据上执行的数个过程操作,以便执行sql查询的对象。例如,存在需要执行的数个联接以及表格扫描从而实现期望的目标。尽管上述实施例描述了一包括利用sql数据库服务技术的数据库的系统,应当理解本文中所述的各实施例不应被解释为受限于sql数据库服务技术,并且还可以利用来自其他开发者和/或制造商的其他数据库服务技术。

图1中的服务器106可以包括简化的sql服务器rdmbs架构。如下面更全面描述道,服务器106可以包括数据库横向扩展模块108。根据各实施例,服务器106可以包括各种程序模块和应用程序,其包括但不限于服务器应用110、应用编程接口(api)112、工具接口114,以及类似物。在一些实施例中,数据库横向扩展过程可以由用户116来发起,但是在优选实施例中,横向扩展过程可以,例如在数据库达到容量时自动地发起。

数据库横向扩展模块108可以提供在同类数据源之间转移数据的能力。具体而言,数据库横向扩展模块108可以提供数据转移机制以供在相同模式的两个数据库之间转移数据。这一机制可以被用来在数据库服务器的相同实现的多个实例之间移动数据库的各横向扩展分区。为此,系统100可以在数据库横向扩展模块108(其可以是服务器106的数据库管理中间层组件)和数据库102、104之间提供通信。数据库横向扩展模块108和数据库102、104之间的通信可以包括由服务器106负责的管理针对给定横向扩展的数据范围和横向扩展分区的请求。数据库横向扩展模块108可以进一步被配置成提供用于在服务器上执行有关数据范围和分区的数据查询及更新操作的一个或多个通信序列。数据库横向扩展模块108依靠每个数据库(或者数据库实例)被配置成维护数据范围的概念并提供必要的已存储过程来创建并修改数据库的事实。数据库横向扩展模块108还可以使用任何已知的传输协议来发送读取或写入数据到服务器上的横向扩展分区的请求,以调用已存储的过程并返回返回代码和结果集合。

在一个特定示例中,开发者可注意到在其数据库之一中的数据库部署已经显著减慢。当查看sql服务器负载时,开发者可以注意到存储某类文档(例如,许可)的数据库处于或接近容量。开发者可以让另一个服务器运行sql,并且可能想将存储在第一数据库中的一部分数据卸载到另一数据库。系统100可以使得开发者能够发起到第二数据库的数据转移。在转移第一数据库中的至少一部分时,响应时间可以因该数据库上降低的载荷而降低。如果对数据库横向扩展的需求再次发生,系统100可以替换地提供动态数据转移部署来确保数据可以从一个数据库转移到另一个数据库而无需用户干预。

应当理解上述程序模块和应用程序可以被用来提供数据库横向扩展。然而,应当理解,还可以利用来自其他制造商的数据库和应用程序以实现本文中所讨论的技术特征的各个方面。

现在转至图2,现在将描述根据各实施例示出的用于在运行时处提供数据库横向扩展的例程200的流程图。在一些实施例中,例程200可经由以上关于图1所述的系统组件和/或应用来实现。在图3a-7中也提供了本文中所述系统和方法的进一步的示例。图3a-3f进一步示出根据本公开一实施例的用于提供数据库横向扩展的例程300。还可以考虑使用与本文中所述的那些不同的组件的附加的或替换地实施例。

例程200开始于操作202,在此接收有关第一数据库容量的消息。例如,数据库横向扩展模块108可以从第一数据库102接收指示第一数据库102达到容量的消息。接收数据库容量消息可以包括接收将预订量的数据移动到另一数据库的请求。例如,用户可以请求移动第一数据库102的一个或多个横向扩展分区。横向扩展分区可以是有关逻辑实体的数据的集合。移动请求可以包括请求移动所具有的权重等于所有第一数据库横向扩展分区总权重的某百分比(例如,50%)的一个或多个第一数据库横向扩展分区。替换地,横向扩展可被自动触发,并且要移动的数据量可以由系统100预定。在接收数据库容量消息和移动请求时,数据库横向扩展模块108可以随后发起数据转移过程。

从操作202,例程200继续至操作204,在此创建第一数据库子范围。数据子范围可以是数据范围内的连续横向扩展分区键(key)的子集。数据范围可以是与开始点和结束点相关联的一系列二进制键值。如以下将更加详细描述的,数据库横向扩展模块108可以配置成在具有邻近数据范围的源数据库和目标数据库之间提供数据转移操作。具体而言,为了达成数据转移,第一数据范围结束点可以与第二数据范围开始点相同。如同3a中所示,可以在第一数据库102的结束点处创建第一数据子范围302。初始范围结束点可以被指定,并且可以表示原始数据范围的结束点。数据子范围或者开始于同它属于的数据范围相同的横向扩展分区键或者结束于同它属于的数据范围相同的横向扩展分区键。可以指定横向扩展分区键大小。横向扩展分区键可以是唯一地标识逻辑实体的二进制值。上部数据子范围可以是结束于同它所属的数据范围相同的横向扩展分区键的数据子范围。在数据范围内仅可以存在一个上部数据子范围。上部数据子范围可以包括上部数据子范围结束点。下部数据子范围可以是开始于同它所属的数据范围相同的横向扩展分区键的数据子范围。在数据范围内仅可以存在一个下部数据子范围。下部数据子范围可以包括下部数据子范围结束点。

参考发起子范围创建,可以调用过程以在第一数据库内创建具有指定开始点和结束点的第一数据子范围。例如,数据横向扩展模块108可以发送在第一数据库创建数据子范围的请求。数据转移可以成块发生,在下文中也被称作数据子范围。数据移动块可以是在移动操作期间移动的数据单元,该移动操作包括在横向扩展过程开始处指定的横向扩展分区的集合。块大小可受限于数据移动块中横向扩展分区的权重属性的总和。要移动的权重可受限于所有具有落入数据移动块中任何数据移动块内的横向扩展分区键的横向扩展分区的权重属性的总和,数据移动块由要返回的数据移动块限制点来表示。同数据范围一样,数据子范围也可以是与开始点和结束点相关联的一系列二进制键值。具体而言,键值可以与第一数据子范围开始点和结束点相关联以辅助转移数据块。键值可以确定服务器106响应横向扩展分区所作询问的方式。数据库可以包括在其数据范围开始处或者结束处的单个数据子范围。数据子范围可以被指派规定驻留在该数据子范围内数据的运行时行为的模式。数据子范围模式可以是该数据子范围的运行时状态,其确定针对具有落入该数据子范围内的横向扩展分区键的所有横向扩展分区的数据访问状况。例如,在创建第一数据库子范围时,数据子范围可以被指定为只读。第一数据子范围还可以被指派随机的标识符。

数据库横向扩展模块108可以被配置成调用第一数据库102来确定可用于横向扩展的第一数据库分区的总计数和总权重。在优选的实施例中,总计数可以是可用于横向扩展的分区的总计数,并且权重可以是存储在第一数据库上的所有横向扩展分区的权重属性的总和。第一数据库可以向数据库横向扩展模块108提供包括所有第一数据库分区的总计数和总权重的响应消息。在接收响应消息时,数据库横向扩展模块108可以随后计算百分比或分区的其他子部分。例如,继续上面的示例,数据库横向扩展模块108可以计算总权重的50%并且获得该权重以移动。数据库横向扩展模块108可以随后创建针对计算的权重的数据移动计划,并从第一数据库接收一个或多个横向扩展分区键来执行数据移动。在从第一数据库接收到横向扩展分区键时,数据库横向扩展模块108可以调用过程来创建以横向扩展分区键和第一数据库当前数据范围的开始点或结束点来划界的第一数据子范围。第一数据库可以创建具有指定值的第一数据子范围。数据库横向扩展模块108可随后向这一调用传递为只读的第一数据子范围模式。

从操作204,例程200继续至操作206,在此可以扩展第二数据库的范围。为此,数据库横向扩展模块108可以进一步被配置成扩展例如数据库104上的数据范围。图3b示出一包括第二子范围304的扩展的第二数据库范围。在优选的实施例中,第二(目标)数据库的范围至少可以被扩展到第一数据库102上的第一数据子范围的范围。例如,可调用过程以将第二数据库104的数据范围到达从第一数据库102收到的指定横向扩展分区键。数据库横向扩展模块108可随后相应地扩展数据范围。

从操作206,例程200继续至操作208,在此在第二数据库上创建第二数据子范围。例如,数据横向扩展模块108可以创建覆盖第二数据库的扩展的第二数据子范围。在邻近第一数据子范围的数据库位置处创建第二数据子范围。第二数据库数据范围可以在开始点处或结束点处被扩展。如果数据范围通过修改第二数据库开始点而扩展,第二数据库数据子范围将使得经扩展的第二数据库数据范围的开始点作为其开始点并使得原始第二数据库数据范围开始点作为其结束点。如果数据范围通过修改第二数据库结束点而扩展,第二数据库数据子范围将使得经扩展的第二数据库数据范围的结束点作为其结束点并使得第二数据库数据范围的原始结束点作为其开始点。图3b示出创建在第二数据库104的开始点处的第二数据子范围304。在这样的实例中,数据库横向扩展模块108可以请求第二数据子范围被创建在邻近第一数据库结束点的第二数据库的点处。扩展第二数据库范围还可以发起新的横向扩展条目的创建,该横向扩展条目包括任何扩展属性和任何其他指定的日志详情。横向扩展日志条目可以是所记录的有关横向扩展操作在操作完成之后的信息。

为了创建第二数据子范围,数据库横向扩展模块108可以从第一数据库接收包括有关第一数据子范围信息的消息。例如,数据库横向扩展模块108可以接收一包含第一数据子范围中横向扩展分区的数据的结果集合的列表。数据库横向扩展模块108可以调用过程来创建第二数据子范围,该第二数据子范围以横向扩展分区键和第二数据库当前数据范围的开始点或结束点来划界。例如,可以调用标记数据子范围过程来创建新的数据子范围或修改第二数据库104上现有的一个数据子范围。如果下部数据子范围是目标且已经存在一个,可以更新该下部数据子范围的第二数据子范围模式和结束点。否则,可以创建具有指定数据子范围模式和结束点的下部数据子范围。如果上部数据子范围是目标且已经存在一个,可以更新该上部数据子范围的数据子范围模式和开始点;否则,可以创建具有指定数据子范围模式和开始点的上部数据子范围。第二数据库可以随后创建具有指定值的第二数据子范围。第二数据子范围可以被指定为处于改变模式,如图3b中关于第二数据子范围304所示。为此,数据库横向扩展模块108还可向这一调用传递为改变的第二数据子范围模式。创建第二数据库范围还可以发起横向扩展日志条目的创建,该横向扩展日志条目具有任何指定的横向扩展动作属性和任何指定的日志详情。

从操作208,例程200继续至操作210,在此与第一数据库子范围相关联的数据被转移至第二数据库。在一些实施例中,为了达成数据移动,查询路由逻辑可以根据在查询中所包括的键值和所有数据库的最后知晓的数据范围来在运行时将查询分派到指定的目标数据库。使用已建立的数据移动计划,数据库横向扩展模块108可以分别获得按照降序或升序的数据移动块的开始点或结束点的集合。第一数据移动块的结束点可以是第一数据范围的结束点,而除了第一数据移动块以外的每个数据移动块的结束点可以与先前的数据移动块的开始点相同。如果返回结束点,第一数据移动块的开始点可以是第一数据范围的开始点,而除了第一数据移动块以外的每个数据移动块的开始点可以与先前的数据移动块的结束点相同。在一些实施例中,可以按照降序返回开始点并按照升序返回结束点。

为了达成数据移动,数据库横向扩展模块108可以将转移的数据填充进具有来自结果集合的数据的已返回的分区数据插入表类型,该返回的分区数据插入表类型可以处于与分区数据插入表类型相同的索引处,并且在第二数据库上调用具有经填充的分区数据插入表格类型的每个对应的分区数据插入存储的过程。第二数据库可随后接收指令以将在分区数据插入存储的过程中所传入的所有数据插入到第二数据子范围中。

从操作210,例程200继续至操作212,在此第二数据子范围的模式变成只读。运行时数据转移查询可以发起在数据移动结束之前可不释放的、对数据库中数据范围对象的共享锁定,由此确保用数据转移操作来序列化运行时查询。运行时查询还可以验证所查询的数据键是否在第一数据范围中并且还可以验证数据键是否在具有与该查询相兼容的数据子范围内。例如,数据库横向扩展模块108可以调用第二数据库上的标记数据子范围过程,以将扩展数据子范围的数据子范围模式设置成只读。第二数据子范围可随后将指定的数据子范围上的数据子范围模式设置成只读,如图3c-3d中关于第二数据子范围304所示。

从操作212,例程200继续至操作214,在此将第一数据子范围的模式变成已删除。例如,一旦来自第一数据子范围的数据已经转移至第二数据子范围,数据库横向扩展模块108可以在第一数据库上调用标记数据子范围过程以将第一数据子范围的数据子范围模式设置成已删除。第一数据库可随后将指定的数据子范围上的第一数据子范围模式设置成已删除,如图3d中关于第一数据子范围302所示。

从操作214,例程200继续至操作216,在此第二数据库上的第二数据子范围被移除。图3e示出第二数据子范围已经被移除。移除第二数据子范围可随后将所包含的数据的数据模式改变成读写。例如,数据库横向扩展模块108可以调用第二数据库104上的标记数据子范围过程已将已扩展的数据子范围的数据子范围模式设置成读/写。第二数据库可以随后将指定的数据子范围上的数据子范围模式设置成读/写。

从操作216,例程200继续至操作218,在此将与键值相关联的数据删除,该键值表示第一数据子范围开始及结束点的开始点和结束点。该调用可随后发起对针对第一数据库创建的第一数据子范围的删除。第一数据库可以删除第一数据子范围连同与第一数据子范围内的横向扩展分区相关联的所有数据。例如,可以调用已完全删除的所存储的子范围过程以移除第一数据子范围以及具有第一数据子范围内横向扩展分区键的所有横向扩展分区两者,其中针对该第一数据子范围的第一数据子范围模式被删除。所存储的过程还可以创建横向扩展日志条目,该横向扩展日志条目包括任何指定的横向扩展动作属性和/或指定的日志详情。可以指定一值来指示要被移除的第一数据子范围是下部数据子范围还是上部数据子范围。要被移除的第一数据子范围的开始或结束点可以被指定为初始删除的子范围点。如果第一数据子范围是下部数据子范围,该值可以表示结束点;否则,该值表示开始点。该值还可以表示要被创建的横向扩展条目的子范围点属性。初始数据范围开始点可以被指定,并且可以表示第一(原始)数据范围的开始点。如果要被移除的第一数据子范围是下部数据子范围,该值还可以表示要被创建的横向扩展日志条目的范围极限点属性。

从操作218,例程200继续至操作220,在此第一数据库上的第一数据子范围被清除。数据横向扩展模块108可以调用过程以清除第一数据库上所排除的数据子范围。第一数据子范围的清除可以致使第一数据库数据范围收缩成排除第一数据子范围。

从操作220,例程200可以随后终止于操作222。替换地,可以重复上述例程直到期望百分比的数据被转移至目标数据库实例。在一些实施例中,数据库横向扩展模块108可以通知用户数据移动操作完成。图3f示出数据移动的终止,其中数据库102或104都不包括数据移动发起的数据子范围。

例程200可以服从一个或多个运行时规则。具体而言,在运行时,一个或多个运行时规则可以被应用到本文中所讨论的任何或全部操作。例如,参考图1的组件,数据库横向扩展模块108可以提供用于执行数据转移的一个或多个运行时规则。第一运行时规则可以是查询可不写针对只读模式中的数据子范围内键的数据。第二运行时规则可以是查询可不读或不写针对改变模式或删除模式中的数据子范围内键的数据。

在任何或全部数据转移结束时还可以提供数据转移历史。例如,在数据转移期间执行的操作可以被记录到具有与数据子范围有关的所有信息的每个数据库中。在灾难性故障的情况下任何数据库备份将包含将具有涉及特定数据库实例操作的所有历史的必要信息。这一知识可被用来标识是否需要来自数据库的更早快照的另一备份或创建针对数据库实例的阵列的数据范围状态。

图4示出用于根据本公开的一实施例的提供数据库横向扩展的方法400的流程图。在一些实施例中,方法400可经由以上关于图1-3f所述的系统组件和/或应用来实现。方法400可以一般地包括402接收来自第一数据库的警报消息,该警报消息指示第一数据库达到容量。该方法400还可以包括404创建第二数据库的实例化。方法400可以包括406配置用于转移至第二数据库的第一数据库的一个或多个分区,以及408配置第二数据库以供接收一个或多个第一数据库分区。例如,可以在源数据库处建立第一数据子范围,并且目标数据库的范围可以至少被扩展至第一数据子范围的范围。该扩展可被称为第二数据子范围。为了防止在转移所转移的数据期间改变数据,第二数据子范围可以被指定成改变,并且第二数据子范围可以被创建在邻近第一数据子范围的数据库位置处。方法400可随后包括410将一个或多个第一数据库分区转移至第二数据库。例如,可以将与键值相关联的数据转移至所述第二数据库并且第二数据子范围的模式可以被改变成只读,该键值表示第一数据子范围开始及结束点。在转移数据时,第一数据子范围模式可以被改变成已删除并且第二数据库上的第二数据子范围可以被移除。移除第二数据子范围可导致将所包含的数据的数据模式改变成读写。第一数据库上的第一数据子范围可以被清除。该清除可以致使第一数据库数据范围改变成收缩到排除第一数据子范围。可以在第一数据库删除与表示第一数据子范围开始和结束点的键值相关联的数据。

图5是根据本公开的一实施例用于提供数据库横向扩展的方法500的流程图。在一些实施例中,方法500可经由以上关于图1-3f所述的系统组件和/或应用来实现。方法500可以一般地包括502接收指示要在第一数据库创建第一数据子范围的消息。第一数据子范围可以具有只读模式。方法500还可以包括504将与表示第一数据子范围开始和结束点的键值相关联的数据转移至第二数据库。该方法500可以进一步包括506将第一数据子范围的模式改变成已删除。该方法500还可以包括508清除第一数据库上的第一数据子范围。在清除第一数据子范围时,方法500可以包括510收缩第一数据库数据范围以排除第一数据子范围。

图6是根据本公开的一实施例用于提供数据库横向扩展的方法600的流程图。在一些实施例中,方法600可经由以上关于图1-3f所述的系统组件和/或应用来实现。方法600可以一般地包括602在第一数据库接收数据要被添加至该数据库的消息。要被添加的数据可以是第二数据库中所存储的数据的第一子范围。方法600可以进一步包括604将第一数据库的范围至少扩展至数据子范围的范围。该方法600还可以包括606创建第一数据库上的第二数据子范围。第二数据子范围可以被指定为改变,并且第二数据子范围可以被创建在邻近第二数据库的第一数据子范围的第一数据库位置处。该方法600可以进一步包括608将第二数据子范围的模式改变成只读。该方法600可以包括610接收第一数据子范围内包括的数据。在接收第一数据子范围数据时,方法600可以包括612移除第一数据库上的第二数据子范围。该方法600还可以包括614将第一数据库中包含的数据的数据模式改变成读写。

上述系统和方法的上述各实施例可被实现为计算机进程、计算系统或制品,诸如计算机程序产品或计算机可读介质。计算机程序产品可以是计算机系统可读并对用于执行计算机过程的指令的计算机程序编码的计算机存储介质或设备。

已经通过特定的客户端设备、应用、模块和可结合在个人计算机上的操作系统上运行的应用程序来执行的交互描述了图1-6中的示例系统和方法。各实施例不仅限于根据这些示例配置的系统。此外,可以使用此处描述的原理以相似的方式来实现特定的协议和/或接口。

本文描述的实施例和功能可经许多计算系统来操作,包括有线和无线计算系统、移动计算系统(如移动电话、图形输入板或平板型计算机、膝上型计算机等)。此外,本文所述的实施例和功能可在分布式系统上操作,其中应用功能、存储器、数据存储和检索、以及各种处理功能可在诸如因特网或内联网之类的分布式计算网络上彼此远程地操作。各种类型的用户界面和信息可经板载计算设备显示器或经与一个或多个计算设备相关联的远程显示单元被显示。例如,各种类型的用户界面和信息可在墙壁表面上被显示和交互,各种类型的用户界面和信息被投射在墙壁表面上。与可用于实施各实施例的许多计算系统的交互包括:键击输入、触摸屏输入、语音或其他音频输入、姿势输入(其中相关联的计算设备配备有用于捕捉和解释用于控制计算设备的功能的用户姿势的检测(如相机)功能)等。图7及其相关联的描述提供了其中可实施各实施例的各种操作环境的讨论。然而,关于图7所示出和讨论的设备和系统是用于示例和说明的目的,而非对可被用于实施本文所述的各实施例的大量计算设备配置的限制。

图7是示出可用来实施各实施例的计算设备700的示例物理组件的框图。在一基本配置中,计算设备700可以包括至少一个处理单元702和系统存储器704。取决于计算设备的配置和类型,系统存储器704可以包括,但不限于,易失性存储器(例如,随机存取存储器(ram))、非易失性存储器(例如,只读存储器(rom))、闪存或任何组合。系统存储器704可包括操作系统705和一个或多个编程模块706。操作系统705例如可适合于控制计算设备700的操作。此外,各实施例可结合图形库、其他操作系统、或任何其他应用程序来实践,并且不限于任何特定应用或系统。该基本配置在图7中由708内的组件示出。

计算设备700可具有附加特征或功能。例如,计算设备700还可包括附加数据存储设备(可移动和/或不可移动),诸如例如磁盘、光盘或磁带。这些附加存储在图7中由可移动存储709和不可移动存储710示出。

如上所述,可以在系统存储器704中存储包括操作系统705在内的多个程序模块和数据文件。在处理单元702上执行的同时,编程模块706可执行包括例如以上参考图1-6所描述的过程中的一个或多个的过程。上述过程是示例,并且处理单元702可执行其他过程。根据各实施例可以使用的其他编程模块可以包括浏览器、数据库应用等。

一般而言,根据各实施例,程序模块可包括可执行特定任务或可实现特定抽象数据类型的例程、程序、组件、数据结构和其他类型的结构。此外,各实施例可用其他计算机系统配置来实践,包括手持式设备、多处理器系统、基于微处理器的系统或可编程消费电子产品、小型机、大型计算机等。实施例也可以在分布式计算环境中实施,其中,任务由通过通信网络链接起来的远程处理设备来执行(例如,通过通信连接716)。在分布式计算环境中,程序模块可位于本地和远程存储器存储设备中。

此外,各实施例可在包括分立电子元件的电路、包含逻辑门的封装或集成电子芯片、利用微处理器的电路、或在包含电子元件或微处理器的单个芯片上实践。例如,可以通过片上系统(soc)来实践各实施例,其中,可以将图7中示出的每个或许多组件集成到单个集成电路上。这样的soc设备可包括一个或多个处理单元、图形单元、通信单元、系统虚拟化单元以及各种应用功能性,所有这些都作为单个集成电路被集成到(或“烧录到”)芯片基板上。当通过soc操作时,在此所述的功能可以通过与计算设备/系统700的其他组件一起集成在单个集成电路(芯片)上的应用专用逻辑来操作。各实施例还可使用能够执行诸如例如,and(与)、or(或)和not(非)的逻辑运算的其他技术来实践,包括但不限于,机械、光学、流体和量子技术。另外,各实施例可在通用计算机或任何其他电路或系统中实践。

例如,各实施例可被实现为计算机过程(方法)、计算系统、或者如计算机程序产品或有形计算机可读介质等制品。计算机程序产品可以是计算机系统可读并且有形地编码用于执行计算机进程的指令的计算机程序的计算机可读存储介质。此处所使用的术语计算机可读存储介质可包括计算机存储介质。计算机存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。系统存储器704、可移动存储709和不可移动存储710都是计算机存储介质(即,存储器存储)的示例。计算机存储介质可以包括,但不限于,ram、rom、电可擦除只读存储器(eeprom)、闪存或其它存储器技术、cd-rom、数字多功能盘(dvd)或其它光存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或可用于存储信息且可以由计算设备700访问的任何其它介质。任何这样的计算机存储介质都可以是设备700的一部分。计算设备700还可以具有输入设备712,如键盘、鼠标、笔、声音输入设备、触摸输入设备等。还可包括诸如显示器、扬声器、打印机等输出设备714。上述设备是示例,并且可使用其他设备。

通信媒介可由诸如载波或其他传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块、或其他数据来体现,并且包括任何信息传递介质。术语“已调制数据信号”可以描述以对该信号中的信息进行编码的方式设定或者改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接等有线介质,以及诸如声学、射频(rf)、红外线和其他无线介质等无线介质。

各实施例在此可单独结合移动计算设备使用或与任意数量的计算机系统组合使用,如在台式环境中、膝上型或笔记本计算机系统、多处理器系统、基于微处理器或可编程消费电子产品、网络pc、小型计算机、大型计算机等。各实施例也可在分布式计算环境中实践,其中任务由分布式计算环境中通过通信网络链接的远程处理设备来执行,程序可位于本机和远程存储器存储设备中。总而言之,具有多个环境传感器、向用户提供通知的多个输出元件和多个通知事件类型的任何计算机系统可结合各实施例。

例如,以上参考根据各实施例的方法、系统和计算机程序产品的框图和/或操作说明描述了各实施例。框中所注明的各功能/动作可按不同于任何流程图所示的次序或参考附图1-6所描述的次序出现。例如,取决于所涉及的功能/动作,连续示出或描述的两个过程实际上可基本同时执行,或者这些框有时可按相反的次序执行。

尽管已描述了特定实施例,但也可能存在其他实施例。此外,虽然各实施例被描述为与存储在存储器和其他存储介质中的数据相关联,但是数据还可被存储在其他类型的计算机可读存储介质上或从其读取,诸如辅助存储设备(像硬盘、软盘、cd-rom)、或其他形式的ram或rom。此外,所公开的各过程可以按任何方式进行修改,包括通过对步骤或过程进行重新排序和/或插入或删除步骤或过程,而不会背离各实施例。

对本领域的技术人员而言,显然可对各实施例作出各个修改或变化,而不背离本发明的范围或精神。在考虑说明书和实现此处公开的各实施例之后,其他实施例对本领域的技术人员而言将是显而易见的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1