首页> 中国专利> 多租户环境中租户特定数据集的管理

多租户环境中租户特定数据集的管理

摘要

一种用于通过以下方式管理多租户系统中的租户特定数据集的方法、计算机程序产品和系统:接收将物理数据存储库中的数据集从第一类型的多租户部署转换为第二类型的多租户部署的请求,检索标识作出请求的租户的租户标识元数据,基于第二类型的多租户部署修改物理数据存储库中的数据集,以及修改与抽象层相关联的元数据以允许修改后的数据集被访问。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-05-17

    授权

    授权

  • 2014-12-17

    实质审查的生效 IPC(主分类):G06F12/00 申请日:20130221

    实质审查的生效

  • 2014-11-19

    公开

    公开

说明书

技术领域

本发明的领域涉及多租户数据库。更具体地,本发明的领域涉及多租 户平台即服务(PaaS)和软件即服务(SaaS)的服务(在下文中统称为“服 务”)。

背景技术

服务可以在公共、混合和私有云环境中提供。由服务提供者提供的服 务可以访问存储在数据库管理系统(DBMS)中的数据,DBMS代表计算 机化的信息存储和检索系统。DBMS可以管理多个数据库,每一个数据库 可以由不同的实体拥有。服务可以由多个客户组织(租户)同时订购。因 此,服务处理不同租户的数据。出于安全和监管的原因,租户要求不同程 度的数据隔离,这在租户订购服务时被规定为“政策要素”。更为重要的 是,隔离程度必须在安全和监管要求随时间改变时能够无缝改变。因此, 服务提供者需要实现允许数据和配置分开的针对服务的多租户架构,使得 每个租户接收到适当水平的数据隔离。

当前存在用于管理多租户数据的三种部署选项。第一部署选项将租户 数据存储在分离的数据库中,这是数据隔离的最简单方案。计算资源和应 用代码通常在服务器上的所有租户之间共享,但是每个租户具有其自己的 与属于所有其他租户的数据在逻辑上保持隔离的数据集。元数据将每个数 据库与正确的租户相关联,并且数据库安全性会防止任何租户无意或恶意 地访问其他租户的数据。然而,该选项倾向于导致服务提供者维护设备和 备份租户数据的更高成本。硬件成本也比在备选部署选项下更高,这是由 于在给定数据库服务器上能够容纳的租户数量受限于服务器可以支持的数 据库的数量。

第二部署选项涉及在相同的数据库中容纳多个租户,每个租户具有其 自己的表格集以及集合到专门为该租户创建的模式中的其他数据库产物。 尽管不如完全隔离系统,这种方案为有安全意识的租户提供中等程度的逻 辑数据隔离,并且能够支持每个数据库服务器上的更大数量的租户。

第三部署方案涉及使用相同的数据库和相同的表格集来托管多个租户 的数据。给定表格可以包括以任何次序存储的来自多个租户的记录,并且 租户标识列将每个记录与适当的租户相关联。在这三个选项之中,共享模 式方案具有最低的硬件和备份成本,这是因为其允许每个数据库服务器服 务于最大数量的租户。

以透明的方式将数据库部署从一个选项转换为另一个选项在当前并不 被支持,并且只能用手动数据移动和系统停机来解决。此外,当前在这类 转换时必须记录访问数据库的任何应用以反映对该数据库的改变。

发明内容

各实施例提供了一种方法、计算机程序产品和系统,用于执行操作以 便通过以下方式管理多租户系统中的租户特定数据集:接收将物理数据存 储库中的数据集从第一类型的多租户部署转换为第二类型的多租户部署的 请求,检索标识作出请求的租户的租户标识元数据,基于第二类型的多租 户部署修改物理数据存储库中的数据集,以及修改与抽象层相关联的元数 据以允许修改后的数据集被访问。

附图说明

因此,可以参考附图来提供上述方面被实现并详细理解的方式、上面 简要概括的本发明的实施例的更具体的描述。

然而,应该注意的是,附图仅仅示出本发明的典型实施例,并且因此 不应视为是对本发明范围的限制,因为本发明可以容纳其他等同有效的实 施例。

图1是示出根据本发明实施例的云计算环境的框图。

图2是示出根据本发明的实施例,管理和转换多租户环境中的部署选 项的架构的框图。

图3是示出根据本发明实施例的两层应用架构的组件的框图。

图4是示出根据本发明的实施例的用于转换数据库部署选项的方法的 流程图。

图5是示出根据本发明的实施例的用于转移数据以完成数据库从一个 多租户部署选项到另一个多租户部署选项的转换的方法的流程图。

图6是示出根据本发明的实施例,用于转移数据以完成数据库从一个 多租户部署选项到另一个多租户部署选项的转换的方法的流程图。

图7描绘根据本发明实施例的云计算环境。

图8描绘根据本发明实施例的抽象模型层。

具体实施方式

本发明的实施例提供了用于管理多租户环境中的租户特定数据的技 术。在某些实施例中,提供了一种从一个多租户数据库部署转换为另一个 多租户数据库部署的方法。在某些实施例中,通过抽象层接收在多租户部 署之间转换的请求,使得作出请求的应用不知道用于存储租户数据的物理 实现。在某些实施例中,提供了一种转换数据库部署的应用。在某些实施 例中,该应用是数据库管理系统(DBMS)的一部分。该应用可以配置成 接收将物理数据存储库中的数据集从第一类型的多租户部署转换为第二类 型的多租户部署的请求。该应用然后可以通过抽象层检索标识作出该请求 的租户的租户标识元数据。该应用然后可以基于第二类型的多租户部署修 改物理数据存储库中的数据集。最后,该应用可以根据第二类型的多租户 部署,修改与抽象层相关联的元数据以访问修改后的数据集。

提前应当理解的是,尽管包括了关于云计算的详细描述,但是本文中 记载的教导的实现不限于云计算环境。而是,本发明的实施例能够结合现 在已知或以后开发的任何其它类型的计算环境而实现。

为方便起见,详细描述包括已经从以下文献中得到的后面的定义: Peter Mell和Tim Grance在2009年10月7日发表的“Draft NIST Working Definition of Cloud Computing”,其在随附提交的IDS中被引用,并且其 副本随附在后。

云计算是一种服务交付模型,用于实现对可配置的计算资源(例如, 网络、网络带宽、服务器、处理、内存、存储、应用、虚拟机和服务)的 共享池的便利、按需的网络访问,所述可配置的计算资源能够以最小的管 理成本或与服务提供者的最少交互而被快速供应和释放。这种云模型可以 包括至少五个特征、至少三个服务模型和至少四个部署模型。

其特征如下:

按需自助服务:云的消费者无需与服务提供者进行人为交互就能够单 方面自动地按需供应诸如服务器时间和网络存储等之类的计算能力。

广泛的网络访问:能力可以通过网络获取并通过标准机制访问,所述 标准机制促进不同种类的瘦客户端平台或厚客户端平台(例如移动电话、 膝上型电脑和PDA)对云的使用。

资源池化:提供者的计算资源被池化以使用多租户模型服务于多个消 费者,并且根据需求动态地分配和再分配不同的物理和虚拟资源。存在着 位置独立感,因为消费者通常不能控制或不知晓所提供的资源的确切位置, 但是能够在较高的抽象层面(例如国家、州或数据中心)上规定位置。

迅速弹性:能力能够迅速且有弹性地被供应,在一些情况下被自动地 供应以快速扩展,并且能够迅速释放以快速缩减。对于消费者而言,用于 供应的可用能力往往看上去是无限的,并且能够在任何时候购买任意数量。

被测量的服务:云系统通过利用适于服务类型(例如存储、处理、带 宽和有效用户帐户)的某个抽象层面上的计量能力,自动地控制和优化资 源使用。可以监测、控制和报告资源使用,从而为被利用的服务的提供者 和消费者双方提供透明度。

服务模型如下:

软件即服务(SaaS):向消费者提供的能力是使用在云基础设施上运 行的提供者的应用。该应用可通过诸如网络浏览器的瘦客户端接口(例如 基于网络的电子邮件)从各种客户端装置访问。除了有限的特定于用户的 应用配置设置的可能例外,消费者并不管理或控制包括网络、服务器、操 作系统、存储、乃至个体应用能力的下层云基础设施。

平台即服务(PaaS):向消费者提供的能力是把使用提供者支持的程 序设计语言和工具创建的消费者创建或获取的应用部署到云基础设施上。 消费者并不管理或控制包括网络、服务器、操作系统或存储的下层云基础 设施,但是对部署的应用和可能的应用托管环境配置具有控制权。

基础设施即服务(IaaS):向消费者提供的能力是在消费者能够部署并 运行包括操作系统和应用的任意软件的地方供应处理、存储、网络和其他 基础计算资源。消费者并不管理或控制下层云基础设施,但是对操作系统、 存储、部署的应用具有控制权,并且可能对选择联网组件(例如主机防火 墙)具有有限的控制权。

部署模型如下:

私有云:云基础设施单独为某个组织运行。其可以由该组织或第三方 管理、并且可以存在于该组织内部或外部。

社区云:云基础设施被若干组织共享并且支持具有共同关注的问题(例 如使命、安全要求、政策和合规考虑)的特定社区。其可以由这些组织或 第三方管理并且可以存在于该社区内部或外部。

公共云:云基础设施对于一般公众或大型行业群体而言可用并且由出 售云服务的组织拥有。

混合云:云基础设施是两个或多个云(私有云、社区云或公共云)的 组成物,所述两个或多个云依然是独特的实体,但是通过使数据和应用能 够移植的标准化或私有技术(例如用于云之间的负荷平衡的云突发(cloud bursting))绑定在一起。

云计算环境是面向服务的,聚焦于无状态性、低耦合性、模块性和语 意互操作性。云计算的核心是包含互连节点的网络的基础设施。云计算网 络中的节点是计算装置,包括但不限于个人计算机系统、服务器计算机系 统、瘦客户端、厚客户端、手持式或膝上型装置、多处理器系统、基于微 处理器的系统、机顶盒、可编程消费电子产品、网络个人计算机、小型机 系统、大型计算机系统、以及包括上述系统或装置中的任意一个的分布式 云计算环境、等等。云计算节点能够实现和/或执行上文中阐述的任何功能。

下面参照本发明的实施例。然而,应当理解,本发明并不局限于特定 描述的实施例。相反,以下特征和元件的任何组合,无论其是否与不同的 实施例相关,都被预期到用于实现和实践本发明。而且,尽管本发明的实 施例可以实现优于其他可能的解决方案和/或现有技术的优点,但是给定的 实施例是否实现了特定优点并非是对本发明进行限制。因此,以下方面、 特征、实施例和优点仅是说明性的,除非在权利要求中明确陈述,否则其 不应被视为所附权利要求的要素或限制。同样,对“本发明”的提及不应 被解释为本文公开的任何发明主题的概括,并且不应被认为是所附权利要 求的要素或限制,除非在权利要求中明确陈述。

所属领域的技术人员将理解的是,本发明的各个方面可以实施为系统、 方法或计算机程序产品。因此,本发明的各个方面可以采取以下形式,即: 完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代 码等),或软件和硬件方面结合的实施方式,这里可以统称为“电路”、“模 块”或“系统”。此外,本发明的各个方面还可以采取用一个或多个计算机 可读介质实施的计算机程序产品的形式,该计算机可读介质上包含有计算 机可读程序代码。

可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可 以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质 例如可以是——但不限于——电、磁、光、电磁、红外线或半导体的系统、 装置或器件,或者任意以上的适当组合。计算机可读存储介质的更具体的 例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算 机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式 可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器 (CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。 在本文件的上下文中,计算机可读存储介质可以是任何包含或存储程序的 有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合 使用。

计算机可读信号介质可以包括例如在基带中或者作为载波一部分传播 的数据信号,其中承载了计算机可读程序代码。这种传播的信号可以采用 各种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计 算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介 质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装 置或者器件使用或者与其结合使用的程序。

计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括 但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言的任意组合来编写用于执行本发明各 方面的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设 计语言(诸如Java、Smalltalk、C++等),还包括常规的过程式程序设计 语言(诸如“C”程序设计语言或类似的程序设计语言)。程序代码可以完 全地在用户计算机上执行、部分地在用户计算机上执行、作为独立的软件 包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程 计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通 过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计 算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过 因特网连接)。

下面参照根据本发明实施例的方法、装置(系统)和计算机程序产品 的流程图和/或框图描述本发明的各方面。应当理解的是,流程图和/或框图 的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指 令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它 可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程 序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生实 现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。

也可以把这些计算机程序指令存储在计算机可读介质中,这些指令可 以使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作, 使得存储在计算机可读介质中的指令产生包括实现流程图和/或框图中的 一个或多个方框中规定的功能/动作的指令的制造品。

计算机程序指令还可以加载到计算机、其它可编程数据处理装置或其 他设备上,以使一系列操作步骤在计算机、其它可编程装置或其他设备上 被执行以产生计算机实现的过程,使得在计算机或其它可编程装置上执行 的指令提供用于实现流程图和/或框图中的一个或多个方框中规定的功能/ 动作的处理。

本发明的实施例可以通过云计算基础设施提供给最终用户。云计算通 常指的是通过网络提供作为服务的可伸缩计算资源。更为正式地,云计算 可以被定义为在计算资源与其下层技术架构(例如,服务器、存储、网络) 之间提供抽象的计算能力,从而实现对可配置的计算资源的共享池的便利、 按需的网络访问,所述可配置的计算资源能够以最小的管理成本或与服务 提供者的最少交互而被快速供应和释放。因此,云计算允许用户访问“云” 中的虚拟计算资源(例如,存储、数据、应用甚至完全虚拟的计算系统), 而不管用于提供计算资源的下层物理系统(或这些系统的位置)如何。

通常,云计算资源在按使用付费的基础上向用户提供,其中用户仅被 收取实际使用的计算资源的费用(例如,用户消费的存储空间的量或由用 户实例化的虚拟化系统的数量)。用户可以访问在任何时间驻留在云中以及 跨越互联网来自任何地方的任何资源。在本发明的上下文下,用户可以访 问云中可用的应用或相关数据。例如,多租户数据库部署转换应用可以在 云中的计算系统上执行、并将数据库从一个多租户部署转换为另一个多租 户部署。在这类情况下,多租户数据库部署转换应用可以转换数据库部署、 并在云中的存储位置存储物理数据存储库和相关联的租户元数据。这样做 允许用户从附连到与云连接的网络(例如,互联网)的任何计算系统访问 该信息。

图1是示出根据本发明的实施例的用于提供软件即服务的云计算系统 100的框图,其中服务器提供应用、并以三种不同部署中的一种部署存储 多个客户(租户)的数据。联网的系统100包括服务器102和客户端计算 机132。服务器102和客户端132经由网络130彼此连接,并且可以经由 网络130连接到其他计算机。一般来说,网络130可以是电信网和/或广域 网(WAN)。在特定实施例中,网络130是互联网。

服务器102通常包括经由总线115连接到存储器106、网络接口装置 124、存储装置108、输入装置126以及输出装置128的处理器104。服务 器102通常在操作系统107的控制下。操作系统的示例包括UNIX, Microsoft操作系统的各版本,以及操作系统的发行版。 更一般地,可以使用支持本文公开的功能的任何操作系统。处理器104被 包括以表示单个CPU、多个CPU、具有多个处理核的单CPU等。类似地, 存储器106可以是随机存取存储器。尽管存储器106被示为单数个体,但 应当理解,存储器106可以包括多个模块,并且存储器106可以以多个级 别存在,从高速寄存器和高速缓存到较低速度但更大的DRAM芯片。网 络接口装置124可以是允许服务器102经由网络130与其他计算机通信的 任何类型的网络通信装置。

存储装置108可以是持久存储装置。尽管存储装置108被示为单个单 元,但是存储装置108可以是固定和/或可移除存储装置的组合,例如固定 的磁盘驱动器、固态驱动器、软盘驱动器、磁带驱动器、可移除存储卡或 光存储装置。存储器106和存储装置108可以是跨越多个主要和次级存储 装置的一个虚拟地址空间的一部分。

如图所示,服务器的存储装置108包含多个数据库。在该特定附图中, 示出四个数据库,尽管任何数量的数据库可以存储在服务器102的存储装 置108中。存储装置108被示为包含编号为118、120和122的租户特定数 据库,每个数据库对应于不同的部署选项。存储装置108也被示为包含元 数据仓库125,其存储租户标识信息、系统策略和任何其他相关信息。

输入装置126可以是用于向服务器102提供输入的任何装置。例如, 可以使用键盘和/或鼠标。输出装置128可以是用于向服务器102的用户提 供输出的任何装置。例如,输出装置108可以是任何常规的显示屏或扬声 器组。尽管与输入装置126分开示出,但是输出装置128和输入装置126 可以组合在一起。例如,可以使用带有集成的触摸屏的显示屏。

如图所示,服务器102的存储器106包括配置成经由网络130向用户 提供多个服务的多租户应用110。如图所示,服务器102的存储器106还 包含配置成管理包含在服务器102的存储装置108中的多个数据库的数据 库管理系统(DBMS)112。服务器102的存储器106还包含网络服务器114, 其执行传统的网络服务功能,并且还可以提供作为不同应用(例如多租户 应用110)的运行时环境的应用服务器功能(例如,J2EE应用服务器)。

根据本发明的实施例,如图所示,客户端计算机132包含处理器134、 存储器136、操作系统138、存储装置142、网络接口144、输入装置146 和输出装置148。这些组件的描述和功能与参照服务器102描述的等效组 件相同。如图所示,客户端计算机132的存储器136也包含网络浏览器140, 在某些实施例中网络浏览器140被用于访问由服务器102提供的服务。

图1的特定描述仅用于说明目的;应当理解,本发明并不局限于特定 描述的实施例,并且可预期到实现和实践本发明的任何组合。尽管图1示 出单个服务器102,但是本发明的实施例预期到用于提供本文所述服务和 功能的任何数量的服务器。而且,尽管在图1中被示出与服务器102在一 起,但是两层多租户应用110的服务和持久功能可以被容纳在分离的物理 服务器中或者容纳在相同服务器内的分离的虚拟服务器中。在某些实施例 中,多租户应用110可以被部署在计算集群中的多个实例中。如本领域的 普通技术人员所知,为多租户应用110执行其相应功能的模块可以被容纳 在相同服务器、不同服务器或其任何组合中。存储装置中的项目(例如元 数据仓库125、数据库118、120和122)也可以存储在相同服务器、不同 服务器或其任何组合中,并且也可以作为应用模块驻留在相同或不同服务 器上。

图2是示出根据本发明的实施例管理和转换多租户环境中的部署选项 的架构的框图200。如图所示,多租户2051-N经由网络130连接到服务器 102、并且访问包含在服务器102的存储器106中的多租户应用110。下面 进一步详细描述的多租户应用110配置成向租户提供服务,在某些实施例 中多租户应用110包括云计算环境中的多个软件即服务应用。还示出的是 抽象层220,其充当多租户应用110和DBMS112之间的中介。通过抽象 层220,可以完成不同数据库部署选项之间的透明转换,使得多租户应用 110不需要知道每个数据库的物理实现、并且多租户应用110不需要被记 录以反映数据库中的变化。抽象层220配置成接收来自多租户应用110的 查询,然后将租户特定信息插入到该查询中,使得查询被引导到适当的数 据库和/或数据库表格。租户特定信息可以包括但不限于与每个租户拥有的 数据库、模式、表格和列的物理实现相关的细节。这类细节可以包括数据 库、模式、表格和列的名称和位置。在备选实施例中,抽象层220可以被 实现为数据库管理系统中的联合能力的扩展。在某些实施例中,抽象层还 执行数据放置层的功能,该数据放置层负责接收转换请求并随后将数据从 一个多租户部署类型转换为另一个多租户部署类型。

在某些实施例中,租户特定信息被存储在元数据仓库125中。元数据 仓库125的实施例包括关系数据库、内容管理系统、或由实施策略和数据 映射的应用模块引用的文件系统。下面进一步详细描述的DBMS112是通 用数据库管理系统。如图所示,DBMS112管理多个数据库,其包括:分 别用于租户T1-N的分离的物理数据库2351-N;包含用于租户T3、T4和TM的分离的模式242、244和246的共享数据库240;以及包含用于所有租户 的单个模式252的共享数据库250。在某些实施例中,DBMS112还可以直 接管理元数据仓库125。如图所示,数据库250包含模式252,其具有分别 对应于租户标识信息、密钥名和密钥值的示例性列254、256和258。租户 标识信息在元数据仓库125中被存储和管理。图2中的特定描述仅用于说 明目的;应当理解,本发明并不局限于特定描述的实施例,并且可以预期 到用于实现和实践本发明的任何组合。

图3是示出根据本发明实施例的两层应用架构的组件的框图。如图所 示,多租户应用110包含服务340和持久访问层350。多租户应用110驻 留在适当的应用运行时(例如J2EE应用运行时)的应用层上,例如应用服务器上(IBM和WebSphere是国际商业机器公司在全 球许多司法辖区注册的商标)。服务340包括任何软件即服务(SaaS)解 决方案,其中应用在服务器上被执行并且由用户经由网络(例如互联网) 被访问。SaaS应用的示例包括但不限于用于主数据管理(MDM)、会计、 协作、客户关系管理、企业资源规划、开发票(invoicing)、人力资源管理、 内容管理和服务台管理的应用。持久访问层350是配置成当与抽象层220 耦合时,允许多租户应用110及其服务340以透明方式访问在多租户环境 中管理的多个数据库的接口。由于多租户应用110及其服务340不知道他 们引用的数据库的物理实现,所以持久访问层350提供隐藏数据库的物理 实现细节的多租户应用与抽象层之间的链接。通过持久访问层350,多租 户应用110及其服务340通过生成查询来向数据库读取和写入数据,所述 查询被发送到抽象层进行进一步外推和处理。

如图所示,多租户应用110被连接到抽象层220,从而提供如上所述 的功能。根据本发明的实施例,抽象层220提供多租户应用110与DBMS 112之间的抽象层。如图所示,DBMS112包含数据库引擎300,其控制标 准的数据库功能,例如读、写、查询和其他数据库管理工具。在某些实施 例中,DBMS112可以执行在某些实施例中由如上所述的抽象层220执行 的数据放置层功能。

图4是示出根据本发明的实施例,将租户特定数据集从一个多租户部 署选项转换为第二多租户部署选项的方法400的流程图。在一个实施例中, 多租户应用110执行方法410的步骤。该方法开始于步骤410,在该步骤 中转换请求由多租户应用110从租户接收。在步骤420,多租户应用110 通过访问被包含在元数据仓库125中的信息,识别作出请求的租户。在元 数据仓库125是关系数据库的实施例中,多租户应用110连接到元数据仓 库125以检索与作出请求的租户相关联的数据。在步骤430,多租户应用 110识别该租户的当前多租户部署选项。在一个实施例中,使用来自元数 据仓库125的信息来确定当前的多租户部署选项。在另一个实施例中,当 前的多租户部署选项由用户作为输入提供。通常,可以预期到用于确定当 前部署选项的任何适合的方法。

在步骤440,多租户应用110识别由该租户请求的部署选项。在某些 实施例中,多租户应用110从用户接收定义所请求的多租户部署的输入。 在步骤450,多租户应用110修改当前部署中的数据集,以实现该租户的 转换请求。步骤450的实施例在下面关于图5和图6进行描述。在步骤460, 多租户应用110修改与抽象层220相关联的元数据,以允许多租户应用110 及其服务340访问转换后的数据库而无需代码修改。因为多租户应用110 及其服务340与下层数据库的实际物理实现无关地被编码,所以抽象层220 必须修改由多租户应用110的持久访问层350提交的查询,以便反映数据 库的物理实现中的所选的部署选项。没有这样的修改,多租户应用110及 其服务340将不能以透明方式无代码改变地访问下层数据库。在某些实施 例中,步骤460包括多租户应用110更新被包含在元数据仓库125中的元 数据,以便向抽象层220及其查询提供指向与该租户请求的部署相对应的 转换后的数据库的链接。如果请求的部署是私有数据库,则利用足以把该 租户现在拥有的私有数据库与抽象层220链接在一起的信息来修改元数据 仓库125。在步骤460的某些实施例中,多租户应用110修改与作出请求 的租户的数据库相关联的抽象层220中的查询以包括新的识别信息。如果 所请求的部署是共享数据库中的私有模式(private schema),则多租户应 用110可以更新包含在元数据仓库125中的条目,以包含针对为作出请求 的租户创建的私有模式的引用。在某些实施例中,在与作出请求的租户相 关联的抽象层220中的查询被重写,以包含识别该私有模式信息的条款 (clause)。如果所请求的部署是共享数据库中的共享模式(shared schema),则适当的租户标识符从元数据仓库125被检索并更新,或者被 插入与该租户相关联的抽象层220中的查询中。

图5是示出根据本发明的实施例,对应于步骤450的方法500的流程 图。在某些实施例中,多租户应用110执行方法500中的步骤。该方法开 始于步骤510,在该步骤中多租户应用110开始执行包括步骤520-550的循 环,用于对作出请求的租户所拥有的每个表格将租户数据库从一个部署选 项转换为另一个部署选项。在步骤520,多租户应用110创建用于容纳所 请求的部署转换的适当数据结构。在一个实施例中,该数据结构可以是由 作出请求的租户拥有的私有数据库,如图2中的每个单元2351-N所示。在 另一个实施例中,该数据结构是如图2的单元240所示的共享数据库中所 包含的由作出请求的租户拥有的私有模式。然后,该方法进行到步骤530, 在该步骤中当前的表格被转移到所创建的数据结构。该转移可以通过任何 数量的手段发生,其包括但不限于移动和复制该表格。

然后,该方法进行到步骤540,其允许“在线”表格转移,使得数据 库保持可用,并且在该转移期间接收的查询被发布给适当的表格以供执行。 因此,必须为在转移期间接收的每种查询类型定义一组规则。在一个实施 例中,选择查询被发布给原始和转移后的表格两者,从而产生相应的结果 集。在数据被转移时,对于由多租户应用的持久层请求的每个读取查询, 该查询被抽象层220重定向到两个位置,然后把取并集操作(UNION)应 用于所产生的数据集,并返回组合后的结果作为响应于选择查询的结果。 在一个实施例中,插入查询被发布给转移后的表格,使得新数据库条目仅 以所请求的部署选项在转移后的表格中被创建。在一个实施例中,更新和 删除查询被发布给原始和转移后的表格并在这两个表格中被反映。通过以 这种方式接受查询,数据库在数据被转移时仍保持完全可用和可操作。在 线转移的优点是,订购的租户不会注意到数据从一个部署选项被移到下一 个部署选项,使得服务在任何时候保持可用。没有这一点,结果将是针对 该租户的停机时间,这可能是不可接受的—特别是在要移动的数据量非常 大(其将导致几小时或几天的停机时间)的情况下。然后,该方法进行到 步骤550,在该步骤中多租户应用110确定是否剩有另外的表格要转移。 如果剩有另外的表格,则该方法返回到步骤510,否则方法500结束。

在某些实施例中,为了获得更高的数据转移速率并减少在处理数据转 移时对系统性能的影响,方法500中描述的转移可以通过提供功能而得到进一步改善。(IBM和FlashCopy是国际商用机器 公司在全球许多司法管辖区注册的商标)。

图6是示出根据本发明的另一个实施例,对应于步骤450的方法600 的流程图。在某些实施例中,多租户应用110执行方法600中的步骤。该 方法开始于步骤610,在该步骤中多租户应用110开始执行包括步骤 620-695的循环,用于对作出请求的租户所拥有的每个表格将租户数据库从 一个部署选项转换为另一个部署选项。在步骤620,在某些实施例中,多 租户应用110阻挡对当前表格的访问。在某些实施例中,阻挡访问是通过 在抽象层220中设定限制对表格的访问的标志来实现的。仅在当前部署选 项是由作出请求的租户拥有的私有数据库或共享数据库中的私有模式的情 况下才要求阻挡对表格的访问(以及随后恢复访问)。阻挡访问(以及随后 恢复访问)在当前部署是共享数据库中的共享模式的实施例中是可选的, 这是由于其他租户的数据也会被阻挡。通过阻挡对表格的访问、直到转移 完成,修改将不会被允许,使得数据库的精确副本将被转移。在步骤630, 多租户应用110选择包含在要转移的表格中的数据。在当前部署选项是由 作出请求的租户拥有的私有数据库的实施例中,发布请求选择所有数据的 声明以选择表格数据。在一个实施例中,当前部署选项是共享数据库中的 私有模式,并且发布选择来自该模式表格的所有数据的声明,其中所述模 式由作出请求的租户拥有,并且该模式信息从元数据仓库125获取。例如, 在表格是关系数据库的情况下,SQL查询可以被写为“select*from schema.table”。在当前部署是共享数据库中的共享模式的实施例中,发布 选择租户标识列条目等于与作出请求的租户相关联的租户标识信息的所有 数据的声明以选择该数据,并且租户标识信息从元数据仓库125获取。例 如,在表格是关系数据库的情况下,SQL查询可以被写为“select*from table where tenant=<tenant>”。

一旦数据已被选择,该方法进行到步骤640,在该步骤中多租户应用 110取决于所请求的部署选项,在由步骤630中执行的选择声明产生的表 格中插入或删除包含租户标识信息的列。取决于当前和所请求的部署选项, 可以请求或可以不请求租户标识信息,并且需要适当处理租户标识信息。 在当前部署是共享数据库中的共享模式的实施例中,返回具有步骤630中 选择的数据的租户标识列。在这些实施例中的目标数据库将不需要包含该 租户标识信息的列,并且其将被相应地删除。在当前部署是共享数据库中 的共享模式的实施例中,在步骤630发布的选择查询可以被修改,使得包 含租户标识信息的列不被选择,使随后的删除变得不必要。在目标是共享 数据库中的共享模式的实施例中,租户标识列有必要指示哪个租户拥有该 数据。因此,对于在步骤630执行的选择声明的结果集中的每个记录,包 含租户标识信息的列将被插入,其中该租户标识信息从元数据仓库125获 取。

然后,该方法进行到步骤650,在该步骤中多租户应用110确定是否 需要新数据结构来完成该部署转换。如果不需要新数据结构,则该方法进 行到步骤670。否则,在步骤660,多租户应用110创建适当的数据结构。 该数据结构可以是下述中的一个或多个:由租户拥有的新私有数据库,由 租户拥有的私有数据库中的新表格,共享数据库中的由租户拥有的新私有 模式,或共享数据库中的由租户拥有的私有模式中的新表格。在这些实施 例中,多租户应用110从元数据仓库125获取创建数据结构所必要的租户 标识信息。

一旦已创建适当的数据结构,该方法进行到步骤670,在该步骤中多 租户应用110将表格转移到其目标数据结构。该转移可以通过任何数量的 手段发生,包括但不限于移动和复制该表格。然后,该方法进行到步骤680, 其规定:对于发布给正被转移的表格的任何查询,返回适当的错误消息直 到该转移完成为止。一旦表格已被转移,则该方法进行到步骤690,在该 步骤中多租户应用110恢复对该表格的访问,使得该表格可以被租户的应 用访问。在某些实施例中,通过去除抽象层220中设定的阻挡对该表格的 访问的标志、以及修改抽象层220中的数据以使切换后的部署与该租户相 关联,来恢复对表格的访问。在某些实施例中,多租户应用110丢弃来自 原始部署的私有数据库以及私有模式中的表格,这是由于根据切换后的部 署,他们可能不再被需要。然后,该方法进行到步骤695,在该步骤中多 租户应用110确定是否有作出请求的租户所拥有的另外的表格需要被转 移。如果存在另外的表格,则该方法返回到步骤610。否则,该方法结束。

