用于跨租户数据访问的系统和方法
【技术领域】
[0001] 本发明一般地涉及数据库领域,更具体地说,涉及一种用于数据库中的跨租户数 据访问的系统和方法。
【背景技术】
[0002] 目前,SaaS正变得越来越普及。SaaS是Software-as-a-Service(软件即服务) 的简称,它是一种通过互联网提供软件的模式。利用该模式,用户不必购买软件,而是向服 务提供商租用基于Web的软件来管理企业经营活动,且无需对软件进行维护。租用软件的 用户称为租户(tenant)。由服务提供商管理和维护软件,并且服务提供商在向租户提供互 联网应用的同时,也提供软件的离线操作和本地数据存储,让租户随时随地都可W使用其 租用的软件和服务。对于许多小型企业来说,SaaS是采用先进技术的最好途径,它消除了 企业购买、构建和维护基础设施和应用程序的需要。
[0003] 大型SaaS应用会有大量租户和数据,随着业务的增长,需要将原本要集中存储的 数据分布到不同的目标数据库上。图4示出了一个示例性SaaS系统。在该SaaS系统中, 使用了H个目标数据库,并且根据租户将数据划分到该H个目标数据库中。在图4所示的 SaaS系统中,租户T1、T2、T5的数据位于数据库A中,租户T3、T4的数据位于数据库B中, 租户T6的数据位于数据库C中。
[0004] 在经典的SaaS应用中,不同租户的数据被隔离。但是,在一些情况下,存在跨租户 访问数据的需求。图5示出了需要进行跨租户访问的几个示例性情况。例如,当零售商和批 发商同为一个SaaS应用的租户的情况下,在批发商授权的情况下,零售商可能希望看到它 的批发商的全部或部分数据。例如,母公司可能希望看到其子公司的数据,子公司可能希望 看到其分支机构的数据。例如,为了实现病人的医疗记录的共享,医院可能希望看到病人在 其他医院的病历数据。在图5下部的例子中,例如,医院B至D都可W访问医院A的病历, 只有医院A可W访问医院B的病历,医院A和D可W访问医院C的病历,医院A至C都可W 访问医院D的病历。
[0005] 为了满足上述需求,现有技术一般需要手动地修改应用,为跨租户数据访问添加 相关的逻辑。当考虑到授权时,可能还需要在每个目标数据库中添加授权表。
[0006] 例如,对于图4中的情况,当例如为零售商的租户T1希望查询自己的所有订单数 据时,输入S化语句"SELECT冲ROMSales化der",此时需要修改原本不支持跨租户环境的 SaaS应用使得该S化语句被解释为例如S化查询语句"SELECT冲ROMSales化derW肥RE Tenant='T1'"或者其它形式,从而能够在跨租户环境下使用。SaaS系统执行该S化语句 并返回数据库A中的租户T1的Sales化der表中的所有数据。但是,当租户T3授权租户 T1访问其数据时,为了使位于另一数据库B中的租户T3的所有订单数据也被返回,需要人 工地修改SaaS应用,从而使租户T1输入的S化语句"SELECT冲ROMSales化der"被解释为 例如S化语句"SELECT冲ROMSalesOrderW肥RETenant='T1'ORTenant='T3'"。当另一 租户T2新授权租户T1访问其数据时,需要再次改变SaaS应用的逻辑,例如改变W肥RE子 句。由此可见,现有技术中的该种跨租户数据访问对于应用而言不是透明的,需要根据不同 的情况进行不同的修改,该非常耗时并且容易出错。
【发明内容】
[0007] 为了解决上述问题,本发明的目的之一是提供一种能够透明地支持现有的SaaS 应用在跨租户环境下使用的用于跨租户数据访问的系统和方法。
[0008] 根据本发明的一方面,提供了一种用于跨租户数据访问的方法,包括:根据关于租 户的元数据,对于多个租户中的至少第一租户,基于第一租户拥有的第一数据W及所述多 个租户中的至少一个其它租户拥有的、授权第一租户访问的第二数据,在元数据库中创建 逻辑视图;W及响应于来自第一租户的应用的跨租户数据访问请求,访问所述元数据库中 的所述逻辑视图。
[0009] 根据本发明的另一方面,提供了一种用于跨租户数据访问的系统,包括;元数据 库;管理模块,被配置为根据关于租户的元数据,对于多个租户中的至少第一租户,基于第 一租户拥有的第一数据W及所述多个租户中的至少一个其它租户拥有的、授权第一租户访 问的第二数据,在所述元数据库中创建逻辑视图;W及数据库驱动模块,被配置为响应于来 自第一租户的应用的跨租户数据访问请求,访问所述元数据库中的所述逻辑视图。
[0010] 采用本发明的用于数据库中的跨租户数据访问的系统和方法,对于需要转变成多 租户应用的所有SaaS应用而言,能够透明地支持现有的SaaS应用在跨租户环境下使用,并 且该种使用基于拥有数据的租户的授权。此外,采用本发明的用于数据库中的跨租户数据 访问的系统和方法,也易于开发跨租户环境下的新的SaaS应用。
【附图说明】
[0011] 通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述W及其 它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号 通常代表相同部件。
[0012] 图1表示根据本发明一实施例的云计算节点;
[0013] 图2表示根据本发明一实施例的云计算环境;
[0014] 图3表示根据本发明一实施例的抽象模型层;
[0015]图4示出了一个利用平面扩容机制的示例性SaaS数据库系统;
[0016] 图5示出了需要进行跨租户访问的几个示例性情况;
[0017] 图6是示出了根据本发明的一个实施例的SaaS系统的示意图;
[0018] 图7是示出了在元数据库(MetaDat油ase)中为租户创建逻辑视图的处理的流程 图;W及
[0019] 图8是示出了根据本发明实施例的用于数据库中的跨租户数据访问的方法的流 程图。
【具体实施方式】
[0020] 下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开 的优选实施方式,然而应该理解,可WW各种形式实现本公开而不应被该里阐述的实施方 式所限制。相反,提供该些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的 范围完整的传达给本领域的技术人员。
[0021] 首先应当理解,尽管本公开包括关于云计算的详细描述,但其中记载的技术方案 的实现却不限于云计算环境,而是能够结合现在已知或W后开发的任何其它类型的计算环 境而实现。
[0022] 云计算是一种服务交付模式,用于对共享的可配置计算资源池进行方便、按需的 网络访问。可配置计算资源是能够W最小的管理成本或与服务提供者进行最少的交互就能 快速部署和释放的资源,例如可W是网络、网络带宽、服务器、处理、内存、存储、应用、虚拟 机和服务。该种云模式可W包括至少五个特征、至少H个服务模型和至少四个部署模型。 [002引特征包括:
[0024]按需自助式服务;云的消费者在无需与服务提供者进行人为交互的情况下能够单 方面自动地按需部署诸如服务器时间和网络存储等的计算能力。
[00巧]广泛的网络接入;计算能力可W通过标准机制在网络上获取,该种标准机制促进 了通过不同种类的瘦客户机平台或厚客户机平台(例如移动电话、膝上型电脑、个人数字助 理PDA)对云的使用。
[0026] 资源池:提供者的计算资源被归入资源池并通过多租户(multi-tenant)模式服 务于多重消费者,其中按需将不同的实体资源和虚拟资源动态地分配和再分配。一般情况 下,消费者不能控制或甚至并不知晓所提供的资源的确切位置,但可W在较高抽象程度上 指定位置(例如国家、州或数据中也),因此具有位置无关性。
[0027] 迅速弹性:能够迅速、有弹性地(有时是自动地)部署计算能力,W实现快速扩展, 并且能迅速释放来快速缩小。在消费者看来,用于部署的可用计算能力往往显得是无限的, 并能在任意时候都能获取任意数量的计算能力。
[0028] 可测量的服务:云系统通过利用适于服务类型(例如存储、处理、带宽和活跃用户 帐号)的某种抽象程度的计量能力,自动地控制和优化资源效用。可W监测、控制和报告资 源使用情况,为服务提供者和消费者双方提供透明度。
[002引服务模型如下:
[0030] 软件即服务(Saa巧:向消费者提供的能力是使用提供者在云基础架构上运行的 应用。可W通过诸如网络浏览器的瘦客户机接口(例如基于网络的电子邮件)从各种客户机 设备访问应用。除了有限的特定于用户的应用配置设置外,消费者既不管理也不控制包括 网络、服务器、操作系统、存储、乃至单个应用能力等的底层云基础架构。
[0031] 平台即服务(Paa巧:向消费者提供的能力是在云基础架构上部署消费者创建或 获得的应用,该些应用利用提供者支持的程序设计语言和工具创建。消费者既不管理也不 控制包括网络、服务器、操作系统或存储的