首页 / 专利库 / 资料储存系统 / 数据库 / 自主多租户数据库云服务框架

自主多租户数据库服务框架

阅读:605发布:2020-05-08

专利汇可以提供自主多租户数据库服务框架专利检索,专利查询,专利分析的服务。并且本文提供的是在计算 云 内异步配置可插拔 数据库 的工作负载管理技术。在 实施例 中,计算云接收指示可插拔数据库的配置细节的监管 请求 。计算云基于该请求的配置细节生成 指定 异步作业的配置描述符。计算云 访问 主机元数据以检测以下中的至少一者:a)已经托管可插拔数据库的当前容器数据库,b)将托管可插拔数据库的目标容器数据库,或c)托管当前容器数据库或目标容器数据库中的至少一者的特定计算机。计算云基于主机元数据或配置描述符中的至少一者执行异步作业以配置可插拔数据库。线程池、通道和队列可以促进负载均衡,以避免优先级倒置、饥饿和拒绝服务。,下面是自主多租户数据库服务框架专利的具体信息内容。

1.一种方法,包括:
接收指示可插拔数据库的配置细节的监管请求
基于所述监管请求的配置细节,生成指定异步作业的配置描述符;
访问主机元数据以检测以下中的至少一者:
已托管可插拔数据库的当前容器数据库,
将托管可插拔数据库的目标容器数据库,或
托管当前容器数据库或目标容器数据库中的至少一者的特定计算机;
基于主机元数据或配置描述符中的至少一者,执行所述异步作业以配置可插拔数据库。
2.如权利要求1所述的方法,其中:
生成配置描述符是在不是托管当前容器数据库或目标容器数据库的第二计算机的第一计算机上发生的;
执行所述异步作业是在不是第一计算机也不是第二计算机的第三计算机上发生的。
3.如权利要求1所述的方法,其中执行所述异步作业包括调用远程应用编程接口(API)以调用可插拔数据库或所述当前容器数据库中的至少一者中的存储过程。
4.如权利要求1所述的方法,其中:
配置描述符包括多个作业类型中的特定作业类型;
所述方法还包括:
基于所述特定作业类型自动选择多个作业队列中的特定作业队列,以及自动将所述异步作业附加到所述特定作业队列。
5.如权利要求1所述的方法,其中:
所述监管请求的配置细节包括:
第一指定量的资源,以及
第二指定量的以下中的至少一者:处理器、处理器核心、线程或并行性;以及所述方法还包括基于第二指定量自动调整第一指定量。
6.如权利要求1所述的方法,其中所述监管请求的配置细节包括可插拔数据库的符号名称。
7.如权利要求6所述的方法,其中:
所述方法还包括基于符号名称从多个可插拔模板中自动选择特定模板;
执行所述异步作业包括创建可插拔数据库作为所述特定模板的实例。
8.如权利要求1所述的方法,其中:
所述方法还包括自动选择下一个容器数据库;
执行所述异步作业包括将可插拔数据库从当前容器数据库移动到下一个容器数据库。
9.如权利要求8所述的方法,其中所述监管请求是响应于检测到动态状况而自动生成的。
10.如权利要求9所述的方法,其中所述动态状况包括观测量的以下中的至少一者:资源利用率或资源可用性。
11.如权利要求8所述的方法,其中当前容器数据库和第二容器数据库具有不同的发行版本。
12.如权利要求8所述的方法,还包括引导器执行:
将识别可插拔数据库的第一查询引导到当前容器数据库;
将识别所述可插拔数据库的第二查询引导到第二容器数据库。
13.如权利要求12所述的方法,其中相同的客户端发出第一查询和第二查询。
14.如权利要求12所述的方法,其中所述引导器对发出第一查询的客户端进行认证。
15.如权利要求1所述的方法,其中执行所述异步作业导致生成第二请求,所述第二请求包括针对以下中的至少一者的部署重新配置细节:所述可插拔数据库或第二可插拔数据库。
16.如权利要求1所述的方法,其中所述异步作业生成认证钱包。
17.如权利要求1所述的方法,其中接收所述监管请求包括同步返回以下中的至少一者:计算性future或智能存根。
18.一种或多种存储指令的非临时性计算机可读介质,所述指令在由一个或多个处理器执行时使得:
接收指示可插拔数据库的配置细节的监管请求;
基于所述监管请求的配置细节,生成指定异步作业的配置描述符;
访问主机元数据以检测以下中的至少一者:
已托管可插拔数据库的当前容器数据库,
将托管可插拔数据库的目标容器数据库,或
托管当前容器数据库或目标容器数据库中的至少一者的特定计算机;
基于主机元数据或配置描述符中的至少一者,执行所述异步作业以配置可插拔数据库。
19.如权利要求18所述的一种或多种非临时性计算机可读介质,其中:
部署重新配置细节包括多个作业类型中的特定作业类型;
所述指令还使得:
基于所述特定作业类型自动选择多个作业队列中的特定作业队列,以及自动将所述异步作业附加到所述特定作业队列。
20.如权利要求18所述的一种或多种非临时性计算机可读介质,其中:
所述监管请求的配置细节包括可插拔数据库的符号名称;
所述指令还使得基于所述符号名称从多个可插拔模板中自动选择特定模板;
执行所述异步作业包括创建可插拔数据库作为所述特定模板的实例。

说明书全文

自主多租户数据库服务框架

技术领域

[0001] 本公开涉及多租户数据网格的监管。本文介绍的是计算云内异步配置可插拔数据库的工作负载管理技术。

背景技术

[0002] 生产运营人员通常包括进行数据库生命周期管理和监管任务的数据库管理员(DBA)和其它系统管理员。可插拔数据库、容器数据库和计算机之间的托管关系或多或少地严格地布置在网络拓扑中,使得软件升级、平缩放以及计划的或紧急的供给/配置可能是繁重的且容易出错的,尤其是在云规模比简单的计算机集群大几个数量级的情况下。
[0003] 严格的拓扑可能会阻碍或阻止水平缩放(弹性)和容量规划。数据库和数据中心的监管通常是自组织的(ad hoc),并且通常基于预期或多或少立即执行的命令性命令。因此,监管杂务本质上往往是同步的,使得并行化的机会有限。因此,监管作业提交和作业执行往往是紧密耦合的,从而需要大量的人工引导来实现相关监管活动的排序。因此,对于云规模的监管自动化,常规的机会可能受到限制。因此,安装的可插拔数据库的演进和迁移也可能受到限制,诸如当容忍中等拓扑比优化重新布置可插拔数据库更容易时。例如,将可插拔数据库从一个容器数据库和/或计算机重定位到另一个容器数据库和/或计算机可能需要重新打包和重新部署许多客户端和/或服务,这可能不利于这种重定位。附图说明
[0004] 附图中:
[0005] 图1是描绘实施例中的示例云的框图,该示例云使用异步作业来最终执行对可插拔数据库的监管配置请求
[0006] 图2是描述实施例中的示例异步配置处理的流程图,该示例异步配置处理最终执行对可插拔数据库的监管请求;
[0007] 图3是描绘实施例中的示例云的框图,该示例云将责任分散在跨越多个集群、数据中心、子云和/或安全领域的计算机拓扑中;
[0008] 图4是描绘实施例中的示例云的框图,该示例云使用模板可插拔数据库在交付点(PoD)进行基于原型的克隆,诸如水平缩放;
[0009] 图5是描绘实施例中的具有自动反射(reflex)来修复拓扑的示例云的框图;
[0010] 图6是描绘实施例中的具有用于工作负载管理的线程池和泳道的示例云的框图;
[0011] 图7是描绘实施例中的具有负载均衡器的示例云的框图,该负载均衡器将非监管数据库流量安全地路由到重定位的可插拔数据库;
[0012] 图8是图示可以在其上实现本发明的实施例的计算机系统的框图;
[0013] 图9是图示可以用于控制计算系统的操作的基本软件系统的框图。

具体实施方式

[0014] 在下面的描述中,出于解释的目的,阐述了许多具体细节以便提供对本发明的透彻理解。但是,将明显的是,可以在没有这些具体细节的情况下实践本发明。在其它情况下,以框图形式示出了众所周知的结构和设备,以避免不必要地使本发明模糊。
[0015] 本文根据以下概要描述各实施例:
[0016] 1.0 总体概述
[0017] 2.0 示例数据网格
[0018] 2.1 容器数据库和可插拔数据库
[0019] 2.2 监管请求
[0020] 2.3 配置细节
[0021] 2.4 配置描述符
[0022] 2.5 异步
[0023] 2.6 主机元数据
[0024] 2.7 后处理
[0025] 3.0 异步配置处理
[0026] 4.0 分布式计算
[0027] 5.0 水平缩放
[0028] 5.1 模板
[0029] 5.2 部署模式
[0030] 6.0 自主重新配置
[0031] 6.1 监控器
[0032] 6.2 升级/降级
[0033] 7.0 工作负载管理
[0034] 7.1 前控制器
[0035] 7.2 泳道
[0036] 7.3 线程池
[0037] 7.4 扇出
[0038] 7.5 吞吐量
[0039] 8.0 引导器(Director)
[0040] 8.1 钱包
[0041] 8.2 数据分区
[0042] 9.0 数据库系统概述
[0043] 10.0 可插拔数据库和容器数据库系统概述
[0044] 11.0 硬件概述
[0045] 12.0 软件概述
[0046] 13.0 云计算
[0047] 1.0总体概述
[0048] 本文提供的是计算云内异步配置或重新配置可插拔数据库的工作负载管理技术。在实施例中,计算云接收指示可插拔数据库的配置细节的监管请求。计算云基于监管请求的配置细节生成指定异步作业的配置描述符。异步作业是可以诸如通过调度或排队被推迟的工作单元。计算云访问主机元数据以检测以下中的至少一者:a)已经托管可插拔数据库的当前容器数据库,b)将托管可插拔数据库的目标容器数据库,或c)托管当前容器数据库或目标容器数据库中的至少一者的特定计算机。计算云基于主机元数据或配置描述符中的至少一者执行异步作业以配置可插拔数据库。这些组件促进可能包括多租户数据库和/或数据库的层次结构或联盟的(一个或多个)数据库管理系统(DBMS)的生态系统的自动化监管和性能优化。在下面的“数据库系统概述”部分中更详细地说明DBMS。在一些情况下,可能存在数据库的结构聚合(例如,嵌套),诸如当可插拔数据库(PDB)位于容器数据库(CDB)内时。在下面的“可插拔数据库和容器数据库系统概述”部分中更详细地说明CDB内PDB的嵌套。
[0049] 诸如数据云之类的在线云的弹性性质需要动态拓扑,并且至少在公共云的情况下需要多租户。利用本文的技术,数据云可以被配置为资源的动态生态系统,其包括数据存储库和分析学,可能经历诸如需求尖峰、网络天气、维护和容量增长之类具有不同程度的不可预测性的干扰。本文是基于各种机制和技术的异步框架,用于配置在不断变化的环境条件期间优化云性能的智能反应。
[0050] 本文中的DBMS可以提供数据库可移植性机制或与数据库可移植性机制合作,使得数据库可以被自动复制或重定位。因此,云的逻辑拓扑和负载分布可以是动态的并且是可优化的。例如,交付点(PoD)可以是服务的逻辑共置(co-location)单元。在实施例中,计算机可以托管一个或多个PoD,每个PoD可以托管一个或多个容器数据库,每个容器数据库可以托管一个或多个可插拔数据库。(一个或多个)数据库实例的创建、复制、移动和移除可以根据数据库的定义良好的(例如,统一的)生命周期进行。
[0051] 可以提交异步监管作业,以跨一组交付点(PoD)、容器数据库或托管中间件的其它数据库执行一些或所有可插拔数据库(PDB)生命周期任务。在实施例中,异步作业框架为客户端提供代表性状态传输(REST)API以提交请求,这些请求然后被转化成异步作业。异步作业是可以诸如通过调度或排队被推迟的工作单元。异步作业可以以一种次序提交,然后以另一种时间次序执行。作业管理的所有方面,包括持久性、调度、指派、执行、恢复和错误处理,都在系统内处理。作业被路由到正确的PoD,在此它使用PoD API被执行。本文描述的主要组件是独立的并且可水平缩放。
[0052] 本文提出的解决方案具有配置或重新配置可插拔数据库的异步作业,诸如异步数据库监管作业。例如,异步数据库监管作业可以创建或丢弃关系表的索引,或者创建、复制、移动或移除数据库实例。一般而言,数据库配置或重新配置是定义、移除或调整(例如重新定义)诸如数据库实例、模式、名称空间、表、关系、索引、文件或逻辑之类的数据库对象的系统更改。配置可以是在给定计算机处和/或在给定数据库或DBMS内诸如在从另一个计算机或DBMS进行重定位期间供给或部署数据库或数据库对象的一部分。重新配置可以是对数据库或数据库对象进行调整或移除。配置或重新配置可能需要执行数据定义语言(DDL),调整DBMS的数据字典的内容,和/或添加、更改或移除诸如文件之类的资源。
[0053] 可能会出现监管请求,以配置或重新配置可插拔数据库。例如,可插拔数据库可能会耗尽盘空间。响应性地,可以提交监管请求以将可插拔数据库从容器数据库或计算机上移动到另一个容器数据库或计算机。可以将监管请求作为REST请求发送到请求代理,该REST请求指示识别可插拔数据库并指定逐出(重定位)可插拔数据库的配置细节。请求代理基于REST请求来派发异步作业。基于配置细节,异步作业将可插拔数据库移动到另一个计算机上的另一个容器数据库。
[0054] 这些解决方案可以具有引起异步的组件,诸如队列、线程池、泳道和执行程序(executor)。在实施例中,线程池、泳道和/或作业队列促进负载均衡,以避免优先级倒置、饥饿和/或拒绝服务。在实施例中,负载均衡器和/或主机目录赋予可插拔数据库位置独立性。在实施例中,从可插拔数据库模板克隆可插拔数据库实例有助于弹性水平缩放。
[0055] 2.0示例数据网格
[0056] 图1是描绘实施例中的示例云100的框图。云100使用异步作业最终执行对可插拔数据库的监管请求。为了作为数据网格操作,云100包括托管诸如121-122和130的数据库的诸如111-112的(一个或多个)计算机集群。例如,数据库121-122和130中的每一个可以是由同一数据库管理系统(DBMS)管理的关系数据库。计算机111-112中的每一个可以是个人计算机、诸如刀片服务器之类的机架服务器、大型机、虚拟机或能够托管数据库的任何联网计算设备。计算机111-112可以经由诸如局域网(LAN)的网络或诸如全球互联网的网络的网络彼此以及与其它计算机(未示出)通信。计算机111-112可以共置,诸如在同一机架上,或者可以被分开诸如在不同的数据中心中。
[0057] 2.1容器数据库和可插拔数据库
[0058] 云100以可以向客户端(未示出)隐藏拓扑细节的方式托管诸如可插拔数据库130之类的数据库。例如,客户端可能在不知道哪个数据中心、计算机和容器数据库实际托管可插拔数据库130的情况下使用可插拔数据库130。容器数据库,诸如121-122,可以包含可插拔数据库,诸如130。例如,容器数据库121可以由多个租户共享,这些租户可以共享或可以不共享由容器数据库121托管的各种可插拔数据库。
[0059] 2.2监管请求
[0060] 在操作中,数据库管理员(DBA)人员或监管软件可以提交监管请求140,以创建、配置或重新配置可插拔数据库130,而无需知道可插拔数据库130在哪里被托管或将在哪里被托管。例如,云100可以在或多或少任意时间重复地隐式或自发地将可插拔数据库130重定位到不同的容器数据库和/或计算机。因此,监管请求140内的配置细节150不需要识别容器数据库或计算机。
[0061] 例如,DBA可以从驻留或不驻留在云100内的或多或少任意的计算机向云100提交监管请求140以供执行。监管请求140可以作为超文本传输协议(HTTP)请求,诸如公共网关接口(CGI)post、代表性状态传输(REST)请求、远程过程调用(RPC)、简单对象访问协议(SOAP)调用、异步JavaScript XML(可扩展标记语言)(AJAX)请求或其它远程数据递送机制而被递送到云100。
[0062] 2.3配置细节
[0063] 监管请求140是面向目标/结果的,并且不需要指定要执行的战略或策略。例如,配置细节可以指定可插拔数据库130应该被创建或调整为适合某些高级需求。
[0064] 例如,如果可插拔数据库130用尽盘空间,则配置细节150可以指定更大数量的盘空间。云100在履行监管请求140方面具有灵活性。例如,通过将可插拔数据库130的表空间文件从一个文件系统移动到另一个文件系统就像以前如同(交叉)安装在同一个计算机上那样,可以实现更大的盘空间。替代地,可以通过调整其中托管可插拔数据库130的虚拟机分配(并可能重新启动虚拟机)来实现更多的盘空间。替代地,云100可以实际上必须将可插拔数据库130从一个容器数据库和/或计算机移动到另一个容器数据库和/或计算机。
[0065] 同样,如果可插拔数据库130的性能不佳,则配置细节150可以指定更多的处理能,诸如更多的处理器、处理器核心、线程或并行性。云100可以通过向托管可插拔数据库130的虚拟机授予更多处理器核心来履行监管请求140。替代地,云100可以实际上必须将可插拔数据库130从一个容器数据库和/或计算机移动到另一个容器数据库和/或计算机,以获取更多处理能力。
[0066] 云100不会立即(同步地)执行监管请求140。例如,履行监管请求140可能需要使可插拔数据库130暂时退出服务。因此,配置细节150可以指定时间、时间窗、空闲或轻工作负载的量,或者其它应该在执行监管请求140之前发生的动态条件。可替代地,云100、可插拔数据库130或任何涉及的容器数据库或计算机可能临时太忙(例如,需求尖峰),以至于不能立即执行监管请求140。因此,云100可以排队、缓冲或以其它方式推迟监管请求140的执行。
[0067] 2.4配置描述符
[0068] 云100使用配置描述符160和异步作业170来用于监管请求140的推迟的执行。在接收到监管请求140后,云100基于监管请求140和配置细节150生成配置描述符160。配置描述符160以适合于存储并最终派发给异步作业170以供执行的格式对监管请求140的规范化规范进行编码。配置描述符160可以是经编码的文档,诸如XML或JavaScript对象符号(JSON)。规范化可能需要转换和/或缩放数字单位(如本文后面讨论的)或范围限制。例如,配置细节
150可以指定夜间执行,该云100可以将其转化成配置描述符160作为特定深夜时段的时间窗。例如,可以舍入(round up)对少于最小资源量的请求。同样如本文稍后讨论的,指定量的资源可以以可强制的方式相互依赖,诸如分配的易失性存储器不应超过分配的持久性存储装置。
[0069] 云100可以将配置描述符160缓冲或存储在存储器、数据库或文件中。云100可以(例如,同步地)向任何提交了监管请求140的客户端确认该请求被接受并且未决。例如,如果监管请求140作为HTTP请求到达,则云100可以同步发送确认监管请求140至少已经被排队的HTTP响应。确认可以包括跟踪标识符,客户端随后可以使用该跟踪标识符来取消监管请求140、暂停监管请求140或轮询监管请求140的状态。确认可以包括可以轮询和/或等待监管请求140实际被履行的面向对象的接收器(诸如计算性future(computational future)、遥远的future(remote future)或智能存根(smart stub))。接收器可以是面向对象的类的实例。接收器可以是主动的,诸如轮询状态的智能存根。存根是远程代理。智能存根是包含额外逻辑的存根,用于灵活地定位(一个或多个)服务和/或管理诸如轮询或重试之类的重复操作。接收器可以是被动的,诸如在等待状态或完成消息或来自云100的信号时挂起。
[0070] 2.5异步
[0071] 在生成配置描述符160之后,云100可以立即或最终创建(或重用)异步作业170以基于配置描述符160执行监管请求140。例如,异步作业170可以从轻量级线程池、重量级操作系统进程或其它执行程序中重用。在将配置描述符160指派给异步作业170之后,异步作业170可以立即或最终根据配置描述符160执行(履行)监管请求140。例如,异步作业170可以空闲直到配置描述符160被指派给它为止。例如,配置描述符160可以指定监管请求140的执行直到午夜才应该开始。
[0072] 可替代地,异步作业170可以从未决的配置描述符的队列中一次执行一个其它请求。当配置描述符160最终到达队列的开头时,异步作业170可以出队并执行配置描述符160。例如,配置描述符160可以是Java消息服务(JMS)队列中的JSON文档。在实施例中,队列可以是基于以下中的任何一项的优先级队列:a)诸如160的配置描述符中指示的优先级,b)配置描述符中指示的期限(完成时间)或生存时间(TTL),或者c)请求类型,诸如创建数据库、移动数据库、提高数据库服务质量、复制数据库等。例如,备份和副本创建自然是低优先级的。但是,提高服务质量自然是高优先级的,因为数据库正在变得不足,诸如时延增加或盘空间耗尽。从备份还原数据库可能是紧急的。
[0073] 2.6主机元数据
[0074] 异步作业170可以加载、解析或以其它方式处理配置描述符160,以发现要为可插拔数据库执行的(一个或多个)配置更改。如果配置描述符160未识别容器数据库或计算机,则云100可从主机元数据180检索所需的标识符。主机元数据180提供目录信息,该目录信息将可插拔数据库的标识符映射到托管可插拔数据库的容器数据库和/或计算机的标识符。主机元数据180可以用查找表、数据库表或其它参考数据结构(诸如映射)来实现。主机元数据可以部署为文件、网络服务或其它方式。主机元数据180可以具有附加信息,诸如资源容量和利用率的测量、资源需求和数据库相互依赖性。例如,主机元数据180可以指示诸如以下的事实:a)特定容器数据库具有特定可插拔数据库,b)特定可插拔数据库使用了一定数量的盘空间,c)特定计算机具有的处理核心的计数,d)特定物理计算机托管特定虚拟计算机,e)特定计算机托管特定容器数据库,f)特定容器数据库具有特定可插拔数据库的副本,g)特定容器数据库托管特定多实例可插拔数据库的数据分区,以及h)特定计算机和数据库具有特定格、发行级别和补丁程序级别。
[0075] 例如,异步作业170可以检测到配置描述符160为可插拔数据库130指定了三个处理器核心。异步作业170可以咨询主机元数据180,以发现可插拔数据库130位于驻留在计算机111上的当前容器数据库121中。主机元数据180可以指示:a)当前容器数据库121限于两个处理核心,即使b)计算机111具有四个处理核心。因此,异步作业170可以决定可插拔数据库130需要被移动到不同的容器数据库。例如,主机元数据180可以指示:a)计算机112也具有四个处理核心,并且b)目标容器数据库122对使用处理核心没有限制。因此,异步作业170可以选择目标容器数据库122以将可插拔数据库130移动到哪里。因此,异步作业170可以通过将可插拔数据库130移动到目标容器数据库122来履行监管请求140。
[0076] 2.7后处理
[0077] 在履行监管请求140之后,异步作业170可以以各种方式附加地进行后处理。异步作业170可以向云100或客户端通知监管请求140完成。异步作业170可以更新主机元数据180以反映由异步作业170做出的改变。异步作业170可能空闲、返回到工作者池、使另一个监管请求出队、或等待破坏,诸如被垃圾回收或以其它方式被取消分配。
[0078] 3.0异步配置处理
[0079] 图2是描绘实施例中的示例异步配置处理的流程图,该示例异步配置处理最终使用异步作业执行对可插拔数据库的监管请求。参考图1讨论图2。
[0080] 在步骤202中,接收到指示可插拔数据库的配置细节的监管请求。例如,云100(从外部客户端或从内部设施)接收到来自想要重新配置可插拔数据库130的管理员的监管请求140。例如,管理员想要通过给予可插拔数据库130更多的存储器(例如,更大的数据库高速缓存)来减少可插拔数据库130的时延。管理员可以使用web浏览器来在监管请求140中创建指定更大数量的存储器的配置细节150。
[0081] 在步骤204中,云基于监管请求的配置细节生成指定异步作业的配置描述符。例如,云100在生成配置描述符160时参考配置细节150和监管请求140。例如,配置描述符160可以是定义未决工作单元的工作票据。云100可以:a)准备立即执行配置描述符160,b)使描述符排队以便以后执行,或者c)调度配置描述符160以在将来的相对或绝对时间执行。
[0082] 在步骤206中,云访问主机元数据以检测已经或将托管可插拔数据库的(一个或多个)容器数据库和/或(一个或多个)计算机的(一个或多个)位置。虽然步骤206被示出为发生在步骤204和208之间,但是步骤206的一些或所有活动实际上可以在步骤204期间急切地发生,或者在步骤208期间懒惰地发生。例如,对可插拔数据库130移动到的目标容器数据库或计算机的选择可以在步骤204处发生。而对可插拔数据库130的当前容器数据库的识别可以在步骤208处发生,反之亦然。步骤204可以或多或少地在接收到监管请求140时发生。而步骤208可以被推迟到直到实际履行监管请求140的方便时间。那些时间中的任何时间可能适合于执行步骤206的部分或全部。例如,访问主机元数据180可以由异步作业170或由云100在恰好及时创建异步作业170来实际执行监管请求140之前执行。
[0083] 在步骤208中,云执行异步作业以配置或重新配置可插拔数据库。例如,云100可以检测到可插拔数据库130和/或当前容器数据库121可能已增加其存储器分配,并且因此云100不需要将可插拔数据库130移动到另一个容器数据库。因此,在步骤208中,异步作业170可以简单地调整可插拔数据库130和/或当前容器数据库121以保留更多的存储器。
[0084] 在异步作业170的生命周期中的任何时候(包括上述任何步骤),异步作业170都可以产生附加的监管请求。例如,在履行监管请求140的同时,异步作业170可以通过提交从当前容器数据库121创建可插拔数据库130的备份的第二监管请求,以及将可插拔数据库130的备份恢复到目标容器数据库122中的第三监管作业来克隆可插拔数据库130。在相关的美国申请15/254,884中给出了可插拔数据库的自动备份技术。
[0085] 4.0分布式计算
[0086] 图3是描绘实施例中的示例云300的框图。云300将职责分散在跨计算机(诸如311-314)的拓扑中,并且可能跨越多个集群、数据中心、子云和/或安全领域。云300具有监管集群301,用于管理监管提供实时数据网格的事务集群302的请求。云300可以是云100的实现。
[0087] 计算机311可以是面向人类管理员的边缘计算机,人类管理员提交监管请求以配置数据网格中的可插拔数据库。计算机311可以接收监管请求、将请求转换成配置描述符360,并使描述符可用于驻留在计算机312上的异步作业370。异步作业370最终通过在容器数据库321-322之间移动可插拔数据库330来执行。为了执行移动,异步作业370可以调用由可插拔数据库330或容器数据库321-322中的至少一个提供的至少一个应用编程接口(API)。例如,异步作业370可以使用开放数据库连接性(ODBC)来远程调用API 380,该API380调用可插拔数据库330内的存储过程,该存储过程使可插拔数据库330将自身复制到下一个容器数据库322,并且然后从前一个容器数据库321中删除自身,从而完成移动。
[0088] 如本文稍后所解释的,监管拓扑促进水平缩放、负载均衡和优先级化。此外,集群301-302可以占据不同的安全领域。可替代地并且虽然未示出,但是云300的拓扑可以或多或少地平坦化和缺少诸如集群301-302之类的细分。异步作业370可以执行分布式维护,诸如数据库321-322和330中的一些或全部的监管。更改可能需要复制,诸如对于水平缩放的可插拔数据库。在相关的美国申请15/215,443和15/266,030中给出了自动传播可插拔数据库之间的更改的技术。
[0089] 可以诸如通过调优关系数据库和SQL查询执行的技术来调优数据库321-322和330。异步作业370可以收集性能信息,诸如数据库321-322和330的统计信息。异步作业370可以分析性能信息,并相应地调优数据库321-322和330。在相关的美国专利8,903,801中给出了用于关系数据库的自动性能调优的技术。在相关的美国专利8,341,178中给出了用于关系数据库的自动性能分析的技术。
[0090] 5.0水平缩放
[0091] 图4是描绘实施例中的示例云400的框图。云400使用模板可插拔数据库在交付点(PoD)处进行基于原型的克隆,诸如水平缩放。云400托管组件420、430、440、460和470,每个组件可以是联网计算机或可以共享计算机的可共置软件服务。云400可以是云100的实现。
[0092] 从外部云400,人类管理员可以从web浏览器410向代理430提交监管请求A。请求A指定可插拔数据库(未示出)到计算机的弹性集群(未示出)的模板化部署。为了简化该示例(虽然不一定是典型的),该可插拔数据库是诸如用于报告或在线分析处理(OLAP)的只读数据库。因此,可以使用可插拔数据库的每个副本,而无需进行数据同步。请求A包含配置细节450,该配置细节指示可插拔数据库的集群可以增长到10个计算机和缩小到3个计算机,其中每个计算机具有该可插拔数据库的私有实例。在这个示例中,私有数据库实例:a)仅由其主机计算机使用,以及b)不与集群中其它计算机上的可插拔数据库的其它实例同步。在更复杂的示例中,可插拔数据库实例可以:a)是同步的副本,b)彼此交叉引用,c)可远程访问,和/或d)每个都具有不同的数据分区。在这个示例中,当集群缩小时,私有实例可能会被丢弃而没有同步。其它示例可能具有其它生命周期,诸如在解除被丢弃的实例之前进行批量同步。可能未示出的是在可插拔数据库的需求上升或下降时自动提交监管请求以增大或缩小集群的监视器。
[0093] 配置细节450可以直接识别可插拔数据库模板,或者通过符号名称451间接识别模板,该符号名称451在以下相似模板当中是全局唯一的且可重新映射的。代理430将符号名称451从请求A中复制到配置描述符B中,该配置描述符B最终作为异步作业被分派给工作者470执行。
[0094] 代理430在填充配置描述符B时可以专处理来自配置细节450的数据。例如,资源453可以指定为异步作业所针对的可插拔数据库的主机计算机的每个处理核心保留多少存储器,并且核心452可以指定核心的数量。代理430可以将存储器的总量计算为核心乘以核心存储器的乘积。代理430可以将核心和总存储器记录为缩放的需求482。例如,配置细节
450可以指定两个核心以及每个核心三兆字节的存储器。因此,缩放的需求482可以被缩放以为可插拔数据库指定2×3=6兆字节的总存储器。代理430可以对配置细节450的其它字段执行其它调整,以填充缩放的需求482。之后,当异步作业运行时,工作者470可以对缩放的需求482的相同或不同数据进行进一步的调整。
[0095] 5.1模板
[0096] 最终,工作者470执行配置描述符B。工作者470使用模板储存库440来选择和检查模板。工作者470将符号名称和初始需求C(基于配置描述符B)发送到模板储存库440。模板储存库440使用内部映射(未示出)基于符号名称和初始需求C来选择模板可插拔数据库。例如,符号名称可以是“销售历史”,并且需求C可以指定阿拉斯加(Alaska),模板储存库440使用它来选择名称为“小销售历史”的模板。
[0097] 模板储存库440以模板ID和精确需求D将模板或模板的句柄(handle)传递回工作者470。例如,精确需求D可以指示从所选择的模板克隆的可插拔数据库实例需要1吉字节的盘空间。因此,工作者470可能需要相应地调整缩放的需求482。相关的美国专利15/266,902中给出了使用模板储存库来自动实例化可插拔数据库的技术。
[0098] 工作者470向主机储存库460通告调整后的需求E,以选择合适的计算机上的合适的容器数据库来托管要从模板中克隆的可插拔数据库。因为需求E(每个请求A)要求多实例集群,因此主机储存库460选择多个容器数据库(和计算机),并在识别多个容器数据库的主机元数据F中将它们通告给工作者470。在相关的美国专利申请15/215,435中给出了用于克隆可插拔数据库的技术。
[0099] 在这个示例中,所选择的容器数据库之一被示出为CDB 420,它可以由附加的中间件(诸如交付点(PoD))托管。每个PoD可以拥有其自己的计算机或者至少其自己的虚拟计算机。因此,PoD可以是部署、监管和水平缩放的单元。典型地,一个PoD托管一个容器数据库(CDB)。因此,PoD和CDB或多或少可以用作同义词。因为CDB 420是多租户容器数据库,因此它可以托管不相关的可插拔数据库,诸如用于其它云客户的可插拔数据库。工作者470在若干个PoD中的每一个上调用实例化服务,诸如G,以使用可插拔数据库模板的克隆填充弹性集群。工作者470可以通过提供实例化参数和/或将有限的定制应用于所创建的每个可插拔数据库实例来区分各个PoD。
[0100] 5.2部署模式
[0101] 模板化部署尤其适合于监管模式和场景,这些模式和场景利用复制、冗余或统一性来提高可靠性、可用性和可服务性(RAS)。例如,请求A可以为可插拔数据库的所有实例指定相同的配置更改。当一次仅重新配置可插拔数据库的一个或几个实例时,工作者470可以通过将相同的配置更改应用于一个可插拔数据库来履行请求A。因此,可插拔数据库的大多数实例在给定的时间点仍处于服务状态,并且所有实例最终都被一个实例接一个实例地重新配置。因此,云400的模板自动化可以包括对多实例可插拔数据库进行滚动升级,在此期间,在重新配置任何一个数据库实例的同时,时延可能会暂时增加,但始终可插拔数据库的至少一些实例仍处于服务状态。
[0102] 6.0自主重新配置
[0103] 图5是描绘实施例中的示例云500的框图。云500具有自动反射来修复拓扑。在这个示例中,云500反应于盘满而自动重定位和升级可插拔数据库E。云500可以是云100的实现。
[0104] 6.1监视器
[0105] 云500包含组件510、521-522、530、560和570,每个组件可以是计算机或共享计算机的可共置的软件服务。监视器510从云500的组件接收遥测,诸如测量和警报。监视器510可以配置有反射,诸如基于规则的反应,这些反射:a)以可配置的方式检测环境状况,诸如警报、穿越阈值和其它状况;b)对如何反应做出可配置的决定;以及c)发射监管请求以执行其决定。相关的美国专利9,692,819中给出了用于自动监视远程系统健康状况的实时遥测技术。
[0106] 盘满A可以是指示盘已满,或者根据穿越的阈值,盘已接近满的警报,诸如当CDB 521在生成大量审核日志的繁忙时段时。反应于盘满A,监视器510可以决定:a)切换为对一些文件(诸如审核文件)使用存储区域网络(SAN),b)将容器数据库(及其可插拔数据库)移动到具有更大盘的PoD,或c)从容器数据库中逐出一些可插拔数据库。如图所示,监视器510决定通过生成请求B从CDB 521中逐出可插拔数据库E。
[0107] 6.2升级/降级
[0108] 请求B的执行需要对主机储存库560进行询问,主机储存库560通过通告前一个和下一个主机C来回答,该前一个和下一个主机C指示应将可插拔数据库E移动到CDB 522中。前一个和下一个主机C还指示软件版本不匹配,为此工作者570应该在移动期间向可插拔数据库E应用软件升级(或降级)。CDB 521-522中的每一个都有大量的系统和应用软件层,并且每个软件层都有其自己的发行和补丁生命周期。因此,版本不匹配可能涉及容器数据库DBMS、PoD框架、字节码解释器、虚拟化中间件、操作系统或其它已安装的软件基础设施中的一个、一些或全部。
[0109] 工作者570可以使用前一个和下一个主机C来检测版本不匹配,并执行迁移脚本以将可插拔数据库E迁移到目标发行版本。迁移脚本可以包括工件(artifacts),诸如shell脚本、python脚本、本机可执行程序、存储过程、以及其它结构化查询语言(SQL),诸如数据定义语言(DDL)或数据操作语言(DML)。迁移脚本可以调整工件,诸如模式、表内容和文件。可能运行一些迁移脚本来准备可插拔数据库E以进行重定位。可以运行其它迁移脚本来准备目标CDB 522以托管可插拔数据库E。在将可插拔数据库E移动到CDB 522中之后,还有其它迁移脚本也可以对可插拔数据库E进行调整。
[0110] 在相关的美国专利9,396,220和美国专利申请15/215,446中给出了将可插拔数据库从一个容器数据库自动重定位到另一个容器数据库的技术。在相关的美国申请15/266,917中给出了自动升级可插拔数据库的技术。
[0111] 7.0工作负载管理
[0112] 图6是描绘实施例中的示例云600的框图。云600具有线程池和泳道,用于工作负载管理。云600可以是云100的实现。云600包含CDB 621-623,其可插拔数据库由布置在泳道A-B中的组件641-642、651-652、661-662和671-672配置。泳道可防止优先级倒置和拒绝服务。组件630、641-642、651-652、661-662、671-672和690中的每一个可以是计算机或托管在同一计算机上的可共置的软件服务。
[0113] 7.1前控制器
[0114] 在操作中,自动化或诸如并发管理员610的DBA之类的人类管理员可以同时提交各种种类的监管请求来配置CDB 621-623的可插拔数据库。并发管理员610可以或多或少是不受管理的客户端,诸如云客户,其网络存在点可以或多或少在全球互联网中的任何地方(显示为野外602)。并发管理员610将请求提交到WebLogic代理630,WebLogic代理630可以是托管web服务器和/或应用服务器(诸如Java enterprise addition(J2EE)服务器)的边缘计算机,这可能会在暴露的安全领域中发生,诸如非军事区,诸如DMZ 601。WebLogic代理630可以执行监管请求的获取,并且可以根据“前控制器”企业设计模式工作。虽然WebLogic代理630被示出为单个计算机,但它可以替代地是用于水平缩放前端处理的计算机集群。WebLogic代理630仅按如下方式最小化处理监管请求。WebLogic代理630可以接收并检查请求(未示出)以检测请求的类别。例如,WebLogic代理630可以基于请求的紧急性或类型来对请求进行分类和优先级化。例如,WebLogic代理630可以检测到请求了从可插拔数据库的备份的(紧急)恢复,或者请求了(最终)创建可插拔数据库的副本。
[0115] WebLogic代理630可以施加准入控制,使得格式错误、未经授权或不切实际的监管请求被丢弃。例如,WebLogic代理630可以拒绝超过一百个计算机的水平缩放请求。WebLogic代理630可以使用诸如访问控制列表(ACL)或规则强加精细权限。因此,WebLogic代理630可能需要检查每个请求的内容、上下文和/或出处。在另一个实施例中,替代地由池
641-642、661-662或671-672的代理施加或根本不施加访问/准入控制。
[0116] 7.2泳道
[0117] WebLogic代理630可以将紧急请求引导到通道A中,并且将非紧急请求引导到通道B中以供执行。每个通道可以具有一系列实现各种处理阶段的诸如线程或执行程序之类的代理池。因此,通道A-B每个可以是用于监管请求的处理管线。因为通道A-B是分开的,因此它们独立操作,并且可能具有可以实现不同吞吐率的不同的容量。因此,通道A可以是快速通道,并且通道B可以是慢速通道。云600可以具有附加通道,以基于接收到的请求的细节以各种方式隔离处理。例如,可以将客户分组到通道中。可替代地,十种不同类型或类别的请求可以馈送十个不同的通道,这些通道处理十种不同类型或类别的异步作业。
[0118] 7.3线程池
[0119] 每个通道具有一系列池和/或队列,这些池和/或队列引入了附加的缓冲和/或异步。例如,通道A具有池641、661和671,以及作业队列651。通道的容量可以通过调整通道的池的大小和放置来配置。例如,通过具有两倍的代理/线程数量,或者通过托管在速度快两倍的计算机上,生产者池641(和通道A)可以实现比生产者池642(和通道B)大两倍的吞吐量。为了使响应速度最大化,WebLogic代理630将请求的初始处理委托给所选择的通道的生产者池的代理,从而促进WebLogic代理630或多或少立即处理后续请求。例如,WebLogic代理630可以检测到在第二天之前不需要履行请求。因此,WebLogic代理630可以选择慢速通道B,并将请求分派给生产者池642中的空闲生产者代理。池内的每个代理可能忙或空闲,这可以确定代理接受下一个要执行的请求的可用性。WebLogic代理630(或其线程之一)可以等待,直到在所选择的任何生产者池中生产者代理变得可用。
[0120] 生产者代理(未示出)根据给定的请求生成配置/作业描述符(未示出),并将作业描述符附加到同一通道的作业队列上。例如,所有通道的作业队列可以是中央容器数据库690的一部分,诸如JMS队列。中央容器数据库690可以包含促进作业跟踪的数据库对象或其它资源,诸如表681-682和模板可插拔数据库683。例如,每个排队的作业描述符可以与作业表681内的一行相关联。作业表681可以记录每个作业的状态(例如,管线阶段)和通道,诸如用于作业跟踪或作业取消。作业队列651-652:a)存储云600的监管积压任务,b)可以吸收或多或少任何需求尖峰,以及c)帮助限制CDB 621-623维持多少监管工作负载。消费者池661-
662使作业描述符从各个作业队列651-652中出队以供执行。因此,消费者池661-662可以施加对PoD的监管工作负载的进一步的准入控制和限制。保护PoD不受监管尖峰影响可以有助于保持PoD活跃(可用)以用于分析和事务用途(即实际的实时生产用途)。
[0121] 诸如661之类的消费者池内的可用消费者代理可以从作业队列651出队并执行作业描述符。消费者代理可以从驻留在中央容器数据库690中的模板可插拔数据库683中选择、检查(以检测需求)和/或检索可插拔数据库模板。消费者代理还可以咨询主机映射表682,以为可插拔数据库选择当前主机和/或潜在主机,并发现这些主机的容量。因此,消费者代理可以从作业描述符或中央容器数据库690中获得决定哪些PoD与监管作业有关所需的大部分或全部信息。
[0122] 7.4扇出
[0123] 消费者代理可以将作业分解成各种任务,诸如特定PoD本地的任务,并且将这些任务委托给工作者池中的相应工作者代理,诸如671。因此,一个监管请求可以由一个生产者代理、一个消费者代理和多个并发的工作者代理处理。但是工作者代理可以执行对履行监管请求所需的可插拔数据库执行监管更改的实际工作。
[0124] 7.5吞吐量
[0125] 通道和池提供各种系统优势。例如,对通道B的高影响需求尖峰不一定影响通道A的吞吐量。因此,例如,指派给通道B的一系列低优先级数据库备份请求不一定延迟通道A中的紧急请求。因此,保护云600免受优先级倒置(这可能导致拒绝服务)。java.utl.concurrent包的线程池和执行程序类可以用于实现本文所示的具有各种形式的可配置异步的组件。在实施例中,线程池是可动态调整大小的,使得实时云600的调优可以动态地调整吞吐量和(一个或多个)通道的优先级。云600可以具有用于自动调优(一个或多个)池或池的(一个或多个)通道的试探法。可以交互式地调优云600。
[0126] 8.0引导器
[0127] 图7是描绘实施例中的示例云700的框图。云700具有引导器,该引导器将非监管性(例如OLAP或在线事务处理,OLTP)数据库流量安全地路由到可能已经或可能尚未被重定位的可插拔数据库。云700可能是云100的实现。云700包含CDB 721-722,这些CDB 721-722的可插拔数据库可以根据(一个或多个)监管请求移动到其它(一个或多个)PoD。引导器720向其并发的客户端应用710(包括诸如751-752的客户端)隐藏可插拔数据库的这种移动。并发应用710可以:a)在不知道数据库的位置(主机信息)的情况下识别并连接到可插拔数据库,并且在实施例中,b)即使数据库从一个容器数据库、PoD和/或计算机移动到另一个容器、PoD和/或计算机,也保持连接状态。例如,客户端752可以使用包含可插拔数据库732的标识符的Java数据库连接(JDBC)连接统一资源定位符(URL)通过引导器720连接到可插拔数据库732。
[0128] 响应于客户端752尝试连接到可插拔数据库732期间接收到URL,引导器720可以:a)从URL中提取可插拔数据库732的标识符,b)咨询查找表或主机目录以检测可插拔数据库
732驻留在CDB 722上,以及c)在客户端752和CDB 722上的可插拔数据库732之间建立网络连接。在连接时,客户端752可以使用DML来分析或与可插拔数据库732进行交易。如果在客户端752连接到可插拔数据库732时可插拔数据库732移动到CDB 721,则引导器720可以通过在CDB 721而不是CDB 722处重新建立与可插拔数据库732的连接来维持连接。引导器720可以对客户端752或多或少透明地执行这种连接重建。因此,可插拔数据库732的位置可以被完全虚拟化。引导器720可以由负载均衡器、路由器、代理或其它互联网设备实现。
[0129] 8.1钱包
[0130] 在实施例中,来自客户端(诸如751)的一些或全部网络流量可能需要认证。钱包740是客户端751可以包含在报头(例如HTTP cookie或其它报头字段)或给可插拔数据库(诸如731B)的消息的主体中的认证凭证(例如,加密密钥、密钥环、证书或数字签名,诸如XML签名)。引导器720、CDB 722(或其计算机)或可插拔数据库731B(或其容器数据库)可以检查钱包740,以检测其有效性或客户端751的身份。在实施例中,钱包740还可以用作授权(例如,细粒度访问控制)、计费/计量/记账和路由的凭证。例如,如果仅为可插拔数据库
731B发行了钱包740,则引导器720可以:a)发现钱包740和可插拔数据库731B之间的关联,以及b)将承载钱包740的所有流量路由到可插拔数据库731B。在实施例中,每个可插拔数据库为每个授权客户端生成钱包。例如,可插拔数据库731B为客户端751生成钱包740。在实施例中,钱包生成是适合于如本文所述的异步执行的监管请求。在实施例中,引导器720将钱包740中继到可插拔数据库731B。在另一个实施例中,负载均衡器740在将流量中继到可插拔数据库731B之前丢弃钱包740。
[0131] 8.2数据分区
[0132] 还显示了可以存储一个数据分区的可插拔数据库731A,并且可插拔数据库731B可以存储同一分布式可插拔数据库的另一个分区。引导器720在连接时可能需要客户端751识别可插拔数据库实例,诸如731B,或者在DML内包含WHERE子句,该子句具有落在表的(一个或多个)列的分区键的分区范围内的(一个或多个)值。例如,客户端751可能:a)需要知道购买表按日期列进行分区,以及b)需要在查询中指定诸如“WHERE when='7/29/2017'”的子句,但不必知道:c)分区是按天还是按年,以及d)哪个可插拔数据库实例具有哪个数据分区。在实施例中,重新分区是适合于如本文所述的异步执行的监管请求。在实施例中,云700使用引导器720和基于范围的数据分区来向客户端隐藏重新分区。
[0133] 9.0数据库系统概述
[0134] DBMS管理一个或多个数据库。DBMS可以包括一个或多个数据库服务器。数据库包括存储在持久性存储器机制(诸如一组硬盘)上的数据库数据和数据库字典。数据库数据可以存储在一个或多个数据容器中。每个容器包含记录。每条记录内的数据被组织到一个或多个字段中。在关系型DBMS中,数据容器被称为表,记录被称为行,并且字段被称为列。在面向对象的数据库中,数据容器被称为对象类,记录被称为对象,并且字段被称为属性。其它数据库架构可以使用其它术语。
[0135] 用户通过向数据库服务器提交使数据库服务器对存储在数据库中的数据执行操作的命令来与DBMS的数据库服务器交互。用户可以是在客户端计算机上运行的与数据库服务器交互的一个或多个应用。多个用户在本文中也可以统称为用户。
[0136] 数据库命令可以采用符合数据库语言的数据库语句的形式。用于表达数据库命令的数据库语言是结构化查询语言(SQL)。SQL有许多不同的版本,一些版本是标准版本,一些是专有版本,并且具有各种扩展。数据定义语言(“DDL”)命令被发到数据库服务器以创建或配置数据库对象,诸如表、视图或复杂数据类型。SQL/XML是在对象关系数据库中操纵XML数据时使用的SQL的常见扩展。
[0137] 多节点数据库管理系统由互连的节点组成,这些节点共享对相同的一个数据库或多个数据库的访问。典型地,节点经由网络互连,并在不同程度上共享对共享存储装置的访问,例如对一组盘驱动器和存储在其上的数据的共享访问。节点之间不同程度的共享访问可以包括什么都不共享、共享所有内容、按节点对数据库分区进行独占访问或其某种组合。多节点数据库系统中的节点可以是经由网络互连的一组计算机(例如,工作站、个人计算机)的形式。可替代地,节点可以是网格的节点,该网格由与机架上的其它服务器刀片互连的服务器刀片形式的节点组成。
[0138] 多节点数据库系统中的每个节点都托管数据库服务器。服务器(诸如数据库服务器)是集成软件组件和计算资源(诸如存储器、节点以及节点上的用于在处理器上执行集成软件组件的进程)的分配的组合、专用于代表一个或多个客户端执行特定功能的软件和计算资源的组合。
[0139] 可以分配来自多节点数据库系统中多个节点的资源,以运行特定数据库服务器的软件。软件和节点中的资源的分配的每种组合都是在本文中被称为“服务器实例”或“实例”的服务器。数据库服务器可以包括多个数据库实例,其中一些或全部在分开的计算机(包括分开的服务器刀片)上运行。
[0140] 10.0可插拔数据库和容器数据库系统概述
[0141] 数据库整合涉及在多个数据库之间分配和共享计算资源。可以使用容器数据库管理系统来整合数据库。整合的数据库,诸如多租户容器数据库(CDB),包括一个或多个可插拔数据库(PDB)。
[0142] 容器数据库包括数据字典,数据字典包含定义容器数据库中的数据库对象的元数据。例如,给定CDB的数据字典将包含描述给定CDB中包含的每个PDB的元数据,包括每个PDB中包含的数据库对象。此外,每个可插拔数据库包括特定于PDB的数据库字典,该数据库字典包含定义包含在可插拔数据库中的数据库对象的元数据。数据库对象包括表、表列、索引、文件、表空间、数据类型、用户、用户特权以及用于存储数据库对象数据的存储结构等。
[0143] 容器数据库可以管理多个可插拔数据库,并且给定的数据库服务器实例可以管理和服务来自容器数据库的那些可插拔数据库。由此,给定的容器数据库允许多个可插拔数据库在同一数据库服务器和/或数据库服务器实例上运行,从而允许单个数据库服务器或实例的计算资源在多个可插拔数据库之间共享。在容器数据库管理系统中,每个可插拔数据库可以在容器数据库中独立于其它可插拔数据库被打开或关闭。
[0144] 应用可以通过在容器数据库管理系统上为可插拔数据库建立数据库会话来访问该可插拔数据库,其中数据库会话表示应用和容器数据库管理系统之间用于访问可插拔数据库的连接。通过例如将对新连接的请求传输到容器数据库管理系统来发起用于可插拔数据库的数据库会话,该请求指定了可插拔数据库。响应于这样的请求,容器数据库管理系统建立所请求的数据库会话。容器数据库管理系统可以托管多个数据库会话,每个数据库会话用于多个可插拔数据库之一。
[0145] 基于适用于容器数据库的那些数据库管理系统(DBMS)特征的要求,配置给定的容器数据库。适用于容器数据库的DBMS特征是与容器数据库交互或影响容器数据库的特征,因此需要对容器数据库进行某种配置。可能适用于给定容器数据库的DBMS特征包括以下中的一项或多项:管理容器数据库的DBMS的版本(包括主版本、次版本和/或补丁级别);可以为容器数据库安装或实现的可选特征(诸如数据加密、允许在数据库的区域内进行多个级别的数据限制的特征、实现本地化);容器数据库中存在的共同用户;已为管理容器数据库的DBMS安装的独立安装的补丁等等。
[0146] CDB的配置涵盖CDB的各方面,这些方面基于适用于CDB的DBMS特征进行调整。CDB的这些方面包括以下中的一项或多项:存储在CDB的可插拔数据库内的数据或存储在CDB的可插拔数据库中的数据库对象的结构;CDB的底层操作系统文件的布局或内容;由CDB要求的后台进程的数量;与CDB相关联的标识符;CDB功能所需的变量;初始化参数;用于对CDB中的数据进行编码的字符集;由CDB支持的时区;标准数据库块大小;表空间设置;撤消设置;由CDB支持的服务;为CDB实现的特殊特征;为CDB支持的数据库服务器实例集群等等。
[0147] 可插拔数据库可以被“插入”到容器数据库中,并且可以在数据库服务器和/或数据库管理系统之间传输。数据库服务器实例通过将描述可插拔数据库的元数据包括在容器数据库的数据库字典中,并通过将可插拔数据库作为容器数据库的一部分发起管理来将可插拔数据库插入到容器数据库中。特定可插拔数据库插入到其中的容器数据库的配置的任何数量的方面都会影响可插拔数据库。
[0148] 当可插拔数据库从源容器数据库移动到目的地容器数据库,其中目的地容器数据库和源容器数据库具有相同的配置时,在使可插拔数据库可用于目的地容器数据库处的操作之前,无需重新配置可插拔数据库。但是,重定位的可插拔数据库的源容器数据库和目的地容器数据库并非始终针对同一组DBMS特性进行配置。当将可插拔数据库移动到具有与可插拔数据库的源容器数据库不同配置的目的地容器数据库时,重定位的可插拔数据库被重新配置为符合目的地容器数据库的配置,这允许重定位的可插拔数据库与适用于目的地容器数据库的DBMS特征兼容。
[0149] 11.0硬件概述
[0150] 根据一个实施例,本文描述的技术由一个或多个专用计算设备实现。专用计算设备可以是硬连线的以执行这些技术,或者可以包括被持久地编程为执行这些技术的数字电子设备(诸如一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)),或者可以包括被编程为根据固件、存储器、其它存储装置或组合中的程序指令执行这些技术的一个或多个通用硬件处理器。这种专用计算设备还可以将定制的硬连线逻辑、ASIC或FPGA与定制的编程相结合,以实现这些技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持设备、联网设备或者结合硬连线和/或程序逻辑以实现这些技术的任何其它设备。
[0151] 例如,图8是图示可以在其上实现本发明实施例的计算机系统800的框图。计算机系统800包括总线802或用于传送信息的其它通信机制,以及与总线802耦合以处理信息的硬件处理器804。硬件处理器804可以是例如通用微处理器
[0152] 计算机系统800还包括耦合到总线802用于存储信息和将由处理器804执行的指令的主存储器806,诸如随机存取存储器(RAM)或其它动态存储设备。主存储器806还可以用于存储在执行由处理器804执行的指令期间的临时变量或其它中间信息。当存储在处理器804可访问的非暂态存储介质中时,这些指令使计算机系统800成为被定制以执行指令中指定的操作的专用机器。
[0153] 计算机系统800还包括耦合到总线802用于存储静态信息和处理器804的指令的只读存储器(ROM)808或其它静态存储设备。存储设备810(诸如磁盘或光盘)被提供并被耦合到总线802,用于存储信息和指令。
[0154] 计算机系统800可以经由总线802耦合到用于向计算机用户显示信息的显示器812,诸如阴极射线管(CRT)。包括字母数字键和其它键的输入设备814耦合到总线802,用于将信息和命令选择传送到处理器804。另一种类型的用户输入设备是光标控件816(诸如鼠标轨迹球或光标方向键),用于将方向信息和命令选择传送到处理器804并用于控制显示器812上的光标移动。这种输入设备通常在两个轴(第一轴(例如,x)和第二轴(例如,y))上具有两个自由度,这允许设备在平面中指定位置。
[0155] 计算机系统800可以使用定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑(它们与计算机系统相结合,使计算机系统800成为专用机器或将计算机系统800编程为专用机器)来实现本文所述的技术。根据一个实施例,由计算机系统800响应于处理器804执行包含在主存储器806中的一个或多个指令的一个或多个序列而执行本文的技术。这些指令可以从另一个存储介质(诸如存储设备86)读取到主存储器806中。包含在主存储器806中的指令序列的执行使得处理器804执行本文所述的处理步骤。在替代实施例中,可以使用硬连线的电路系统代替软件指令或与软件指令组合使用。
[0156] 如本文使用的术语“存储介质”是指存储使机器以特定方式操作的数据和/或指令的任何非暂态介质。这种存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,诸如存储设备86。易失性介质包括动态存储器,诸如主存储器806。存储介质的常见形式包括例如软盘、柔性盘、硬盘、固态驱动器、磁带或任何其它磁数据存储介质、CD-ROM、任何其它光学数据存储介质、任何具有孔模式的物理介质、RAM、PROM和EPROM、FLASH-EPROM、NVRAM、任何其它存储器芯片或盒式磁带。
[0157] 存储介质不同于传输介质但可以与传输介质结合使用。传输介质参与在存储介质之间传送信息。例如,传输介质包括同轴电缆线和光纤,包括包含总线802的导线。传输介质也可以采用声波或光波的形式,诸如在无线电波和红外数据通信期间生成的那些。
[0158] 各种形式的介质可以涉及将一个或多个指令的一个或多个序列携带到处理器804以供执行。例如,指令最初可以在远程计算机的磁盘或固态驱动器上携带。远程计算机可以将指令加载到其动态存储器中,并使用调制解调器通过电话线发送指令。计算机系统800本地的调制解调器可以在电话线上接收数据并使用红外发送器将数据转换成红外信号。红外检测器可以接收红外信号中携带的数据,并且适当的电路系统可以将数据放在总线802上。总线802将数据携带到主存储器806,处理器804从主存储器806检索并执行指令。由主存储器806接收的指令可以可选地在由处理器804执行之前或之后存储在存储设备810上。
[0159] 计算机系统800还包括耦合到总线802的通信接口818。通信接口818提供耦合到网络链路820的双向数据通信,其中网络链路820连接到本地网络822。例如,通信接口818可以是综合业务数字网(ISDN)卡、电缆调制解调器、卫星调制解调器或者提供与对应类型的电话线的数据通信连接的调制解调器。作为另一个示例,通信接口818可以是提供到兼容局域网(LAN)的数据通信连接的LAN卡。还可以实现无线链路。在任何此类实现中,通信接口818都发送和接收携带表示各种类型信息的数字数据流的电信号、电磁信号或光信号
[0160] 网络链路820通常通过一个或多个网络向其它数据设备提供数据通信。例如,网络链路820可以提供通过本地网络822到主计算机824或到由互联网服务提供商(ISP)826操作的数据设备的连接。ISP 826进而通过全球分组数据通信网络(现在通常称为“互联网”828)提供数据通信服务。本地网络822和互联网828都使用携带数字数据流的电信号、电磁信号或光信号。通过各种网络的信号以及网络链路820上并通过通信接口818的信号(其将数字数据携带到计算机系统800和从计算机系统800携带数字数据)是传输介质的示例形式。
[0161] 计算机系统800可以通过(一个或多个)网络、网络链路820和通信接口818发送消息和接收数据,包括程序代码。在互联网示例中,服务器830可以通过互联网828、ISP 826、本地网络822和通信接口818发送对应用程序的所请求代码。
[0162] 接收到的代码可以在被接收到时由处理器804执行,和/或存储在存储设备810或其它非易失性存储装置中以供稍后执行。
[0163] 12.0软件概述
[0164] 图9是可以用于控制计算系统800的操作的基本软件系统900的框图。软件系统900及其组件,包括它们的连接、关系和功能,仅仅是示例性的,并且不意味着限制(一个或多个)示例实施例的实现。适于实现(一个或多个)示例实施例的其它软件系统可以具有不同的组件,包括具有不同的连接、关系和功能的组件。
[0165] 提供软件系统900用于指导计算系统800的操作。可以存储在系统存储器(RAM)806中和存储在固定存储装置(例如,硬盘或闪存)86上的软件系统900包括内核或操作系统(OS)910。
[0166] OS 910管理计算机操作的低级方面,包括管理进程的执行、存储器分配、文件输入和输出(I/O)以及设备I/O。表示为902A、902B、902C……902N的一个或多个应用可以被“加载”(例如,从固定存储装置86传送到存储器806中)以供系统900执行。意图在计算机系统800上使用的应用或其它软件也可以被存储为可下载的计算机可执行指令集,例如,用于从互联网位置(例如,Web服务器、app商店或其它在线服务)下载和安装。
[0167] 软件系统900包括图形用户界面(GUI)915,用于以图形(例如,“点击”或“触摸手势”)方式接收用户命令和数据。进而,可以由系统900根据来自操作系统910和/或(一个或多个)应用902的指令来对这些输入进行动作。GUI 915还用于显示来自OS 910和(一个或多个)应用902的操作结果,于是用户可以供应附加的输入或终止会话(例如,注销)。
[0168] OS 910可以直接在计算机系统800的裸硬件920(例如,(一个或多个)处理器804)上执行。可替代地,管理程序或虚拟机监视器(VMM)930可以插入在裸硬件920和OS 910之间。在这个配置中,VMM 930充当OS 910与计算机系统800的裸硬件920之间的软件“缓冲”或虚拟化层。
[0169] VMM 930实例化并运行一个或多个虚拟机实例(“客人机”)。每个客人机包括“客人”操作系统(诸如OS 910),以及被设计为在客人操作系统上执行的一个或多个应用(诸如(一个或多个)应用902)。VMM 930向客人操作系统呈现虚拟操作平台并管理客人操作系统的执行。
[0170] 在一些实例中,VMM 930可以允许客人操作系统如同其直接在计算机系统900的裸硬件920上运行一样运行。在这些实例中,被配置为直接在裸硬件920上执行的客人操作系统的相同版本也可以在VMM 930上执行而无需修改或重新配置。换句话说,VMM 930可以在一些情况下向客人操作系统提供完全硬件和CPU虚拟化。
[0171] 在其它实例中,客人操作系统可以被专门设计或配置为在VMM 930上执行以提高效率。在这些实例中,客人操作系统“意识到”它在虚拟机监视器上执行。换句话说,VMM 930可以在某些情况下向客人操作系统提供半虚拟化。
[0172] 计算机系统进程包括硬件处理器时间的分配,以及存储器的分配(物理和/或虚拟),用于存储由硬件处理器执行的指令的存储器的分配,用于存储由硬件处理器执行指令所生成的数据,和/或用于当计算机系统进程未运行时在硬件处理器时间的分配之间存储硬件处理器状态(例如,寄存器的内容)。计算机系统进程在操作系统的控制下运行,并且可以在计算机系统上执行的其它程序的控制下运行。
[0173] 13.0云计算
[0174] 本文一般地使用术语“云计算”来描述计算模型,该计算模型使得能够按需访问计算资源的共享池,诸如计算机网络、服务器、软件应用和服务,并且允许以最少的管理工作或服务提供商交互来快速提供和释放资源。
[0175] 云计算环境(有时称为云环境或云)可以以各种不同方式实现,以最好地适应不同要求。例如,在公共云环境中,底层计算基础设施由组织拥有,该组织使其云服务可供其它组织或公众使用。相反,私有云环境一般仅供单个组织使用或在单个组织内使用。社区云旨在由社区内的若干组织共享;而混合云包括通过数据和应用可移植性绑定在一起的两种或更多种类型的云(例如,私有、社区或公共)。
[0176] 一般而言,云计算模型使得先前可能由组织自己的信息技术部门提供的那些职责中的一些代替地作为云环境内的服务层来输送,以供消费者使用(根据云的公共/私有性质,在组织内或组织外部)。取决于特定实现,由每个云服务层提供或在每个云服务层内提供的组件或特征的精确定义可以有所不同,但常见示例包括:软件即服务(SaaS),其中消费者使用在云基础设施上运行的软件应用,同时SaaS提供者管理或控制底层云基础设施和应用。平台即服务(PaaS),其中消费者可以使用由PaaS的提供者支持的软件编程语言和开发工具,以开发、部署和以其它方式控制它们自己的应用,同时PaaS提供者管理或控制云环境的其它方面(即,运行时执行环境下的一切)。基础设施即服务(IaaS),其中消费者可以部署和运行任意软件应用,和/或提供进程、存储、网络和其它基础计算资源,同时IaaS提供者管理或控制底层物理云基础设施(即,操作系统层下的一切)。数据库即服务(DBaaS),其中消费者使用在云基础设施上运行的数据库服务器或数据库管理系统,同时DbaaS提供者管理或控制底层云基础设施和应用。
[0177] 呈现上述基本计算机硬件和软件以及云计算环境是为了说明可以用于实现(一个或多个)示例实施例的基本底层计算机组件。但是,(一个或多个)示例实施例不必限于任何特定计算环境或计算设备配置。相反,(一个或多个)示例实施例可以在本领域技术人员依据本公开将理解为能够支持本文呈现的(一个或多个)示例实施例的特征和功能的任何类型的系统架构或处理环境中实现。
[0178] 在前面的说明书中,已经参考众多具体细节描述了本发明的实施例,这些细节可以从实现到实现有所变化。因而,说明书和附图应被视为说明性而非限制性的。本发明范围的唯一和排他性指示,以及申请人意图作为本发明范围的内容,是以发出这种权利要求书的具体形式从本申请发出的权利要求集合的字面和等同范围,包括任何后续更正。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