CN113841135A - Dbms中的服务管理 - Google Patents

Dbms中的服务管理 Download PDF

Info

Publication number
CN113841135A
CN113841135A CN202080032396.1A CN202080032396A CN113841135A CN 113841135 A CN113841135 A CN 113841135A CN 202080032396 A CN202080032396 A CN 202080032396A CN 113841135 A CN113841135 A CN 113841135A
Authority
CN
China
Prior art keywords
service
services
dbms
dependencies
service manager
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.)
Pending
Application number
CN202080032396.1A
Other languages
English (en)
Inventor
R·盖塞尔哈特
K·斯托尔策
F·贝尔
L·奥里维拉利扎多
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN113841135A publication Critical patent/CN113841135A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/168Details of user interfaces specifically adapted to file systems, e.g. browsing and visualisation, 2d or 3d GUIs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/252Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Human Computer Interaction (AREA)
  • Computational Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Algebra (AREA)
  • Probability & Statistics with Applications (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及一种用于管理DBMS(102,202)中的多个服务(108‑114;208‑214)的计算机实现的方法。服务分别被配置为处理存储在或被接收以存储在DBMS管理的数据库(116‑122;216‑222)中的数据。该方法包括:提供(302)操作性地耦合到DBMS的服务管理器(106);在服务管理器处在DBMS的运行时自动地和动态地注册(304)多个服务;以及由服务管理器自动管理(306)所述多个注册服务中的不同服务之间的依赖关系。

Description

DBMS中的服务管理
背景技术
本发明涉及数据库管理***(DBMS),更具体地涉及在DBMS上下文中的服务的管理。
在DBMS的上下文中,经常需要复制、分析、检查或以其他方式处理数据以用于许多不同的任务。这些任务中的一些能够以服务的形式实现。一些服务可以作为DBMS的集成部分来提供,而其他服务可以稍后—例如在安装DBMS的插件或附加件时—被添加。一些服务可以仅响应于用户的显式查询而被实例化,其他服务可以以在后台中运行的守护程序的形式被实现。例如,IBM的IBM Db2分析加速器(IDAA)包括基础结构服务,如“配置器”(Configurator)或“***”(Tracer),包括提供对目录中的元数据的访问的服务,并且进一步包括例如由“***维护”守护程序调度的后台服务。
由于集成到DBMS中的服务的类型的异质性,并且由于一些服务可以根据用户特定的需要在安装DBMS之后添加,所以对由DMBS提供的所有数据处理服务的管理是复杂且易于出错的任务。由于在不同服务之间(例如,在服务的实例化或关闭期间)经常存在复杂的依赖关系的事实,情况进一步复杂化。甚至更糟糕的是,一些服务是基于惰性实例化(lazyinstantiation)来实现的。这意味着不能预先预见特定服务被实例化的时间。
现有技术的DBMS使用单个、中央的软件代码段,其列出由DBMS支持的所有服务。包括在单个源代码文件中的服务的该中央列表难以维护,因为例如当包括一个或多个附加服务的新程序库在DBMS的运行时被加载到DBMS中时,该列表变得容易过时。在源代码中指定该列表的情况下,必须在每次源代码修改时重新编译相应的代码。所以,使用中央服务列表来协调由DBMS支持的服务的实例化和关闭是易于出错的、复杂的和高度耗时的。
指定和协调多个服务的实例化的中央列表或文件的另一个缺点在于,在必须管理大量服务(例如,几百或甚至几千个服务)的情况下,那些文件倾向于变得高度复杂。在这种情况下,可能发生的是,集中地指定不同服务的依赖关系的源代码包括程序员难以识别的循环依赖关系(cyclic dependencies)。这样的循环依赖关系可导致无限循环和程序故障。
此外,使用中央列表来结合惰***实例化来协调服务实例化与增加的资源消耗的缺点相关联:为了避免当在不可预见的时刻服务被惰性实例化时的服务实例化错误,一种常见的策略是在启动可能被惰性实例化的特定服务所要求的DBMS时,默认实例化所有服务。虽然该策略可以帮助避免与惰性实例化相关联的错误,但是由于服务可能不必要地被实例化,其增加了CPU和内存资源的消耗。例如,如果特定服务被实例化仅仅是为了确保响应于用户查询而被惰性实例化的服务的正确实例化,则在从未收到关于被惰性实例化服务的用户查询的情况下,此服务可能会不必要地消耗资源。
所以,当前DBMS中的服务管理是麻烦的、易于出错的任务,其通常导致程序故障、高CPU和存储器消耗,并且是在不修改和重新编译源代码的情况下不能集成新服务和程序库的不灵活的***。
发明内容
本发明涉及如在独立权利要求中所指定的用于管理DBMS中的多个服务的计算机实现的方法、计算机可读存储介质和相应的计算机***。在从属权利要求中给出了本发明的实施例。如果本发明的实施例不相互排斥,则它们可以自由地彼此组合。
在一个方面,本发明涉及一种用于管理DBMS中的多个服务的计算机实现的方法。这些服务分别被配置用于处理存储在或被接收以存储在由DBMS管理的数据库中的数据。该方法包括:提供操作性地耦合到DBMS的服务管理器;在服务管理器处在DBMS的运行时自动和动态地注册该多个服务;由服务管理器自动管理该多个已注册服务中的不同服务之间的依赖关系。
在另一方面,本发明涉及一种计算机可读存储介质,该计算机可读存储介质具有随其体现的程序指令,程序指令可由处理器执行以使该处理器执行用于管理DBMS中的多个服务的方法。这些服务分别被配置用于处理存储在或被接收以存储在由DBMS管理的数据库中的数据。该方法包括管理DBMS中的多个服务。这些服务分别被配置用于处理存储在或被接收以存储在由DBMS管理的数据库中的数据。该方法包括:提供操作性地耦合到DBMS的服务管理器;在服务管理器处在DBMS的运行时自动和动态地注册该多个服务;由服务管理器自动管理该多个已注册服务中的不同服务之间的依赖关系。
在进一步方面,本发明涉及一种计算机***,该计算机***包括DBMS和操作地耦合到该DBMS的服务管理器。服务管理器被配置用于在DBMS的运行时间在服务管理器处自动和动态地注册多个服务,这些服务分别被配置用于处理存储在或被接收以存储在由DBMS管理的数据库中的数据。自动管理该多个已注册服务中的不同服务之间的依赖关系。
附图说明
在以下实施例中,仅以举例的方式,参考附图更详细地解释本发明的实施例,在附图中:
图1描绘了包括DBMS和服务管理器的计算机***。
图2描绘了包括DBMS和服务管理器的另一计算机***。
图3是用于管理DBMS中的服务的方法的流程图。
图4描绘了多个服务的依赖关系。
图5示出了较大***架构中的服务和服务管理器的集成。
图6描绘了服务类的源代码的各部分。
图7描绘了用于实现服务的若干对象和接口类的源代码的各部分。
具体实施方式
本发明的实施例可以具有的优点是,提供用于管理DBMS中的多个服务的***和方法,其增加了***的灵活性和可维护性,并且减少了资源消耗,特别是在使用一些服务的惰性实例化的上下文中。可以避免与现有技术的服务管理方法相关联的技术缺点中的一些或全部。
本发明的实施例可以允许在运行时将分别包括一个或多个服务的库动态地加载到DBMS并且在DBMS中实例化新服务,而不需要手动地修改***和/或重新编译代码。
本发明的实施例可以是有利的,因为可以避免现有技术的基于由DBMS支持的服务的单个中央列表的服务管理方法的许多技术缺点:任何服务被自动地并且在运行时间被添加到DBMS并且自己在服务管理器处注册。所以,可能不必修改和重新编译任何源代码。并且,由于服务管理器自动维护服务的依赖关系,包括动态增加的服务的依赖关系,保证了特定服务所需的所有服务在该特定服务被实例化之前,都被服务管理器实例化。这可以允许避免默认地实例化太多的服务,以避免在服务的实例化期间的错误,因为依赖关系是由被适配为自动地和在DBMS的运行时注册新服务的服务管理器管理的。
根据实施例,该方法还包括:在服务管理器处注册服务中的一个服务期间,由服务管理器自动识别该要被注册的一个服务所需的一个或多个其他服务;以及更新所述多个已注册服务、该待注册服务和在该一个服务的注册期间识别的服务之间的依赖关系,使得所述依赖关系还包括该待注册服务和所需的其他服务的依赖关系。
例如,要被注册的特定服务所需的一个或多个其他服务,可以在所述特定服务内,例如,在该服务的源代码中指定,和/或可以由所述特定服务的函数动态地提供给服务管理器。例如,该函数可以是getRequiredServices(获得所需服务)函数,其返回已由被配置为将例如在该服务的源代码或与服务相关联的类文件中指定的所需服务的类名转换成相应的字符串的服务创建的字符串列表。这些字符串可以由服务管理器用作用于注册所需服务以及可选地还用于在该特定服务被实例化之前动态地实例化所需服务的自变量。
这可能是有利的,因为该要被注册的一个服务所需的一个或多个服务的类名是在服务自身内被显式地或隐式地指定的,而不是在集中管理的配置文件中指定的。这可以确保能避免对***中的数百或甚至数千个服务的依赖关系进行全局管理。由服务管理器将服务的类名自动转换为用作自变量的字符串用于管理(注册、初始化和/或关闭)服务可能是有益的,因为它可以保证服务名的规范和确定性使用。
根据优选实施例,getRequiredServices函数被配置为在被调用时:将该一个或多个所需服务的类名转换成对应的字符串;将所述一个或多个字符串转换成编译器可检查对象;以及将所述编译器可检查对象返回至调用了getRequiredServices函数的服务管理器。
使用在类的源代码中指定的类名到编译器已知类型的数据对象的自动转换,可使得编译器能够在编译时并且可选地在设计时检查特定服务是否被正确地引用。这可以帮助避免在编程/软件开发期间的打字错误、循环服务依赖关系和/或服务名重复。
在特定服务的依赖关系改变的情况下,不需要更新DBMS的中央服务储存库或重新编译DBMS的源代码。如果服务被修改以使得其另外需要特定的分析或数学服务库,则无论如何该服务的源代码可能需要被修改和重新编译。然而,根据本发明的实施例,将附加服务加载到DBMS本身不需要对中央服务储存库的任何手动修改或重新编译。相反,在一些现有技术***中,服务的源代码以及包括中央服务列表或至少该中央服务列表的DBMS的源代码必须被更新。
根据实施例,服务管理器适于注册动态加载的服务并且根据动态更新的数据结构以适当的顺序实例化新加载的服务中的一个或多个,该动态更新的数据结构包括在服务管理器处注册的所有服务的依赖关系。可以根据需要动态地实例化和关闭服务,而不需要手动地更新任何源代码或中央配置文件。例如,服务管理器可被配置成在DBMS运行时将包括一个或多个新服务的库动态地加载到DBMS中。将库加载到DBMS以便确保可以执行特定动作,例如,一些数据的OLAP分析,例如,特定统计聚类分析。库的加载可以由明确的用户动作触发。所加载的库中的新服务可以对其他服务具有依赖关系,所述其他服务可以是或可以不是所加载的库的和/或已注册的全部服务的一部分。服务库在运行时的加载,可以通过包含在被加载的库中的服务的服务类和接口自动触发包含在被加载的库中的服务的注册。在一些示例示例中,服务的源代码包括对构造器方法或触发其他所需服务的实例化的其他方法(也被称为“函数”)的调用。服务管理器可被配置为在注册过程期间调用任何待注册服务的getRequiredServices方法,识别待注册服务的依赖关系。服务管理器被配置为更新由服务管理器管理的全部服务的依赖关系。
本发明的实施例可以具有进一步的优点:当服务管理器或DBMS启动时,服务管理器不必知道所有服务。相反,可以稍后按需添加服务。动态加载到DBMS中的服务在加载和注册过程期间与服务器管理器交互,使得注册被自动执行,并且提供回调机制,其允许任意方式来实例化服务并引入/注册进一步的依赖关系。可以避免使用中央配置文件或类,其中所有服务都必须通过硬编码在源代码中预先注册,从而大大提高***的灵活性和可维护性。
根据实施例,依赖关系的管理包括根据依赖关系来实例化服务,使得这些服务中的特定服务所需的所有服务在该特定服务被服务管理器实例化之前已经被实例化。
根据实施例,这些服务中的一个或多个是惰性实例化的服务。
根据实施例,多个服务中的至少一些服务表示产品制造过程的工作流内的步骤。至少一些依赖关系表示在产品制造过程中涉及或由产品制造过程处理的物理对象的设备依赖关系、工作流程依赖关系、材料依赖关系和/或供应依赖关系。
例如,DBMS可用于管理包括由企业资源规划(ERP)***生成并使用的数据的一个或多个数据库。许多ERP***的核心功能是“材料要求规划”和“制造资源规划”。
材料要求计划(MRP)包括用于管理制造过程的计算任务,例如生产计划、调度和库存控制。MRP***或子***通常实现以下功能中的一个或多个:确保材料可用于生产并且产品可用于交付给客户;尽可能保持库存材料和产品水平最低;以及计划制造活动、交付进度和购买活动。
制造资源规划(MRP II)包括涉及制造公司的所有资源的有效规划的计算任务。它可以解决单位的运营规划、财务规划,并且可以包括回答“如果-怎么办”问题的模拟能力和闭环MRP的扩展。MRP II***或子***通常实现以下功能中的一个或多个:主生产时间表(MPS)的生成和更新、项目主数据(技术数据)的管理、生产资源数据和其他技术制造数据的管理、材料需求规划(MRP)、产能规划或产能需求规划(CRP)等。
如今越来越多的制造公司不再生产长期不变和未经修改的产品(“库存”)。由于客户需求的频繁改变,这些公司必须能够快速且容易地调整其生产流程,遵循客户偏好的任何新方向。尤其当客户更喜欢有“设计”他们想要购买的产品的机会时,如当汽车制造商允许在订购过程中更改过多的功能,从而使得最终交付的汽车几乎是独一无二的时,制造过程的计划和所需资源的管理变得非常复杂并且难以维护。MRP或MRPII***或子***的不同功能可以作为服务来实现,这些服务是DBMS不可分割的一部分,或者稍后以程序库的形式加载到DBMS中。加载库和包含在其中的服务被注册和/或实例化的时间可能是不可预测的。所以,ERP***可能包括数百或甚至数千个服务,这些服务的管理是一项非常复杂的任务。
本发明的实施例还可以允许以保证适当的制造过程的方式安排其数量和相对依赖关系事先不能预见的巨大数量的服务。由于在服务管理器处基于各个服务以及它们各自的依赖关系的自动和动态注册而去中心化地执行服务注册,所以在制造过程的材料和资源的规划中的依赖关系的管理和更新将变得更加容易。不需要人工维护已注册服务的中央列表。
根据另外的实施例,由服务管理器管理的服务中的至少一些包括用于关闭和重新启动制造厂的工作流中的服务和过程的服务。在服务管理器自动提取或以其他方式动态接收的各个服务内指定的服务依赖关系,反映用于关闭和重新启动制造厂的服务和过程的各个物理要求的依赖关系和各个过程的依赖关系。服务管理器自动地协调临时关机和返回到制造厂的服务,例如用于执行维护或服务任务。在许多工厂中,必须以特定顺序关闭或启动***,以便允许上游***离线或在线。例如,在饮料生产维护时,重要的是先启动供应水的***、再启动在将水转化成高压蒸汽的***、接着启动产生干净蒸汽的***。计划的临时关机中涉及的所有步骤由服务管理器以有效的方式协调,以便避免工作流程的分解、避免对制造过程中涉及的机器的损坏并且避免制造品质量的劣化。沿途的任何故障都可能具有将调度和预算置于风险中的多米诺效应。考虑到此类制造厂的复杂性和规模,协调设备、耗材、产品、零件和工艺之间的所有依赖关系不是一项简单的活动。本发明的实施例可允许将物理对象(例如,设备、货物、中间产品或机器)表示为加载到DBMS中的服务。每个新设备、每个动态生成的产品或中间产品以及各自需要的其他物理对象(机器、零件、其他中间产品或耗材)可以在对应的服务中以服务要求的形式来指定。所以,当加载到DBMS中的服务在服务管理器处自动注册时,可以执行工作流的高度动态适配以及各个服务和工作流任务的实例化的编排。基于人工管理的中央服务列表,现代、高度动态的制造流程所要求的灵活性无法实现。优选地,所有或至少许多服务被实现为单例(singleton)。
根据实施例,依赖关系的管理包括根据依赖关系关闭服务中的一个或多个,使得在关闭一个或多个服务中的任何一个之前,延迟这一个服务的关闭,直到关闭了依赖于所述一个服务的所有服务。
这可以确保服务的关闭不会负面地影响可能依赖于要关闭的服务的其他服务。例如,在复杂的制造流程中,存在特定流程的关闭会中断另一流程、但操作人员可能不知道此依赖关系的风险。本发明的实施例可以确保防止例如由操作人员的错误关闭命令引起的复杂制造流程的不期望的关闭或故障,因为服务的关闭要被一直延迟到没有其他服务再需要该服务。
根据实施例,根据单例设计模式来实现服务中的每一个服务。例如,每个服务可被实现为单例。
这可以反映以下事实:制造过程中所涉及的机器、耗材、产品和中间产品也被认为是“物理单个实例对象”。
根据实施例,服务的依赖关系以一个或多个有向无环图(DAG)的形式表示。
这可以具有以下益处:可以快速遍历图(例如,树)并且可以容易地检测到循环依赖关系。
根据各实施例,服务的依赖关系被表示在单个数据结构中,该单个数据结构由服务管理器在DBMS的运行时间管理并连续更新。特别是当在服务管理器处新注册服务时,执行相关性的更新。
根据一些实施例,多个服务中的一个或多个或全部包括“getServicelnstance”(获得服务实例)。该方法可由服务管理器访问,并且使得服务管理器能够检查私有成员(缓存的单例服务实例)是否已经被初始化。如果已经被初始化,则将现有服务实例直接返回到服务管理器。如果未被初始化,则创建新的服务实例,将其放置到成员变量中,并且及时返回到调用者(例如,服务管理器)以供其首次使用。
根据实施例,该方法包括向DBMS添加附加服务。该添加包括在DBMS运行时在服务管理器处注册该附加服务,并自动更新服务的依赖关系,以使得依赖关系表示现有的和该附加服务的依赖关系。
例如,附加服务的注册可以是可包括其他服务的程序库的一部分。该库在DBMS的运行时被加载到DBMS中,使得其他服务可以利用包含在库中的服务和/或使得库中的服务可以利用已经由服务管理器实例化或至少在服务管理器处注册的服务。
根据实施例,服务在服务管理器处的注册以去中心化注册过程的形式来实现。使用去中心化注册过程意味着DBMS或功能地耦合到DBMS的任何其他***都不包括或使用手动创建和维护的注册服务的列表。
根据各实施例,服务的依赖关系在服务内(例如,在服务的源代码内)被指定,并且在服务在服务管理器处注册服务时被传达给服务管理器。例如,实现服务的类文件的源代码可以包括该服务所需的一个或多个其他服务的类名的列表。所述服务管理器被配置为在注册所述至少一个服务时解析该列表,并且根据所解析的列表来更新依赖关系。
此外或可替代地,多个服务中的每一个包括用于在服务管理器处注册服务的函数。例如,实现服务的服务类或由服务实现的接口类可以包括该函数。用于服务注册的函数可以是例如“registerService”(注册服务)函数。
根据实施例,多个服务中的每一个包括“instantiateService”(实例化服务)函数和“shutdownService”(关闭服务)函数。instantiateService函数和shutdownService函数是服务管理器可访问的(即,可以被服务管理器调用的)。例如,这些函数可以是公共函数。该方法进一步包括:由服务管理器使用多个服务的instantiateService函数和shutdownService函数,用于根据依赖关系动态地协调多个服务的实例化和关闭。优选地,DBMS管理的多个服务的instantiateService函数和shutdownService相同,即具有相同的函数名和相同的自变量列表,而具体实现方式可以因服务而异。这使大量服务的维护和管理变得容易,因为服务管理器可以用少量的命令自动地控制大量服务的实例化和关闭。
根据实施例,多个服务中的每一个包括getRequiredServices(获得所需服务)函数。getRequiredServices函数可以由服务管理器访问。getRequiredServices函数被配置用于返回一个或多个所需服务的名称。每个所需服务是在所述包含getRequiredServices函数的服务被实例化之前需要被实例化的服务。所述多个服务中每个服务的注册包括由服务管理器调用要被注册服务的getRequiredServices函数;自动检查getRequiredService函数返回的所需服务的名称是否标识已注册服务;服务管理器自动对getRequiredService函数返回的尚未注册服务的任何服务进行注册。
例如,服务管理器可以在本地或远程服务库中搜索所需的但尚未注册的服务的名称。
根据实施例,执行getRequiredServices函数包括:将一个或多个所需服务的类名转换成相应的串;将所述一个或多个串转换成编译器可检查对象;以及将编译器可检查对象返回至调用了getRequiredServices函数的服务管理器。
实际上,getRequiredServices函数以标准化(“规范的”)方式转换所识别的类名,该方式甚至可以允许编译器进行自动化对象类型检查。
根据一些实施例,服务管理器被配置为在服务的实例化之前也调用多个服务中的任何一个的getRequiredServices函数。服务管理器被配置为检查getRequiredService函数返回的所需服务的名称是否标识已经实例化的服务;服务管理器自动调用所识别出的getRequiredService函数返回的尚未实例化的所需服务的instantiateService函数。然而,在其他实施例中,服务管理器在准备实例化服务时不调用getRequiredService函数,因为由服务管理器管理的服务的所有依赖关系已经在注册过程期间被识别并且已经被存储在单独的数据结构(例如,有向无环图、树或树集)中。服务管理器被配置为在特定服务被实例化之前分析该依赖关系数据结构,并且在感兴趣的服务被实例化之前自动地实例化要被实例化的感兴趣的服务所需的所有服务。这可以具有以下优点:每个服务仅需要指定所需服务的有限集合,并且不必关心对第二和第三等级的依赖关系,即,不必还指定“所需服务”所需的服务,因为这些第二和第三级需求在所需服务被注册时由服务管理器自动考虑并集成到全局依赖关系数据结构中。
根据实施例,服务管理器被配置成至少在注册服务时更新依赖关系。更新依赖关系包括更新多个已注册服务、待注册服务以及在该一个服务的注册期间中所识别的“所需”服务之间的依赖关系,从而使得依赖关系还包括待注册服务的依赖关系和所需其他服务的依赖关系。
依赖关系可被存储在由服务管理器管理的一个或多个数据结构中。数据结构可以是例如有向无环图或有向无环图的集合。在其他示例性实施例中,表示依赖关系的数据结构还可以是一个列表或一组列表或适合于对多个服务的依赖关系进行编码的任何其他类型的数据结构。
根据实施例,多个服务中的至少一个指定至少一个服务所需的一个或多个其他服务。这些服务也被称为“所需服务”。该一个或多个其他服务的指定可以具有由编译器在编译时间期间检查的类名列表的形式。如果服务类包括所需服务的名称且编译器不能识别其名称与所需服务的名称匹配的类,则在编译服务类时会引发错误。
现有技术的服务管理***(例如,“代码项目”,可通过https:// www.codeproject.com/Articles/5794/Registry-of-Singletons在线获得)不处理服务的自动注册并且不关心管理服务之间的依赖关系。另外,这些***通过串,即源代码或另一文件中的表达式,来标识服务,该源代码或另一文件是以被配置用于编译该服务的编译器不能检查的语法指定的。与使用串来唯一地注册服务相关联的问题是,表示服务的每个串必须是全局唯一的。此外,任何打字错误都可能导致在编译和测试服务源代码之前无法识别的错误。所以,使用非类型化的串来指定服务的源代码中所需服务的名称是易出错的,并且可能导致很晚才发现错误(如果有的话)的情况。
相反,本发明的上述实施例直接使用其他服务的类名,并将它们转换成可指示一个或多个所需服务的编译器可检查对象。这意味着特定服务的源代码包括该特定服务所需的一个或多个其他服务的类名的列表。类名以某个语法包含在特定服务的源代码中,该语法迫使编译器检查类名是否与全部注册服务中的一个的类名相同。通过使用编译器自身使用的完全相同的标识符在服务的源代码中指定所需服务,可以具有以下优点:编译器可能在编译时就已经检查到对无效服务的引用,并且可选地在设计时就已经检查到对无效服务的引用。如果服务类的当前编译的或修改的代码中包含未知的服务类名,编译器将在编译时抛出错误或在设计时创建加下划线的或其他形式的文本突出显示效果。
根据实施例,用于编程服务的设计时环境适于用编译器在服务的设计时识别提及与编译器已知的现有服务类不匹配的服务类名的服务源代码段。在这种情况下,设计时环境被配置为在设计时自动地在该服务类的源代码中突出显示该服务类名。
这可能是有利的,因为导致在服务的源代码中指定的所需服务的名称和表示和/或实现所需服务的类的实际名称的失配的打字错误和其他错误在设计时已经被自动检测到。这可以大大加快服务开发过程,因为错误是在最早的可能阶段被自动识别的。
根据实施例,服务管理器是被实现为DBMS的扩展应用(附加件或插件)的应用的组件,或者是DBMS的集成组件。
例如,DBMS的集成组件可以是程序组件或函数,该程序组件或函数是其是DBMS的核心功能的一部分,并且作为最初由DBMS开发者或供应商提供的DBMS的一部分提供。将服务管理器作为DBMS的集成部分提供可能是有益的,因为DBMS已经提供对要加载到DBMS中的新服务的自动和动态注册和依赖关系检查的支持。
提供服务管理器作为DBM的插件或附加件可能是有益的,因为这允许向现有DBMS补充将新服务自动和动态加载到DBMS中的能力,使得它们与其他服务的依赖关系被自动考虑并集成到现有服务的依赖关系中。
根据实施例,该方法进一步包括:
a)由DBMS接收特定服务的服务请求;
b)由服务管理器在多个服务内识别所请求的服务;
c)由服务管理器识别所请求的服务所需的注册服务中的一个或多个其他服务;
对于所识别的一个或多个其他服务中的每一个:
i.检查该其他服务是否已经被实例化;
ii.如果该其他服务已经被实例化,则转到在步骤c中识别的下一服务;
iii.如果该其他服务尚未被实例化,则实例化该其他服务并且转到在步骤c中识别的下一服务。
这可能是有益的,因为服务管理器被适配为确保任何可能响应于提交给DBMS的用户请求而被惰性实例化的服务可以被实例化,从而没有由非实例化但被需要的其他服务引起的程序故障。
根据一些实施例,服务管理器被配置为将依赖关系存储在具有如由依赖关系定义的逻辑排序次序的数据结构中。在表示服务依赖关系的数据结构中的服务的逻辑排序顺序,可以用于协调由服务管理器管理的多个服务的实例化和关闭。例如,拓扑排序次序可以用公知的算法显式地确定,或者通过进行在前面两个段落中描述的伪代码中指定的深度优先搜索来隐式地确定。
在此使用的术语“惰性初始化”是延迟对象(在这种情况下是服务)的创建直到其首次被需要的策略。这是一种惰性评估,其具体地指代对象或其他资源的实例化。提供惰性实例化的服务可以提高DBMS的启动速度,因为对象实例化的影响在时间上分散而不是集中在***的启动阶段,并且因此中值响应时间可以得到大大的改善。
在此使用的术语“服务”涉及软件功能或一组软件功能,其目的是不同客户端或充当客户端的不同程序例程可以出于不同目的重新使用。优选地,“服务”是用于处理当前存储在由DBMS管理的数据库中和/或将存储在由DBMS管理的数据库中的数据的软件功能。例如,服务可以是适于对数字病理图像进行聚类的聚类算法。另一服务可为主成分分析服务,其被配置用以识别数据集中的对感兴趣的特定特征具有高度预测性的参数子集。服务的另一个实例可以是特定形式的报告,例如,指示在特定物品的生产过程中使用的耗材的数量、在特定制造步骤中消耗的能量和水的量等的报告。报告可以特定于特定用户或用户组和/或可取决于其他因素。可以通过分析存储在数据库中的数据(例如,制造相关数据)来动态地生成报告。根据实施例,服务可以包括允许用户或另一软件功能调用该服务的接口。
本文中所使用的“注册服务”是其名称(或其他标识符)和来自其他服务(如果有的话)的依赖关系已被传达至服务管理器的服务。因此,服务管理器已经在表示所有注册服务的依赖关系的数据结构中集成了注册服务及其所需服务(如果有的话)。
在此使用的“服务管理器”是被配置成用于管理多个服务的一件软件。该件软件可以是独立的应用程序、程序模块、程序例程、程序功能、软件类或者上述两个或更多个的组合。
在此所使用的“编译器可检查对象”是具有所分配的类型(例如,特定对象类)以及可选地使编译器能够在编译时以及可选地还在设计时执行一个或多个一致性检查的附加特征的数据对象。一致性检查可以包括例如检查分配给数据对象的类型是否包含在编译器已知的对象类型列表中。
在此使用的“数据库”是以特定的定义的数据结构的形式被组织在存储器中或非易失性存储卷上的电子信息(“数据”)的集合,该数据结构支持特定类型的数据库查询或被优化用于由特定类型的数据库查询进行数据检索。数据通常逻辑地组织在数据库表中。数据库尤其可以是关系数据库,例如面向列的数据库或面向行的数据库。
在此所使用的“数据库管理***(DBMS)”是被设计成用于允许数据库的定义、创建、查询、更新和管理的软件应用程序。DBMS的示例是IBM Db2 for z/OS、MySQL、PostgreSQL、IBM Db2 Analytics Accelerator(IDAA)等。
在此使用的“数据库查询”或“查询”是检索、更新、存储和/或分析存储在由DBMS管理的数据库中的数据的命令,命令是以DBMS的接口的语法指定的。例如,语法可以是SQL。
在此使用的“表”是由DBMS管理的数据库表。
在此使用的“模块”是被配置成用于执行信息技术(IT)框架内的特定功能的硬件、固件、软件或其组合。例如,模块可以是独立的软件应用程序,或包括一个或多个其他模块的软件应用程序的子模块或子例程。
在此使用的“单例模式”是将类的实例化限制到一个“单个”实例并且提供对该实例的全局访问的软件设计模式。因此,“单例”是被实现为使得确保每次仅可以实例化特定类型的软件对象(例如,由所述软件对象表示和实现的特定类型的服务)的一个实例的软件对象。
图1描绘了包括一个或多个处理器104和DBMS102的计算机***100。例如,计算机***可以是标准计算机***(例如,台式计算机***或服务器计算机***)或分布式计算机***(例如,云计算机***)。DBMS可以是任何类型的DBMS。例如,DBMS 102可以是关系型DBMS。DBMS可以是列存储DBMS、行存储DBMS、分层DBMS等。例如,DBMS可以是以下DBMS之一:IBM Db2、MySQL、Oracle、PostgreSQL、IBM的Db2 Analytical Accelerator for Db2(IDAA)等。计算机***包括操作性地耦合到DBMS 102的服务管理器106。
计算机***100还包括操作性地耦合到DBMS的服务管理器106。
在此使用的表达“操作性地耦合至DBMS的服务管理器”可以意味着例如服务管理器在功能上是DBMS的组成部分,因为它被配置成用于管理使用DBMS作为相应的运行时环境的服务。
服务管理器被配置为执行在图3中示出并且在下文中通过参考图1和图3两者的元素来描述的方法。
在步骤302中,可以通过安装和实例化DBMS来提供服务管理器106,例如作为DBMS的集成组件。可替代地,可以在DBMS已经被实例化之后在步骤302中提供服务管理器。例如,服务管理器可以包含在DBMS的插件或附加件中,并且当所述插件或附加件在计算机***100上安装和实例化时,提供服务管理器的功能。
服务管理器106被配置成在步骤304中在服务管理器处的DBMS的运行时自动地和动态地注册多个服务108-114、208-214。例如,当将包括一个或多个服务的新程序库加载到DBMS时,包含在库中的服务在服务管理器处自动注册。附加地或可替代地,当DBMS被实例化时,作为DBMS的组成部分的服务在服务管理器106处被自动注册。这些服务中的每一个服务是被配置成用于处理存储在DBMS 102管理的一个或多个数据库116-122之一中或被接收以存储在其中的数据的一段程序逻辑(“软件”)。
在步骤306中,服务管理器106被配置为自动管理多个已注册服务中的不同服务之间的相关性107。例如,在新服务注册期间,服务管理器识别待注册服务所需的一个或多个其他服务,并更新依赖关系,使得更新的依赖关系也反映当前注册的服务的服务依赖关系。同样,如果某服务未注册,则依赖关系也被更新。依赖关系107可以是例如由服务管理器管理并且仅可由服务管理器访问的数据结构。例如,依赖关系107可以是树或树的集合,其中节点表示服务,并且其中连接父节点与子节点的边表示由父节点表示的服务与由子节点表示的所需服务之间的依赖关系。服务管理器可被配置成确保由特定节点的所有直接和间接子节点表示的服务在由该特定节点表示的服务被实例化之前被实例化。
服务108-114可包括一个或多个守护程序和可由用户或DBMS的函数显式地调用的一个或多个服务。服务中的每一个可被实现为单例,然而,同样可以使用确保一次仅服务的一个实例可被实例化的任何其他软件模式,因此,单例设计模式不是唯一可能的实现选项。
例如,服务可包括目录管理器服务,其被配置为跟踪和查询IBM的IDAA中的不同配置参数的设置。服务可进一步包括由目录管理器服务使用的***服务和配置器服务,用于提供上述功能“跟踪”和“配置”。***服务依赖于配置器服务。这意味着,为了开始和使用目录管理器服务,***服务必须已经实例化。然而,由于***服务依赖于配置服务,所以有必要首先实例化配置服务,然后实例化***服务,最后实例化目录管理器服务。不同服务之间通常复杂的依赖关系使得以适当的顺序实例化服务很重要。
根据现有技术方法,如下地确保服务实例化的适当顺序:提供中央类“Initializier”,其中,DBMS的每个服务的源代码中出现硬编码行:
registerService<Configurator>();
registerService<Tracer>();
registerService<CatalogManager>();
然而,根据上述现有技术方法使用中央类来以适当的顺序全局地实例化服务并不确保正确的实例化顺序。例如,依赖于用户请求的一些服务的惰性实例化可能会以不可预测的时间顺序被接收。在例如通过将库加载到DBMS而实时地将服务添加到***的情况下,有必要更新中央类的源代码并重新编译类以及潜在地重新编译整个DBMS。进行后台操作的一些服务(所谓的“守护程序”)需要显式的外部触发才能被实例化。此外,如果服务数量超过某个阈值,则显式地指定服务实例化事件的顺序的中央类或其他源代码段将变得过于复杂,不能维持。例如,多个服务之间的循环依赖关系可能出现并且可能在运行时导致难以识别的错误。维护这样的中央注册中心是个负担,开发者经常采取措施来避免它。例如,实例化链是通过实例化一个或多个服务作为其他服务实例化的一部分来构建的。这将导致所有服务之间的(部分)手动编码的依赖关系图,从而导致更复杂、更难维护的代码。
相反,根据本发明的实施例,服务是在DBMS的运行时在服务管理器处动态地注册自身的。服务管理器以线程安全的方式处理和协调DBMS 102的所有服务的实例化和关闭,例如,服务管理器和每个服务可以分别在单独的单个线程中运行。在服务108-114中的每一个的实例化和关闭期间,服务管理器106确保遵守服务之间的依赖关系。服务在服务管理器处的自动注册和依赖关系的自动更新确保DBMS能够支持大量服务。自动注册和依赖关系更新的另一技术益处在于,访问任何注册服务的所有代码可以总是依赖于可用的服务。没有招致用于检查和惰性实例化服务的性能开销。
优选地,每个服务被实现为单例,这意味着创建单个软件对象并使其可供DBMS的其他服务或函数后续使用。
图2示出了包括服务管理器106和DBMS 202的计算机***200的替代实施例。***200包括一个或多个处理器204、OLTP DBMS 203(例如IBM的Db2)和OLAPDBMS(例如IBM的IDAA 202)。这两个DBMS 203、202可以托管在同一计算机***200上或托管在不同的计算机***上。OLTP DBMS 203包括被优化用于执行写入查询的查询优化器,而OLAP DBMS 202包括被优化用于执行分析读取查询的查询优化器。OLTP DBMS 203可以是例如用于z-OS的Db2、Oracle数据库、PostgreSQL或MySQL DBMS等。OLAP DBMS 202可以是例如IDAA。计算机***200可以包括复制引擎232,其被配置为将已经存储在OLTP DBMS的数据库228、230中的数据复制到OLAP DBMS的数据库216-222。计算机***可进一步包括查询分派器(querydispatcher)模块,其被配置用于分析访问OLTP DBMS 203的任何数据库查询,且将一些查询(尤其是复杂分析查询)转发到OLAP DBMS。查询分派器尝试预测查询在OLAP DBMS上的执行是否可以比在OLTP DBMS上更快或占用更少的计算资源。在这种情况下,查询分派器将数据库查询转发至OLAP DBMS以供执行。提交了查询的客户端通常不会被通知该查询是在OLTP DBMS上执行还是在OLAP DBMS上执行。OLAP DBMS可以包括多个服务208-214,所述多个服务208-214分别被配置用于执行分析查询,诸如统计评估、聚类和分类任务、图像分割、针对不同用户、目的和数据子集的复杂报告等。
OLAP DBMS 202可包括几百或甚至几千个服务208-214。这些服务中的一些服务可能一开始就是DBMS202的组成部分。其他服务可以稍后—例如在DBMS202的所有者决定执行未被已经集成的服务覆盖的某种类型的数据分析任务时,加载到DBMS。服务管理器106适于全自动地管理和维护大量服务以及它们各自的相互依赖关系107,从而确保DBMS202及其服务稳定运行,并且还确保能够避免与服务实例化的依赖关系和/或时间顺序的人工指定相关联的错误。
图3描绘了已经在图1的附图描述中解释的用于管理DBMS中的多个服务的方法的流程图。例如,可以通过安装已经包括服务管理器106的DBMS或通过安装包含使用已经安装的DBMS202作为运行时环境的服务管理器的插件,来执行步骤302。
在一个实施例中,DBMS 102、202被启动。启动DBMS包括将一个或多个服务库加载到DBMS并启动服务管理器106。下一步,服务管理器注册包含在DBMS102、202启动时加载的库中的服务。注册过程包括识别要注册的每个服务的依赖关系,并将所有识别的依赖关系存储在由服务管理器维护的中央依赖关系数据结构107中。由此,服务管理器检查该数据结构107中没有出现循环依赖关系。此外,可以执行DBMS启动期间的进一步初始化步骤。
在DBMS102、202已经启动之后,服务管理器106适于按需实例化各个服务。例如,服务管理器可以包括允许用户向服务管理器提交查询以直接执行特定服务的用户界面。在其他实施例中,服务管理器包括到DBMS 102、202的接口,并经由DBMS 102、202间接地接收用户对特定服务的请求。在这种情况下,DBMS 102、202包括相应的用户接口124、224。通常,用户接口124、224是非SQL接口,其使得用户能够请求特定服务,例如,特定聚类算法、特定报告等。不是由服务管理器维护的所有服务都可以由用户访问或请求。例如,有些服务可以是用户实际感兴趣的更高级别服务可能需要的后台守护程序。
当DBMS被实例化时,服务中的一些也可被自动地实例化。自动化的实例化由服务管理器管理。例如,服务管理器或调用服务管理器的另一个类的main()方法,可以包括在DBMS实例化时应自动地实例化的服务列表。服务管理器评估依赖关系数据结构107,以确定这些“早期实例化”服务中的一个是否需要一些附加服务,并且如果需要,则在实例化“早期实例化”服务之前自动地实例化这些所需的附加服务。如果附加的所需服务中的一个尚未在服务管理器处注册,则服务管理器被配置为在预定义的本地或远程储存库中(例如,在包括一组服务库的本地或远程目录中)搜索附加的所需服务的名称。在搜索中找到的服务随后被自动加载到DBMS中,并且在服务管理器处被自动注册。这些新近和动态注册的服务的依赖关系也如上所述地被自动分析,并且可以触发自动搜索和从预定义储存库加载另外的库,直到由服务管理器将“早期实例化”服务所需的所有服务自动加载到DBMS并在DBMS中实例化。
在DBMS的实例化之后,DBMS可以用于处理数据库查询和数据分析任务,如本领域已知的。然后,服务管理器可以从用户或从DBMS或从任何其他客户端软件接收对特定服务的请求。所请求的服务可能不是“早期实例化的”服务中的一个,因此在接收查询的时刻可能没有被实例化。服务管理器评估所请求的服务与其他服务108-114、208-214之间的依赖关系107,以识别在所请求的服务可以开始并正确操作之前需要被实例化的一个或多个所需服务。如果所请求的服务需要尚未在服务管理器处注册的服务,则服务管理器开始在本地或远程库储存库中搜索所需的服务,并且自动加载和注册在搜索中找到的所需的服务。如果新服务被注册,则依赖关系107被更新以包括新注册的服务的依赖关系。然后,服务管理器自动地实例化所述所需的服务中的任何一个,之后实例化所请求的服务。被实例化的服务被用于处理存储在由DBMS管理的数据库中的数据,以及响应于该服务请求而返回数据处理结果。
服务管理器还可以自动触发特定服务的关闭。例如,服务S1可以表示涉及用特定机器M来生产第一物品G1的制造步骤MS1。服务S2可以表示涉及用同一特定机器M来生产第二物品G2的制造步骤MS2。因为机器M不能同时用于生产第一物品G1和第二物品G2,所以服务S1和S2是互斥的。如果请求服务S2,则需要在S2实例化之前关闭服务S1。服务管理器可以例如延迟S2的实例化直到S1已经完成,并且,一旦产出物品G1就主动关闭S1。
依赖关系数据结构107中的依赖关系的标识和/或依赖关系数据结构107的更新,可以用对代表在服务管理器处注册的所有服务的所有依赖关系的依赖关系树的深度优先搜索来执行。
图4示出了根据本发明的实施例的多个服务的依赖关系。根据图4中描绘的实施例,每个服务被实现为包括getInstance()方法的单例类404,其返回对相应服务的单个实例对象(单例对象)的引用。更具体地,getInstance()方法返回对接口406的引用,而服务的实际实现408被隐藏。图4中所描绘的类和接口的集合不强制在调用代码中使用接口,但该架构分离特定服务的接口406,因为事实上其被视为单例。如图4所示,单例类404、接口406和实际的服务实现408之间的分离是可选的。图4中描绘的软件架构具有更简洁设计的益处,但是单一件404、接口406和/或实现408在单个类中的组合是可能的。例如,可以组合它们中的单例404和接口406,或者可以组合接口406和实现408,或者可以组合全部三个。单例、接口和实现的分离允许为按单例处置的接口406使用不同的实现。这有利于软件测试。例如,在使用测试对象(“模拟对象”)而不是真实实现的情况下,图4中所描绘的类设计允许在测试阶段和“真实”用例中为单例404提供不同的单个实例。
图5示出了服务和服务管理器(其类和接口可例如如图4中所描绘的那样被实现)如何能被集成在整个***架构中。“单例实例”504、406了解接口508、406和实际d服务实现514、408。单例实例504、406负责向服务管理器502(其还可以被称为“单例管理器”)注册其自身。
服务管理器502必须“知道”每个服务,以便按照其他服务的要求来控制服务的实例化和关闭。由于服务管理器502负责对代表服务的每个单例506的实例化,服务管理器必须知道哪个实现类应被实例化以创建每个服务接口508的单个对象。此外,每个服务单例506例如在被加载到DBMS中时或者在启动DBMS之后向服务管理器502注册其自身。
服务管理器502实际执行服务单例506的实例化,所得到的单个实例化的服务对象然后被存储在单例类506中,以便完成实例化,使得能够对服务进行后续的访问和使用。对于服务(对应于单例实例)来说,例如对于使用或被实现为后台作业的服务512和对于不使用或被实现为后台作业的服务510来说,可存在不同的细化。
根据实施例,这通过在服务类的或与该服务在功能上相关联的另一类的源代码中创建单个全局变量来实现。例如,可以紧接着定义服务的实现514(在实现的.cpp文件中)的代码而创建单个全局变量。单个全局变量还可以在定义有待注册的服务(在服务的.cpp文件中)的代码内创建。单个全局变量代表要在服务管理器处注册并由服务管理器管理的特定服务。当在DBMS或DBMS插件或附加件启动期间(或在加载库时)创建该变量时,执行变量的类型或类的构造器。该构造器负责由变量代表的服务在服务管理器处的注册。因此,服务管理器知道服务对象,并且由于服务特定变量是全局变量,所以总是保证其存在。因此,服务管理器可以访问特定服务及其实现,以使用特定的实现类型来执行如服务的实例化、关闭和当前状态的查询的动作。
根据优选实施例,每个服务知道其需要哪些其他服务。例如,服务的实现类514知道它在其代码中访问哪些其他服务,因为在实现类514的源代码中提到这些其他服务的类名。这些其他服务也被称为此服务的“所需的服务”。
当服务在服务管理器处自动注册时,服务管理器调用待注册服务的“getRequiredServices()”函数,以便在注册期间导出未注册服务的依赖关系。在C++代码中,getRequiredServices()函数可具有例如以下形式:
Figure BDA0003328549890000171
Figure BDA0003328549890000181
“ServicePrerequisites”是所需服务的列表,其名称可以由编译器在编译时检查并且可选地也可以在设计时检查。除了“getRequiredServices”函数之外,该服务类可以包括使服务管理器能够对由该服务类表示和/或实现的服务进行初始化和关闭的方法。该服务类充当特定服务的中央入口点,尽管该服务的一些函数实际上可能是在其他类中实现的。
根据实施例,由服务管理器响应于getRequiredServices()函数调用而自动获得的服务依赖关系用于自动更新包括所有注册服务的所有依赖关系的数据结构。
根据实施例,在服务管理器处注册不同的服务实现,此外,在DBMS的运行时自动地通知服务管理器当前使用的服务实现的任何改变。可替代地,如果新的实现根本不具有任何依赖关系(例如对于模拟对象来说可能就是这样),则可能用void setInstance(...)之类的方法为服务创建新的单个实例并将其存储在单例类506中。该方法可以由Singleton服务实例接口504执行。这可能是有利的,因为不需要额外的步骤来确保依赖关系都是最新的。
根据一些实施例,在实例化阶段期间,服务管理器可以确定所需的特定服务(例如,因为用户的明确请求,或者因为另一明确请求的服务依赖于它)已经被实例化。在这种情况下,服务管理器将返回对现有服务实例的引用或指针,并且将不创建该服务的进一步实例。此外,当已经实例化的服务对象被切换到调用过程时,服务管理器不检查所请求的服务的依赖关系,因为服务已经被实例化的事实意味着其依赖关系全部必定已经被满足。
根据实施例,当在进程启动期间创建新服务的单例服务实例的全局变量时—或当实例化针对每个服务加载的相应库时,自动执行在服务管理器处注册新服务。在新服务的注册期间,服务管理器将新服务的表示添加到表示新服务与注册服务之间的依赖关系的数据结构107中。例如,服务的依赖关系能够以包括一个或多个有向无环图(例如,树或树集)的数据结构的形式来表示。新服务被表示为该图中的附加节点,其中新节点在图中的位置表示新服务和现有服务之间的依赖关系。
根据优选实施例,服务管理器在新服务的注册期间自动地分析依赖关系,以便确定新服务的依赖关系是否将引入循环依赖关系。例如,可以使用不同树遍历算法,以便检查图是否没有循环。在识别出循环依赖关系的情况下,终止新服务的注册,并生成错误事件和/或警告消息。仅在分析的结果是新服务及其依赖关系不产生循环依赖关系的情况下,新服务才被注册并且可选地也被实例化。
由于服务管理器不知道注册不同服务的顺序,因此注册可以识别尚未在服务管理器处注册的所需服务。在这种情况下,依赖关系检查被推迟,直到所需服务也被注册,并且所需服务的注册由服务管理器自动触发。推迟针对任何循环依赖关系的依赖关系检查不是问题,因为稍后当注册所需服务时会自动检查依赖关系。
附加地或可替代地,在服务的实例化阶段期间执行对服务依赖关系的分析。如果在服务实例化时而不是在服务注册时执行依赖关系检查,则可以促进向DBMS加载许多不同的服务库,因为在服务库可以以任意顺序加载并且在服务库以不匹配其逻辑依赖关系的时间顺序加载的情况下将不触发错误事件或警告消息的生成。由于仅在服务实例化时检查依赖关系,所以促进了以任意次序将许多不同的服务库加载到DBMS的过程,因为DBMS的操作者在加载过程期间不必考虑逻辑依赖关系。
图6描绘了指定被实现为单例的服务的服务类的源代码的一部分,其中该代码包括该服务的定义,该定义包括静态方法initialize()、shutdown()和getPrerequises(),由此后者代表一个getRequiredServices函数。该实现的缺点是所需服务被作为串返回并且必须在源代码中被指定为不被编译器检查的(非类型化的)串。图7中描绘了一个更好的实施选项。
图7描绘了服务的更优选的表示的源代码的一部分。图7A示出了由服务实现类实现的抽象接口,该服务实现类的源代码在图7B中被部分地描绘。该服务被实现为单例,其实现必须定义被配置为返回所需服务的编译器可检查对象的getRequiredServices方法。在本示例中,此编译器可检查对象被称为“SingletonPrerequisites”。服务管理器通过图7A中部分描绘的抽象接口的方法来初始化和关闭服务。这些方法可以是如由服务类继承的initialize()、shutdown()之类的静态方法。返回编译器可检查对象而不是串的方法提供了增加针对当程序员在服务的源代码中指定所需服务类时可能发生的打字错误、名称重复以及类名失配的鲁棒性的技术益处。
图7C示出了抽象接口还可以包括被配置为返回注册对象“RegisterSingleton”的函数“registerMySingleton{}”。注册对象必须是例如在.cpp文件中定义的全局变量。这确保服务可以在其被实例化之前被注册。注册对象使得自己被服务管理器知道。注册对象将服务实现绑定到接口,但确保实现的完全封装和隐藏。
本发明可以是***、方法和/或计算机程序产品。所述计算机程序产品可包含上面具有计算机可读程序指令的计算机可读存储介质,所述计算机可读程序指令用于致使处理器执行本发明的各方面。计算机可读存储介质可以是可以保留和存储指令以供指令执行设备使用的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述各项的任何合适的组合。计算机可读存储介质的更具体例子的非穷举列表包括以下:便携式计算机盘,硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存),静态随机存取存储器(SRAM)、便携式致密盘只读存储器(CD-ROM),数字通用盘(DVD)、记忆棒、软盘、诸如穿孔卡片或具有记录在其上的指令的凹槽中的凸起结构的机械编码设备,以及上述的任意合适的组合。如在此使用的,计算机可读存储介质不应被解释为瞬态信号本身,如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,穿过光纤电缆的光脉冲)、或通过导线传输的电信号。本文所述的计算机可读程序指令可从计算机可读存储介质下载到相应的计算/处理设备,或经由网络(例如,互联网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。用于执行本发明的操作的计算机可读程序指令可以是汇编指令,指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据,或者以一种或多种编程语言的任意组合编写的源代码或目标代码,包括面向对象的Smalltalk、C++等编程语言,以及常规的过程式编程语言,例如“C”编程语言或类似的编程语言。计算机可读程序指令可完全在用户的计算机上执行、部分在用户的计算机上执行、作为独立软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者可以连接到外部计算机(例如,通过使用互联网服务提供商的互联网)。在一些实施例中,电子电路(包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA))可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化,以便执行本发明的各方面。本文中参考根据本发明的实施例的方法、设备(***)和计算机程序产品的流程图说明和/或框图描述本发明的方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令来实现。这些计算机可读程序指令可以被提供给通用计算机的处理器,专用计算机或其他可编程数据处理装置,以产生机器,其通过计算机或其他可编程数据处理装置的处理器执行,创建用于实现在流程图和/或方框图的一个或多个方框中指定的功能/动作的装置。这些计算机可读程序指令还可存储在可指导计算机的计算机可读存储介质中,可编程数据处理装置,和/或以特定方式起作用的其他设备,使得具有存储在其中的指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各方面的指令。计算机可读程序指令还可以加载到计算机、其他可编程数据处理装置上,或使得在计算机上执行一系列操作步骤的其他装置,其他可编程装置或其他设备,以产生计算机实现的过程,使得在计算机上执行的指令,其他可编程装置或其他设备实现流程图和/或框图中的一个或多个方框中规定的功能/动作。附图中的流程图和框图图示了根据本发明的不同实施例的***、方法和计算机程序产品的可能实现的架构、功能和操作。对此,流程图或框图中的每个方框可以代表模块、段或指令的一部分,其包括用于实现规定的逻辑功能的一个或多个可执行指令。在一些替代实现方式中,框中所标注的功能可以不以图中所标注的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行。还将注意的是,框图和/或流程图中的每个框、以及框图和/或流程图中的框的组合可以由基于专用硬件的***来实现,所述基于专用硬件的***执行指定的功能或动作或执行专用硬件与计算机指令的组合。
上述特征的可能组合可以是如下:
特征组合FC1:包含权利要求1的特征的特征组合。
特征组合FC2:包含权利要求1和2的特征的特征组合。
特征组合FC3:包含权利要求3和特征组合FC1-FC2的任何之一的特征的特征组合。
特征组合FC4:包含权利要求4和特征组合FC1-FC3的任何之一的特征的特征组合。
特征组合FC5:包含权利要求5和特征组合FC1-FC4的任何之一的特征的特征组合。
特征组合FC6:包含权利要求6和特征组合FC1-FC5的任何之一的特征的特征组合。
特征组合FC7:包含权利要求7和特征组合FC1-FC6的任何之一的特征的特征组合。
特征组合FC8:包含权利要求8和任一特征组合FC1-FC7的特征的特征组合。
特征组合FC9:包含权利要求9和特征组合FC1-FC8的任何之一的特征的特征组合。
特征组合FC10:包含权利要求10和特征组合FC1-FC9的任何之一的特征的特征组合。
特征组合FC11:包含权利要求11和特征组合FC1-FC10的任何之一的特征的特征组合。
特征组合FC12:包含权利要求12和特征组合FC11的特征的特征组合。
特征组合FC13:包含权利要求13和特征组合FC1-FC12的任何之一的特征的特征组合。
特征组合FC14:包含权利要求14的特征和特征组合FC13的特征的特征组合。
特征组合FC15:包含权利要求15和特征组合FC1-FC14的任何之一的特征的特征组合。
特征组合FC16:包含权利要求16和特征组合FC1-FC15的任何之一的特征的特征组合。
特征组合FC17:包含权利要求17和特征组合FC1-FC16的任何之一的特征的特征组合。
特征组合FC18:包含权利要求18和特征组合FC1-FC17的任何之一的特征的特征组合。
特征组合FC19:包含权利要求19和特征组合FC1-FC18的任何之一的特征的特征组合。

