CN104866513B - 用于跨租户数据访问的系统和方法 - Google Patents
用于跨租户数据访问的系统和方法 Download PDFInfo
- Publication number
- CN104866513B CN104866513B CN201410067372.6A CN201410067372A CN104866513B CN 104866513 B CN104866513 B CN 104866513B CN 201410067372 A CN201410067372 A CN 201410067372A CN 104866513 B CN104866513 B CN 104866513B
- Authority
- CN
- China
- Prior art keywords
- tenant
- data
- metadatabase
- view
- database
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 27
- 230000008859 change Effects 0.000 claims description 12
- 238000001914 filtration Methods 0.000 claims description 8
- 230000009471 action Effects 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 7
- 238000013475 authorization Methods 0.000 description 32
- 230000006870 function Effects 0.000 description 28
- 238000012545 processing Methods 0.000 description 15
- 238000004891 communication Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 241001269238 Data Species 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 235000015895 biscuits Nutrition 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Databases & Information Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及用于跨租户数据访问的系统和方法。提供了一种用于跨租户数据访问的系统,包括:元数据库;管理模块,被配置为根据关于租户的元数据,对于多个租户中的至少第一租户,基于第一租户拥有的第一数据以及所述多个租户中的至少一个其它租户拥有的、授权第一租户访问的第二数据,在所述元数据库中创建逻辑视图;以及数据库驱动模块,被配置为响应于来自第一租户的应用的跨租户数据访问请求,访问所述元数据库中的所述逻辑视图。
Description
技术领域
本发明一般地涉及数据库领域,更具体地说,涉及一种用于数据库中的跨租户数据访问的系统和方法。
背景技术
目前,SaaS正变得越来越普及。SaaS是Software-as-a-Service(软件即服务)的简称,它是一种通过互联网提供软件的模式。利用该模式,用户不必购买软件,而是向服务提供商租用基于Web的软件来管理企业经营活动,且无需对软件进行维护。租用软件的用户称为租户(tenant)。由服务提供商管理和维护软件,并且服务提供商在向租户提供互联网应用的同时,也提供软件的离线操作和本地数据存储,让租户随时随地都可以使用其租用的软件和服务。对于许多小型企业来说,SaaS是采用先进技术的最好途径,它消除了企业购买、构建和维护基础设施和应用程序的需要。
大型SaaS应用会有大量租户和数据,随着业务的增长,需要将原本要集中存储的数据分布到不同的目标数据库上。图4示出了一个示例性SaaS系统。在该SaaS系统中,使用了三个目标数据库,并且根据租户将数据划分到这三个目标数据库中。在图4所示的SaaS系统中,租户T1、T2、T5的数据位于数据库A中,租户T3、T4的数据位于数据库B中,租户T6的数据位于数据库C中。
在经典的SaaS应用中,不同租户的数据被隔离。但是,在一些情况下,存在跨租户访问数据的需求。图5示出了需要进行跨租户访问的几个示例性情况。例如,当零售商和批发商同为一个SaaS应用的租户的情况下,在批发商授权的情况下,零售商可能希望看到它的批发商的全部或部分数据。例如,母公司可能希望看到其子公司的数据,子公司可能希望看到其分支机构的数据。例如,为了实现病人的医疗记录的共享,医院可能希望看到病人在其他医院的病历数据。在图5下部的例子中,例如,医院B至D都可以访问医院A的病历,只有医院A可以访问医院B的病历,医院A和D可以访问医院C的病历,医院A至C都可以访问医院D的病历。
为了满足上述需求,现有技术一般需要手动地修改应用,为跨租户数据访问添加相关的逻辑。当考虑到授权时,可能还需要在每个目标数据库中添加授权表。
例如,对于图4中的情况,当例如为零售商的租户T1希望查询自己的所有订单数据时,输入SQL语句“SELECT*FROM SalesOrder”,此时需要修改原本不支持跨租户环境的SaaS应用使得该SQL语句被解释为例如SQL查询语句“SELECT*FROM SalesOrder WHERE Tenant=’T1’”或者其它形式,从而能够在跨租户环境下使用。SaaS系统执行该SQL语句并返回数据库A中的租户T1的SalesOrder表中的所有数据。但是,当租户T3授权租户T1访问其数据时,为了使位于另一数据库B中的租户T3的所有订单数据也被返回,需要人工地修改SaaS应用,从而使租户T1输入的SQL语句“SELECT*FROM SalesOrder”被解释为例如SQL语句“SELECT*FROM SalesOrder WHERE Tenant=’T1’OR Tenant=’T3’”。当另一租户T2新授权租户T1访问其数据时,需要再次改变SaaS应用的逻辑,例如改变WHERE子句。由此可见,现有技术中的这种跨租户数据访问对于应用而言不是透明的,需要根据不同的情况进行不同的修改,这非常耗时并且容易出错。
发明内容
为了解决上述问题,本发明的目的之一是提供一种能够透明地支持现有的SaaS应用在跨租户环境下使用的用于跨租户数据访问的系统和方法。
根据本发明的一方面,提供了一种用于跨租户数据访问的方法,包括:根据关于租户的元数据,对于多个租户中的至少第一租户,基于第一租户拥有的第一数据以及所述多个租户中的至少一个其它租户拥有的、授权第一租户访问的第二数据,在元数据库中创建逻辑视图;以及响应于来自第一租户的应用的跨租户数据访问请求,访问所述元数据库中的所述逻辑视图。
根据本发明的另一方面,提供了一种用于跨租户数据访问的系统,包括:元数据库;管理模块,被配置为根据关于租户的元数据,对于多个租户中的至少第一租户,基于第一租户拥有的第一数据以及所述多个租户中的至少一个其它租户拥有的、授权第一租户访问的第二数据,在所述元数据库中创建逻辑视图;以及数据库驱动模块,被配置为响应于来自第一租户的应用的跨租户数据访问请求,访问所述元数据库中的所述逻辑视图。
采用本发明的用于数据库中的跨租户数据访问的系统和方法,对于需要转变成多租户应用的所有SaaS应用而言,能够透明地支持现有的SaaS应用在跨租户环境下使用,并且这种使用基于拥有数据的租户的授权。此外,采用本发明的用于数据库中的跨租户数据访问的系统和方法,也易于开发跨租户环境下的新的SaaS应用。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1表示根据本发明一实施例的云计算节点;
图2表示根据本发明一实施例的云计算环境;
图3表示根据本发明一实施例的抽象模型层;
图4示出了一个利用平面扩容机制的示例性SaaS数据库系统;
图5示出了需要进行跨租户访问的几个示例性情况;
图6是示出了根据本发明的一个实施例的SaaS系统的示意图;
图7是示出了在元数据库(Meta Database)中为租户创建逻辑视图的处理的流程图;以及
图8是示出了根据本发明实施例的用于数据库中的跨租户数据访问的方法的流程图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整的传达给本领域的技术人员。
首先应当理解,尽管本公开包括关于云计算的详细描述,但其中记载的技术方案的实现却不限于云计算环境,而是能够结合现在已知或以后开发的任何其它类型的计算环境而实现。
云计算是一种服务交付模式,用于对共享的可配置计算资源池进行方便、按需的网络访问。可配置计算资源是能够以最小的管理成本或与服务提供者进行最少的交互就能快速部署和释放的资源,例如可以是网络、网络带宽、服务器、处理、内存、存储、应用、虚拟机和服务。这种云模式可以包括至少五个特征、至少三个服务模型和至少四个部署模型。
特征包括:
按需自助式服务:云的消费者在无需与服务提供者进行人为交互的情况下能够单方面自动地按需部署诸如服务器时间和网络存储等的计算能力。
广泛的网络接入:计算能力可以通过标准机制在网络上获取,这种标准机制促进了通过不同种类的瘦客户机平台或厚客户机平台(例如移动电话、膝上型电脑、个人数字助理PDA)对云的使用。
资源池:提供者的计算资源被归入资源池并通过多租户(multi-tenant)模式服务于多重消费者,其中按需将不同的实体资源和虚拟资源动态地分配和再分配。一般情况下,消费者不能控制或甚至并不知晓所提供的资源的确切位置,但可以在较高抽象程度上指定位置(例如国家、州或数据中心),因此具有位置无关性。
迅速弹性:能够迅速、有弹性地(有时是自动地)部署计算能力,以实现快速扩展,并且能迅速释放来快速缩小。在消费者看来,用于部署的可用计算能力往往显得是无限的,并能在任意时候都能获取任意数量的计算能力。
可测量的服务:云系统通过利用适于服务类型(例如存储、处理、带宽和活跃用户帐号)的某种抽象程度的计量能力,自动地控制和优化资源效用。可以监测、控制和报告资源使用情况,为服务提供者和消费者双方提供透明度。
服务模型如下:
软件即服务(SaaS):向消费者提供的能力是使用提供者在云基础架构上运行的应用。可以通过诸如网络浏览器的瘦客户机接口(例如基于网络的电子邮件)从各种客户机设备访问应用。除了有限的特定于用户的应用配置设置外,消费者既不管理也不控制包括网络、服务器、操作系统、存储、乃至单个应用能力等的底层云基础架构。
平台即服务(PaaS):向消费者提供的能力是在云基础架构上部署消费者创建或获得的应用,这些应用利用提供者支持的程序设计语言和工具创建。消费者既不管理也不控制包括网络、服务器、操作系统或存储的底层云基础架构,但对其部署的应用具有控制权,对应用托管环境配置可能也具有控制权。
基础架构即服务(IaaS):向消费者提供的能力是消费者能够在其中部署并运行包括操作系统和应用的任意软件的处理、存储、网络和其他基础计算资源。消费者既不管理也不控制底层的云基础架构,但是对操作系统、存储和其部署的应用具有控制权,对选择的网络组件(例如主机防火墙)可能具有有限的控制权。
部署模型如下:
私有云:云基础架构单独为某个组织运行。云基础架构可以由该组织或第三方管理并且可以存在于该组织内部或外部。
共同体云:云基础架构被若干组织共享并支持有共同利害关系(例如任务使命、安全要求、政策和合规考虑)的特定共同体。共同体云可以由共同体内的多个组织或第三方管理并且可以存在于该共同体内部或外部。
公共云:云基础架构向公众或大型产业群提供并由出售云服务的组织拥有。
混合云:云基础架构由两个或更多部署模型的云(私有云、共同体云或公共云)组成,这些云依然是独特的实体,但是通过使数据和应用能够移植的标准化技术或私有技术(例如用于云之间的负载平衡的云突发流量分担技术)绑定在一起。
云计算环境是面向服务的,特点集中在无状态性、低耦合性、模块性和语意的互操作性。云计算的核心是包含互连节点网络的基础架构。
现在参考图1,其中显示了云计算节点的一个例子。图1显示的云计算节点10仅仅是适合的云计算节点的一个示例,不应对本发明实施例的功能和使用范围带来任何限制。总之,云计算节点10能够被用来实现和/或执行以上所述的任何功能。
云计算节点10具有计算机系统/服务器12,其可与众多其它通用或专用计算系统环境或配置一起操作。众所周知,适于与计算机系统/服务器12一起操作的计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任意系统的分布式云计算技术环境,等等。
计算机系统/服务器12可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括执行特定的任务或者实现特定的抽象数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机系统/服务器12可以在通过通信网络链接的远程处理设备执行任务的分布式云计算环境中实施。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
如图1所示,云计算节点10中的计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是能够被计算机系统/服务器12访问的任意可获得的介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,其它硬件和/或软件模块可以与计算机系统/服务器12一起操作,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
现在参考图2,其中显示了示例性的云计算环境50。如图所示,云计算环境50包括云计算消费者使用的本地计算设备可以与其相通信的一个或者多个云计算节点10,本地计算设备例如可以是个人数字助理(PDA)或移动电话54A,台式电脑54B、笔记本电脑54C和/或汽车计算机系统54N。云计算节点10之间可以相互通信。可以在包括但不限于如上所述的私有云、共同体云、公共云或混合云或者它们的组合的一个或者多个网络中将云计算节点10进行物理或虚拟分组(图中未显示)。这样,云的消费者无需在本地计算设备上维护资源就能请求云计算环境50提供的基础架构即服务(IaaS)、平台即服务(PaaS)和/或软件即服务(SaaS)。应当理解,图2显示的各类计算设备54A-N仅仅是示意性的,云计算节点10以及云计算环境50可以与任意类型网络上和/或网络可寻址连接的任意类型的计算设备(例如使用网络浏览器)通信。
现在参考图3,其中显示了云计算环境50(图2)提供的一组功能抽象层。首先应当理解,图3所示的组件、层以及功能都仅仅是示意性的,本发明的实施例不限于此。如图3所示,提供下列层和对应功能:
硬件和软件层60包括硬件和软件组件。硬件组件的例子包括:主机,例如IBMzSeries系统;基于RISC(精简指令集计算机)体系结构的服务器,例如IBM pSeries系统;IBM xSeries系统;IBM BladeCenter系统;存储设备;网络和网络组件。软件组件的例子包括:网络应用服务器软件,例如IBM WebSphere应用服务器软件;数据库软件,例如IBM DB2数据库软件。(IBM,zSeries,pSeries,xSeries,BladeCenter,WebSphere以及DB2是国际商业机器公司在全世界各地的注册商标)。
虚拟层62提供一个抽象层,该层可以提供下列虚拟实体的例子:虚拟服务器、虚拟存储、虚拟网络(包括虚拟私有网络)、虚拟应用和操作系统,以及虚拟客户端。
在一个示例中,管理层64可以提供下述功能:资源供应功能:提供用于在云计算环境中执行任务的计算资源和其它资源的动态获取;计量和定价功能:在云计算环境内对资源的使用进行成本跟踪,并为此提供帐单和发票。在一个例子中,该资源可以包括应用软件许可。安全功能:为云的消费者和任务提供身份认证,为数据和其它资源提供保护。用户门户功能:为消费者和系统管理员提供对云计算环境的访问。服务水平管理功能:提供云计算资源的分配和管理,以满足必需的服务水平。服务水平协议(SLA)计划和履行功能:为根据SLA预测的对云计算资源未来需求提供预先安排和供应。
工作负载层66提供云计算环境可能实现的功能的示例。在该层中,可提供的工作负载或功能的示例包括:地图绘制与导航;软件开发及生命周期管理;虚拟教室的教学提供;数据分析处理;交易处理;以及跨租户数据访问。
以下以SaaS系统作为示例进行说明,但是本发明不限于此。本领域技术人员应该明白,当在利用多个数据库的任何应用或者其它云应用中进行跨数据库查询的情况下,本发明同样适用。另外,术语“目标数据库”是指实际存储有租户的数据的数据库。术语“元数据库”是指不同于目标数据库的一个数据库。
图6是示出了根据本发明的一个实施例的SaaS系统的示意图。在图6中,根据本发明的实施例的用于数据库中的跨租户数据访问的系统600位于SaaS应用与目标数据库之间,替代了现有技术的数据库驱动模块(见图4)。这里,为了便于说明,假定图6中的目标数据库A至C中存储的租户的数据与图4中所示的相同。尽管示出了三个目标数据库,但这仅仅是一个示例。在其它实施例中,目标数据库的数目不限于三个。数据库A、B和C中的两个或全部可以位于同一硬件设备中;或者数据库A、B和C也可以分别位于例如通过局域网(LAN)或互联网相连的不同硬件设备中。在本发明中,为了便于说明,假定数据库A、B和C分别位于不同的硬件设备中。
在一个实施例中,每个目标数据库包含一个或多个租户的数据,如图6所示。在另一个实施例中,一个租户的数据能够分布在一个或多个目标数据库中。例如,当一个目标数据库容纳不下租户X的数据时,租户X的数据还可以被存储到另一个目标数据库中。
这里,为了便于说明,假定租户T1至T6是租用同一SaaS应用的租户并且它们的数据包含相同结构的表。当然,租户T1至T6也可以是租用同一SaaS服务提供商的不同SaaS应用的租户。例如,租户T1至T5租用应用X,租户T6租用应用Y。本发明同样可以适应于这种情况。
图6中的系统600包括数据库驱动模块601、管理模块602以及元数据库603。
管理模块602被配置为根据关于租户的元数据,对于多个租户中的至少第一租户,基于第一租户拥有的第一数据以及所述多个租户中的至少一个其它租户拥有的、授权第一租户访问的第二数据,在元数据库603中创建逻辑视图。在一个实施例中,所述元数据库不同于存储第一数据以及第二数据的目标数据库。
数据库驱动模块601不同于图4中的数据库驱动模块,其被配置为响应于来自第一租户的应用的跨租户数据访问请求,替代于目标数据库,访问所述元数据库中的所述视图。
当SaaS应用的新租户加入时,即,当一个用户注册成为SaaS应用的租户时,例如在离线状态下,在元数据库中为该租户创建一个逻辑视图。在一个实施例中,在新租户注册时,管理模块602可以向新租户提供一个用户界面,该用户界面独立于SaaS应用的用户界面,用于向新租户采集该租户的元数据以及以后对该元数据的更新。由于这种元数据的采集和更新独立于SaaS应用,因此对于原SaaS应用是透明的,不必更改原SaaS应用的逻辑。
在一个实施例中,关于租户的元数据至少包括多个租户之间的授权关系。在一个实施例中,所述元数据还可以包括授权的对所述逻辑视图中的第二数据进行操作的操作类型,并且所述操作类型为读和写中的一个。操作类型“读”代表只可以读取(即查询),操作类型“写”代表除了读取以外还可以添加、修改或删除数据。对于图6的例子,假定在元数据库中存储有下面的授权表形式的所述元数据,这些元数据例如是通过租户在由管理模块602提供的用户界面上的输入而得到的。
授权表authorization_t
ID | GRANTER | GRANTEE | OPERATIONTYPE |
1 | T3 | T1 | read(读) |
2 | T6 | T1 | read |
3 | T2 | T1 | write(写) |
该授权表是多个租户之间的授权关系的一个例子。在该授权表中,ID字段为用于区别记录的标识,GRANTER字段表示授权方,GRANTEE字段表示被授权方,OPERATIONTYPE字段表示允许的对授权方的数据进行操作的操作类型。例如,该授权表中的第一行表示,租户T3授权租户T1访问它的数据,对租户T3的数据仅允许读操作。在一个实施例中,OPERATIONTYPE字段是可选的,例如可以默认为全部允许读操作或者全部允许写操作,从而去除该字段。
上述授权表仅仅是为了便于说明而给出的授权关系的一个简单例子,授权表当然还可以包含其它字段。在上面的授权表中,例如,租户T3授权租户T1访问它的全部数据。但是,现实中,可能一个租户仅希望它的部分数据被其它租户访问。在一个实施例中,可以在授权表中添加其它字段,以减小授权数据的粒度。例如,在零售商和批发商的例子中,例如可以添加一个Product字段,从而限定仅对某种具体产品的订单进行访问的授权;在医院的例子中,例如可以添加一个ClinicCase字段,从而以病历为单位进行访问的授权。基于本发明的教导,本领域技术人员可以想到减小授权数据粒度的其他方式。
在一个实施例中,所述元数据还可以包含其它表。在以病历为授权单位的例子中,元数据还可以包含诸如病历表,其中每条记录包含一个病历的各个属性。此外,元数据还可以包括租户表,该租户表指示租户的各个属性,元数据还可以包括逻辑视图表,该逻辑视图表指示每个租户所对应的逻辑视图。
以下,将参照图7中的流程图通过下面的例子来具体说明如何创建根据本发明的逻辑视图。图7是示出了在元数据库中为租户创建逻辑视图的处理的流程图。
例如,对于图6中的情况,假定租户T1为零售商,租户T2至T6为批发商,租户T1需要访问它的一些批发商的数据。另外,假定在数据库A至C中分别存在如下所示的订单表SalesOrder。在作为简单的示例示出的各个SalesOrder表中,各个字段分别表示如下含义:ID字段为用于区别行的标识,Tenant字段表示该行数据所属于的租户,Product字段表示订单涉及的商品名,Number字段表示订单涉及的商品数量,Price表示订单涉及的商品价格。
dbA.SalesOrder
ID | Tenant | Product | Number | Price |
001 | T1 | 电视机 | 10 | 1000 |
002 | T2 | 桌子 | 100 | 100 |
003 | T5 | 电视机 | 50 | 900 |
dbB.SalesOrder
ID | Tenant | Product | Number | Price |
0001 | T3 | 电视机 | 10 | 1000 |
0002 | T4 | 饼干 | 600 | 10 |
0003 | T4 | 汽车 | 5 | 15000 |
dbC.SalesOrder
ID | Tenant | Product | Number | Price |
101 | T6 | 电视机 | 5 | 800 |
102 | T6 | 手机 | 60 | 500 |
其中,dbA、dbB和dbC分别为数据库A、B和C的名称。在现实中,即使在同一个数据库中,不同租户的数据可能不会在同一张表中。在本示例中,订单表dbA.SalesOrder和dbB.SalesOrder是多个租户的共享表,包括字段Tenant用于区分数据的所有者。
在图7中,创建逻辑视图的处理从步骤710开始。在步骤710中,如上所述,当有新租户注册到SaaS应用时,提供关于用户的元数据。该元数据至少包括多个租户之间的授权关系。例如,在上面的例子中,当租户T1注册到SaaS应用时,例如,至少提供了如上所述的授权表。该授权表被存储在元数据库603中。在该授权表中,租户T2、T3和T6授权T1访问它们的数据。该授权表的形成还需要作为授权方的租户利用管理模块602提供的用户界面做出授权。为了便于说明,假定授权方租户T2、T3和T6的授权在租户T1注册的同时完成。
此外,管理模块602把当前租户的ID传送到各个目标数据库。例如,可以通过TenantContext.setTenantId()方法,或者可以通过其它的参数传递机制来传送当前租户的ID。
在步骤720中,在目标数据库中创建子视图。这里,术语“子视图”是相对于元数据库中的逻辑视图而言的,因为所述元数据库中的逻辑视图是对在各个所述目标数据库中通过按预定条件对租户的表进行过滤而创建的子视图进行合并的结果。管理模块602通过在各个目标数据库中建立至元数据库的链接并基于关于租户的元数据,进行所述过滤。
具体地,下面以IBM公司的DB2数据库为例,针对上面的例子,通过下面的代码段说明步骤720的操作。
/*连接到数据库A*/
CONNECT TO dbA;
/*在数据库A中创建至元数据库的链接,其中dbMeta是元数据库的名称*/
CREATE WRAPPER DRDA LIBRARY′libdb2drda.so′;
CREATE SERVER dbMeta TYPE DB2/UDB VERSION′9.5′WRAPPER“DRDA”OPTIONS(ADD DBNAME′dbMeta′);
/*在数据库A中创建元数据库中的授权表的昵称*/
CREATE NICKNAME authorization_t FOR dbMeta.authorization_t;
/*此外,在数据库A中还创建元数据库中的其它元数据表的昵称*/
这样,就可以在数据库A中用昵称访问远程的元数据库中的诸如授权表等的元数据。然后,在数据库A中执行下面的SQL语句:
CREATE VIEW salesorder_v AS SELECT*from SalesOrder WHERE cross_tenant_func(tenant_id,SalesOrder.Tenant);
这里,创建的子视图的名称是salesorder_v,cross_tenant_func()函数的第一个参数tenant_id是由管理模块602传送给数据库A的当前租户的ID(这里tenant_id为T1),cross_tenant_func()函数的第二个参数SalesOrder.Tenant是指dbA.SalesOrder表的Tenant字段。
在一个实施例中,函数cross_tenant_func()可以包含这样的判断逻辑:对于dbA.SalesOrder表中的每条记录,根据参数tenant_id和SalesOrder.Tenant,判断该条记录的Tenant字段指示的租户是否是tenant_id所指示的当前租户的授权方。在该判断中,通过昵称authorization_t来参考元数据库中的授权表。函数cross_tenant_func()返回真值true或false。这里,当函数cross_tenant_func()返回true时,相当于满足所述预定条件;当函数cross_tenant_func()返回false时,相当于不满足所述预定条件。函数cross_tenant_func()仅仅是一个简单的例子,在其它实施例中,还可以使用其它更复杂的条件。
例如,在上面的例子中,通过参考授权表authorization_t,对于dbA.SalesOrder表中的第一条记录(ID=001),由于tenant_id=SalesOrder.Tenant,这代表第一条记录是租户T1自己的数据(对应于上述的第一数据),因此,函数cross_tenant_func()返回true;对于第二条记录(ID=002),由于在授权表authorization_t中查找到GRANTER为SalesOrder.Tenant(T2)且GRANTEE为tenant_id(T1)的授权记录(ID=3),因此,函数cross_tenant_func()返回true;对于第三条记录(ID=003),由于在授权表authorization_t中没有查找到GRANTER为SalesOrder.Tenant(T5)且GRANTEE为tenant_id(T1)的授权记录,因此,函数cross_tenant_func()返回false。
由此,数据库A中的子视图被创建为:
dbA.salesorder_v
ID | Tenant | Product | Number | Price |
001 | T1 | 电视机 | 10 | 1000 |
002 | T2 | 桌子 | 100 | 100 |
同样地,对数据库B执行与上述对数据库A执行的处理相似的处理,数据库B中的子视图被创建为:
dbB.salesorder_v
ID | Tenant | Product | Number | Price |
0001 | T3 | 电视机 | 10 | 1000 |
这是因为在授权表中,存在租户T3授权租户T1访问其数据的记录(ID=1)。
上面的创建子视图的逻辑被封装在cross_tenant_func()函数中,该逻辑仅仅涉及到元数据库中的授权表的昵称,并不受到该授权表中的数据的影响。也就是说,当例如出现新的授权关系或者已有授权关系被撤销时,元数据库中的授权表的数据内容会改变。但是,由于目标数据库中的cross_tenant_func()函数仅仅引用该授权表的昵称,所以在cross_tenant_func()函数执行时,它的判断逻辑完全基于改变后的昵称表。因此,本发明的发明人的技术方案实现了一种在不改变判断逻辑的情况下能够动态地从目标数据库的共享表中过滤出当前租户的数据以及其他租户授权当前租户访问的数据的效果(即,创建的子视图会根据授权表中的授权关系的变化而自动变化)。因此,创建子视图的实施方式不限于上面的实施例,只要能够实现该动态过滤的效果即可。
对于数据库C,在一个实施例中,可以对其执行与上述对数据库A执行的处理相似的处理,创建子视图dbC.salesorder_v。
dbC.salesorder_v
ID | Tenant | Product | Number | Price |
101 | T6 | 电视机 | 5 | 800 |
102 | T6 | 手机 | 60 | 500 |
在另一个实施例中,在仅包含单个租户的数据的目标数据库(例如数据库C)中,管理模块602不进行对该租户的表的所述过滤,从而在该目标数据库中不产生子视图。
在步骤730中,管理模块602在元数据库中将各个所述目标数据库中的所述子视图进行合并,从而得到所述元数据库中的所述视图。管理模块602通过在元数据库中建立至各个所述目标数据库的链接并基于各个所述目标数据库中的所述子视图的昵称来进行所述合并。
具体地,下面仍然以IBM公司的DB2数据库为例,针对上面的例子,通过下面的代码段说明步骤730的操作。
/*连接到元数据库*/
CONNECT TO dbMeta;
/*在元数据库中创建至数据库A的链接*/
CREATE WRAPPER DRDA LIBRARY′libdb2drda.so′;
CREATE SERVER dbA TYPE DB2/UDB VERSION′9.5′WRAPPER“DRDA”OPTIONS(ADDDBNAME′dbA′);
/*在元数据库中创建数据库A中的子视图的昵称*/
CREATE NICKNAME salesorder_a FOR dbA.salesorder_v;
可以采用类似的方式,把元数据库分别连接到数据库B和C,并且为子视图dbB.salesorder_v和dbC.salesorder_v分别创建昵称salesorder_b和salesorder_c。
然后,例如采用下面的代码段将各个子视图合并成租户T1的逻辑视图。
CREATE VIEW SalesOrder AS
SELECT*FROM salesorder_a
/*选择数据库A中的子视图*/
UNION ALL
SELECT*FROM salesorder_b
/*选择数据库B中的子视图*/
UNION ALL
SELECT*FROM salesorder_c;
/*选择数据库C中的子视图*/
这样,在元数据库中为租户T1创建了逻辑视图SalesOrder。
在另一个实施例中,在步骤720中,由于在仅包含单个租户的数据的目标数据库(例如数据库C)中,管理模块602不进行对该租户的表的所述过滤,而是在租户授权访问的情况下提供该表,在元数据库中执行该表与其它目标数据库的子视图的所述合并。
例如,管理模块602可以根据诸如未示出的租户表(例如包含租户的数据与其所在的目标数据库的关系)的元数据来判断哪个/哪些目标数据库仅仅包含单个租户的数据,从而对于这样的目标数据库,根据授权表,判断是否将这样的目标数据库中的表与其它目标数据库的子视图进行合并。对于上面的例子,当管理模块602从租户表判断出数据库C仅包含单个租户的数据时,并且当管理模块602从授权表查找到该租户(T6)授权当前租户T1访问其数据时,执行下面的代码段:CREATE NICKNAME salesorder_c FOR dbC.salesorder。然后,在执行上述的合并,数据库C中参与合并的是数据表dbC.salesorder,而非子视图dbC.salesorder(在该实施例中并未创建该子视图)。无论采用上面的哪种合并方式,获得的逻辑视图如下:
逻辑视图SalesOrder
ID | Tenant | Product | Number | Price |
001 | T1 | 电视机 | 10 | 1000 |
002 | T2 | 桌子 | 100 | 100 |
0001 | T3 | 电视机 | 10 | 1000 |
101 | T6 | 电视机 | 5 | 800 |
102 | T6 | 手机 | 60 | 500 |
在该逻辑视图中,第二至第五条记录对应于上述的第二数据。
在步骤740中,响应于所述授权关系(元数据)的改变,更新所述逻辑视图。
结合上面的例子,例如,当租户T3撤销对租户T1的授权时,元数据库中的授权表改变。响应于该改变,管理模块602能够根据租户表和授权表判断出,其数据位于数据库B中的所有租户都没有授权租户T1访问其数据,因此,管理模块602根据更新后的授权表重新合并子视图,例如,此时改为执行下面的代码段。
CREATE VIEW SalesOrder_T1AS
SELECT*FROM salesorder_a
UNION ALL
SELECT*FROM salesorder_c;
也就是说,在产生租户T1的逻辑视图时,不再合并数据库B的子视图。
步骤730和步骤740可以循环执行,以应对授权关系的改变。以上是对图7中的流程图的处理的说明。
在上面的例子中,由于租户T1与其他租户的授权关系是多对一关系,仅仅举例说明了为租户T1创建逻辑视图SalesOrder_T1。但是,例如在图5所示的医院的情况下,授权关系是多对多关系,这就需要在元数据库中为每个租户都建立一个相应的逻辑视图。在大多数应用场景中都需要这样做。
返回参照图6,图6中的数据库驱动模块601被配置为响应于来自第一租户的应用的跨租户数据访问请求,替代于目标数据库,访问所述元数据库中的所述视图。
对于上面的例子,来自租户T1的跨租户访问请求被导引到元数据库,从而访问元数据库中的逻辑视图,而不是直接访问目标数据库。例如,原本在单租户环境下的SaaS应用执行SQL语句“SELECT*FROM SalesOrder”仅会返回租户T1的数据。但是,采用根据本发明的实施例的跨租户数据访问系统后,当该SaaS应用迁移到跨租户环境下时,能够在不改动SaaS应用的逻辑的情况下,执行该SQL语句返回逻辑视图中的租户T1自己的第一数据以及至少一个其它租户拥有的、授权租户T1访问的第二数据,从而能够透明地支持现有的SaaS应用在跨租户环境下的使用。
在一个实施例中,数据库驱动模块601还被配置为:对来自第一租户的应用的跨租户数据访问请求进行判断;如果该数据访问请求涉及的数据都位于同一个目标数据库中,则直接访问该目标数据库,而不访问所述元数据库中的所述视图。具体地,数据库驱动模块601通过利用元数据库中的租户表和授权表等元数据,来判断一个数据访问请求需要访问的数据是否都位于同一个目标数据库中。采用该实施例的方法,能够在这种情况下,提升数据库访问的效率。
图8是示出了根据本发明实施例的用于跨租户数据访问的方法的流程图。该跨租户数据访问的方法包括:逻辑视图创建步骤810以及数据访问步骤820。在逻辑视图创建步骤810中,根据关于租户的元数据,对于多个租户中的至少第一租户,基于第一租户拥有的第一数据以及所述多个租户中的至少一个其它租户拥有的、授权第一租户访问的第二数据,在元数据库中创建逻辑视图。在数据访问步骤820中,响应于来自第一租户的应用的跨租户数据访问请求,访问所述元数据库中的所述逻辑视图。逻辑视图创建步骤810的具体实现方式例如可以采用图7中示出的处理流程。由于在上文中已经对该处理流程进行了详细描述,在此不再重复说明。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (20)
1.一种用于跨租户数据访问的方法,包括:
根据关于租户的元数据,对于多个租户中的至少第一租户,基于第一租户拥有的第一数据以及所述多个租户中的至少一个其它租户拥有的、授权第一租户访问的第二数据,在元数据库中创建逻辑视图;以及
响应于来自第一租户的应用的跨租户数据访问请求,访问所述元数据库中的所述逻辑视图,
其中所述元数据库中的所述逻辑视图是对在各个目标数据库中通过按预定条件对租户的表进行过滤而创建的子视图进行合并的结果。
2.根据权利要求1所述的方法,其中,所述元数据至少包括所述多个租户之间的授权关系。
3.根据权利要求2所述的方法,其中,所述元数据还包括授权的对所述逻辑视图中的第二数据进行操作的操作类型,并且所述操作类型为读和写中的一个。
4.根据权利要求2所述的方法,还包括:
响应于所述授权关系的改变,更新所述逻辑视图。
5.根据权利要求1所述的方法,其中,每个目标数据库包含一个或多个租户的数据,并且一个租户的数据能够分布在一个或多个目标数据库中。
6.根据权利要求1所述的方法,还包括:
对来自第一租户的应用的跨租户数据访问请求进行判断;
如果该数据访问请求涉及的数据都位于同一个目标数据库中,则直接访问该目标数据库。
7.根据权利要求1所述的方法,其中,通过在元数据库中建立至各个所述目标数据库的链接并基于各个所述目标数据库中的所述子视图的昵称,将所述子视图进行合并,从而得到所述元数据库中的所述逻辑视图。
8.根据权利要求1所述的方法,其中,通过在各个目标数据库中建立至元数据库的链接并基于关于租户的元数据,进行所述过滤。
9.根据权利要求1或2所述的方法,其中,在仅包含单个租户的数据的目标数据库中,不进行对该租户的表的所述过滤,而是在该租户授权访问的情况下提供该表,在元数据库中执行该表与其它目标数据库的子视图的所述合并。
10.根据权利要求1所述的方法,其中,所述元数据库不同于存储第一数据以及第二数据的目标数据库。
11.一种用于跨租户数据访问的系统,包括:
元数据库;
管理模块,被配置为根据关于租户的元数据,对于多个租户中的至少第一租户,基于第一租户拥有的第一数据以及所述多个租户中的至少一个其它租户拥有的、授权第一租户访问的第二数据,在所述元数据库中创建逻辑视图;以及
数据库驱动模块,被配置为响应于来自第一租户的应用的跨租户数据访问请求,访问所述元数据库中的所述逻辑视图,
其中,所述元数据库中的所述逻辑视图是对在各个目标数据库中通过按预定条件对租户的表进行过滤而创建的子视图进行合并的结果。
12.根据权利要求11所述的系统,其中,所述元数据至少包括所述多个租户之间的授权关系。
13.根据权利要求12所述的系统,其中,所述元数据还包括授权的对所述逻辑视图中的第二数据进行操作的操作类型,并且所述操作类型为读和写中的一个。
14.根据权利要求12所述的系统,其中,所述管理模块还被配置为:
响应于所述授权关系的改变,更新所述逻辑视图。
15.根据权利要求11所述的系统,其中,每个目标数据库包含一个或多个租户的数据,并且一个租户的数据能够分布在一个或多个目标数据库中。
16.根据权利要求11所述的系统,所述数据库驱动模块还被配置为:
对来自第一租户的应用的跨租户访问数据请求进行判断;
如果该数据访问请求涉及的数据都位于同一个目标数据库中,则直接访问该目标数据库。
17.根据权利要求11所述的系统,其中,所述管理模块通过在元数据库中建立至各个所述目标数据库的链接并基于各个所述目标数据库中的所述子视图的昵称,将所述子视图进行合并,从而得到所述元数据库中的所述逻辑视图。
18.根据权利要求11所述的系统,其中,所述管理模块通过在各个目标数据库中建立至元数据库的链接并基于关于租户的元数据,进行所述过滤。
19.根据权利要求11或17所述的系统,其中,在仅包含单个租户的数据的目标数据库中,管理模块不进行对该租户的表的所述过滤,而是在该租户授权访问的情况下提供该表,在元数据库中执行该表与其它目标数据库的子视图的所述合并。
20.根据权利要求11所述的系统,其中,所述元数据库不同于存储第一数据以及第二数据的目标数据库。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410067372.6A CN104866513B (zh) | 2014-02-26 | 2014-02-26 | 用于跨租户数据访问的系统和方法 |
US14/630,119 US10152577B2 (en) | 2014-02-26 | 2015-02-24 | Cross tenant data access |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410067372.6A CN104866513B (zh) | 2014-02-26 | 2014-02-26 | 用于跨租户数据访问的系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104866513A CN104866513A (zh) | 2015-08-26 |
CN104866513B true CN104866513B (zh) | 2018-09-11 |
Family
ID=53882446
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410067372.6A Active CN104866513B (zh) | 2014-02-26 | 2014-02-26 | 用于跨租户数据访问的系统和方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10152577B2 (zh) |
CN (1) | CN104866513B (zh) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160004734A1 (en) * | 2014-12-15 | 2016-01-07 | Invensys Systems, Inc. | Secure data isolation in a multi-tenant historization system |
US20150319227A1 (en) | 2014-05-05 | 2015-11-05 | Invensys Systems, Inc. | Distributed historization system |
CN105827523B (zh) * | 2016-06-03 | 2019-04-30 | 无锡华云数据技术服务有限公司 | 一种在云存储环境中对多租户的带宽实现动态调整的虚拟网关 |
US10877960B2 (en) * | 2017-10-16 | 2020-12-29 | Citrix Systems, Inc. | Normalizing user identification across disparate systems |
US10733168B2 (en) | 2017-10-26 | 2020-08-04 | Sap Se | Deploying changes to key patterns in multi-tenancy database systems |
US10740315B2 (en) | 2017-10-26 | 2020-08-11 | Sap Se | Transitioning between system sharing types in multi-tenancy database systems |
US10713277B2 (en) | 2017-10-26 | 2020-07-14 | Sap Se | Patching content across shared and tenant containers in multi-tenancy database systems |
US10657276B2 (en) | 2017-10-26 | 2020-05-19 | Sap Se | System sharing types in multi-tenancy database systems |
US10621167B2 (en) * | 2017-10-26 | 2020-04-14 | Sap Se | Data separation and write redirection in multi-tenancy database systems |
US10740318B2 (en) | 2017-10-26 | 2020-08-11 | Sap Se | Key pattern management in multi-tenancy database systems |
WO2019090523A1 (zh) * | 2017-11-08 | 2019-05-16 | 华为技术有限公司 | 一种无服务器架构下业务部署的方法和函数管理平台 |
US10719533B2 (en) * | 2018-01-03 | 2020-07-21 | Salesforce.Com, Inc. | Multi-tenant tables of a distributed database |
US10915551B2 (en) * | 2018-06-04 | 2021-02-09 | Sap Se | Change management for shared objects in multi-tenancy systems |
CN109582718B (zh) * | 2018-10-17 | 2021-05-04 | 百度在线网络技术(北京)有限公司 | 数据处理方法、装置及存储介质 |
US11113278B2 (en) * | 2019-05-31 | 2021-09-07 | Snowflake Inc. | Data sharing and materialized views in multiple tenant database systems |
CN110826086A (zh) * | 2019-10-31 | 2020-02-21 | 深圳市泰洲科技有限公司 | 跨租户授权方法、装置、计算机设备及存储介质 |
CN111182058B (zh) * | 2019-12-30 | 2022-07-26 | 福建天泉教育科技有限公司 | 在Android端实现跨租户访问的方法、存储介质 |
US11372995B2 (en) | 2020-01-17 | 2022-06-28 | Snowflake Inc. | Container-centric access control on database objects |
CN113268517B (zh) * | 2020-02-14 | 2024-04-02 | 中电长城网际系统应用有限公司 | 数据分析方法和装置、电子设备、可读介质 |
US11843593B2 (en) | 2020-06-01 | 2023-12-12 | Citrix Systems, Inc. | Application integration using multiple user identities |
US11315041B1 (en) * | 2020-09-22 | 2022-04-26 | Vignet Incorporated | Machine learning with data sharing for clinical research data across multiple studies and trials |
CN112434041A (zh) * | 2020-11-30 | 2021-03-02 | 中国人寿保险股份有限公司 | 基于索引别名的跨租户跨桶检索方法、装置、介质和设备 |
CN112906048B (zh) * | 2021-02-09 | 2023-01-03 | 上海凯馨信息科技有限公司 | 一种针对db2数据的密态数据访问防护方法 |
US11436230B1 (en) * | 2021-04-29 | 2022-09-06 | Microsoft Technology Licensing, Llc | Cross-tenant people search in a multi-tenant computing system |
CN113515564B (zh) * | 2021-05-18 | 2024-09-13 | 深圳赛安特技术服务有限公司 | 基于j2ee的数据访问方法、装置、设备及存储介质 |
US20230177064A1 (en) * | 2021-12-03 | 2023-06-08 | Salesforce.Com, Inc | Cloud data consolidation and processing system |
CN114693283B (zh) * | 2022-06-01 | 2022-09-27 | 四川高灯企服科技有限公司 | 跨系统的业务流程审批处理方法、装置和计算机设备 |
US11934543B1 (en) | 2022-11-17 | 2024-03-19 | Snowflake Inc. | Transient object references |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101639835A (zh) * | 2008-07-30 | 2010-02-03 | 国际商业机器公司 | 多租户场景中应用数据库分区的方法和装置 |
CN101996214B (zh) * | 2009-08-27 | 2013-10-23 | 国际商业机器公司 | 用于处理数据库操作请求的方法和装置 |
US8706715B2 (en) | 2009-10-05 | 2014-04-22 | Salesforce.Com, Inc. | Methods and systems for joining indexes for query optimization in a multi-tenant database |
CN102053975A (zh) * | 2009-10-30 | 2011-05-11 | 国际商业机器公司 | 数据库系统和跨数据库查询优化方法 |
US9537650B2 (en) | 2009-12-15 | 2017-01-03 | Microsoft Technology Licensing, Llc | Verifiable trust for data through wrapper composition |
US8578278B2 (en) | 2010-12-22 | 2013-11-05 | Sap Ag | Dynamic user interface content adaptation and aggregation |
US9460176B2 (en) * | 2010-12-29 | 2016-10-04 | Sap Se | In-memory database for multi-tenancy |
US9081982B2 (en) * | 2011-04-18 | 2015-07-14 | Raytheon Company | Authorized data access based on the rights of a user and a location |
US9015494B2 (en) | 2011-07-11 | 2015-04-21 | Salesforce.Com, Inc. | Methods and apparatus for digital steganography |
US8589481B2 (en) * | 2011-09-14 | 2013-11-19 | Microsoft Corporation | Multi tenant access to applications |
CN103577457B (zh) * | 2012-07-31 | 2017-09-08 | 国际商业机器公司 | 用于对多租户数据库进行操控的方法和系统 |
US8978122B1 (en) * | 2013-03-29 | 2015-03-10 | Emc Corporation | Secure cross-tenancy federation in software-as-a-service system |
CN103399942B (zh) | 2013-08-14 | 2016-06-29 | 山大地纬软件股份有限公司 | 一种支持SaaS多租户的数据引擎系统及其工作方法 |
EP3097481B1 (en) * | 2014-01-21 | 2022-11-30 | Oracle International Corporation | System and method for supporting multi-tenancy in an application server, cloud, or other environment |
-
2014
- 2014-02-26 CN CN201410067372.6A patent/CN104866513B/zh active Active
-
2015
- 2015-02-24 US US14/630,119 patent/US10152577B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
CN104866513A (zh) | 2015-08-26 |
US10152577B2 (en) | 2018-12-11 |
US20150242520A1 (en) | 2015-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104866513B (zh) | 用于跨租户数据访问的系统和方法 | |
US11418577B1 (en) | System and method for global data sharing | |
US11810089B2 (en) | Data exchange-based platform | |
US11838293B2 (en) | Private data exchange metrics sharing | |
US11334604B2 (en) | Private data exchange | |
US20220335148A1 (en) | Integrated database user privilege management | |
US8738864B2 (en) | Automated data interface generation | |
US12124602B2 (en) | Implementing inherited grants using secure schemas | |
US11809922B1 (en) | Sharing events and other metrics in native applications | |
US20240171586A1 (en) | Secure roles for data sharing | |
da Silva Teixeira | Implementation of a data virtualization layer applied to insurance data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |