CN102270155B - 应用程序实例和查询存储 - Google Patents
应用程序实例和查询存储 Download PDFInfo
- Publication number
- CN102270155B CN102270155B CN201110219944.4A CN201110219944A CN102270155B CN 102270155 B CN102270155 B CN 102270155B CN 201110219944 A CN201110219944 A CN 201110219944A CN 102270155 B CN102270155 B CN 102270155B
- Authority
- CN
- China
- Prior art keywords
- module
- inquiry
- renewal
- result
- stored
- 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.)
- Expired - Fee Related
Links
- 238000003860 storage Methods 0.000 title claims abstract description 84
- 230000014509 gene expression Effects 0.000 claims abstract description 40
- 238000000034 method Methods 0.000 claims description 33
- 230000008569 process Effects 0.000 claims description 19
- 230000004044 response Effects 0.000 claims description 16
- 230000001360 synchronised effect Effects 0.000 claims description 12
- 238000005516 engineering process Methods 0.000 description 36
- 235000013351 cheese Nutrition 0.000 description 18
- 230000002085 persistent effect Effects 0.000 description 12
- 230000008859 change Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 230000009471 action Effects 0.000 description 8
- 230000008901 benefit Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 241000234671 Ananas Species 0.000 description 2
- 235000007119 Ananas comosus Nutrition 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000003745 diagnosis Methods 0.000 description 2
- 230000036541 health Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000002045 lasting effect Effects 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000004321 preservation Methods 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 239000013589 supplement Substances 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
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/23—Updating
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
本发明揭示了应用程序实例和查询存储。可发出用于更新应用程序的实例的状态的实例持久保存命令。响应于该持久保存命令,可启动关于实例存储的事务。作为事务的部分,可将更新的第一表示存储到实例存储中,并可将更新的第二表示存储到队列中。在存储第一和第二表示之后可提交该事务。在提交事务之后,可处理第二表示以将更新的第三表示存储到查询存储中。无需锁定实例存储就可对查询存储中的应用程序实例状态信息进行更新和查询,使得查询存储中的这样的操作可与实例存储中的操作异步地执行。
Description
技术领域
本发明涉及持久保存,尤其涉及应用程序实例和查询存储。
背景技术
长期运行的应用程序实例,诸如例如工作流应用程序的实例,通常得益于周期性地持久保存其工作以允许应用程序实例在错误、崩溃或机器失效之后恢复。持久保存工作还可允许应用程序临时地空闲并且使它们的资源得到重新分配。为了持久保存工作,应用程序主机可对应用程序实例的持久保存的状态和该实例的运行时状态进行协调以保证一致的检查点被创建。例如,实例的持久保存的状态可能需要与应用程序事务、消息通知、锁、本地状态高速缓存等进行协调。一个或多个实例的持久保存的状态的权威性版本可被存储到此处被称为实例存储的存储中。
在持久保存应用程序实例状态之后,可在实例存储中查询持久保存的实例状态的各方面,例如支持用于系统管理、诊断、健康监控、业务流程跟踪、报告、可视化或分析的应用程序工具。如此处使用的,查询及类似的术语泛指读取已存储的数据。独立于正在执行实例的主应用程序来构想和实现应用程序工具。
发明内容
此处描述的工具和技术通过还将对应的表示存储到一个或多个查询存储中可增强对实例存储中持久保存的状态表示的使用。这可提供好处,诸如允许应用程序工具在查询存储中查询应用程序状态而无需锁定实例存储。
在一个实施例中,工具和技术可包括发出用于更新应用程序的实例的状态的实例持久保存命令。响应于该持久保存命令,可启动关于实例存储的事务。作为事务的一部分,可将更新的第一表示存储到实例存储中,并可将更新的第二表示存储到队列中。在存储第一和第二表示之后可提交该事务。在提交事务之后,可处理第二表示以将更新的第三表示存储到查询存储中。
如此处使用的,术语队列是指用于正在等待被处理的数据的存储。例如,它可指用于正在等待被发布的数据的存储。队列可以是各种形式中的任一种,诸如数据库或数据库的部分。此外,队列可使用各种队列处理技术中的任一种,诸如先进先出技术或某些其他技术。
在工具和技术的另一个实施例中,可从查询服务接收对应用程序实例状态更新的结果的订阅请求。订阅请求可包括过滤器。可从结果队列接收一组应用程序实例状态更新的结果。此外,过滤器可被应用于来自结果队列的该组结果。可向查询服务发布满足过滤器的一组要求的该组结果。此外,可将与被发布到查询服务的结果相对应的应用程序实例状态更新的表示存储到查询存储中。
如此处使用的,术语“结果”及类似的术语是指对应用程序实例的状态进行的更新的表示。例如,“结果”可指示创建或删除实例、为变量赋予特定的值等。结果可与实例存储中存储的表示相同,或者它们可以是某些其他形式。例如,结果可(例如,通过指示变量的当前值)指示当前状态和/或(例如,通过指示变量被改变之前的值和变量被改变之后的值)指示所作出的改变。类似地,状态更新的表示可指当前状态的表示和/或已对状态所作出的改变的表示。为方便起见,术语结果通常用来指正在被传输的表示,而术语表示通常用来指正在被存储的表示。
在工具和技术的又一个实施例中,应用程序主机可被配置为运行一个或多个应用程序实例。实例存储可连接到应用程序主机,并且结果队列可通过实例存储连接到应用程序主机。应用程序主机、实例存储以及结果队列可被配置为响应于实例持久保存命令而参与事务,该实例持久保存命令用于更新运行在应用程序主机上的应用程序的实例的状态。每个这样的事务可包括:响应于用于更新应用程序实例的状态的实例持久保存命令启动事务;将更新的第一表示存储到实例存储中;将更新的第二表示存储到结果队列中;并且提交事务。发布方可连接到队列,并且查询服务可连接到发布方。发布方可被配置为处理结果队列中的更新表示,并且向一个或多个查询服务发布来自队列的结果。无需锁定实例存储就可实现上述处理和发布。查询存储可连接到查询服务,并且查询服务中的每一个可被配置为通过将与接收到的结果相对应的更新的表示存储到查询存储中来响应接收到的结果。
提供本发明内容是为了以简化的形式介绍一些概念。这些概念将在以下具体实施方式中进一步描述。本发明内容并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。类似地,本发明不限于解决在背景技术、具体实施方式、或附图中讨论的特定技术、工具、环境、缺点、或优点的实现。
附图说明
图1是其中可实现所描述的各实施例中的一个或多个的适合的计算环境的框图。
图2是实例和查询存储系统的示意图。
图3是实例和查询存储系统的部分的示意图。
图4是实例和查询存储系统的部分的示意。
图5是实例和查询存储技术的流程图。
图6是另一个实例和查询存储技术的流程图。
具体实施方式
此处描述的各实施例涉及用于应用程序实例状态信息的改进的存储和/或查询的技术和工具。这样的改进可源于分开或组合地使用各种技术和工具。
这样的技术和工具可包括响应于用于更新应用程序实例的状态的实例持久保存命令,启动关于实例存储的事务。事务可包括将更新的第一表示存储到实例存储中,将更新的第二表示存储到队列中,并且随后提交该事务。这可包括将命令的结果传输到队列,并且可使用第一表示中没有的应用程序数据来补充那些结果。在提交事务之后,可处理更新的第二表示以将更新的第三表示存储到查询存储中。无需锁定实例存储就可实现这个处理,并且无需锁定实例存储还可对查询存储中的信息实现查询。因此,可实现对查询存储的更新和查询而不会降低实例存储的性能。这可进而改善正被持久保存的应用程序的性能,因为这样的应用程序可花费更少的时间等待将在实例存储中执行的操作。
可使用发布-订阅技术来处理队列中的表示。例如,每个连接到不同的查询存储的查询服务可向连接到队列的发布方进行订阅。查询服务可向过滤器提供其订阅信息。发布方可根据订阅信息将来自队列的表示作为结果发布到查询服务。响应于这些发布,查询服务使用对应用程序实例状态的更新的表示来更新对应的查询存储。如果查询存储不同步(例如,由于存储已崩溃、仅最近订阅、或者其订阅中已发生变化),则还可使用将查询存储与实例存储进行同步的技术。
所附权利要求中定义的主题不必限于本文描述的益处。本发明的特定实现可提供本文描述的益处的全部、一些、或未提供本文描述的益处。尽管本文出于呈现的目的以特定的顺序次序描述了用于各种技术的操作,但应理解除非要求特定的排序,否则这种描述方式涵盖了操作顺序上的重新安排。例如,在某些情况下,可以重新安排或并发执行顺序地描述的操作。本文参照流程图描述的技术可被用于本文描述的一个或多个系统和/或用于一个或多个其他系统。例如,本文描述的各种过程可用硬件或软件、或两者的组合来实现。此外,为了简单起见,流程图可能未示出可结合其他技术来使用特定技术的各种方式。
I.示例性计算环境
图1示出其中可实现所描述的各实施例中的一个或多个的合适的计算环境(100)的通用示例。例如,一个或多个这样的计算环境可用于托管此处讨论的各种模块,诸如应用程序主机、持久保存提供方、实例存储、结果队列、发布方、查询服务、查询存储、和/或应用程序工具。一般而言,可使用各种不同的通用或专用计算系统配置。适用于此处所描述的工具和技术的公知计算系统配置的示例包括,但不限于,服务器场和服务器群集、个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、可编程消费电子产品、网络PC、小型机、大型计算机、包括上述系统或设备中的任一个的分布式计算环境等。
计算环境(100)不旨在对本发明的使用范围或功能提出任何限制,因为本发明可以在完全不同的通用或专用计算环境中实现。
参考图1,计算环境(100)包括至少一个处理单元(110)和存储器(120)。在图1中,这一最基本的配置(130)被包括在虚线内。处理单元(110)执行计算机可执行指令,并且可以是真实或虚拟处理器。在多处理系统中,多个处理单元执行计算机可执行指令以提高处理能力。存储器(120)可以是易失性存储器(例如,寄存器、高速缓存、RAM)、非易失性存储器(例如,ROM、EEPROM、闪存)、或两者的某种组合。存储器(120)存储实现应用程序实例和查询存储的软件(180)。
尽管为了清楚起见用线条示出了图1的各框,但是,实际上,描绘各组件并不是那样清楚,并且用比喻方法,图1以及下文讨论的其他附图的线条更精确地将是灰色的和模糊的。例如,可以将诸如显示设备等的呈现组件认为是I/O组件。而且,处理器具有存储器。发明人关于此点认识到,这是本领域的特性,并且重申,图1的图示只是例示可结合本发明的一个或多个实施例来使用的示例性计算设备。诸如“工作站”、“服务器”、“膝上型计算机”、“手持式设备”等分类之间没有区别,它们全部都被认为是在图1的范围之内的并且被称为“计算机”、“计算环境”、或“计算设备”。
计算环境(100)可具有附加特征。在图1中,计算环境(100)包括存储(140)、一个或多个输入设备(150)、一个或多个输出设备(160)以及一个或多个通信连接(170)。诸如总线、控制器或网络等互连机制(未示出)将计算环境(100)的各组件互连。通常,操作系统软件(未示出)为在计算环境(100)中执行的其它软件提供操作环境,并协调计算环境(100)的各组件的活动。
存储(140)可以是可移动或不可移动的,并可包括诸如磁盘、磁带或磁带盒、CD-ROM、CD-RW、DVD之类的非瞬态计算机可读存储介质,或者可用于储存信息并可在计算环境(100)内访问的任何其它介质。存储(140)存储用于软件(180)的指令。
输入设备(150)可以是诸如键盘、鼠标、笔或跟踪球等触摸输入设备;语音输入设备;扫描设备;网络适配器;CD/DVD读取器;或可向计算环境(100)提供输入的另一设备。输出设备(160)可以是显示器、打印机、扬声器、CD/DVD刻录机、网络适配器、或从计算环境(100)提供输出的另一设备。
通信连接(170)允许通过通信介质与另一计算实体进行通信。因此,计算环境(100)可使用通往诸如个人计算机、服务器、路由器、网络PC、对等设备或另一常见网络节点等一个或多个远程计算设备的逻辑连接而工作在联网环境中。通信介质以已调制数据信号的形式传达诸如数据或计算机可执行指令或请求等信息。已调制数据信号是以在信号中编码信息的方式来设置或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括利用电、光、射频(RF)、红外线、声音或其他载体实现的有线或无线技术。
各种工具和技术可以在计算机可读介质的一般上下文中描述。计算机可读介质是可以在计算环境内被访问的任何可用介质。作为示例而非局限,对于计算环境(100),计算机可读介质包括存储器(120)、存储(140)、和以上的组合。
这些工具和技术可在诸如程序模块中所包括的在目标真实或虚拟处理器上的计算环境中执行的计算机可执行指令的一般上下文中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、库、对象、类、组件、数据结构等等。程序模块的功能可以按需在各个实施例中进行组合或在程序模块之间拆分。程序模块的计算机可执行指令可以在本地或分布式计算环境内执行。在分布式计算环境中,程序模块可以位于本地和远程计算机存储介质中。
出于表示的目的,详细描述使用了如“确定”、“选择”、“调整”和“操作”等术语来描述计算环境中的计算机操作。这些以及其他类似术语是对计算机执行的操作的高层抽象,并且不应混淆于人类执行的动作,除非明确指出人类(诸如“用户”)的动作执行。对应于这些术语的实际的计算机操作取决于实现而不同。
II.应用程序实例存储和查询存储系统和环境
图2是结合可以实现所描述的实施例中的一个或多个的应用程序实例和查询存储计算机环境或系统(200)的框图。系统(200)可包括被配置为运行一个或多个应用程序实例的至少一个应用程序主机(210)。系统(200)还可包括可单独地查询应用程序实例的状态信息的一个或多个应用程序工具(212)。这些应用程序工具(212)可支持诸如系统管理、诊断、健康监控、业务流程跟踪、报告、可视化或分析的特征。
应用程序主机(210)是模块,诸如可执行应用程序实例并且可操控存储在实例存储(220)中的实例状态以反映实例执行结果的执行工作流程序实例存储(220)可以是持久存储的形式,诸如持久数据库。应用程序主机(210)可通过持久保存提供方(224)向实例存储(220)提交实例持久保存命令(222)。持久保存提供方(224)可连接到实例存储(220)以及应用程序主机(210)(实际上,持久保存提供方可以是应用程序主机(220)的部分),以将命令传递给实例存储(220),并且可响应于所发出的命令(222),跟踪由实例存储所返回的应用程序状态结果(226)。
使应用程序主机(210)和应用程序工具(212)操作相同的实例存储(220)可能存在缺点。例如,在两个进程之间对数据的协调访问可能导致表、页、行、值或实例存储(220)的其它类型的区域的锁定。这样的锁定可具有计算开销,当由应用程序工具(212)之一执行查询时,该计算开销通过使应用程序主机(210)的执行临时阻塞来降低执行实例的速率。在正在执行查询命令时,同一实例存储(220)上的应用程序实例和查询的同时执行,通过对实例持久保存命令进行串行化或延迟可类似地引起应用程序级的锁定开销。
此外,可进行有利于实例执行的实例存储(220)中的数据的存储组织,而不同的存储组织可有利于查询。由于应用程序工具可独立于或者甚至在应用程序主机之后被开发,因此将这些不同的偏好包含在单个存储方案中可能是困难的。
相反,图2的系统(200)可复制实例存储(220)的更新,从而实例执行和查询可彼此相隔离。尽管这种异步的复制可能延迟实例状态变化到查询处理器的传播,但很多种类的应用程序工具(212)对该延迟是不敏感的。例如,交互式应用程序已经被显示信息和用户可输入命令的速率所限制。报告应用程序可以低优先级在后台运行,并且反映在浏览报告之前就已经存在数小时的结果。历史纪录可对实例状态中正在进行的变化不敏感。这些类型的延迟可缩小传播对查询中使用的实例存储(220)的更新的异步延迟。
图2的系统可包括诸如通过实例存储(220)和/或持久保存提供方(224)连接到应用程序主机(210)的结果队列(240)。结果队列可以是持久存储的形式,诸如持久数据库。结果队列(240)可从提供应用程序工具(212)要查询的状态更新的表示的后端系统中异步地解耦合与由应用程序主机(210)运行的应用程序实例正在交互的前端系统(诸如持久保存提供方(224)和实例存储(220))。由于此解耦合,后端系统(可包括一个或多个附加队列)的引入对于更新的所感知的延迟具有很小或者没有影响,该后端系统用于传播对服务查询中使用的应用程序实例的状态进行的更新的表示。
仍参考图2,应用程序主机(210)可被配置为执行实例持久保存命令(222)以更新实例存储(220)中实例状态的表示。应用程序主机(210)还可具有应用程序工具(212)感兴趣的但不是将要存储到实例存储(220)中的实例状态的部分的应用程序数据(242)。
持久保存提供方(224)可被配置为向实例存储(220)提供合适的实例持久保存命令(222)。响应于该实例持久保存命令(222),实例存储(220)可存储由实例持久保存命令(222)所表示的更新的表示(244),并且可向持久保存提供方(224)提供实例持久保存命令(222)的结果(226)。
持久保存提供方(224)可响应于实例持久保存命令(222)的结果(226)来创建结果(245)。结果(245)可类似于结果(226),但使用结果(226)中没有的来自应用程序主机的应用程序数据(242)对其进行补充。此外,结果(245)可排除实例持久保存命令(222)的结果(226)的短暂部分。
图3示出应用程序主机(210)通过持久保存提供方(224)将“保存实例”命令传递到实例存储(220)的情形,可处理命令(322)以对实例状态更新表示(244)作出相应的改变。实例存储(220)可将结果(326)返回给持久保存提供方(224),该结果可包括表示更新的以下数据:“写数据:奶酪=瑞士干酪(Cheese=Swiss);上一次更新:09年12月17日01:35;未锁定实例”。应用程序主机(210)可向结果(326)添加应用程序数据(342)(可包括“上一动作:批准抵押”)以生成结果(345)。结果(345)还可将短暂的“未锁定实例”数据从结果(326)中省略。因此,通过将应用程序数据(342)“上一动作”添加到结果(326)并且将短暂的“未锁定”动作从结果(326)中移除,可从结果(326)生成结果(345)。可通过各种模块中的一个或多个来实现结果(345)的生成,诸如应用程序主机(210)、持久保存提供方(224)、实例存储(220)、和/或结果队列(240)。
回头参考图2,持久保存提供方(224)可将结果(245)排入到结果队列(240)中。可在事务下执行实例持久保存命令(222),其中作为事务的部分原子地进行对应用程序状态的改变、对实例状态的改变、以及将作为状态更新表示(246)的结果排入到结果队列(240)中。应用程序主机(210)、实例存储(220)以及结果队列(240)可被配置为响应于实例持久保存命令(222)而参与这样的事务,该实例持久保存命令用于更新运行在应用程序主机(210)上的应用程序的实例的状态。每个这样的事务包括响应于用于更新应用程序实例的状态的实例持久保存命令(222)来启动事务;将更新的第一表示作为表示(244)的部分存储到实例存储(220)中;将更新的第二表示作为表示(246)的部分存储到结果队列(240)中;并且提交事务。
仍参考图2,一个或多个查询服务(260和262)可连接到结果更新发布方(270),该结果更新发布方进而连接到结果队列(240)。查询服务(260)通过将订阅信息(272)发送到与结果队列(240)连接的结果更新发布方(270)来注册对接收实例持久保存命令结果的兴趣。订阅信息(272)可包括过滤器,该过滤器可在订阅中包括例如实例持久保存命令结果的全部,或者,可替换的,仅实例持久保存命令结果的一部分。例如,过滤器可在订阅中仅包括用于实例123的实例持久保存命令结果、仅用于下午5点以后运行的命令的实例持久保存命令结果、或者仅设置特定变量的值的实例持久保存命令结果。除了订阅过滤器,订阅信息(272)还可包括用于订阅查询服务(260)的联系人信息。
结果更新发布方(270)通过将实例持久保存命令结果(274)从结果队列(240)中出列来处理已排队的更新表示(246)。出列的实例持久保存命令结果(274)的集合之间的边界可不同于对应的结果(245)被排入时的边界。例如,持久保存提供方(224)可排入用于单个事务下所进行的全部改变的一批实例持久保存命令结果(245),而结果更新发布方可单独地接收出列结果(274)中的每个改变。
结果更新发布方(270)可应用订阅信息(272)来向订阅者中的每一位发布实例持久保存命令结果(276),订阅者的订阅过滤器与实例持久保存命令结果(274)的出列集合相匹配。可通过各种方式中的任一种来发布实例持久保存命令结果。例如,发布方(270)可通过将发布结果(276)作为消息或事件发送来将结果(276)推至订阅者查询服务(260);或者可创建订阅者可日后从中阅读已发布的结果(276)的结果光标。结果光标可在它们中间共享已发布的实例持久保存命令结果(276)的单个拷贝,而不是为每个订阅者查询服务(260和262)复制结果。
无需锁定实例存储(220)可实现结果(274和276)的处理和发布。因此,相对于实例存储(220)中的操作可异步地进行该发布。
每个查询服务(260和262)可连接到查询存储(280),并且被配置为使用接收到的实例持久保存命令结果(276)来执行对查询存储(280)的更新(278),从而查询存储(280)可包括对应用程序实例的状态进行的更新的表示,该应用程序实例在实例存储(220)中由应用程序主机(210)托管,且对应于查询服务(260)接收的已发布的结果(276)。查询存储(280)可以是各种类型的存储中的任一种,诸如一种持久保存或非持久保存存储。在图2中出于简便起见,查询存储(280)被示为用于一个查询服务(260),但不用于另一个查询服务(262)。但是,应当理解,另一个查询服务(262)也可更新它自己的查询存储。此外,系统(200)可包括单个查询服务,或者它可包括比图2中所示的更多的查询服务。同样,系统(200)可包括更多或更少的其他所示模块,诸如更多的应用程序主机等。
仍参考图2,依赖于如何配置订阅过滤器,查询存储(280)可镜像实例存储(220)或者可仅代表实例存储(220)的部分。此外,查询存储(280)可包括实例存储(220)中没有的附加的应用程序信息。
实例持久保存命令结果可由系统(200)中的各种模块进行变换。例如,查询服务(260)可在使用已发布的实例持久保存命令结果(276)来更新查询存储(280)之前执行对它们的变换。同样,查询存储(280)的组织可与实例存储(220)的组织大不相同。例如,查询存储(280)可以是分布式高速缓存,而实例存储(220)可以是关系数据库。查询存储(280)的模式可包含专用于与查询存储(280)进行交互的应用程序工具(212)的表和列,诸如例如用于由不是实例存储(220)的一部分的应用程序主机(210)提供的应用程序数据(242)的预定义列。
应用程序工具(212)集合可在对应的查询存储(280)中查询信息。查询的执行可独立于用于实例存储(220)的存储组织和运行时伪像,从而无需锁定实例存储(220)可更新查询存储(280)并且查询可运行在查询存储(280)上。这样,实例存储(220)上的操作可与查询存储(280)上的操作异步地运行。
有时,对实例存储(220)和查询存储(280)的内容进行初始同步或重新同步可能是有益的。这些存储的内容的同步是在两个资源之间的一种类型的传输,但可存在用于执行这种传输操作的不同策略。
例如,查询存储(280)可能不是耐久的,或者可能不存在捕捉由集合(212)中应用程序工具所请求的事件的订阅者。为了将这样的查询存储(280)与实例存储(220)进行同步,查询服务(260)可向发布方(270)发送与实例存储进行同步的请求(未示出)。发布方(270)可通过向实例存储(220)发送对同步信息的同步请求(290)来进行响应,诸如对之前的实例持久保存命令结果的重传。实例存储(220)可通过以普通方式将同步信息排入到结果队列(240)中来发送所请求的同步信息(诸如以实例持久保存命令结果(245)的形式)进行响应。发布方(270)以普通方式将来自队列(240)的这些实例持久保存命令结果(274、276)发布到查询服务(260和/或262)中的一个或多个。
重传的实例持久保存命令结果(245)可能不同于那些原始传输的。将参照图4讨论这一差别的示例。如图4所示,发给实例存储(220)的一系列命令(422)导致以下结果序列(426)被返回到持久保存提供方(图4中未示出):创建实例5;实例5奶酪=瑞士干酪;创建实例6;实例6奶酪=菠萝伏洛干酪(Cheese=Provolone);实例6奶酪=格里尔干奶酪(Cheese=Gruyere);删除实例5。这样,实例5已被删除,并且实例6奶酪的值以前是“菠萝伏洛干酪”,但已被重写为“格里尔干奶酪”。实例存储(220)中的实例状态的更新表示(444)可能仅反映当前的状态。若是这样,则当前的状态可仅指示实例6声明包括奶酪=格里尔干奶酪,没有指示存在实例5,并且没有指示实例6奶酪之前已被设置为值“格里尔干奶酪”。因此,同步结果可指示导致更新表示(444)中的当前状态的结果,但不是整个结果序列(426)的历史。因此,在重写或删除实例状态的部分之后,重传的实例持久保存命令结果(445)可反映若干实例持久保存命令(422)的累计结果,而不是命令(422)中的每一个的中间结果。或者,实例存储(220)可保留命令(422)和/或结果序列(426)的历史中的某些或全部,使得同步结果(445)可代表上述历史的全部或部分。
回头参考图2,实例持久保存命令结果(245)和更新表示(444)可具有相关联的时戳和/或序列号。结果更新发布方(270)和实例存储(220)可使用这些标识符来对实例存储(220)的仅部分进行重新同步。例如,结果更新发布方(270)可指示它只想要用于可与2009年8月份相关的实例状态更新的同步信息。作为另一个示例,结果更新发布方(270)可指示它只想要对之前已被发送的具有同步号码1401-1420的实例持久保存命令结果(245)的重传。
类似地,结果更新发布方(270)可将同步请求限制为实例存储(220)的仅部分,诸如特定实例或特定变量的值。结果更新发布方(270)可通过从同步请求(290)中排除实例持久保存命令结果(245)不会通过订阅过滤器中的任一个的要求的实例存储中的部分,来使用由订阅查询服务(260和/或262)提供的订阅过滤器以构建这个有界的请求。
一旦接收以已发布的结果(276)的形式的同步信息,查询服务可使用该同步信息来对查询存储(280)的至少部分和实例存储(220)的至少部分进行同步,诸如通过以普通方式使用所发布的结果(276)来更新查询存储(280)。
用于在模块之间传输数据(诸如应用程序数据以及用于命令、结果、订阅信息、更新和查询的数据)的图2的模块之间的连接可以各种方式来实现。例如,可通过函数调用或应用程序编程接口调用的方式实现应用程序主机(210)和持久保存提供方(224)之间的连接。实例存储(220)、结果队列(240)和查询存储(280)可以都是数据库,并且这些数据库和其他模块之间的连接可利用数据库连接。或者,到实例存储(220)、结果队列(240)和/或查询存储(280)的连接中的某些或全部可使用存储应用程序编程接口来实现。发布方(270)和查询服务(260)可经由网络消息传送连接来连接。代替这些类型的连接和/或除了这些类型的连接之外,还可使用模块之间的其它类型的连接。
III.应用程序实例和查询存储技术
现在将讨论若干应用程序实例和查询存储技术。可以在计算环境中执行这些技术中的每一个。例如,可在包括至少一个处理器和存储器的计算机系统中执行每种技术,该存储器包括存储于其上的、在由该至少一个处理器执行时使该至少一个处理器执行该技术的指令(存储器存储指令(例如,对象代码),并且当处理器执行这些指令时,处理器执行该技术)。类似地,一个或多个计算机可读存储介质可具有收录于其上的计算机可执行指令,该些指令在由至少一个处理器执行时使该至少一个处理器执行该技术。
参照图5,将讨论实例和查询存储技术。技术可包括发出用于更新应用程序的实例的状态的实例持久保存命令(510)。响应于该持久保存命令,可启动关于实例存储的事务(520)。作为事务的部分,可将更新的第一表示存储到实例存储中(530),并可将更新的第二表示存储到队列中(540)。在存储第一和第二表示之后可提交该事务(550)。在提交事务之后(550),可处理更新的第二表示以将更新的第三表示存储到查询存储中(560)。可以标准的方式,诸如使用标准数据库存储技术,执行第一、第二和第三表示的存储。事务可包括锁定实例存储的至少一部分,但可实现更新的第二表示的处理而无需锁定实例存储。技术可还包括在查询存储中查询第三表示而无需锁定实例存储。
更新的第一、第二和第三表示可以彼此相同,但可以彼此不同。例如,技术可包括使用第一表示中没有的应用程序数据来补充更新的第二表示。同样,实例存储可包括查询存储中没有的信息,诸如关于应用程序实例的状态的信息。处理更新的第二表示以将更新的第三表示存储到查询存储中可包括将过滤器应用到第二表示中。
现在参照图6,将讨论另一个实例和查询存储技术。技术包括从查询服务接收对应用程序实例状态更新的结果的订阅请求(610)。订阅请求可包括过滤器,并且还可包括其他信息,诸如用于订阅发送订阅请求的查询服务的联系人信息。技术还可包括从结果队列接收一组一个或多个应用程序实例状态更新的结果(620)。可将来自查询服务的过滤器应用于该组结果(630),从而将满足过滤器的一组要求的来自该组的一个或多个结果发布到查询服务(640)。可将与被发布到查询服务的结果相对应的一个或多个应用程序实例状态更新的一个或多个表示存储到查询存储中(650)。
图6的技术还可包括将与该组结果相对应的应用程序实例状态更新的表示存储到实例存储中。无需锁定实例存储就可实现发布到查询服务(640)以及存储到查询存储中(650)。此外,技术还包括从查询服务接收与实例存储进行同步的请求。响应于同步的请求,可从实例存储请求同步信息。可从实例存储接收所请求的同步信息,并且可向查询服务转发该同步信息的至少一部分。该同步信息的至少一部分可用于对查询存储的至少一部分和实例存储的至少一部分进行同步。
图6的技术可包括发出用于更新应用程序的应用程序实例的状态的实例持久保存命令。响应于该持久保存命令,可启动应用程序和实例存储之间的事务。作为事务的一部分,可将更新的第一表示存储到实例存储中,并可将更新的第二表示存储到队列中。在提交事务之后,可处理第二表示以将更新的第三表示存储到查询存储中。
尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。更确切而言,上述具体特征和动作是作为实现权利要求的示例形式公开的。
Claims (10)
1.一种用于应用程序实例的计算机实现的方法,包括:
发出用于更新应用程序的实例的状态的实例持久保存命令(222);
响应于所述持久保存命令(222),启动关于实例存储(220)的事务;
作为所述事务的一部分,将所述更新的第一表示(244)存储到所述实例存储(220)中;以及
作为所述事务的一部分,将所述更新的第二表示(246)存储到队列(240)中;
在存储所述第一表示(244)和所述第二表示(246)之后提交所述事务;以及
在提交所述事务之后,处理所述更新的所述第二表示(246)以将所述更新的第三表示(282)存储到查询存储(280)中;
其中所述更新的第一、第二和第三表示分别包括一个或多个应用程序实例的状态,所述第二表示和所述第三表示包括所述第一表示的至少一部分。
2.如权利要求1所述的方法,其特征在于,所述事务包括锁定所述实例存储的至少一部分,但实现对所述更新的所述第二表示的处理无需锁定所述实例存储。
3.如权利要求1所述的方法,其特征在于,还包括在所述查询存储中查询所述第三表示而无需锁定所述实例存储。
4.如权利要求1所述的方法,其特征在于,所述更新的所述第二表示不同于所述更新的所述第一表示。
5.如权利要求4所述的方法,其特征在于,处理所述更新的所述第二表示以将所述更新的第三表示存储到查询存储中包括:将过滤器应用到所述第二表示中。
6.一种计算机系统,包括:
应用程序模块(210),被配置为运行一个或多个应用程序实例;
实例存储模块(220),连接到所述应用程序模块(210);
队列模块(240),连接到所述应用程序模块(210),其中所述应用程序模块(210)、所述实例存储模块(220),和所述队列模块(240)被配置为响应于用于对运行于所述应用程序模块上的应用程序的一个或多个实例的一个或多个状态的进行更新的实例持久保存命令(222)而参与事务,所述事务中的每一个包括:
响应于用于更新应用程序实例的状态的实例持久保存命令(222)启动所述事务;
将所述更新的第一表示(244)存储到所述实例存储模块(220)中;
将所述更新的第二表示(246)存储到所述队列模块(240)中;以及
提交所述事务;
发布方模块(270),连接到所述队列模块(240);
一个或多个查询服务模块(260),连接到所述发布方模块(270),所述发布方模块(270)被配置为处理所述队列模块(240)中的更新的第二表示(246)以将来自所述队列模块的结果(276)发布到所述一个或多个查询服务模块(260、262),实现所述处理和发布无需锁定所述实例存储模块(220);以及
一个或多个查询存储模块(280),连接到所述一个或多个查询服务模块(260、262),所述一个或多个查询服务模块(260、262)中的每一个被配置为通过将对应于所接收的结果(276)的更新的第三表示(282)存储到查询存储模块(280)中来响应所接收的结果(276);
其中所述更新的第一、第二和第三表示分别包括一个或多个应用程序实例的状态,所述第二表示和所述第三表示包括所述第一表示的至少一部分。
7.如权利要求6所述的计算机系统,其中所述一个或多个查询存储模块中的至少一个被配置为服务来自应用程序工具的查询。
8.如权利要求6所述的计算机系统,其特征在于,
所述一个或多个查询服务模块被配置为向所述发布方模块发送订阅信息;以及
所述发布方模块被配置为应用所述订阅信息来将结果发布到所述查询服务模块。
9.如权利要求8所述的计算机系统,其特征在于,所述一个或多个查询服务模块中的至少一个被配置为将包含过滤器的订阅信息发送到所述发布方模块。
10.如权利要求6所述的计算机系统,其特征在于,
所述一个或多个查询服务模块中的一个查询服务模块被配置为向所述发布方模块发送与所述实例存储模块进行同步的请求;
所述发布方模块被配置为通过向所述实例存储模块发送对同步信息的请求来响应对同步的所述请求;
所述实例存储模块被配置为通过将所请求的同步信息发送到所述队列模块来响应对同步信息的所述请求;以及
所述发布方模块被配置为将来自所述队列模块的所述同步信息发布到所述一个或多个查询服务模块中的至少一个。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210592147.5A CN103049565B (zh) | 2010-07-27 | 2011-07-26 | 应用程序实例和查询存储 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/843,888 US8903782B2 (en) | 2010-07-27 | 2010-07-27 | Application instance and query stores |
US12/843,888 | 2010-07-27 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210592147.5A Division CN103049565B (zh) | 2010-07-27 | 2011-07-26 | 应用程序实例和查询存储 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102270155A CN102270155A (zh) | 2011-12-07 |
CN102270155B true CN102270155B (zh) | 2015-01-14 |
Family
ID=45052466
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110219944.4A Expired - Fee Related CN102270155B (zh) | 2010-07-27 | 2011-07-26 | 应用程序实例和查询存储 |
CN201210592147.5A Expired - Fee Related CN103049565B (zh) | 2010-07-27 | 2011-07-26 | 应用程序实例和查询存储 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210592147.5A Expired - Fee Related CN103049565B (zh) | 2010-07-27 | 2011-07-26 | 应用程序实例和查询存储 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8903782B2 (zh) |
EP (1) | EP2598985A4 (zh) |
CN (2) | CN102270155B (zh) |
AU (1) | AU2011282969B2 (zh) |
WO (1) | WO2012015673A2 (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110179303A1 (en) * | 2010-01-15 | 2011-07-21 | Microsoft Corporation | Persistent application activation and timer notifications |
US11238056B2 (en) | 2013-10-28 | 2022-02-01 | Microsoft Technology Licensing, Llc | Enhancing search results with social labels |
US9542440B2 (en) | 2013-11-04 | 2017-01-10 | Microsoft Technology Licensing, Llc | Enterprise graph search based on object and actor relationships |
US11645289B2 (en) | 2014-02-04 | 2023-05-09 | Microsoft Technology Licensing, Llc | Ranking enterprise graph queries |
US9870432B2 (en) | 2014-02-24 | 2018-01-16 | Microsoft Technology Licensing, Llc | Persisted enterprise graph queries |
US11657060B2 (en) | 2014-02-27 | 2023-05-23 | Microsoft Technology Licensing, Llc | Utilizing interactivity signals to generate relationships and promote content |
US10757201B2 (en) | 2014-03-01 | 2020-08-25 | Microsoft Technology Licensing, Llc | Document and content feed |
US10255563B2 (en) | 2014-03-03 | 2019-04-09 | Microsoft Technology Licensing, Llc | Aggregating enterprise graph content around user-generated topics |
US10394827B2 (en) | 2014-03-03 | 2019-08-27 | Microsoft Technology Licensing, Llc | Discovering enterprise content based on implicit and explicit signals |
US10169457B2 (en) | 2014-03-03 | 2019-01-01 | Microsoft Technology Licensing, Llc | Displaying and posting aggregated social activity on a piece of enterprise content |
US10061826B2 (en) | 2014-09-05 | 2018-08-28 | Microsoft Technology Licensing, Llc. | Distant content discovery |
US10007578B2 (en) | 2016-01-12 | 2018-06-26 | International Business Machines Corporation | Application performance using package and catalog cache prefetching during database recovery |
CN109120692B (zh) * | 2018-08-16 | 2021-09-28 | 北京百度网讯科技有限公司 | 用于处理请求的方法和装置 |
CN110427386B (zh) * | 2019-08-05 | 2023-09-19 | 广州方硅信息技术有限公司 | 数据处理方法、装置及计算机存储介质 |
CN115080101B (zh) * | 2022-06-30 | 2023-08-18 | 北京亚控科技发展有限公司 | 应用管理方法、应用订阅方法及相关设备 |
CN117521152B (zh) * | 2024-01-05 | 2024-05-07 | 同盾科技有限公司 | 数据更新方法、匿踪查询方法、电子设备及介质 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6275831B1 (en) * | 1997-12-16 | 2001-08-14 | Starfish Software, Inc. | Data processing environment with methods providing contemporaneous synchronization of two or more clients |
US6636886B1 (en) | 1998-05-15 | 2003-10-21 | E.Piphany, Inc. | Publish-subscribe architecture using information objects in a computer network |
US6636242B2 (en) * | 1999-08-31 | 2003-10-21 | Accenture Llp | View configurer in a presentation services patterns environment |
US6789127B1 (en) * | 2000-02-15 | 2004-09-07 | Lucent Technologies Inc. | Preparation for network interface recognition of network packet portion with declarative notation for field thereof and constraint therefor |
GB2374951B (en) * | 2001-04-24 | 2005-06-15 | Discreet Logic Inc | Asynchronous database updates |
US7370064B2 (en) | 2002-08-06 | 2008-05-06 | Yousefi Zadeh Homayoun | Database remote replication for back-end tier of multi-tier computer systems |
CA2472887A1 (en) * | 2003-06-30 | 2004-12-30 | Gravic, Inc. | Methods for ensuring referential integrity in multithreaded replication engines |
CN100547583C (zh) * | 2003-08-14 | 2009-10-07 | 甲骨文国际公司 | 数据库的自动和动态提供的方法 |
JP4249605B2 (ja) | 2003-12-25 | 2009-04-02 | エスアーペー アーゲー | クライアントサーバシステムおよびキャッシュ制御方法ならびにコンピュータプログラム |
ATE437409T1 (de) * | 2005-04-18 | 2009-08-15 | Research In Motion Ltd | System und verfahren der anwendungspersistenz |
US7613749B2 (en) | 2006-04-12 | 2009-11-03 | International Business Machines Corporation | System and method for application fault tolerance and recovery using topologically remotely located computing devices |
US20070244975A1 (en) * | 2006-04-18 | 2007-10-18 | The Southern Company | System and methods for processing operating experience data |
US8433730B2 (en) | 2006-10-31 | 2013-04-30 | Ariba, Inc. | Dynamic data access and storage |
US20080270351A1 (en) | 2007-04-24 | 2008-10-30 | Interse A/S | System and Method of Generating and External Catalog for Use in Searching for Information Objects in Heterogeneous Data Stores |
JP2009080624A (ja) | 2007-09-26 | 2009-04-16 | Toshiba Corp | 情報表示装置、方法及びプログラム |
US20090144338A1 (en) | 2007-11-30 | 2009-06-04 | Yahoo! Inc. | Asynchronously replicated database system using dynamic mastership |
US8301593B2 (en) | 2008-06-12 | 2012-10-30 | Gravic, Inc. | Mixed mode synchronous and asynchronous replication system |
US7962458B2 (en) * | 2008-06-12 | 2011-06-14 | Gravic, Inc. | Method for replicating explicit locks in a data replication engine |
US20100299664A1 (en) * | 2009-05-21 | 2010-11-25 | Salesforce.Com, Inc. | System, method and computer program product for pushing an application update between tenants of a multi-tenant on-demand database service |
US20110196900A1 (en) * | 2010-02-09 | 2011-08-11 | Alexandre Drobychev | Storage of Data In A Distributed Storage System |
-
2010
- 2010-07-27 US US12/843,888 patent/US8903782B2/en not_active Expired - Fee Related
-
2011
- 2011-07-21 EP EP11812974.1A patent/EP2598985A4/en not_active Withdrawn
- 2011-07-21 AU AU2011282969A patent/AU2011282969B2/en not_active Ceased
- 2011-07-21 WO PCT/US2011/044907 patent/WO2012015673A2/en active Application Filing
- 2011-07-26 CN CN201110219944.4A patent/CN102270155B/zh not_active Expired - Fee Related
- 2011-07-26 CN CN201210592147.5A patent/CN103049565B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN102270155A (zh) | 2011-12-07 |
CN103049565B (zh) | 2016-11-23 |
CN103049565A (zh) | 2013-04-17 |
US8903782B2 (en) | 2014-12-02 |
EP2598985A2 (en) | 2013-06-05 |
AU2011282969B2 (en) | 2014-02-13 |
WO2012015673A2 (en) | 2012-02-02 |
EP2598985A4 (en) | 2015-01-07 |
AU2011282969A1 (en) | 2013-02-28 |
US20120030169A1 (en) | 2012-02-02 |
WO2012015673A3 (en) | 2012-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102270155B (zh) | 应用程序实例和查询存储 | |
JP5818394B2 (ja) | 大量データプラットフォームを操作するシステム及び方法 | |
CN100386736C (zh) | 用于数据库的事务一致变化的跟踪的方法和系统 | |
CN100440205C (zh) | 利用联机分析处理变型先发地高速缓存的系统和方法 | |
CN102915331A (zh) | 用于云选择的协调引擎 | |
CN111901294A (zh) | 一种构建在线机器学习项目的方法及机器学习系统 | |
CN103582868A (zh) | 操作者状态检查点 | |
CN105393243A (zh) | 事务定序 | |
CN102236705A (zh) | 数据库重放的细粒度同步 | |
CN1983282A (zh) | 同步企业应用变化历史的装置、系统以及方法 | |
CN111709527A (zh) | 运维知识图谱库的建立方法、装置、设备及存储介质 | |
US8417725B2 (en) | Consolidating related task data in process management solutions | |
CN110688541A (zh) | 一种报表数据的查询方法、装置、存储介质及电子设备 | |
CN102523242B (zh) | 用于计算机群集中的目标状态通信的方法和系统 | |
CN103235817A (zh) | 一种大规模感染控制数据存储处理方法 | |
CN101859319A (zh) | 分析分布式数据集的数据系统架构 | |
CN102521338B (zh) | 对于数据表示项目返回的占位符 | |
JP2011258122A (ja) | データ転送装置及びデータ転送方法及びデータ転送プログラム及びデータ連携システム | |
CN101266617A (zh) | 用于存储平台中的锁定和隔离的系统和方法 | |
CN116226112A (zh) | 数据清洗方法、装置、存储介质及电子设备 | |
JP3999251B2 (ja) | フロントエンド処理機能を有する情報処理システム | |
CN100445989C (zh) | 用于生成对关于选择对象的信息的请求的系统和方法 | |
CN114547106A (zh) | 数据查询方法及装置、存储介质、计算机系统 | |
CN100552665C (zh) | 信息的再现独立持久性 | |
CN110781226B (zh) | 数据分析方法、装置、存储介质、设备及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150429 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150429 Address after: Washington State Patentee after: MICROSOFT TECHNOLOGY LICENSING, LLC Address before: Washington State Patentee before: Microsoft Corp. |
|
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150114 |
|
CF01 | Termination of patent right due to non-payment of annual fee |