Claims (19)

1.一种用于管理DBMS(102,202)中的多个服务(108-114;208-214)的计算机实现的方法,所述服务分别被配置为处理被存储在或被接收以存储在由所述DBMS管理的数据库(116-122;216-222)中的数据,所述方法包括:
-提供(302)操作性地耦合到所述DBMS的服务管理器(106);
-在所述DBMS运行时在所述服务管理器处自动和动态地注册(304)所述多个服务;
-由所述服务管理器自动管理(306)所述多个注册服务中的不同服务之间的依赖关系。
2.如权利要求1所述的计算机实现的方法,所述依赖关系的所述管理包括根据所述依赖关系将所述服务实例化,使得当所述服务管理器实例化所述服务中的特定服务时,所述特定服务所需的所有服务已经被实例化。
3.如在前权利要求中任一项所述的计算机实现的方法,该服务中的至少一些代表产品制造过程的工作流内的步骤,并且其中至少一些依赖关系代表该产品制造过程中涉及的或由该产品制造过程处理的物理对象的设备依赖关系、工作流程依赖关系、材料依赖关系和/或供应依赖关系。
4.如在前权利要求中任一项所述的计算机实现的方法,所述依赖关系的所述管理包括根据所述依赖关系关闭所述服务中的一个或多个,其中,在所述一个或多个服务中的任何一个被关闭之前,这一个服务的关闭被延迟,直到依赖于所述一个服务的所有服务都被关闭。
5.如在前权利要求中任一项所述的计算机实现的方法,所述服务中的每一个根据单例设计模式来实现。
6.如在前权利要求中任一项所述的计算机实现的方法,所述服务的依赖关系以一个或多个有向无环图(DAG)的形式来表示。
7.如在前权利要求中任一项所述的计算机实现的方法,进一步包括将附加服务添加到所述DBMS,该添加包括:
-在所述服务管理器处在所述DBMS的运行时注册所述附加服务;
-自动更新所述服务的依赖关系,使得所述依赖关系表示所述现有服务和所述附加服务的依赖关系。
8.如在前权利要求中任一项所述的计算机实现的方法,所述服务在所述服务管理器处的注册以去中心化注册过程的形式实现。
9.如在前权利要求中任一项所述的计算机实现的方法,所述多个服务中的每一个实现包括用于在所述服务管理器处注册所述服务的方法的接口。
10.如在前权利要求中任一项所述的计算机实现的方法,所述多个服务中的每一个包括instantiateService函数和shutdownService函数,instantiateService函数和shutdownService可由所述服务管理器映像器访问,该方法进一步包括:
-由所述服务管理器使用所述多个服务的instantiateService函数和shutdownService函数来根据所述依赖关系动态地协调所述多个服务的实例化和关闭。
11.如在前权利要求中任一项所述的计算机实现的方法,所述多个服务中的每一个包括getRequiredServices函数,getRequiredServices函数可由所述服务管理器访问,getRequiredServices函数被配置为返回一个或多个所需服务的名称,每个所需服务为实例化所述包含getRequiredServices函数的服务前需要实例化的服务,所述多个服务中的每一个的注册包括:
-所述服务管理器调用所述待注册服务的getRequiredServices函数;
-自动检查所述getRequiredService函数返回的所需服务的名称是否标识已注册服务;和
-所述服务管理器自动对getRequiredService函数返回的未注册服务的任一服务进行注册。
12.如权利要求11所述的计算机实现的方法,getRequiredServices函数在被调用时被配置用于:
-将所述一个或多个所需服务的类名转换成相应的字符串,
-将所述一个或多个字符串转换成编译器可检查对象;和
-向调用了getRequiredServices函数的服务管理器返回所述编译器可检查对象。
13.如在前权利要求中任一项所述的计算机实现的方法,所述多个服务中的至少一个服务指定所述至少一个服务所需的一个或多个其他服务,所述一个或多个其他服务的所述指定具有由编译器在编译时间期间检查的类名列表的形式,其中,在服务类包括所需服务的名称并且编译器不能识别其名称与所需服务的名称匹配的类的情况下,在编译所述服务类时引发错误。
14.如权利要求13所述的计算机实现的方法,其中,在所述服务类包括所需服务的名称并且编译器不能识别其名称匹配所述所需服务的名称的类的情况下,在设计时在所述服务类程序代码中突出显示所述所需服务的名称。
15.如在前权利要求中任一项所述的计算机实现的方法,进一步包括:
-在所述服务管理器处注册所述服务中的一个服务期间,由所述服务管理器自动识别所述要被注册的一个服务所需的一个或多个其他服务;
-更新所述多个已注册服务、所述要被注册的服务和在注册所述一个服务期间识别的服务之间的依赖关系,使得所述依赖关系还包括所述要被注册的服务和所需的其他服务的依赖关系。
16.如在前权利要求中任一项所述的计算机实现的方法,所述服务管理器是被实现为所述DBMS的扩展应用(插件或附加件)的应用的组件,或者是所述DBMS的集成组件。
17.如在前权利要求中任一项所述的计算机实现的方法,进一步包括:
a)所述DBMS接收特定服务的服务请求;
b)由所述服务管理器识别所述多个服务内的所请求的服务;
c)由所述服务管理器识别所述所请求的服务所需的所述注册服务中的一个或多个其他服务;
对于所识别的一个或多个其他服务中的每一个:
i.检查所述其他服务是否已经被实例化;
ii.如果所述其他服务已经被实例化,则转到在步骤c中标识的下一服务;
iii.如果所述其他服务尚未被实例化,则实例化所述其他服务并且转到在步骤c中标识的下一服务。
18.一种具有体现于其中的程序指令的计算机可读存储介质,所述程序指令可由处理器执行以使得所述处理器执行用于管理DBMS(102,202)中的多个服务(108-114;208-214)的方法,所述服务分别被配置为处理被存储在或被接收以存储在由所述DBMS管理的数据库(116-122;216-222)中的数据,该方法包括:
-提供(302)操作性地耦合到所述DBMS的服务管理器(106);
-在所述DBMS运行时在所述服务管理器处自动和动态地注册(304)所述多个服务;
-由所述服务管理器自动管理(306)所述多个注册服务中的不同服务之间的依赖关系。
19.一种计算机***(100,200),包括:
-DBMS(102,202);
-服务管理器(106),其操作性地耦合到所述DBMS;
所述服务管理器被配置为:
·在所述服务管理器处在所述DBMS的运行时自动和动态地注册(304)多个服务(108-114、208-214),所述服务分别被配置为处理被存储在或被接收以存储在由所述DBMS管理的数据库(116-122;216-222)中的数据;和
·自动管理(306)所述多个注册服务中的不同服务之间的依赖关系。
CN202080032396.1A 2019-05-10 2020-04-06 Dbms中的服务管理 Pending CN113841135A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP19173726 2019-05-10
EP19173726.1 2019-05-10
PCT/IB2020/053259 WO2020229900A1 (en) 2019-05-10 2020-04-06 Service management in a dbms