方法600的备选实施例包括:通过对于共享数据库中的共享模式的形 式的部署创建每个租户数据库视图,来避免在查询中包括具有性质“where tenant=<tenant>”的“where”声明的能力。这些数据库视图在其整个生 命周期中由抽象层220创建和管理。数据库视图由存储的查询组成,所述 存储的查询可以作为由查询的结果集组成的关系数据库中的虚拟表格被访 问。与关系数据库中的普通表格(基本表格)不同,该视图不形成物理模 式的一部分,而是从数据库的数据中计算或整理出的动态虚拟表格。改变 表格中的数据会改变在后续调用该视图时显示的数据。在另一个实施例中, 选择查询可能不在单个步骤中瞄准所有数据,而是以块来处理数据,其中 以遵循相同设计理念的若干次迭代发布一系列选择查询,这些选择查询各 自检索该数据的互补部分。

在所有情况下,一旦数据转移完成,通过释放数据库资源(这在某些 情况下可能意味着数据库的丢弃,或在其他情况下适当丢弃/删除查询)来 适当释放源区域中的数据。

通过使用本文所述的分布式、冗余数据库架构和抽象层,多租户部署 的物理实现可以对于多租户应用110而言被隐藏。通过隐藏实现细节,在 每次新租户订购服务或请求部署转换时,多租户应用110及其提供的每个 服务340将不需要被记录。

现在参照图7,其示出说明性的云计算环境750。如图所示,云计算环 境750包括一个或多个云计算节点710,由云消费者使用的本地计算装置 例如个人数字助理(PDA)或蜂窝电话754A、台式计算机754B、膝上型 计算机754D和/或汽车计算机系统754N可以与所述一个或多个云计算节 点710通信。节点710可以彼此通信。计算节点710可以具有与服务器102 和客户端计算机132相同的属性,服务器102和客户端计算机132各自可 以是云计算环境中的计算节点710。它们可以在一个或多个网络中被物理 或虚拟地组成群(未示出),例如上文所述的私有、社区、公共或混合云或 其组合。这允许云计算环境750提供基础设施、平台和/或软件即服务,云 消费者不需要在本地计算装置上为其保持资源。应当理解,在图7中示出 的计算装置754A-N的类型旨在仅是说明性的,并且计算节点710和云计 算环境750可以通过任何类型的网络和/或可网络寻址的连接(例如,通过 使用网络浏览器)而与任何类型的计算机化的装置通信。

现在参照图8,其示出由云计算环境750(图7)提供的一组功能抽象 层。提前应当理解的是,图8所示的组件、层以及功能旨在仅是说明性的, 并且本发明的实施例并不限于此。如图所示,提供了以下层和对应功能:

硬件和软件层860包括硬件和软件组件。硬件组件的示例包括:主机, 在一个示例中是系统;基于RISC(精简指令集计算机) 架构的服务器,在一个示例中是IBM系统;IBM系统; IBM系统;存储装置;网络和网络组件。软件组件的示例包 括:网络应用服务器软件,在一个示例中是IBM应用服务器 软件;以及数据库软件,在一个示例中是数据库软件。(IBM、 zSeries、pSeries、xSeries、BladeCenter、WebSphere以及DB2是国际商 业机器公司在全球许多司法辖区注册的商标)。

虚拟化层862提供抽象层,可以从该抽象层提供以下虚拟实体的示例: 虚拟服务器、虚拟存储装置、虚拟网络(包括虚拟私有网络)、虚拟应用和 操作系统以及虚拟客户端。

在一个示例中,管理层864可以提供下述功能。资源供应功能提供用 于在云计算环境内执行任务的计算资源和其它资源的动态获取。计量和定 价功能在云计算环境内对资源进行利用时提供成本跟踪,并为这些资源的 消耗开账单或发票。在一个示例中,这些资源可以包括应用软件许可。安 全功能为云消费者和任务提供身份验证,以及为数据和其它资源提供保护。 用户入口功能为消费者和系统管理员提供对云计算环境的访问。服务水平 管理功能提供云计算资源的分配和管理,使得所要求的服务水平得到满足。 服务水平协议(SLA)规划和履行功能为根据SLA预期到未来需求的云计 算资源提供预先安排和获取。

工作负荷层866提供可为其使用云计算环境的功能的示例。可以从该 层提供的工作负荷和功能的示例包括:地图绘制和导航;软件开发和生命 周期管理;虚拟教室教育递送;数据分析处理;交易处理;以及多租户数 据库部署转换。

附图中的流程图和框图示出根据本发明的各种实施例的系统、方法和 计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框 图中的每个方框可以代表模块、程序段或代码的一部分,所述模块、程序 段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指 令。也应当注意的是,在有些替代性实现中,方框中所标注的功能也可以 以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基 本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而 定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图 中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统 来实现,或者可以用专用硬件与计算机指令的组合来实现。

尽管前述内容针对本发明的实施例,但是在不脱离本发明的基本范围 的情况下可以设计出本发明的其他和进一步的实施例,并且本发明的范围 由所附权利要求确定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号