CN108351806B - 分布式基于流的数据库触发器 - Google Patents
分布式基于流的数据库触发器 Download PDFInfo
- Publication number
- CN108351806B CN108351806B CN201680064622.8A CN201680064622A CN108351806B CN 108351806 B CN108351806 B CN 108351806B CN 201680064622 A CN201680064622 A CN 201680064622A CN 108351806 B CN108351806 B CN 108351806B
- Authority
- CN
- China
- Prior art keywords
- instructions
- computing
- item
- compute
- node
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/82—Miscellaneous aspects
- H04L47/822—Collecting or measuring resource availability data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- 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
- G06F11/3433—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 for load management
-
- 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/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24564—Applying rules; Deductive queries
- G06F16/24565—Triggers; Constraints
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/06—Generation of reports
- H04L43/065—Generation of reports related to network devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3006—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
-
- 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
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/508—Monitor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computational Linguistics (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
描述由数据库维护的项目集合的变化的信息可以存储在日志文件中。所述日志文件中的所述信息可以转换成描述所述变化的记录流。响应于所述变化,基于将散列函数应用于所述记录的一部分,识别与所述散列函数所输出的值相关联的散列空间,并且从所述散列空间映射到被选择用于执行触发函数的计算节点,所述记录可以被引导到所述选择的计算节点。
Description
相关申请的交叉引用
本申请要求于2015年9月28日提交的美国专利申请号14/868,236的权益,所述申请的公开内容以引用的方式整体并入本文。
发明背景
数据库触发器通常包括响应于数据库上已发生的事件而执行的指令。数据库触发器可以例如与由数据库管理系统维护的表格相关联并且每当对表格执行插入、更新或删除命令时执行。触发器可以用于各种目的,诸如验证数据、维护关系完整性和其他功能。实施数据库触发器的常规方法可以涉及数据库管理系统存储触发器定义并且在发生适用的事件时执行触发器。
附图简述
以下详细说明可以在结合附图阅读时得到更好的理解。出于说明目的,在图中示出了本公开的各个方面的各种实例;然而,本发明并不限于所公开的特定方法和手段。
图1是描绘分布式基于流的触发器系统的图。
图2是描绘用于处理基于流的触发函数的系统的图。
图3是描绘数据库日志文件的复制和流式传输的图。
图4是描绘被配置为日志文件事件的流的发射器的计算节点的图。
图5是描绘被配置为触发函数的执行器的计算节点的图。
图6是描绘基于事件流而执行触发函数的流程图。
图7是描绘用于基于事件流而执行触发函数的过程的流程图。
图8是描绘在一组一个或多个计算节点上执行触发函数的流程图。
图9是描绘可以实践本公开的各个方面的计算环境的实施方案的方框图。
图10是描绘可以实践本公开的各个方面的计算系统的实施方案的方框图。
详细说明
本文公开了用于为托管的数据库系统提供可缩放的触发服务的系统、方法和计算机程序产品。触发器或触发函数可以是响应于数据库管理系统上发生的事件而执行的指令集。例如,数据库管理系统可以维护项目集合,一个实例是包括各种项目或行的数据库表。当将项目插入到表格中或修改现有项目时,可以调用触发函数来执行各种相关操作。例如,当插入或修改项目时,可以调用触发函数来验证项目、检测异常访问模式以及其他任务。验证项目可以包括诸如范围检查的功能。检测异常访问模式可以涉及检查更新之间的关系、计算与更新频率相关的度量等等。
在托管的数据库系统中,托管服务的客户可能希望采用触发函数。然而,托管的数据库服务可能是多租户的,这意味着给定数据库管理系统可以服务超过一个客户。因此,触发器的一些常规方法,诸如由数据库管理系统执行触发函数的那些方法,可能不适于多租户系统。代表一名租户执行触发函数可能例如会消耗另一名租户所需的资源。
托管的数据库系统也可以是可缩放的。额外的计算节点(有时被称为碎片)可以添加到所述系统来适应较大工作负荷或数据集。如本文所公开,用于执行触发函数的系统也可以变得可缩放。此外,缩放机制可以独立于用来缩放数据库的存储和工作负荷能力的节点。换言之,计算能力可以涉及在需要时执行触发函数,而与数据库管理系统的能力无关。
在实例中,分布式数据库管理系统可以维护项目集合。当数据库管理系统处理对将项目存储在集合中的请求时,这首先通过将描述请求的日志文件写入日志文件来完成。如此一来,数据库管理系统可以使所请求的变化变得持久。在系统故障的情况下,可以访问日志文件并且使用信息来处理在发生故障时未决的请求。日志文件还可以用作描述与数据集合相关的事件的信息流的数据源。日志文件中的数据可以对应于特定散列空间。作为分区的结果,可能会出现这种情况-生成日志文件的数据库可以对应于表格的基于散列的分区。
第一组计算节点可以被配置来处理触发函数。所述配置可以涉及将对函数的定义上传到第一组中的计算节点。所述定义可以例如供应为从服务的客户的客户端装置上传的脚本文件。当请求上传脚本时,客户还可以将对脚本适合于哪个项目集合的指示提供到客户端装置。例如,客户可能希望针对第一表格上传一组触发函数定义,并且针对第二表格上传第二组触发函数。在一些情况下,脚本可能与特定散列空间或分区相关联。在一些情况下,散列空间可以对应于分区。
可以为第一组计算节点中的一个或在其外部的第二计算节点可以接收从数据库日志文件读取的记录。记录中的一个例如可能对应于对将项目存储在项目集合中的请求。记录可以包括信息,诸如项目的主键和两组值。其中一组值可能是请求之前的项目的值,并且另一组可能是请求被数据库管理系统处理之后的项目的值。
第二计算节点可以监控第一组计算节点的资源利用率。基于利用率,来自第一组的计算节点可以被选择用于处理触发函数。第二计算节点可以将指令传输到指示应执行触发函数的所选择的计算节点。指令也可以包括信息,诸如项目的主键以及新值组和旧值组。第一计算节点之后可以使用供应的信息作为参数来执行触发函数。
图1是描绘分布式基于流的触发器系统150的图。基于流的触发器系统150可以根据不同的工作负荷通过将计算节点添加到计算节点群集126的一个或多个计算节点120-124来进行缩放。如本文所述,计算节点包括计算装置,所述计算装置包括处理器和存储器;并且还可以包括虚拟化部件,所述虚拟化部件允许多个计算节点共享计算装置。计算节点群集126在一些情况下可以包括计算节点群集126中的计算节点120-124的联盟。在一些情况下,计算节点群集126还可以包括硬件部件诸如专用通信基础设施和存储区域网络以有助于介于计算节点群集126中的计算节点120-124之间的通信。
数据库100可以是维护项目集合的分布式数据库。项目如本文所使用可以指代相关信息集,诸如数据库表的某一行、一组值等等。通常,项目与唯一标识值或一组值相关联,有时被称为主键。
项目集合可以在分区101a和101b上进行维护。分区可以含有对应于一定数据范围的项目的子集。例如,较大数据集合中的项目可以基于其主键值而水平地分区。这可以通过对主键值应用散列函数来完成。通过应用散列函数输出的散列值可以映射到散列空间,并且这些散列空间进而可以映射到分区101a、101b。
数据库100可以对将项目存储在项目集合中的请求进行处理。如本文所使用,存储数据可以指代对由数据库100维护的存储器和存储结构的修改。如本文所使用,存储项目可以涉及插入、更新或修改项目。
数据库100可以存储指示要在事务日志诸如所描绘的事务日志102a、102b中的一个中更新项目的请求的信息。事务日志102a、102b可以包括在存储装置上维护的一个或多个文件。分区101a、101b中的每一个可以将数据写入到事务日志102a、102b。指示请求的信息在一些情况下可以在数据库100更新其存储器和存储结构之前写入以反映由对更新项目的请求指示的变化。这种方法可以确保变化在系统故障的情况下是持久的,因为如果数据库100在对更新项目的请求被完全处理之前应停止执行,则可以从事务日志102a、102b恢复所述请求。事务日志条目还可以用于将数据复制到其他数据库实例。此外,如本文所述,事务日志102a、102b可以由基于流的触发器系统150用作数据源。事务日志102a、102b中的条目可以被提供为数据流,所述数据流指示要对数据库100中的项目集合进行的更新。流中的数据可以充当触发条件,响应于所述触发条件,可以由计算节点群集126中的计算节点120-124执行各种操作。
日志流式传输模块104可以从事务日志102a、102b读取信息并且将信息写入到输入/输出流以供处理。日志流式传输模块104在一些情况下可以直接从事务日志102a、102b获得信息。在其他情况下,日志流式传输模块104可以从事务日志102a、102b的复制副本或子集获得信息。日志流式传输模块104在一些情况下可以从事务日志102a、102b中过滤出将写入到输入/输出流的条目子集。
日志流式传输模块104可以从事务日志102a、102b中的一个或多个进行读取。在一些情况下,日志流式传输模块104可以从多个日志文件102a、102b提取数据并对所述数据进行再排序以便于产生按时间先后排序的数据流。应注意,在一些情况下,分区可以与世系相关联,在所述世系中,父分区与一个或多个子分区相关联。即使对事件的记录存储在不同日志文件中,日志流式传输模块104也可以获得分区世系的知识并利用所述知识来按事件所发生的次序重建事件流。
通常,给定事务日志102a、102b可以对应于特定散列空间。这可能是每个分区101a和101b与特定散列空间相关联的结果。因此,对日志流式传输模块104的输入可以由信息流组成,所述信息流指示对落在特定散列空间内的项目的更新。
来自流的记录可以指示要在由分区101a、101b中的一个维护的项目集合中更新项目的请求。记录可以含有数据,诸如项目的主键、项目的先前值和项目的新值。
映射模块118可以对来自日志流式传输模块104的信息流进行处理。映射模块118可以通过以下方式来处理信息流:对将数据存储在项目集合中的请求的每条记录进行检查并且确定应如何处理记录。映射模块118可以确定对将数据存储在项目集合中的请求应使用计算节点群集126的能力通过触发函数来处理。
映射模块118可以监控计算节点群集126的计算节点120的资源利用率。监控可以由跟踪输入/输出利用率、中央处理单元(“CPU”)利用率等等组成。映射模块118可以从计算节点群集126的计算节点120上运行的性能跟踪部件接收利用率信息。
映射模块118可以基于从流接收的信息而确定计算节点群集126的计算节点120-124中的特定节点应执行触发函数。所述确定可以是基于选定计算节点–例如,所描绘的计算节点120–的利用率不如计算节点群集126中的其他计算节点122-124中的至少一个高。在一些情况下,映射模块118还可以考虑由计算节点群集126中的计算节点120-124执行的先前处理。例如,映射模块118可以确保对于给定项目,对应于所述项目的所有更新是在同一个计算节点120上处理。这在一些情况下可以通过以下方式来完成:应用额外散列函数和散列空间映射,使得映射到特定散列空间的所有项目路由到同一个计算节点120。
图2是描绘用于处理基于流的触发函数的系统的图。客户端装置200可以经由网络204将指令集诸如脚本202提供到脚本部署模块206。指令集可以被称为触发函数。触发函数可以在计算节点群集222的计算节点210-214中的一个上进行调用以便于对更新事件作出响应。在接收到用于触发函数的指令集之后,脚本部署模块206可以识别一个或多个计算节点210和212,所述计算节点可以用于对来自数据库事务日志诸如图1所描绘的数据库100的事务日志102的事件进行处理。
脚本202可以从脚本部署模块206传输到计算节点群集222的计算节点210-214中的一个或多个。脚本之后可以存储在被选择用于执行触发函数的计算节点(例如,计算节点210和212)上。被选择用于执行触发函数的计算节点的数目可以是基于诸如计算节点210-214的工作负荷和能力利用率的因素。
计算节点210-214的每一个上的流处理模块216-220可以维持对每个脚本的访问并且为调用脚本定义的触发函数作准备。例如,流处理模块216可以维持介于一系列事件诸如与特定项目集合相关的事件与脚本202和/或脚本202定义的触发函数之间的关联。流处理模块216可以从其相关联的流子集224读取传入事件,并且对由脚本202定义的触发函数进行评估。流处理模块216可以引出被包括在脚本202中的指令集并且对有待执行的触发函数进行补充。流处理模块216可以对触发函数提供参数。例如,流处理模块216可以获得对应于流子集224中的更新事件的主键、旧值和新值,并且将主键、旧值和新值作为参数供应到适用于所述事件的一个(或多个)触发函数。在一些情况下,从流诸如流子集224读取的事件可以对应于多个触发函数。流处理模块216在接收到来自流子集224的事件之后可以调用与所述事件相关联的多个触发函数中的每一个。
流处理模块216-220各自可以接收对应的事件的流子集224-228。流处理模块210-214中的每一个接收的事件集在一些情况下可以受限于数据库上发生的事件的子集。子集可以基于由日志流式传输模块104对过滤准则的应用确定以及由映射模块118的操作确定,如图1所描绘,所述映射模块可以基于由映射模块118获得的散列值和散列空间映射118而将事件传输到流处理模块216-220。参考图1,介于散列空间108-116与计算节点120-124之间的连接线可以对应于将输入供应到流处理模块216-220的流。
图3是描绘数据库日志文件的复制和流式传输的图。数据库300可以将信息存储在存储装置308上的事务日志文件314中。事务日志文件314中的信息可以包括指示要在项目集合中更新各种项目的请求的信息。日志流式传输模块326作为计算节点320的部件可以对事务日志文件314中的信息进行访问并且形成对应于要在项目集合中更新项目的请求的事件流332。
在各种情况下,原始事务日志文件314可以复制到其他存储装置306和310,从而形成日志文件复制件312和316。数据库300在一些情况下可以相对于其他数据库指定为主数据库,所述其他数据库复制数据库300的内容并且进而产生其自身相应的日志文件。在其他情况下,事务日志文件314可以全部或部分地拷贝来形成日志文件复制件312和316。流式传输模块324和328作为计算节点318和322的部件可以分别读取日志文件复制件312和316,以形成对应的流330和334。日志文件复制件312和316可以用于处理复制的数据库上的触发函数,或用作触发函数的进一步缩放处理的手段。
复制过程302和304可以被配置来将事务日志文件314的内容的子集转移到日志文件复制件312和316。这可能出于各种原因而完成,包括减少有待转移的数据量并提高流式传输模块324和328的效率。
图4是描绘被配置为日志文件事件的流的发射器的计算节点的图。计算节点400可以包括日志流式传输模块404和映射模块414。日志读取器模块404从日志文件402读取数据并且将事件记录408放入计算节点400的存储器406中。日志文件402可以从与分区424相关联的存储装置读取。映射模块414可以确定流子集420-422中的哪一个应用于将更新流式传输到将要执行触发函数的计算节点。映射模块414可以基于诸如所选择的计算节点的利用率水平的因素而进行确定。所述利用率水平在一些情况下可以与节点群集中被配置来执行触发函数的其他计算节点的利用率水平进行比较。
日志流式传输模块404可以将事件记录408放入存储器406中维护的队列426中。在一些情况下,队列426可以由永久存储机构诸如图4所描绘的存储装置416支持。队列426可以作为或类似于先入先出(“FIFO”)队列操作。通常,要保留更新应用于项目集合的次序。A
流子集420-422还可以包括队列结构。在一些情况下,这些结构可以包含于计算节点400的存储器406中。在其他情况下,队列结构可以在另一个计算节点上进行维护。返回参考图1,计算节点120-124中的每一个可以含有队列结构(未示出),所述队列结构用于保持对应于特定流子集的事件。例如,再次参考图1,散列空间108和110可以对应于引导到计算节点120的流子集。队列结构在这种情况下可以在计算节点120的存储器和/或永久存储装置中进行维护。
流子集的队列(未示出)的排序也可以是FIFO。然而,应注意,流子集420-422中的每一个可以对应于由日志流式传输模块404放入存储器406中的队列426中的记录的流的非重叠子集。映射模块414操作来使得对于集合中的给定项目,与所述项目有关的所有更新被引导到同一个流子集420或422。因此,在流子集420-422中的每一个中,保留事件相对于个别项目的排序。
图5是描绘被配置为触发函数的执行器的计算节点的图。队列512可以在计算节点500的存储器中进行维护。队列512可以含有事件记录,所述事件记录对应于图4中描绘的流子集420或422中的一个。出于示例性目的,如图5所描绘,事件可以被假设成来自于流子集422。
流处理模块506可以从队列512读取记录并且调用脚本处理模块508的方法,对所述脚本处理模块供应与事件有关的信息,诸如更新项目的主键、项目的早先值和项目的新值。脚本处理模块508可以确定响应于事件应执行哪个脚本或哪几个脚本。脚本在一些情况下可以在计算节点500的存储装置502中进行维护。脚本可以响应于确定计算节点500应与脚本相关联例如分派有遇到相关事件时执行相关联的触发函数的任务而放入存储装置502中。在计算节点的群集中,可以针对特定项目集合、针对项目集合的分区等等选择特定计算节点来执行触发函数。
脚本处理模块508可以维护通常在存储装置502中的使事件的特性与脚本504相关的信息。在一些情况下,信息可以包括介于架构项目诸如表格或分区标识符与脚本之间的映射。使用这个信息,脚本处理模块508可以通过将脚本加载到存储器510中并执行所述脚本来对由流处理模块506从队列512读出的事件作出响应,使得由脚本定义的触发函数可以被执行。如图5所描绘,执行脚本514可以由脚本监控模块518监控。监控可以包括跟踪脚本执行要花多长时间、所述脚本要消耗多少存储器和中央处理单元(“CPU”)周期等等。在一些情况下,这个信息可以供应到供应模块(未示出),所述供应模块可以确保触发函数的执行作为托管服务供应的情况下的适当收费。
脚本终止模块516还可以跟踪(可能借助于脚本监控模块518)执行脚本514的执行。脚本终止模块516可以在执行脚本514超过某些参数的情况下终止脚本的执行。例如,执行脚本514可能在其执行时间或输入/输出利用率超过阈值之后终止。阈值可以是基于各种因素,诸如可能会影响由其他客户感知的性能的资源消耗水平、服务质量水平等等。
图6是描绘用于基于事件流而执行触发函数的过程的流程图。虽然被描绘为一定顺序的方框,但是本领域普通技术人员将了解,所描绘的次序不应被解释为限制本公开的范围并且所描绘的方框中提及的操作中的至少一些可以进行更改、省略、再排序、用额外的操作进行补充或并行执行。所描绘的过程的实施方案可以使用由诸如本文描述的计算系统的计算系统执行的计算机可执行指令的各种组合来实施。
方框600描绘在数据库管理系统中维护项目集合。每个项目可以包括主键和一个或多个额外值。项目可以被称为行,并且集合被称为表格。集合(或表格)通常可以与名称或其他标识符相关联。标识符在一些情况下可以用于使脚本和其所定义的触发函数与对应于表格的事件相关联。
方框602描绘响应于数据库管理系统处理对将项目存储在集合中的请求而在包括第一计算节点的多个计算节点上存储有待执行的指令集。存储项目可以指代插入新项目或更新现有项目。指令集可以在脚本文件中定义为触发函数。指令集可以例如像图5所描绘那样存储在计算节点的存储器中,所述计算节点将响应于各种事件诸如对存储项目的请求而执行触发函数。
如由方框604所描绘,数据库管理系统可以通过至少将指示对将项目存储在集合中的请求的信息写入到日志文件来处理所述请求。然后如由方框606所描绘可以从日志文件读取信息并且将所述信息传输到第二计算节点。第二计算节点可以例如包括图4中描绘的计算节点400。方框608描绘第二组一个或多个计算节点可以接收指示请求的信息。
第二计算节点在一些情况下可以响应于确定项目的主键处在一定值范围内而接收指示请求的信息。例如,第二计算节点可以与一组计算节点相关联,其中该组中的每个计算节点对数据库日志文件中记录的事件的一部分进行访问。被每个计算节点访问的所述部分可以是基于事件所对应的项目的主键。
如由方框610所描绘,第二计算节点可以监控多个计算节点的利用率。可以随时间而监控利用率或可以对所述利用率进行抽样检查。可以监控各种利用率因素,诸如输入/输出利用率、CPU利用率等等。利用率较低的计算节点可能是处理触发函数的有力候选者。当计算节点的利用率上升到高于某一阈值水平时,可以将额外的计算节点添加到所述系统。当利用率下降到低于某一其他阈值水平时,可以移除计算节点。这些技术允许缩放用于处理触发器的能力。
方框612描绘从多个计算节点选择用于执行指令集的第一计算节点。选择可以是部分基于第一计算节点的利用率水平。在一些情况下,当利用率低于阈值水平时,可以选择第一计算节点。在一些情况下,可以基于第一计算节点相对于多个计算节点中的其他计算节点的利用率而选择所述第一计算节点。
方框614描绘向第一计算节点传输指示执行第一指令集的数据。如由方框612所描绘,响应于选择用于执行指令集的第一计算节点而完成所述传输。
图7是描绘用于基于事件流而执行触发函数的过程的额外实施方案的流程图。虽然被描绘为一定顺序的方框,但是本领域普通技术人员将了解,所描绘的次序不应被解释为限制本公开的范围并且所描绘的方框中提及的操作中的至少一些可以进行更改、省略、再排序、用额外的操作进行补充或并行执行。所描绘的过程的实施方案可以使用由诸如本文描述的计算系统的计算系统执行的计算机可执行指令的各种组合来实施。
方框700描绘响应于对将项目存储在由数据库管理系统维护的项目集合中的请求而使包括第一计算节点的多个计算节点与有待执行的第一指令集相关联。
方框702描绘接收指示由数据库管理系统处理的对将项目存储在项目集合中的第一请求的信息。所述信息可以直接或间接从数据库管理系统的日志文件接收。所述信息可能例如从日志文件的复制件读取。
方框704描绘监控包括第一计算节点的利用率的多个计算节点的利用率。在各种情况下,计算节点的利用率水平可以用于选择最少利用的计算节点来处理触发函数的执行。利用率水平还可以用于确定额外的计算节点应何时添加到多个计算节点。这可以允许缩放执行触发函数的能力。
方框706描绘至少部分基于接收到指示第一请求的信息并至少部分基于第一计算节点相较于可能与第一指令集相关联的其他计算节点的相对利用率而使第一指令集在第一计算节点上执行。使第一指令集在第一计算节点上执行可以涉及传输指示执行第一指令集的命令的数据。所述数据还可以包括与更新有关的信息,诸如受影响项目的主键、项目的先前值和项目的当前值。
图8是描绘在一组一个或多个计算节点上执行触发函数的流程图。虽然被描绘为一定顺序的方框,但是本领域普通技术人员将了解,所描绘的次序不应被解释为限制本公开的范围并且所描绘的方框中提及的操作中的至少一些可以进行更改、省略、再排序、用额外的操作进行补充或并行执行。所描绘的过程的实施方案可以使用由诸如本文描述的计算系统的计算系统执行的计算机可执行指令的各种组合来实施。
方框800描绘在选自一组一个或多个计算节点的计算节点上开始执行脚本。一组计算节点可以变得可用来执行如由脚本定义的触发函数。这可以涉及将脚本存储在计算节点上,并且还可以涉及进一步的步骤,诸如将脚本编译为可执行形式。
应注意,虽然一组计算节点可以变得可用来执行触发函数,但是所述系统可以从该组选择特定计算节点来执行与特定项目相关的所有触发函数。例如,可以对表T的项目X1进行第一系列更新,并且对表T的项目X2进行第二系列更新。在每一种情况下可以应用相同的触发函数。使用散列函数和散列空间映射,所述系统可以在调用涉及到X1时使触发函数的所有调用在第一计算节点上执行,并且使涉及到X2的触发函数的所有调用在第二计算节点上执行。
被选择用于执行脚本的计算节点可以接收指示其应执行脚本的消息。例如,如图5中所描绘,流处理模块506可以接收消息并且将其转发到脚本处理模块508。脚本处理模块508之后可以开始执行脚本。
方框802描绘监控脚本的执行。在脚本执行时,可以监控所述脚本消耗的计算资源和所述脚本执行所花的时间长度。图5例如描绘了脚本监控模块518,所述脚本监控模块跟踪与脚本相关的各种性能度量,诸如所述脚本执行所花的时间、所述脚本消耗的存储器和CPU周期等等。
如由方框804所描绘,如果脚本的资源利用率超过阈值,则可以终止所述脚本。阈值可以基于各种因素而设定,诸如会干扰其他触发器尤其是正为服务的其他租户执行的那些触发器的服务质量水平的资源利用率的大小。
方框806描绘当总资源利用率超过第一阈值时,将额外的计算节点添加到该组。可以监控计算节点的资源可用性,并且如果资源利用率超过阈值量,则可以将额外的计算节点添加到该组。这可以包括将散列空间定义分成进一步的子组,并且将子组中的一个分派给新的计算节点。所述系统可以确保在执行拆分之前已经处理与特定项目有关的所有未决事件。
图9是描绘可以实践本发明的各个方面的分布式计算环境的实例的图。各种用户900a可以与在任何类型计算装置902a上操作的各种客户端应用交互,以经由通信网络904与数据中心920内的各种计算节点910a和910b上执行的过程进行通信。可替代地,客户端应用902b可以在不存在用户干预的情况下进行通信。通信网络904可以包括通信技术的任何组合,包括互联网、有线和无线局域网、光纤网、卫星通信等等。可以采用任何数目的联网协议。
与计算节点910a和910b上执行的过程的通信可以经由网关906和路由器908提供。也可以采用众多其他网络配置。虽然图9中未明确描绘,但是各种认证机制、web服务层、业务对象或其他中间层可以被提供用来协调与计算节点910a和910b上执行的过程的通信。这些中间层中的一些自身可以包括计算节点中的一个或多个上执行的过程。计算节点910a和910b以及其上执行的过程也可以经由路由器908来彼此通信。可替代地,可以采用单独的通信路径。在一些实施方案中,数据中心920可以被配置来与额外数据中心进行通信,使得计算节点和其上执行的过程可以与其他数据中心内操作的计算节点和过程进行通信。
计算节点910a被描绘为驻留在物理硬件上,所述物理硬件包括一个或多个处理器916a、一个或多个存储器918a和一个或多个存储装置914a。计算节点910a上的过程可以结合操作系统来执行,或可替代地可以作为裸机过程执行,所述裸机过程直接与物理资源诸如处理器916a、存储器918a或存储装置914a交互。
计算节点910b可以包括虚拟化部件912,所述虚拟化部件可以包括虚拟主机和虚拟机实例,所述虚拟机实例用来提供对各种物理资源诸如物理处理器、存储器和存储装置的共享访问。这些资源可以包括所描绘的处理器916b、存储器918b和存储装置914b。任何数目的虚拟化机构可以被采用来提供对物理资源的共享访问。
图9中描绘的各种计算节点可以被配置来托管web服务、数据库管理系统、业务对象、监控和诊断设施等等。计算节点可以指代各种类型的计算资源,诸如个人计算机、服务器、群集的计算装置等等。计算节点可以例如指代各种计算装置,诸如手机、智能手机、平板计算机、嵌入式装置等等。在不使用虚拟化的情况下实施时,计算节点可以包括一个或多个存储器,所述存储器被配置来存储计算机可读指令;以及一个或多个处理器,所述处理器被配置来读取和执行指令。计算节点还可以包括一个或多个存储装置、网络接口、通信总线、用户接口装置等等。计算节点也可以利用虚拟化的计算资源,诸如利用或未利用管理程序实施的虚拟机、虚拟化裸机环境等等。基于虚拟化的计算节点因此涵盖虚拟化资源和执行虚拟化资源所需的物理硬件两者。计算节点可以被配置来执行操作系统和应用程序。在一些实施方案中,计算节点还可以包括裸机应用程序。
在至少一些实施方案中,实施本文描述的一种或多种技术的一部分或全部的服务器可以包括通用计算机系统,所述通用计算机系统包括或被配置来访问一个或多个计算机可访问介质。图10描绘包括或被配置来访问一个或多个计算机可访问介质的通用计算机系统。在所示的实施方案中,计算装置1000包括经由输入/输出(“I/O”)接口1030耦接到系统存储器1020的一个或多个处理器1010a、1010b和/或1010n(其在本文中按单数形式可以被称为处理器1010或按复数形式可以被称为这些处理器1010)。计算装置1000还包括耦接到I/O接口1030的网络接口1040。
在各种实施方案中,计算装置1000可以为包括一个处理器1010的单处理器系统或包括若干处理器1010(例如,两个、四个、八个或另一合适的数目)的多处理器系统。处理器1010可以是能够执行指令的任何合适的处理器。例如,在各种实施方案中,处理器1010可以是实施各种指令集架构(“ISA”)中任一种架构的通用或嵌入式处理器,诸如x86、PowerPC、SPARC或MIPS ISA或任何其他合适的ISA。在多处理器系统中,处理器1010中的每一个通常可以但不一定实施相同的ISA。
在一些实施方案中,图形处理单元(“GPU”)1012可以参与提供图形渲染和/或物理学处理能力。GPU可以例如包括专用于图形计算的高度并行化的处理器架构。在一些实施方案中,处理器1010和GPU1012可以被实施为一个或多个相同类型的装置。在一些情况下,GPU1012可以与处理器1010合作或取代所述处理器执行计算并且执行指令。因此,如本文所使用,术语处理器可以涵盖GPU。类似地,对主处理器1010的操作进行补充或代替所述主处理器的其他高度并行化的处理器架构也被涵盖于术语处理器。
系统存储器1020可以被配置来存储可由处理器1010访问的指令和数据。在各种实施方案中,系统存储器1020可以使用任何合适的存储器技术来实施,诸如静态随机存取存储器(“SRAM”)、同步动态RAM(“SDRAM”)、非易失性/型存储器或任何其他类型的存储器。在所示的实施方案中,实施一个或多个所需功能的程序指令和数据(诸如上文描述的那些方法、技术和数据)被示出作为代码1025和数据1026存储在系统存储器1020内。
在一个实施方案中,I/O接口1030可以被配置来协调介于处理器1010、系统存储器1020与装置中的任何外围设备(包括网络接口1040或其他外围接口)之间的I/O通信量。在一些实施方案中,I/O接口1030可以执行任何必需协议、时序或其他数据转换以将来自一个部件(例如,系统存储器1020)的数据信号转换成适于由另一个部件(例如,处理器1010)使用的格式。在一些实施方案中,I/O接口1030可以包括对经由各种类型的外围总线例如像外围部件互连(“PCI”)总线标准或通用串行总线(“USB”)标准的变型附接的装置的支持。例如,在一些实施方案中,I/O接口1030的功能可以分到两个或更多个单独的部件中,诸如北桥和南桥。另外,在一些实施方案中,I/O接口1030的一些或全部功能诸如接至系统存储器1020的接口可以直接并入到处理器1010中。
网络接口1040可以被配置来允许数据在计算装置1000与附接到一个或多个网络1050的其他一个或多个装置1060例如像其他计算机系统或装置之间进行交换。在各种实施方案中,网络接口1040可以支持经由任何合适的有线或无线通用数据网络例如像以太网网络类型进行通信。另外,网络接口1040可以支持经由电信/电话网络,诸如模拟语音网络或数字光纤通信网络;经由存储区域网络,诸如光纤通道SAN(存储区域网络);或经由任何其他合适类型的网络和/或协议来进行通信。
在一些实施方案中,系统存储器1020可以是计算机可访问介质的一个实施方案,所述计算机可访问介质被配置来存储如上所述用于实施对应方法和设备的实施方案的程序指令和数据。然而,在其他实施方案中,可以在不同类型的计算机可访问介质上接收、发送或存储程序指令和/或数据。一般而言,计算机可访问介质可以包括非暂时存储介质或存储器介质,诸如磁性或光学介质,例如经由I/O接口1030耦接到计算装置1000的磁盘或DVD/CD。非暂时计算机可访问存储介质还可以包括可以作为系统存储器1020或另一类型存储器而被包括在计算装置1000的一些实施方案中的任何易失性或非易失性介质,诸如RAM(例如,SDRAM、DDR SDRAM、RDRAM、SRAM等)、ROM等。另外,计算机可访问介质可以包括传输介质或信号,诸如经由通信介质,诸如网络和/或无线链路传送的电信号、电磁信号或数字信号,诸如可以经由网络接口1040实施的那些。多个计算装置诸如图10所示的那些中的部分或全部可以用于实施各种实施方案中的所描述的功能;例如在各种不同的装置和服务器上运行的软件部件可以协作来提供所述功能。在一些实施方案中,除了或代替使用通用计算机系统来实施,所描述功能的部分可以使用存储装置、网络装置或专用计算机系统来实施。如本文所使用,术语“计算装置”指代至少所有这些类型的装置并且不限于这些类型的装置。
计算装置1000可以通过软件指令配置来包含模块(未示出)。模块是计算装置1000的部件,所述部件包括指令集(部分或全部加载到系统存储器1020中)以用于执行一组相关功能,包括对其他模块的输入和输出。系统存储器1020的代码1025和数据1026通过加载指令来更改。模块的操作受到介于处理器1010、或多处理器系统1010a-1010n中的处理器和/或GPU 1012与系统存储器1020之间经由I/O接口1030进行的交换的影响。模块可以经由系统存储器1020与计算装置1000的其他模块交互,并且经由网络接口1040和网络1050与其他装置1060交互。
计算节点(compute node)(其也可以被称为计算节点(computing node))可以在诸如平板计算机、个人计算机、智能手机、游戏控制台、商品硬件计算机、web服务、计算群集和计算设备的各样各样的计算环境上实施。这些计算装置或环境中的任一个可以为了方便而被描述为计算节点(compute nodes)或计算节点(computing nodes)。
由诸如公司或公共部门组织机构的实体建立用来将可经由互联网和/或其他网络访问的一种或多种web服务(诸如各种类型的基于云的计算或存储)提供到一组分布式客户端的网络可以被称为提供者网络。这种提供者网络可以包括托管实施和分布由提供者网络提供的基础设施和web服务所需的各种资源池的众多数据中心,诸如物理和/或虚拟化计算机服务器、存储装置、联网设备等的集合。所述资源在一些实施方案中可以与web服务相关的各种单元提供到客户端,诸如用于存储的存储容量的大小、用于处理的处理能力、实例、相关服务集合等等。虚拟计算实例可以例如包括具有指定计算容量(所述计算容量可以通过指示CPU的类型和数目、主存储器大小等等进行指定)和指定软件栈(例如,特定版本的操作系统,其进而可以在管理程序之上运行)的一个或多个服务器。
在不同的实施方案中,许多不同类型的计算装置可以单独或组合使用来实施提供者网络的资源,包括通用或专用计算机服务器、存储装置、网络装置等等。在一些实施方案中,可以例如通过给予用户管理员登录名和密码来向客户端或用户提供对资源实例的直接访问。在其他实施方案中,提供者网络操作者可以允许客户端对指定客户端应用指定执行要求并且代表客户端安排在适合于应用的执行平台(诸如应用服务器实例、JavaTM虚拟机(“JVM”)、通用或专用操作系统、支持各种解释的或编译的编程语言诸如Ruby、Perl、Python、C、C++等等的平台或高性能计算平台)上执行应用,而例如不需要客户端直接访问实例或执行平台。给定执行平台在一些实现方式中可以利用一个或多个资源实例;在其他实现方式中,多个执行平台可以被映射到单个资源实例。
在许多环境中,实施不同类型的虚拟化计算、存储和/或其他网络可访问功能的提供者网络的操作者可以允许客户在各种资源获取模式下预留或购买对资源的访问。计算资源提供者可以为客户提供设施来选择和启动所需的计算资源、将应用部件部署到计算资源并且维护在环境中执行的应用。另外,由于对应用的需求或对应用的容量要求发生改变,计算资源提供者可以进一步为客户提供设施来手动地或经由自动缩放快速而容易地放大或缩小分配到应用的资源的数目和类型。可以离散单元获得由计算资源提供者提供的计算资源,所述离散单元可以被称为实例。实例可以表示物理服务器硬件平台、服务器上执行的虚拟机实例或两者的某种组合。可以获得各种类型和配置的实例,包括执行不同操作系统(“OS”)和/或管理程序且具有各种安装软件应用、运行时间等等的不同大小的资源。例如,实例可以进一步用于特定可用区中,所述可用区表示逻辑区域、容错区域、数据中心或基础计算硬件的其他地理位置。可以将实例拷贝到可用区内或整个可用区上以提高实例的冗余,并且可以将实例迁移到特定可用区内或整个可用区上。作为一个实例,客户端与可用区内的特定服务器通信的延时可以短于客户端与不同服务器通信的延时。因此,实例可以从较高延时服务器迁移到较低延时服务器来提升总体客户端体验。
在一些实施方案中,提供者网络可以被组织到多个地理区域,并且每个区域可以包括一个或多个可用区。可用区(其也可以被称为可用容器)进而可以包括一个或多个不同的位置或数据中心,它们以一种方式进行配置,使得给定可用区中的资源可以与其他可用区中的故障隔离或隔绝。也就是说,预期一个可用区中的故障可能不会引起任何其他可用区中的故障。因此,资源实例的可用性配置文件旨在独立于不同可用区中的资源实例的可用性配置文件。客户端可能能够通过在相应的可用区中启动多个应用实例来保护其应用免于在单个位置处的故障的影响。同时,在一些实现方式中,可以在驻留在同一地理区域内的资源实例之间提供廉价且低延时的网络连接(并且同一可用区的资源之间的网络传输可以更快)。
在前述部分中描述的过程、方法和算法中的每一个可以体现在由一个或多个计算机或计算机处理器执行的指令中,并且完全或部分地由所述指令自动进行。所述指令可以存储在任何类型的非暂时计算机可读介质或计算机存储装置(诸如硬盘驱动器、固态存储器、光盘和/或类似装置)上。所述过程和算法可以被部分或全部实施于专用电路中。所公开的过程和过程步骤的结果可以永久地或以其他方式存储在任何类型的非暂时计算机存储装置,例如像易失性或非易失性存储装置中。
上文描述的各种特征和过程可以彼此独立地使用,或者可以各种方式进行组合。全部可能的组合和子组合旨在落入本公开的范围内。此外,某些方法或过程方框可以在一些实现方式中进行省略。本文描述的方法和过程也不限于任何具体顺序,并且与之相关的方框或状态可以按其他适当的顺序执行。例如,所描述的方框或状态可以按不同于已确切公开的次序的次序执行,或者多个方框或状态可以组合在单个方框或状态中。示例性方框或状态可以串行地、并行地或以某种其他方式执行。可以向或从所公开的示例实施方案添加或移除方框或状态。本文描述的示例性系统和部件可以不同于所描述的方式来进行配置。例如,与所公开的示例实施方案相比较,可以添加、移除或重新布置元件。
还将了解,尽管各种项目被示出为在使用时存储在存储器中或存储装置上,但是出于存储器管理和数据完整性的目的,可以在存储器与其他存储装置之间转移这些项目或其部分。可替代地,在其他实施方案中,软件指令和/或系统中的一些或全部可以在另一装置上的存储器中执行,并且经由计算机间的通信来与所示的计算系统进行通信。另外,在一些实施方案中,系统和/或模块中的一些或全部可以其他方式实施或提供,诸如至少部分实施或提供于固件和/或硬件,包括但不限于:一个或多个专用集成电路(“ASIC”)、标准集成电路、控制器(例如,通过执行适当的指令,并且包括微控制器和/或嵌入式控制器)、现场可编程门阵列(“FPGA”)、复杂的可编程逻辑装置(“CPLD”)等。指令、系统和数据结构的一些或全部也可以(例如,作为软件指令或结构化数据)存储在计算机可读介质,诸如硬盘、存储器、网络或通过适当的装置或经由适当的连接来读取的便携式介质制品上。所述指令和数据结构还可以作为生成的数据信号(例如,作为载波或其他模拟或数字传播信号的一部分)在各种计算机可读传输介质(包括基于无线的介质和基于有线/电缆的介质)上传输,并且可以采取各种形式(例如,作为单个模拟信号或多路复用的模拟信号的一部分,或作为多个离散的数字分组或帧)。在其他实施方案中,这种计算机程序产品还可以采取其他形式。因此,本发明可以利用其他计算机系统配置来进行实践。
根据下列条款可以更好理解前述内容:
1.一种系统,所述系统包括:
数据库管理系统,所述数据库管理系统维护对应于散列空间的项目集合,其中所述数据库管理系统通过至少将指示对将项目存储在所述项目集合中的第一请求的信息写入到日志文件来处理所述第一请求;
多个计算节点,所述多个计算节点包括第一计算节点,所述多个计算节点响应于所述数据库管理系统处理所述第一请求而访问有待执行的第一指令集;
第二计算节点,所述第二计算节点至少:
接收指示所述第一请求的所述信息;
监控所述多个计算节点中的计算节点的资源利用率;
至少部分基于所述第一计算节点的资源利用率小于所述多个计算节点的额外计算节点而选择所述第一一个计算节点用来执行所述第一指令集;以及
向所述第一计算节点传输使所述第一一个或多个计算节点执行所述第一指令集的数据。
2.如条款1所述的系统,其中所述第二计算节点至少:
监控所述第一计算节点的资源利用率;以及
至少部分基于所述资源利用率而选择所述多个计算节点中的计算节点用来执行所述第一指令集。
3.如条款1所述的系统,其中所述第二计算节点至少:
监控所述第一计算节点的资源利用率,所述资源利用率与所述第一指令集的所述执行相关联;以及
基于所述资源利用率而确定停止所述第一指令集的所述执行。
4.如条款1所述的系统,其中所述第一指令集对应于参数的函数,所述参数包括以下各项中的至少一项:所述项目的主键、所述项目的早先值或所述项目的新值。
5.如条款1所述的系统,其中所述多个计算节点的能力可以独立于所述数据库管理系统来缩放。
6.一种用于处理数据库触发函数的方法,所述方法包括:
响应于对将多个项目存储在由数据库管理系统维护的项目集合中的请求而使包括第一计算节点的多个计算节点与有待执行的第一指令集相关联,所述多个项目对应于第一散列空间;
将指示由所述数据库管理系统处理的多个请求的信息存储在日志数据储存库中以存储所述多个项目;
从所述日志数据储存库接收指示所述多个请求中对将项目存储在所述项目集合中的第一请求的信息;以及
至少部分基于确定所述第一计算节点的资源利用率小于所述多个计算节点的第二计算节点而使所述第一指令集在所述第一计算节点上执行。
7.如条款6所述的方法,其还包括:
至少部分基于在所述第一计算节点上执行所述第一指令集所利用的资源而使所述第一指令集在所述多个计算节点的额外计算节点上执行。
8.如条款6所述的方法,其还包括:
当所述执行所述第一指令集所利用的资源超过阈值量时,停止所述第一指令集的执行。
9.如条款6所述的方法,其中所述第一指令集对应于一个或多个参数的函数,所述一个或多个参数包括以下各项中的至少一项:所述项目的主键或指示所述项目的变化的信息。
10.如条款6所述的方法,其中所述日志数据储存库包括所述数据库管理系统的日志文件的子集。
11.如条款6所述的方法,其还包括:
存储指示介于所述第一散列空间与多个指令集之间的关联的信息,所述多个指令包括所述第一指令集;以及
响应于接收到指示所述第一请求的所述信息而使与所述第一散列空间相关联的所述多个指令集中的每一个被执行。
12.如条款6所述的方法,其还包括:
响应于接收到指示所述第一请求的所述信息而使包括所述第一指令集的多个指令集被执行。
13.一种非暂时计算机可读存储介质,所述非暂时计算机可读存储介质上面存储有指令,所述指令在被一个或多个计算装置执行时使一个或多个计算装置至少:
响应于对将多个项目存储在由数据库管理系统维护的项目集合中的请求而使包括第一计算节点的多个计算节点与有待执行的第一指令集相关联;
接收指示多个请求中对将项目存储在所述项目集合中的第一请求的信息;以及
至少部分基于确定所述第一计算节点的资源利用率小于所述多个计算节点的第二计算节点而使所述第一指令集在所述第一计算节点上执行。
14.如条款13所述的非暂时计算机可读存储介质,其还包括指令,所述指令在被所述一个或多个计算装置执行时使所述一个或多个计算装置至少:
至少部分基于在所述第一计算节点上执行所述第一指令集所利用的资源而传输指示在所述多个计算节点的额外计算节点上执行所述第一指令集的信息。
15.如条款13所述的非暂时计算机可读存储介质,其包括进一步的指令,所述指令在被所述一个或多个计算装置执行时使所述一个或多个计算装置至少:
至少部分基于所述执行所述第一指令集所利用的资源而确定停止所述第一指令集的执行。
16.如条款13所述的非暂时计算机可读存储介质,其中所述第一指令集对应于一个或多个参数的函数,所述一个或多个参数包括以下各项中的至少一项:所述项目的主键或指示所述项目的变化的信息。
17.如条款13所述的非暂时计算机可读存储介质,其中所述多个项目中的项目对应于第一散列空间。
18.如条款13所述的非暂时计算机可读存储介质,其包括进一步的指令,所述指令在被所述一个或多个计算装置执行时使所述一个或多个计算装置至少:
存储指示介于第一散列空间与多个指令集之间的关联的信息,所述多个指令包括所述第一指令集;以及
响应于接收到指示所述第一请求的所述信息而使与所述第一散列空间相关联的所述多个指令集中的每一个被执行。
19.如条款18所述的非暂时计算机可读存储介质,其中第一散列空间对应于分区。
20.如条款13所述的非暂时计算机可读存储介质,其中所述第一指令集包括脚本,所述脚本用于执行以下各项中的至少一项:跨区域复制、数据验证或访问模式检测。
除非另外明确说明,或以其他方式在所用上下文中加以理解,否则诸如尤其是“能够”、“可以”、“可能”、“可以”、“例如”等等的本文所使用的条件语言通常旨在表达:某些实施方案包括某些特征、要素和/或步骤,而其他实施方案不包括这些特征、要素和/或步骤。因此,这种条件语言通常并非旨在暗示所述特征、要素和/或步骤是一个或多个实施方案无论如何都需要的,或者一个或多个实施方案必须包括用于在存在或不存在程序设计者输入或提示的情况下决定是否在任何具体实施方案中包括或执行这些特征、要素和/或步骤的逻辑。术语“包括”、“包括”、“具有”等等是同义的,并以开放的方式包括性地使用,并且不排除额外要素、特征、动作、操作等等。另外,术语“或”以其包括性意义(且不以其排除性意义)使用,使得当例如用于连接一个列表的要素时,术语“或”意味着所述列表的要素中的一个、一些或全部。
虽然已描述了某些示例实施方案,但是这些实施方案仅通过举例的方式呈现,并且不意图限制本文公开的发明的范围。因此,在前文描述中没有内容旨在暗示任何特定特征、特性、步骤、模块或方框是必需的或不可缺少的。实际上,本文描述的新颖方法和系统可以各种其他形式体现;另外,在不脱离本文所公开的发明的精神的情况下,可以对本文描述的方法和系统的形式进行各种省略、替代和改变。所附权利要求以及其等效形式旨在覆盖如落在本文公开的发明的某些的范围和精神内的这类形式或修改。
Claims (15)
1.一种用于处理数据库触发函数的系统,所述系统包括:
数据库管理系统,所述数据库管理系统维护对应于表格的分区的项目集合,其中所述数据库管理系统通过至少将指示对将项目存储在所述项目集合中的第一请求的信息写入到日志文件来处理所述第一请求;
多个计算节点,所述多个计算节点包括第一计算节点,所述多个计算节点响应于所述数据库管理系统处理所述第一请求而访问有待执行的第一指令集;
第二计算节点,所述第二计算节点至少:
接收指示所述第一请求的所述信息;
监控所述多个计算节点中的计算节点的资源利用率;
至少部分基于所述第一计算节点的资源利用率小于所述多个计算节点的额外计算节点而选择所述第一计算节点用来执行所述第一指令集;以及
向所述第一计算节点传输使所述第一计算节点执行所述第一指令集的数据。
2.如权利要求1所述的系统,其中所述第二计算节点至少:
监控所述第一计算节点的资源利用率;以及
至少部分基于所述资源利用率而选择所述多个计算节点中的计算节点用来执行所述第一指令集。
3.如权利要求1所述的系统,其中所述第二计算节点至少:
监控所述第一计算节点的资源利用率,所述资源利用率与所述第一指令集的所述执行相关联;以及
基于所述资源利用率而确定停止所述第一指令集的所述执行。
4.如权利要求1所述的系统,其中所述第一指令集对应于参数的函数,所述参数包括以下各项中的至少一项:所述项目的主键、所述项目的早先值或所述项目的新值。
5.如权利要求1所述的系统,其中所述多个计算节点的能力可以独立于所述数据库管理系统来缩放。
6.一种用于处理数据库触发函数的方法,所述方法包括:
响应于对将项目存储在由数据库管理系统维护的项目集合中的请求而使包括第一计算节点的多个计算节点与有待执行的第一指令集相关联,所述项目对应于表格的分区;
接收指示对将所述项目存储在所述项目集合中的所述请求的信息;以及
至少部分基于确定所述第一计算节点的资源利用率小于所述多个计算节点的第二计算节点而使所述第一指令集在所述第一计算节点上执行。
7.如权利要求6所述的方法,其还包括:
至少部分基于在所述第一计算节点上执行所述第一指令集所利用的资源而使所述第一指令集在所述多个计算节点的额外计算节点上执行。
8.如权利要求6所述的方法,其还包括:
当所述执行所述第一指令集所利用的资源超过阈值量时,停止所述第一指令集的执行。
9.如权利要求6所述的方法,其中所述第一指令集对应于一个或多个参数的函数,所述一个或多个参数包括以下各项中的至少一项:所述项目的主键或指示所述项目的变化的信息。
10.如权利要求6所述的方法,其中指示对存储所述项目的所述请求的所述信息从日志储存库读取。
11.如权利要求6所述的方法,其还包括:
存储指示介于对应于所述表格的所述分区的第一散列空间与多个指令集之间的关联的信息,所述多个指令集包括所述第一指令集;以及
响应于接收到指示对存储所述项目的所述请求的所述信息而使与所述第一散列空间相关联的所述多个指令集中的每一个被执行。
12.如权利要求6所述的方法,其还包括:
响应于接收到指示对存储所述项目的所述请求的所述信息而使包括所述第一指令集的多个指令集被执行。
13.一种用于处理数据库触发函数的系统,所述系统包括:
一个或多个处理器;以及
一个或多个非暂时计算机可读存储介质,所述一个或多个非暂时计算机可读存储介质上面存储有指令,所述指令在被所述一个或多个处理器执行时使所述一个或多个计算装置至少:
响应于对将多个项目存储在由数据库管理系统维护的项目集合中的请求而使包括第一计算节点的多个计算节点与有待执行的第一指令集相关联;
接收指示多个请求中对将项目存储在所述项目集合中的第一请求的信息;以及
至少部分基于确定所述第一计算节点的资源利用率小于所述多个计算节点的第二计算节点而使所述第一指令集在所述第一计算节点上执行。
14.如权利要求13所述的系统,其包括进一步的指令,所述指令在被所述一个或多个计算装置执行时使所述一个或多个计算装置至少:
至少部分基于在所述第一计算节点上执行所述第一指令集所利用的资源而传输指示在所述多个计算节点的额外计算节点上执行所述第一指令集的信息。
15.如权利要求13所述的系统,其包括进一步的指令,所述指令在被所述一个或多个计算装置执行时使所述一个或多个计算装置至少:
存储指示介于第一散列空间与多个指令集之间的关联的信息,所述多个指令集包括所述第一指令集;以及
响应于接收到指示所述第一请求的所述信息而使与所述第一散列空间相关联的所述多个指令集中的每一个被执行。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/868,236 US10666574B2 (en) | 2015-09-28 | 2015-09-28 | Distributed stream-based database triggers |
US14/868,236 | 2015-09-28 | ||
PCT/US2016/053822 WO2017058734A1 (en) | 2015-09-28 | 2016-09-26 | Distributed stream-based database triggers |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108351806A CN108351806A (zh) | 2018-07-31 |
CN108351806B true CN108351806B (zh) | 2022-06-07 |
Family
ID=57113775
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680064622.8A Active CN108351806B (zh) | 2015-09-28 | 2016-09-26 | 分布式基于流的数据库触发器 |
Country Status (7)
Country | Link |
---|---|
US (3) | US10666574B2 (zh) |
EP (1) | EP3356937B1 (zh) |
JP (1) | JP6618614B2 (zh) |
CN (1) | CN108351806B (zh) |
AU (1) | AU2016332576B2 (zh) |
CA (1) | CA3000161C (zh) |
WO (1) | WO2017058734A1 (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10038745B2 (en) * | 2016-02-05 | 2018-07-31 | Vmware, Inc. | Method for monitoring elements of a distributed computing system |
JP6873772B2 (ja) * | 2017-03-24 | 2021-05-19 | キヤノン株式会社 | 情報処理装置、情報処理装置の制御方法及びアプリケーション管理方法 |
US20180316547A1 (en) * | 2017-04-27 | 2018-11-01 | Microsoft Technology Licensing, Llc | Single management interface to route metrics and diagnostic logs for cloud resources to cloud storage, streaming and log analytics services |
US10547672B2 (en) | 2017-04-27 | 2020-01-28 | Microsoft Technology Licensing, Llc | Anti-flapping system for autoscaling resources in cloud networks |
US20180316726A1 (en) * | 2017-04-28 | 2018-11-01 | Honeywell International Inc. | Replication of identity-derived primary keys without range restrictions |
US10645138B2 (en) * | 2017-05-02 | 2020-05-05 | Salesforce.Com, Inc | Event stream processing system using a coordinating spout instance |
US11182372B1 (en) * | 2017-11-08 | 2021-11-23 | Amazon Technologies, Inc. | Tracking database partition change log dependencies |
US11169898B2 (en) * | 2018-03-26 | 2021-11-09 | Oracle International Corporation | System and method for database replication benchmark testing using a pipeline-based microservices model |
US11321139B2 (en) * | 2018-05-31 | 2022-05-03 | Salesforce.Com, Inc. | Streaming traffic pattern for public cloud auto scaling |
US11853321B1 (en) * | 2018-06-14 | 2023-12-26 | Amazon Technologies, Inc. | Data replication without in-place tombstones |
US11126505B1 (en) * | 2018-08-10 | 2021-09-21 | Amazon Technologies, Inc. | Past-state backup generator and interface for database systems |
US11106658B2 (en) | 2018-11-28 | 2021-08-31 | Snowflake Inc. | Task scheduling in database systems |
US11086840B2 (en) * | 2018-12-07 | 2021-08-10 | Snowflake Inc. | Transactional streaming of change tracking data |
CN111770170B (zh) | 2020-06-29 | 2023-04-07 | 北京百度网讯科技有限公司 | 请求处理方法、装置、设备和计算机存储介质 |
US11032361B1 (en) | 2020-07-14 | 2021-06-08 | Coupang Corp. | Systems and methods of balancing network load for ultra high server availability |
CN112948206B (zh) * | 2021-02-22 | 2024-05-31 | 上海宽带技术及应用工程研究中心 | 基于云计算的时序日志管理系统及包含该系统的电子设备 |
US11989204B2 (en) | 2021-06-22 | 2024-05-21 | International Business Machines Corporation | Datastore aware streams computing |
US11977538B2 (en) * | 2022-02-24 | 2024-05-07 | Singlestore, Inc. | Durable functions in database systems |
US12105726B2 (en) * | 2022-04-11 | 2024-10-01 | United Parcel Service Of America, Inc. | Asynchronous document charts |
CN118092816B (zh) * | 2024-04-25 | 2024-07-05 | 深圳市铨兴科技有限公司 | 一种存储空间动态分配方法、系统及存储器 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5761507A (en) * | 1996-03-05 | 1998-06-02 | International Business Machines Corporation | Client/server architecture supporting concurrent servers within a server with a transaction manager providing server/connection decoupling |
US6192365B1 (en) * | 1995-07-20 | 2001-02-20 | Novell, Inc. | Transaction log management in a disconnectable computer and network |
CN1871586A (zh) * | 2003-10-29 | 2006-11-29 | 甲骨文国际公司 | 追踪数据库中的空间占用 |
JP2008015888A (ja) * | 2006-07-07 | 2008-01-24 | Hitachi Ltd | 負荷分散制御システム及び負荷分散制御方法 |
JP2010026744A (ja) * | 2008-07-18 | 2010-02-04 | Internatl Business Mach Corp <Ibm> | 情報管理サーバ、情報処理システム、通信方法およびプログラム |
CN102682052A (zh) * | 2010-12-28 | 2012-09-19 | 微软公司 | 过滤数据存储上的查询数据 |
US8595267B2 (en) * | 2011-06-27 | 2013-11-26 | Amazon Technologies, Inc. | System and method for implementing a scalable data storage service |
US8719415B1 (en) * | 2010-06-28 | 2014-05-06 | Amazon Technologies, Inc. | Use of temporarily available computing nodes for dynamic scaling of a cluster |
US8898120B1 (en) * | 2011-10-09 | 2014-11-25 | Symantec Corporation | Systems and methods for distributed data deduplication |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6594656B1 (en) * | 1999-01-22 | 2003-07-15 | Avaya Technology Corp. | Active database trigger processing using a trigger gateway |
US6374236B1 (en) * | 1999-12-04 | 2002-04-16 | Ncr Corporation | Parallel optimized triggers in parallel processing database systems |
CA2578666C (en) * | 2006-02-13 | 2016-01-26 | Xkoto Inc. | Method and system for load balancing a distributed database |
US7512631B2 (en) * | 2006-03-23 | 2009-03-31 | International Business Machines Corporation | Method for identifying database triggers |
US7634505B2 (en) * | 2006-12-19 | 2009-12-15 | Salesforce.Com, Inc. | Methods and procedures to provide complete test copy environment of hosted applications |
US20100318827A1 (en) * | 2009-06-15 | 2010-12-16 | Microsoft Corporation | Energy use profiling for workload transfer |
US8898124B2 (en) * | 2010-12-16 | 2014-11-25 | International Business Machines Corporation | Controlling database trigger execution with trigger return data |
EP2551773B1 (en) * | 2011-07-29 | 2024-03-06 | Tata Consultancy Services Ltd. | Data audit module for application software |
US9634958B2 (en) * | 2013-04-02 | 2017-04-25 | Amazon Technologies, Inc. | Burst capacity for user-defined pools |
US10069903B2 (en) * | 2013-04-16 | 2018-09-04 | Amazon Technologies, Inc. | Distributed load balancer |
US9953054B2 (en) * | 2013-04-22 | 2018-04-24 | Salesforce.Com, Inc. | Systems and methods for implementing and maintaining sampled tables in a database system |
US11841844B2 (en) * | 2013-05-20 | 2023-12-12 | Amazon Technologies, Inc. | Index update pipeline |
US20160134684A1 (en) * | 2013-06-14 | 2016-05-12 | T-Data Systems (S) Pte Ltd | System and method for uploading, showcasing and selling news footage |
US9792325B2 (en) * | 2013-08-25 | 2017-10-17 | Microsoft Technology Licensing, Llc | Continuous cloud-scale query optimization and processing |
US9858322B2 (en) * | 2013-11-11 | 2018-01-02 | Amazon Technologies, Inc. | Data stream ingestion and persistence techniques |
US9774652B2 (en) * | 2013-12-13 | 2017-09-26 | Sap Se | Systems to provide database updates |
US9727664B2 (en) * | 2014-05-06 | 2017-08-08 | International Business Machines Corporation | Grouping records in buckets distributed across nodes of a distributed database system to perform comparison of the grouped records |
US10339110B2 (en) * | 2015-08-31 | 2019-07-02 | Vmware, Inc. | Policy-based selection and configuration of target site resources for data replication |
-
2015
- 2015-09-28 US US14/868,236 patent/US10666574B2/en active Active
-
2016
- 2016-09-26 CN CN201680064622.8A patent/CN108351806B/zh active Active
- 2016-09-26 WO PCT/US2016/053822 patent/WO2017058734A1/en active Application Filing
- 2016-09-26 JP JP2018515775A patent/JP6618614B2/ja active Active
- 2016-09-26 CA CA3000161A patent/CA3000161C/en active Active
- 2016-09-26 EP EP16778615.1A patent/EP3356937B1/en active Active
- 2016-09-26 AU AU2016332576A patent/AU2016332576B2/en active Active
-
2020
- 2020-05-21 US US16/880,740 patent/US11258725B2/en active Active
-
2022
- 2022-01-31 US US17/589,643 patent/US11588755B2/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6192365B1 (en) * | 1995-07-20 | 2001-02-20 | Novell, Inc. | Transaction log management in a disconnectable computer and network |
US5761507A (en) * | 1996-03-05 | 1998-06-02 | International Business Machines Corporation | Client/server architecture supporting concurrent servers within a server with a transaction manager providing server/connection decoupling |
CN1871586A (zh) * | 2003-10-29 | 2006-11-29 | 甲骨文国际公司 | 追踪数据库中的空间占用 |
JP2008015888A (ja) * | 2006-07-07 | 2008-01-24 | Hitachi Ltd | 負荷分散制御システム及び負荷分散制御方法 |
JP2010026744A (ja) * | 2008-07-18 | 2010-02-04 | Internatl Business Mach Corp <Ibm> | 情報管理サーバ、情報処理システム、通信方法およびプログラム |
US8719415B1 (en) * | 2010-06-28 | 2014-05-06 | Amazon Technologies, Inc. | Use of temporarily available computing nodes for dynamic scaling of a cluster |
CN102682052A (zh) * | 2010-12-28 | 2012-09-19 | 微软公司 | 过滤数据存储上的查询数据 |
US8595267B2 (en) * | 2011-06-27 | 2013-11-26 | Amazon Technologies, Inc. | System and method for implementing a scalable data storage service |
US8898120B1 (en) * | 2011-10-09 | 2014-11-25 | Symantec Corporation | Systems and methods for distributed data deduplication |
Non-Patent Citations (2)
Title |
---|
A Heuristic Data Allocation Method for Multi-tenant SaaS Application in Distributed Database Systems;Hongyong Yu 等;《2011 International Conference on Information Management, Innovation Management and Industrial Engineering》;20111229;382-386 * |
大数据存储技术进展;冯周 等;《科研信息化技术与应用》;20150120;第6卷(第1期);18-28 * |
Also Published As
Publication number | Publication date |
---|---|
US11588755B2 (en) | 2023-02-21 |
WO2017058734A4 (en) | 2017-06-08 |
AU2016332576A1 (en) | 2018-05-10 |
WO2017058734A1 (en) | 2017-04-06 |
EP3356937A1 (en) | 2018-08-08 |
JP2018530068A (ja) | 2018-10-11 |
US10666574B2 (en) | 2020-05-26 |
EP3356937B1 (en) | 2019-09-18 |
US11258725B2 (en) | 2022-02-22 |
AU2016332576B2 (en) | 2019-10-31 |
US20170093755A1 (en) | 2017-03-30 |
CN108351806A (zh) | 2018-07-31 |
JP6618614B2 (ja) | 2019-12-11 |
CA3000161A1 (en) | 2017-04-06 |
US20200287841A1 (en) | 2020-09-10 |
CA3000161C (en) | 2021-06-22 |
US20220158953A1 (en) | 2022-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108351806B (zh) | 分布式基于流的数据库触发器 | |
US10671408B1 (en) | Automatic storage system configuration for mediation services | |
US12026381B2 (en) | Preserving identities and policies across replication | |
US20220206910A1 (en) | Dual class of service for unified file and object messaging | |
US20220232075A1 (en) | Distributed protocol endpoint services for data storage systems | |
US12026382B2 (en) | Storage path routing in a container system | |
US11681445B2 (en) | Storage-aware optimization for serverless functions | |
US12056396B2 (en) | Storage-aware management for serverless functions | |
US20230231912A1 (en) | Mesh-aware storage systems | |
US20220317912A1 (en) | Non-Disruptively Moving A Storage Fleet Control Plane | |
US20230195444A1 (en) | Software Application Deployment Across Clusters | |
US20210303327A1 (en) | Gpu-remoting latency aware virtual machine migration | |
US10437797B1 (en) | In-memory distributed database with a remote data store | |
US20230342290A1 (en) | Die-aware scheduler | |
US12050561B2 (en) | Ejournal transcoding | |
US20230283666A1 (en) | Establishing A Guarantee For Maintaining A Replication Relationship Between Object Stores During A Communications Outage | |
US20240143338A1 (en) | Prioritized Deployment of Nodes in a Distributed Storage System | |
US20230195535A1 (en) | Containerized Application Deployment to Use Multi-Cluster Computing Resources | |
US12001293B2 (en) | Coordinated data backup for a container system | |
US20230237065A1 (en) | Reducing Storage System Load Using Snapshot Distributions | |
US11256669B1 (en) | Transaction pipeline materialization schemas | |
US20230393742A1 (en) | Latency Reduction Of Flash-Based Devices Using Programming Interrupts | |
US11860819B1 (en) | Auto-generation of partition key | |
US20240004546A1 (en) | IO Profiles in a Distributed Storage System | |
US20240289038A1 (en) | Data path functions for data storage |
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 |