Publications (1)

Publication Number Publication Date
CN113841135A true CN113841135A (zh) 2021-12-24

Family

ID=66597490

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080032396.1A Pending CN113841135A (zh) 2019-05-10 2020-04-06 Dbms中的服务管理

Country Status (6)

Country Link
US (1) US20200356885A1 (zh)
JP (1) JP7373587B2 (zh)
CN (1) CN113841135A (zh)
DE (1) DE112020000657T5 (zh)
GB (1) GB2597201B (zh)
WO (1) WO2020229900A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11675806B2 (en) * 2020-12-14 2023-06-13 Snowflake Inc. Aggregate and transactional networked database query processing
US11853775B1 (en) * 2022-06-22 2023-12-26 Acronis International Gmbh Systems and methods for providing nested frontend applications for managed service providers

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030018825A1 (en) * 2001-07-17 2003-01-23 Johnson Hollis Bruce Methods and systems for providing platform-independent shared software components for mobile devices
US20090299979A1 (en) * 2008-05-30 2009-12-03 Suk-Hwan Suh Product lifecycle information management system using ubiquitous technology
US20100149583A1 (en) * 2008-12-12 2010-06-17 Lifen Tian Managing multiple web services on a single device
CN101763428A (zh) * 2010-01-04 2010-06-30 山东浪潮齐鲁软件产业股份有限公司 一种SOA对web服务的注册存储管理应用***
CN102455937A (zh) * 2010-10-20 2012-05-16 微软公司 用于全局分布的服务结构的Web服务模式
CN104657447A (zh) * 2015-02-05 2015-05-27 上海达梦数据库有限公司 面向数据库管理***的计划树优化方法和装置
US20180052718A1 (en) * 2016-08-22 2018-02-22 Amplidata N.V. Non-Process Identifier Based Service Manager
CN108123996A (zh) * 2016-11-18 2018-06-05 Sap欧洲公司 应用管理服务实例
CN108153547A (zh) * 2017-12-26 2018-06-12 泰康保险集团股份有限公司 微服务的版本管理方法、装置、介质及电子设备
CN108475360A (zh) * 2015-12-31 2018-08-31 微软技术许可有限责任公司 分布式计算依赖管理***

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001034493A (ja) 1999-07-21 2001-02-09 Fuji Xerox Co Ltd ワークプロセス管理装置
JP2005025383A (ja) 2003-06-30 2005-01-27 Toshiba Corp クラスタシステム及びクラスタソフトウェアプログラム
US7444621B2 (en) 2004-02-20 2008-10-28 Microsoft Corporation Method and system for providing a common operating system
US8020034B1 (en) * 2004-03-12 2011-09-13 Microsoft Corporation Dependency filter object
JP2005266917A (ja) 2004-03-16 2005-09-29 Nec Corp 分散資源獲得システム、分散資源獲得方法および分散資源獲得用プログラム
CN100407154C (zh) 2004-04-29 2008-07-30 国际商业机器公司 在分布式网络体系结构中建模和动态部署服务的***和方法
US8321545B2 (en) * 2004-07-15 2012-11-27 Symbol Technologies, Inc. Service oriented platform architecture for a wireless network
US8745584B2 (en) * 2007-05-03 2014-06-03 International Business Machines Corporation Dependency injection by static code generation
JP2009037271A (ja) 2007-07-31 2009-02-19 Hitachi Ltd 仮想計算機システムの停止方法および計算機装置
US8527458B2 (en) * 2009-08-03 2013-09-03 Oracle International Corporation Logging framework for a data stream processing server
US8484366B2 (en) * 2010-01-05 2013-07-09 Accenture Global Services Limited Hierarchical service management
CN102844754B (zh) * 2010-03-30 2015-11-25 惠普发展公司,有限责任合伙企业 用于对并行数据库管理***的外连接的***和方法
US9009101B2 (en) * 2010-07-01 2015-04-14 Sybase, Inc. Reducing contention of transaction logging in a database management system
US20140289638A1 (en) * 2012-11-19 2014-09-25 Shimon BECKER Business service management system
JP6070355B2 (ja) 2013-03-28 2017-02-01 富士通株式会社 仮想マシン制御プログラム,仮想マシン制御方法,仮想マシン制御装置及びクラウドシステム
JP5889827B2 (ja) * 2013-04-25 2016-03-22 京セラドキュメントソリューションズ株式会社 画像形成装置及び画像形成方法
CN109710220B (zh) * 2018-12-12 2023-08-22 平安科技(深圳)有限公司 关系型数据库查询方法、装置、设备及存储介质

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030018825A1 (en) * 2001-07-17 2003-01-23 Johnson Hollis Bruce Methods and systems for providing platform-independent shared software components for mobile devices
US20090299979A1 (en) * 2008-05-30 2009-12-03 Suk-Hwan Suh Product lifecycle information management system using ubiquitous technology
US20100149583A1 (en) * 2008-12-12 2010-06-17 Lifen Tian Managing multiple web services on a single device
CN101763428A (zh) * 2010-01-04 2010-06-30 山东浪潮齐鲁软件产业股份有限公司 一种SOA对web服务的注册存储管理应用***
CN102455937A (zh) * 2010-10-20 2012-05-16 微软公司 用于全局分布的服务结构的Web服务模式
CN104657447A (zh) * 2015-02-05 2015-05-27 上海达梦数据库有限公司 面向数据库管理***的计划树优化方法和装置
CN108475360A (zh) * 2015-12-31 2018-08-31 微软技术许可有限责任公司 分布式计算依赖管理***
US20180052718A1 (en) * 2016-08-22 2018-02-22 Amplidata N.V. Non-Process Identifier Based Service Manager
CN108123996A (zh) * 2016-11-18 2018-06-05 Sap欧洲公司 应用管理服务实例
CN108153547A (zh) * 2017-12-26 2018-06-12 泰康保险集团股份有限公司 微服务的版本管理方法、装置、介质及电子设备

Also Published As

Publication number Publication date
DE112020000657T5 (de) 2021-12-09
US20200356885A1 (en) 2020-11-12
JP7373587B2 (ja) 2023-11-02
GB202116491D0 (en) 2021-12-29
JP2022531736A (ja) 2022-07-08
GB2597201B (en) 2022-07-20
WO2020229900A1 (en) 2020-11-19
GB2597201A (en) 2022-01-19

Similar Documents

Publication Publication Date Title
US10162612B2 (en) Method and apparatus for inventory analysis
JP5354601B2 (ja) プロデューサグラフ指向のプログラミングフレームワークにおけるパラレル化及びインスツルメンテーション
CA2966541C (en) Impact analysis
JP5354603B2 (ja) シナリオサポートを伴うプロデューサグラフ指向のプログラミングフレームワーク
JP5354602B2 (ja) プロデューサグラフ指向のプログラミング及び実行
US10740093B2 (en) Advanced packaging techniques for improving work flows
US11726969B2 (en) Matching metastructure for data modeling
US11392393B2 (en) Application runtime configuration using design time artifacts
US7406483B2 (en) Provisioning of software components via workflow management systems
US20080082974A1 (en) Managing Software Component Version Identifications in a Componentised Software System
Wu et al. Efficiently translating complex SQL query to mapreduce jobflow on cloud
Jindal et al. Peregrine: Workload optimization for cloud query engines
CN111913713A (zh) 一种基于服务调用追踪的异构服务集成方法
US20240143285A1 (en) Architecture discovery
JP7373587B2 (ja) Dbmsにおけるサービス管理
Arnold et al. META: Middleware for events, transactions, and analytics
US11681523B1 (en) Metadata model and use thereof for cloud native software systems
US12001837B2 (en) Two-way synchronization of infrastructure-as-code templates and instances
US11714624B2 (en) Managing and deploying applications in multi-cloud environment
CN115794858A (zh) 查询语句处理方法、装置、设备及存储介质
Meister et al. Towards distribution transparency for supervised ML with oblivious training functions
Haeusler et al. Combining versioning and metamodel evolution in the chronosphere model repository
Thomsen et al. Programmatic Etl
US20230418574A1 (en) Using a semantic tree of a compiler to execute a semantic code query against source code
Wang et al. A software-reuse method from model1 to SSH2

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