CN110389829B - 多租户环境中扩展对象的分类与分发 - Google Patents
多租户环境中扩展对象的分类与分发 Download PDFInfo
- Publication number
- CN110389829B CN110389829B CN201910202175.3A CN201910202175A CN110389829B CN 110389829 B CN110389829 B CN 110389829B CN 201910202175 A CN201910202175 A CN 201910202175A CN 110389829 B CN110389829 B CN 110389829B
- Authority
- CN
- China
- Prior art keywords
- tenant
- container
- objects
- extension
- generated
- 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
- 238000009826 distribution Methods 0.000 title description 2
- 238000009434 installation Methods 0.000 claims abstract description 9
- 238000012545 processing Methods 0.000 claims description 26
- 230000006870 function Effects 0.000 claims description 20
- 230000015654 memory Effects 0.000 claims description 18
- 238000003860 storage Methods 0.000 claims description 16
- 230000009471 action Effects 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 6
- 238000000034 method Methods 0.000 abstract description 34
- 238000004891 communication Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 230000005012 migration Effects 0.000 description 7
- 238000013508 migration Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 239000003623 enhancer Substances 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000003213 activating effect Effects 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000011900 installation process Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Stored Programmes (AREA)
Abstract
描述了用于促进在多租户环境中安装软件应用扩展的技术和解决方案。用于扩展的包可以包括用于该扩展的多个对象的代码。扩展对象可以是生成的或非生成的。生成的对象可以是用户可修改的或不是用户可修改的。软件实现的分类助手可以检查对象的属性并对它们进行分类以便部署到共享容器,或者提示用户选择是应该将对象部署到共享容器还是部署到特定于租户的容器。共享容器中的对象的属性可以由分类助手设置,使得它们不可被租户修改。
Description
技术领域
本公开一般涉及在多租户数据库环境中管理应用组件。具体示例涉及对用于应用扩展的包中的对象进行分类以便部署到共享容器或一个或多个租户容器。
背景技术
多租户数据库系统变得越来越普遍,特别是在云部署中。多租户环境可以提供许多优点,包括降低用户(租户)的硬件和维护成本。在多租户环境中,一些资源,诸如文档、集中式代码库、以及至少某些运行时和配置数据,通常由多个租户共享。但是,在多租户环境中从非多租户环境实施应用扩展时可能存在挑战。因此,存在改进的空间。
发明内容
提供本发明内容是为了以简化的形式介绍一些概念,这些概念将在下面的具体实施方式中进一步描述。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
描述了技术和解决方案用于促进在多租户环境中软件应用扩展的安装。用于该扩展的包可以包括用于该扩展的多个对象的代码。可以生成或不生成扩展对象。生成的对象可以是用户可修改的或不是用户可修改的。软件实现的分类助手可以检查对象的属性并对它们进行分类以便部署到共享容器,或者提示用户选择是应该将对象部署到共享容器还是部署到特定于租户的容器。共享容器中的对象的属性可以由分类助手设置,使得它们不能被租户修改。
在一个方面,提供了一种用于对扩展包中的对象进行分类以便在多租户环境中进行部署的方法。检索用于基础应用的扩展包或附加包。该包包括定义多个对象的代码。从包中读取多个对象中的第一对象。确定第一对象不是生成的对象。例如,可以通过访问第一对象的元数据或配置数据来执行该确定。基于确定第一对象不是生成的对象,第一对象被部署到多租户环境中的共享容器。
从包中读取多个对象中的第二对象。确定第二对象是生成的对象。确定第二对象不是终端用户可修改的。可以例如通过访问第二对象的元数据或配置数据来执行确定对象是否是生成的或用户可修改的。基于确定第二对象不是终端用户可修改的,第二对象被部署到共享容器。
另一方面,另一公开的方法提供了对用于应用扩展或者附加的包中的对象进行分类以用于在多租户环境中进行部署。多租户环境包括可由一个或多个租户访问的共享容器,以及一个或多个租户容器。该包包括一个或多个非生成的对象以及至少第一和第二生成的对象。
从用户接收对包中的对象进行分类的请求。非生成的对象被部署或标记为部署到共享容器。确定第一生成的对象不是用户可修改的。基于该确定,将第一生成的对象部署或标记为部署到共享容器。确定第二生成的对象是用户可修改的。基于该确定,向用户显示第二生成的对象的标识符。接收用户输入以将第二生成的对象部署到一个或多个租户容器中的至少第一租户容器。第二对象被部署或标记为部署到至少第一租户容器。
本公开还包括计算系统和有形的、非暂时性计算机可读存储介质,其被配置为执行上述方法或包括用于执行上述方法的指令。如本文所述,可以根据需要将各种其他特征和优点结合到技术中。
附图说明
图1是示出在非多租户环境中用于部署应用、应用扩展、和对应用扩展的增强的架构选项的图。
图2是示出如何在多租户数据库环境的租户容器中实现应用扩展的图。
图3是示出多租户数据库环境的图,其中应用扩展的组件可以在共享容器和一个或多个租户容器之间分发。
图4是用于存储对象执行配置信息的示例表。
图5是用于存储对象元数据的示例表。
图6是用于存储包元数据的示例表。
图7是对扩展包中的对象进行分类以便部署到共享容器或一个或多个租户容器的示例操作的流程图。
图8是对扩展包中的对象进行分类以便部署到共享容器或一个或多个租户容器的示例操作的另一流程图。
图9是对扩展包中的对象进行分类以便部署到共享容器或一个或多个租户容器的示例操作的另一流程图。
图10是其中可以实现一些描述的实施例的示例计算系统的图。
图11是可以结合本文描述的技术使用的示例云计算环境。
具体实施方式
示例1-概述
多租户数据库系统变得越来越普遍,特别是在云部署中。多租户环境可以提供许多优点,包括降低用户(租户)的硬件和维护成本。在多租户环境中,一些资源,诸如文档、集中式代码库、以及至少某些运行时和配置数据,通常由多个租户共享。其他资源,诸如应用、应用组件、或数据,可以是特定于租户的并存储在租户容器中。
在其他情境中可能存在类似的场景。例如,大型组织可以具有共享资源(例如,软件栈)的多个系统(例如,开发、测试、和生产系统)。系统的其他组件可以不同,因此可以类似于多租户架构中的租户。类似地,大型组织可以维护公共资源,但是针对特定区域、操作单元、设施等具有不同资源,其可以类似于多租户架构中的租户。
在一些情况下,作为特定用户的唯一安装(例如,“内部(on premise)”安装)而提供的软件应用可以被改变为具有在多个租户之间共享的一个或多个(包括所有)组件的应用,诸如在云部署中。租户可以是不同的、不相关的实体,或者可以例如为共同实体的不同单元而定义。
如果软件应用可以与并非设计用于多租户环境的附加组件一起使用,则迁移到多租户架构可能是有问题的。在某些情况下,软件应用可以提供可能对一系列不同用户有用的一般功能。然而,可以开发其他软件应用或模块以扩展软件应用的能力,包括基于特定类型或类别的用户的特定需要,或者满足不同个人用户的需要。例如,如图1所示,计算环境100可以包括基础软件110。基础软件110可以是软件应用平台或软件应用套件。在特定示例中,基础软件110可以是德国Walldorf的SAP SE的S/4HANA产品。
与第一计算系统118相关联的第一用户可以具有特定需求,使得第一扩展122被开发并与基础软件110一起安装。与第二计算系统126相关联的第二用户可以具有特定需求,使得第二扩展130被开发并与基础软件110一起安装。在典型的非多租户部署中,任意用户具有基础软件110的专用安装,并且可以可选地安装第一扩展122、第二扩展130、或用户可能会发现有用的任何其他扩展。在一些情况下,第一扩展122和第二扩展130可以用与基础软件110相同的编程语言编写,或者可以以其他方式利用基础软件110的功能。
图1还示出了可以由第三用户使用的第三计算系统134。第三计算系统134包括基础软件110、第一扩展122、和第二扩展130。在一些情况下,扩展的至少一部分可以是终端用户可修改的。在第三用户的情况下,第三用户已经创建了对第一扩展122的增强138。增强138可以采用各种形式,但可以是例如附加额外的计算逻辑(例如,附加到基础软件110的基本方法的处理步骤、或附加到诸如第一扩展122的扩展的基本方法的处理步骤)或将一个或多个字段附加到由基础软件或扩展提供的标准表。
图2示出了具有共享容器208、第一租户容器212、和第二租户容器216的多租户环境200,诸如云环境。共享容器208可以包括基础软件应用222。基础软件应用222可以是图1的基础软件110的一个版本、或者可以提供与图1的基础软件110类似的功能。第一租户容器212和第二租户容器216可以,诸如通过相应的应用运行时228、230,访问基础软件应用222。每个租户容器212、216也可以与相应的数据库接口236、240相关联,这可以用于访问存储在相应的租户容器的数据库层244、248中的数据。
由于共享容器208可由第一租户容器212和第二租户容器216两者访问,因此,至少在不无引起问题的可能性的情况下,通常不能以图1所示的方式提供对附加功能的提供。例如,如果基础软件应用222由第一实体开发,而扩展由第二实体开发,则在租户212、216使用被并入到基础软件应用的扩展的情况下,第一实体可能需要承担责任。另外,如果扩展被包括在基础软件应用222中,则可能难以分离对扩展的访问,诸如,如果与第一租户容器212相关联的第一租户为访问扩展进行了支付而与第二租户容器216相关联的第二租户没有支付。
在一些情况下,可能可以提供可以从租户容器(诸如第一租户容器212)执行的扩展256。在特定示例中,扩展最初可能已经被提供在图1的环境100中,并且已经用与编写基础软件应用的语言相对应的语言编写。在环境200中,可以提供SDK以用于授权可以由租户容器212、216结合基础软件应用222使用的扩展。然而,在至少一些情况下,SDK可以使用除了编写基础软件应用222的至少某些功能所使用的语言之外的语言,这可能增加扩展的复杂性或者可能降低扩展的功能。因此,提供如下的一种解决方案可能是有益的,其中扩展可以在诸如在云部署中的多租户架构中使用,但是使用来自非多租户环境的遗留代码或以其他方式以类似于图1的内部/非多租户环境100的方式利用基础软件应用222的功能。
本公开提供了允许在多租户环境中使用扩展的解决方案。扩展可以是包括遗留代码的并非针对多租户环境编写的扩展、为利用基础软件应用222的功能而编写的扩展、或基础软件应用的其他扩展。
可以通过将扩展库(extension repository)合并到多租户数据库系统的共享容器中来实现解决方案。扩展库中的扩展可以与基础软件应用分离,这可以减少提供基础软件应用的实体的责任。将扩展与基础软件应用分离还可以简化基础软件应用以及扩展的更新和维护。将扩展与基础软件应用分离可以通过帮助将对扩展的访问限制于特定授权用户或实体(诸如通过修改扩展)来增加扩展的安全性。
促进扩展的开发或重用可以提供其他优点。例如,多租户架构可以在成本、便利性、和性能方面为用户提供优势。但是,在用户依赖扩展的情况下,如果用户拥有可能变得不可用的一个或多个扩展,则用户可能不愿意切换到多租户架构。反过来,开发人员可能不愿意在扩展中重新创建功能,诸如在不同的编程语言中,由于可能需要的大量工作,或者失去与基础软件应用的支持服务的不可操作性。
可以在多租户架构中限制访问和修改数据的权限。例如,可能会阻止租户修改扩展库中的数据(诸如方法实现)。为了维护租户容器的数据完整性,可以防止与扩展库中的扩展相关联的实体访问或修改租户数据。租户数据可以表示使用扩展库中的扩展所采取的操作的结果。在至少一些方面,租户容器可以包括与扩展相关联的附加逻辑或功能。例如,扩展可以指示租户可以扩展或扩充某些特征。
本公开还提供了可以帮助将扩展迁移到多租户环境的技术。扩展可以与各种对象相关联,诸如类或类似的抽象数据类型,或面向对象编程的其他元素。某些对象可以是编译时对象。编译时对象通常不能由租户修改,因此可以存储在共享容器的库中。
其他对象可以是生成的对象,响应于用户动作(例如,经由用户界面元素激活程序特征)在运行时期间生成的对象。某些生成的对象可以自动分类以被包括在共享库中。其他生成的对象可以被指定用于在本地租户容器中的安装/实例化,或者可以被标记以供用户(例如,系统管理员或软件开发者)手动确定该对象是应该安装在共享库中还是租户本地(tenant-local)容器中。在一些方面,如果对象可以由租户修改,则在租户本地容器中安装或实例化该对象,或者标记该对象以供用户确定该对象应该安装到哪个位置。在一些情况下,可以向用户提供改变对象类型的选项,或者改变对象是否是租户可修改的。
提供迁移助手可以帮助软件开发者将他们的扩展迁移到可以在云中提供的新环境,诸如多租户环境。提供迁移助手还可以帮助基础应用的开发者维护对共享容器的控制,诸如通过限制与扩展相关联的开发者对共享扩展库的访问,以及不提供对基础软件应用的访问。
示例2-示例多租户环境
图3示出了多租户数据库环境300。环境300包括可以由第一租户312和第二租户314访问的共享容器308。虽然示出了第一租户312和第二租户314,但是环境300可以包括更大或更小数量的租户。
共享容器308可以包括基础应用库318和扩展库326。基础应用库318可以包括可以提供给第一租户312和第二租户314中的一个或两个的一个或多个软件应用320。通常,基础应用库318包括可由多个租户使用的具有更一般功能的应用320。
扩展库326可以包括用于到基础应用库318中的一个或多个应用320的一个或多个扩展328的代码。通常,扩展328为应用320提供增强的功能,诸如提供可以被应用调用的附加方法,但可以选择性地提供更广泛的功能,包括可以提供对扩展的特征的访问的用户界面屏幕或用户界面元素。扩展328还可以采用用于应用320的插件或小程序的形式。
通常,基础应用库318和扩展库326在共享容器308的逻辑上分离的部分中提供。以这种方式,共享容器308的提供者可以允许第三方访问扩展库326,或者至少允许第三方软件在扩展库326中操作,但不允许访问基础应用库318或共享容器的其他部分(诸如配置设置)。因此,这种布置可以为共享容器308提供更高的安全性和稳定性,并且将可能由不同方提供的应用功能分离。
除了限制对基础应用库318的访问之外,共享容器308还可以限制对扩展库326及其扩展328的访问。例如,共享容器308可以包含访问和许可特征,使得只有开发者或其他授权实体可以在扩展库326中添加、删除、或修改扩展328。例如,可以向每个开发者提供访问凭证,以及可选地,在扩展存储库326或共享容器308的其他组件中的访问许可或特定命名空间,以便保护其扩展328免受存储在扩展库中的其他扩展的开发者的访问。因此,正如基础应用库318与扩展库326逻辑地分离一样,可以向与访问凭证相关联的每个开发者或其他实体提供对扩展库的逻辑上分离的部分的访问。
共享容器308可包括附加特征。例如,共享容器可以包含对象目录332。对象目录332可以包括关于各种应用320,应用320的扩展328或其他附加组件(add-on),以及共享容器308中使用的、以及在一些情况下在各种租户容器340、344中使用的其他对象的信息。
例如,可以以具有一个或多个相关联的程序对象的包的形式提供扩展328。对象目录332可以存储关于对象以及包的各种信息,包括对象是生成的对象(响应于用户对应用320或扩展328的动作而在需要时生成)还是可以是在最初部署或安装应用或扩展时实例化的对象的编译时对象。反过来,生成的对象可以与指示符相关联,该指示符指定所生成的对象是可由终端用户(例如,租户312、314)编辑或增强还是受限于这种编辑。
生成的对象可以与附加信息相关联,包括用于被允许移除或修改对象的实体或用户的标识符,或者用于被允许访问或激活对象的实体或用户的标识符(例如,调用方法,包括通过由对象或与对象相关联的包提供的API)。对象目录332可以以关于对象的元数据的形式存储该信息,包括在列出对象的各种属性的表中。
如将进一步描述的,用于扩展328的包及其组成对象可能最初是为非多租户环境开发的。为了使扩展328适用于多租户环境,通常应该对包中的对象进行分类以确定它们是应该部署到共享容器308还是部署到分别与租户312、314相关联的租户容器340、344中的一个或多个。然而,扩展328的开发者通常可能不熟悉共享容器308或多租户架构300的配置。因此,开发者可能难以对扩展328中的对象进行分类。此外,基础应用320、共享容器308、或多租户架构300的提供者通常可能希望限制对配置设置和共享容器的其他属性的访问。
因此,共享容器308可以包括分类助手336。分类助手336可以帮助扩展328的开发者对扩展中的对象进行分类以放置在扩展库326中或者租户容器340、344中。例如,如果应该为多个租户312、314提供共同功能,则通常将相应的一个或多个对象放置在扩展存储库326中,并且限制租户修改它们。如果增强328的全部或部分功能应该可由租户312、314修改,则可以将相应的一个或多个对象部署到适当的租户容器340、344。
共享容器308可以访问数据库容器337(可以使用数据库接口访问,未示出)。数据库容器337可以包括一个或多个数据存储器338。一个或多个数据存储器338可以存储与共享容器308相关联的数据,包括数据对象,数据表,和与应用320、扩展328、或对象目录332的对象相关联的其他数据。
租户容器312、314中的对象可以与共享容器308中的对象协作,以向在非多租户环境中执行的扩展328提供相同或等同的功能。虽然本公开描述了扩展328从非多租户环境到多租户环境300的迁移,但是应当理解,本公开的各方面,包括分类助手336,可以在其他情境中使用。
例如,租户容器340、344可能可以以与图2所示的类似的方式直接合并扩展。然而,如已经描述的,使扩展的全部或一部分与基础应用库318的应用320相关联地实现可以是有利的,包括使用公共编程语言或利用应用320的组件或功能的能力。因此,可能需要使用包括分类助手336的架构300来创建或更新扩展328,而不是创建以另一种方式实现的扩展。
租户312、314与相应的租户容器340、344相关联。每个租户容器340、344可以包括应用层348、350和数据库接口352、356。应用层348、350可以为租户312、314供应应用。应用层348、350可以包括用户界面组件354,其可以向与相应租户312、314相关联的用户提供信息并从其接收输入。
应用层348、350还可以包括许可存储器358。许可存储器358可以包括指定以下各项中的一个或两者的信息:租户312、314可以访问基础应用库318的哪些应用320和扩展库326中的哪些扩展328。在一些实现中,可以省略许可存储器358。租户312、314或与租户相关联的个人用户可以与一个或多个标识符相关联,所述一个或多个标识符转而又与共享容器308的应用320或扩展328的访问许可相关联。
应用层348、350可以包括扩展配置设置362。配置设置362可以指定响应于特定用户动作(诸如通过用户接口354接收的用户动作)应该调用扩展库326的什么扩展328。例如,基础应用320的特定功能可以用扩展328注册。对于这样的功能,配置设置362可以包括扩展标识符366,诸如与扩展328相对应的名称或数字或字母数字标识符以及用于访问该扩展的访问信息370。访问信息370可以是共享容器308的文件路径或URI,诸如用于访问扩展库326中的对象(或包或与扩展328相关联的其他组件)。
在一些情况下,当租户312、314调用扩展328的功能时,可以在应用层348、350中的应用的运行时期间立即使用任何结果。在其他情况下,结果可以被存储,可选地除了被返回到应用运行时之外。例如,结果可以存储在相应租户容器340、344的数据库容器382、386的表或其他数据存储器374、378中。用于与标识符366相关联的扩展的配置设置362可以包括结果位置390,其可以是到存储位置的路径,诸如数据存储器374、378中的表,或可用于存储信息的其他信息(例如,将结果格式化为SQL语句,诸如插入、更新、或删除记录,该记录可以更新数据存储器374、378中的表的记录)。
如所描述的,向租户312、314提供对扩展328的访问可以提供对于特定租户的需求更有用的定制应用。在至少一些情况下,可以进一步定制提供给特定租户312、314的功能。例如,扩展328可以允许租户312、314增强或定制扩展328的功能。可以在配置设置362中识别租户代码增强或定制394。
租户容器340、344可以包括可以存储用于任何这样的增强或定制394的代码或配置信息的库(未示出)。在其他方面,租户增强394可以存储在数据库容器382、386中,诸如被定义在数据库容器382、386的数据字典中。在特定方面,数据字典可以包括作为应用320或扩展328的一部分提供的对标准数据库表的模式扩展。
数据库接口352、356可以协调数据库操作,包括执行来自租户312、314的读取和写入请求。数据库接口352、356还可以执行诸如处理执行错误(诸如SQL异常)、强制执行访问限制或共享许可(包括访问可能存储在共享容器308中的数据)、或完成各种数据库管理活动的任务。
如上所述,环境300可以允许提供扩展328而不允许第三方修改应用320。类似地,环境300可以防止第三方(例如,提供扩展328的实体)访问租户312、314的数据,诸如通过将结果或其他租户数据存储在数据存储器374、378中而不是存储在共享容器308中。然而,可以通过维护共享容器308中的扩展来保护扩展328的功能免受租户312、314的修改。也就是说,可以允许租户312、314对扩展328进行读访问,但不允许进行写访问。
作为数据如何能够在租户312、314和共享容器308之间传递的示例,扩展328可以采用可以特定于租户312的特定行业的计算的形式。作为行业特定的计算,功能可以不由基础应用320提供。许可存储器358可以提供对扩展库326的对应扩展328的访问权限。当调用关联的进程时,可以访问配置设置362以指导使用访问信息370将方法调用到扩展存储器326中的适当位置。
可以将与方法调用相关联的参数传递到共享容器308,在共享容器308中执行计算。计算结果返回给租户312,并且可选地存储在配置设置362的结果位置390中指示的位置处的数据存储器374中。可选地,可以基于配置设置340的增强/定制394中指示的任何租户定制/增强来执行附加进程。例如,增强可以是对共享容器308处的计算结果执行的进一步计算。
示例3-租户对象配置示例
图4示出了可以被存储在租户容器(诸如图3的租户容器340或344)中的、可以存储配置信息的示例表400,用于访问位于多租户环境300的共享容器308中的扩展326。表400可以存储与扩展326相关联的各种对象的对象标识符410,诸如对象(或包含对象的包)的特定方法或API。每个对象标识符410的记录可以包括执行位置414。执行位置414可以是文件路径、URI、或可以在共享容器308处调用该功能的位置的其他标识符。
可选地,每个功能标识符410的记录可以包括结果位置标识符418。结果位置标识符418可以标识租户312、314的数据库容器382、386的数据存储器374、378中的特定存储位置。在其他情况下,可以以另一种方式指定存储位置,诸如以一个或多个SQL语句(诸如,更新、插入、或删除语句)的形式来修改一个或多个指定的数据库表。
字段422可以指定可以作为执行由对象标识符410指示的对象的一部分来执行的任何特定于租户的附加处理。附加处理可以表示允许租户定制的、对于共享容器308的扩展328的特定于租户的处理。附加处理可以是,例如,要被调用的另一函数的标识符,诸如对应的代码可以被调用的位置(诸如库位置、URI、或类似的信息)。附加处理可以涉及可能与由基础应用320或扩展328提供的标准表相关联的附加字段。
然而,本公开不限于对象信息被存储在具有表格400的形式的表格中,或者以表格格式存储。例如,类似的信息可以存储在配置设置中,诸如可以从配置文件加载的配置设置。在一些情况下,除了或者代替将信息存储在租户容器340、344中之外,来自表400的全部或部分信息可以存储在共享容器308中。
示例4-示例对象元数据
图5示出了可以存储关于扩展(诸如图3的扩展库326的扩展328)的信息的表500。表500可用于配置共享容器308,诸如确定什么对象应被包括在共享容器中,以及哪些(如果有的话)对象应被部署到租户容器340、344。
表500可以包括对象标识符510,诸如名称、或数字或字母数字标识符,用于可以与扩展相关联的各种对象。也就是说,特定扩展可以包括一个对象或多个对象,诸如包括包中的一个或多个对象。字段510的值可以标识可用对象的目录或库中的对象(其可以包括本地对象和远程对象,诸如:如果表500与租户容器340、344相关联,则为位于共享容器上的对象,或者如果该表位于共享容器308中,则为在租户容器中的对象)。
每个对象可以通过使用对象类型字段514的特定值指示的类型来关联。对象类型可以包括程序(program,PROG)、类(class,CLAS)、增强(enhancement,ENGO)、和开发包(development package,DEVC),在特定示例中,其可以被实现为由德国Walldorf的SAP SE提供的产品。
每个对象可以包括由源位置字段518中的值指示的位置。源位置字段518的值可以包括用于对象的源系统的路径、URI、或其他指示符。在至少一些情况下,源位置字段518中的值可用于访问对象。例如,源位置字段518中的值可以指定扩展库326中的特定位置。在其他情况下,源位置字段518中的值可以指定与特定对象所关联的扩展的提供者相关联的计算系统。
包字段522可以标识对象所属的特定包。包可以包括类(或其他对象或抽象数据类型)、功能模块、数据元素以及其他包(即,包可以是包括在另一包中的子包)。包可以定义用于访问组成包组件的功能的接口。在一些情况下,包可以包括基础应用320和一个或多个扩展328。在其他情况下,包可以包括一个或多个扩展,其中可以安装或激活包以与一个或多个基础应用一起使用。例如,可以使用包字段522的值来通过扩展对对象进行分组。例如,当特定扩展的对象(其可以对应于包标识符522)要被分类(或被存放在共享容器中,诸如在扩展库中)时,可以通过经由包标识符字段522的一个或多个值查询表500来检索对象。
表500可以包括所有者字段526。所有者字段526的值可以用于标识与特定实体相关联的对象。例如,第一实体可以“拥有”第一扩展,第二所有者可以“拥有”第二扩展。包括所有者字段526可以允许实体检索与其扩展相关联的对象。
所有者字段526还可用于强制执行访问许可。也就是说,可以限制特定实体访问和修改它们作为其所有者的记录。然而,访问许可以以另一方式指定,诸如将特定记录范围指定为由不同实体拥有。或者,可以为每个所有者提供单独的表500(并且例如,也可以为每个扩展提供单独的表500)。
表500可以包括生成标识符字段530。生成标识符字段530可以指示对象是否是生成的对象(例如,在运行时期间生成,而不是在软件安装期间创建的编译时对象),并且,至少在某些情况下,是与生成的对象相关联的类型。例如,生成标识符字段530可以指示对象是由于对于租户只读而应该保持在共享容器中的生成的对象,还是应该可以被租户编辑并且因此通常安装在租户容器中的对象。如将进一步解释的,生成标识符字段530在迁移或以其他方式安装扩展以供在多租户环境(诸如图3的环境300)中使用是有用的。
尽管可以使用各种值来指示生成状态,但是在特定示例中,NULL或空值(有时称为“空格”)可以指示对象不是生成的对象(诸如是默认对象或编译时对象)。另一个值,诸如“X”,可用于指示对象是生成的对象。在某些情况下,值“X”可以指示生成的对象可由租户修改,并且应该安装在租户容器中。另一个值(诸如“Z”)可以指示生成的对象应该被视为共享对象,而不是安装在租户容器上或者可以由租户修改。当然,可以使用对对象的生成状态进行分类的其他值或手段。类似地,对象可以具有更多或更少的生成类型。例如,不是区分生成的对象的类型,而是单个值可以标识是否生成了对象,并且用户可以手动确定对象是应该共享的还是租户本地的,或者这样的确定可以使用对象的其他属性或其关联的包自动进行。
如将进一步讨论的,在一些情况下,两个值可以用于生成标识符530,以指示对象是否是生成的。然而,来自非多租户架构的对象最初可能具有可能不适合多租户架构的、生成标识符的值,使得将所有生成的对象视为共享的或租户本地的可能是不合适的。也就是说,在非多租户架构中,可能已出于其他目的将对象分类为生成的或非生成的,而并非用于指示对象应在多租户环境中被部署到哪里。
例如,一些对象可能被标记为生成的,即使它们应被视为租户不可修改的。因此,手动对生成的对象进行分类以确保它们被安装在正确的位置、或区分生成的对象的类型(例如,基于生成的对象的不同类型标识符,或者与生成的对象相关联的另一字段或元数据属性是否指示其可由终端用户修改或增强)可能是有用的。
本公开提供了用于改变对象的生成标识符字段530的值的过程,诸如将生成的对象的值(例如,具有值“X”)更改为指示对象应该被共享并且不可被租户修改的值。通过将“X”更改为另一值(诸如NULL,“空格”/“空白”或“T”)可以反映更改。在其他情况下,可以将对象安装到正确的位置而不修改生成标识符字段530中的值。因此,如本文所述,生成标识符字段530的值可以用于帮助引导诸如扩展提供者的实体在多租户环境中建立扩展。
示例5-示例包元数据
可以使用其他对象或包元数据来强制执行访问许可,诸如防止租户编辑共享容器中的对象。在表600中提供了这种元数据的示例,如图6所示。表600包括包标识符字段610。包标识符字段610可以用于标识包,其可以对应于由特定实体提供的特定扩展。在特定示例中,包标识符字段610可以对应于图5的包标识符字段522。
每个包可以与类型字段614中指示的类型相关联。类型字段614的值可以包括诸如用于云包的“C”、用于弃用包的“D”、用于主包(home package)的“H”、和用于内置包的“O”的值。在一些实现中,“O”指定可用于指定包应位于共享容器中并且不能被租户编辑。也就是说,“O”指定符可用于在可以作为云环境的多租户环境中指定包的特定位置,而不是严格指定包是云部署还是不是云部署。当然,如果需要,可以将另一指定符用于可共享容器,诸如提供值“S”。
尽管被描述为在包级别应用,但是在一些方面,类型字段614可以与各个包对象相关联。例如,类型字段可以包括在表500中。在表500中具有类型字段或类似的指定符可以是有用的,例如,当期望在字段530中将对象分类为生成的对象(例如,类型“X”),但仍指定租户不能修改该对象时。指定符还可用于指定对象位置和对象可编辑性的其他组合。例如,可能需要将对象安装在租户容器中,但租户不能编辑。
包也可以与可增强性字段618的值相关联。可增强性字段618可以用于指示包或包组件(例如,对象)是否可以由终端用户(例如,租户)扩展。例如,可增强包可以允许用户向扩展添加附加处理逻辑。可增强性字段618的典型值可以包括分别表示“可增强”或“不可增强”的“1”和“0”,“Yes”,“No”,“True”,“False”或类似的指定符。尽管示出为表600的一部分,但是在一些情况下,可以将增强性字段618合并到表500而不是表600中,或者除了表600之外还合并到表500中,以指示特定对象是否可增强。
尽管以表500和600的形式示出,但是可以以另一方式指定这些表的全部或部分信息。例如,信息可以包括在对象或包的元数据中。或者,信息可以包括在配置文件中,诸如用于相应扩展的配置文件,其中配置文件可以存储在多租户环境中的租户容器中或共享容器中。
示例6-示例分类助手
如示例1和2中所述,可以提供分类助理以帮助实体(诸如扩展的提供者)将扩展迁移到包括云环境的多租户环境。分类助手可以帮助促进扩展到云或其他多租户环境的迁移或安装,这反过来可以促进用户到云的迁移,诸如用户在多租户云架构中的租户上工作(onboard)。因此,分类助手可以帮助促进更有效地使用计算资源。如将进一步描述的,分类助理还可以通过将扩展与基础应用分离,并通过限制租户访问扩展的全部或一部分来促进数据安全性和完整性。
图7示出了可以由分类助手执行的操作700。操作700开始于710,诸如由用户(诸如与提供扩展的实体相关联的用户)激活分类助手或开始迁移或安装过程。在714处打开与扩展相关联的包。在714处打开包可以包括访问库并读取包中的对象列表(其可以包括类或其他程序组件)。
在718处,确定包是否已被分配给基础应用或应用套件的对象或应用功能。分配给基础应用或应用套件的对象或应用的包可以帮助将代码放置在共享容器中并强制执行对代码的访问限制。如果在718处确定包尚未被分配给对象或应用功能,则可以在722处将其分配给对象或应用功能。在一些情况下,分配包可以包括创建用于包的新的应用对象或应用功能。在其他情况下,可以将包分配给现有对象或应用功能。在一些示例中,可以响应于用户输入来执行分配。在其他示例中,可以自动执行分配。
如果在718处确定包已被分配给对象或应用功能,或者在722处分配之后,操作700可以进行到726。在726处读取包的对象,包括读取对象的元数据,其可以与对象一起存储或存储在另一位置(诸如在类似于图5的表500的配置表中)。在730处,确定对象类型,诸如对象是生成的对象还是对象不是生成的对象(诸如是编译时或默认对象)。
如果在730处确定对象不是生成的对象,则可以在734处将对象添加到多租户环境中的共享容器。在738处确定是否要分析更多对象。如果是,则操作700可以返回到726,其中读取和处理下一对象。如果没有进一步的对象要被分析,则操作700可以在742处结束。
如果在730处确定对象是生成的对象,则操作700可以进行到746,其中确定对象是否是可以由租户修改、增强或扩展的对象。如果对象不是可由租户增强的对象,则可以在750处更新该对象的共享类型以指示该对象不可被租户编辑。然后,操作700可以进行到734并且如上所述继续。
如果在746处确定对象可由租户修改,则可以在754处向用户提示用户输入或记录对象。例如,可以提示用户确认对象应该是共享对象还是租户本地(即可修改)对象。在758处,确定用户是否已指示是否应该共享对象。如果确定对象将不被共享(诸如可由租户修改),则可以在762处将对象部署或标记为部署到租户容器。然后,操作700可以进行到738。如果在758处确定对象将被共享,并且不可由租户修改,则操作700可以进行到750并且如上所述继续。
示例7-第一示例分类和部署操作
图8示出了用于对扩展包中的对象进行分类以便在多租户环境中进行部署的方法800。方法800可以例如在图3的环境300中执行。在808处,检索基础应用的扩展包或附加包。该包包括定义多个对象的代码。在812处,从包读取多个对象中的第一对象。在816处,确定第一个对象不是生成的对象。例如,可以通过访问第一对象的元数据或配置数据来执行该确定。基于确定第一对象不是生成的对象,在820处将第一对象部署到多租户环境中的共享容器。
在824处,从包中读取多个对象中的第二对象。在828处确定第二对象是生成的对象。在832处,确定第二对象不可由终端用户修改。例如,可以通过访问第二对象的元数据或配置数据来执行828和832处的确定。基于确定第二对象不可由终端用户修改,在836处将第二对象部署到共享容器。
示例8-第二示例分类和部署操作
图9示出了对用于应用扩展或附加的包中的对象进行分类以在多租户环境中进行部署的操作900的流程图。多租户环境包括可由一个或多个租户访问的共享容器,以及一个或多个租户容器。该包包括一个或多个非生成的对象以及至少第一和第二生成的对象。方法900可以例如在图3的环境300中执行。
在908处,从用户接收对包中的对象进行分类的请求。在912处,将非生成的对象部署或标记为部署到共享容器。在916处,确定第一生成的对象不是用户可修改的。基于该确定,在920处,将第一生成的对象部署或标记为部署到共享容器。在924处,确定第二生成的对象是用户可修改的。基于该确定,在928处,向用户显示第二生成的对象的标识符。在932处接收用户输入以将第二生成的对象部署到一个或多个租户容器中的至少第一租户容器。在936处,将第二对象部署或标记为部署到至少第一租户容器。
示例9-计算系统
图10描绘了可以实现所描述的创新的合适的计算系统1000的一般化示例。计算系统1000不旨在对本公开的使用范围或功能范围提出任何限制,因为创新可以在不同的通用或专用计算系统中实现。
参考图10,计算系统1000包括一个或多个处理单元1010、1015和存储器1020、1025。在图10中,该基本配置1030被包括在虚线内。处理单元1010、1015执行计算机可执行指令,诸如用于实现示例1-8中描述的特征。处理单元可以是通用中央处理单元(CPU)、专用集成电路(ASIC)中的处理器、或任何其他类型的处理器。在多处理系统中,多个处理单元执行计算机可执行指令以增加处理能力。例如,图10示出了中央处理单元1010以及图形处理单元或协处理单元1015。有形存储器1020、1025可以是处理单元1010、1015可访问的易失性存储器(例如,寄存器、高速缓存、RAM)、非易失性存储器(例如,ROM、EEPROM、闪存等)、或两者的某种组合。存储器1020、1025以适合于由一个或多个处理单元1010、1015执行的计算机可执行指令的形式存储实现本文所述的一个或多个创新的软件1080。
计算系统1000可以具有附加特征。例如,计算系统1000包括存储装置1040,一个或多个输入设备1050,一个或多个输出设备1060,以及一个或多个通信连接1070,包括用于与用户交互的输入设备、输出设备、和通信连接。诸如总线、控制器、或网络的互连机制(未示出)互连计算系统1000的组件。通常,操作系统软件(未示出)为在计算系统1000中执行的其他软件提供操作环境,并且协调计算系统1000的组件的活动。
有形存储装置1040可以是可移动的或不可移动的,并且包括磁盘、磁带或盒、CD-ROM、DVD、或可以被用于以非暂时方式存储信息以及可以在计算系统1000内被访问的任何其他介质。存储装置1040存储用于实现本文描述的一个或多个创新的软件1080的指令。
(多个)输入设备1050可以是诸如键盘、鼠标、笔、或轨迹球的触摸输入设备,语音输入设备,扫描设备,或向计算系统1000提供输入的另一设备。(多个)输出设备1060可以是显示器、打印机、扬声器、CD写入器、或提供来自计算系统1000的输出的另一设备。
(多个)通信连接1070使得能够通过通信介质与另一计算实体进行通信。通信介质以调制的数据信号传送诸如计算机可执行指令、音频或视频输入或输出、或其他数据的信息。调制的数据信号是以对信号中的信息进行编码的方式设置或改变其一个或多个特征的信号。作为示例而非限制,通信介质可以使用电、光、RF、或其他载体。
可以在计算机可执行指令的一般上下文中描述创新,诸如程序模块中包括的那些,在目标真实或虚拟处理器上的计算系统中执行。通常,程序模块或组件包括执行特定任务或实现特定抽象数据类型的例程、程序、库程序(library)、对象、类、组件、数据结构等。在各种实施例中,可以根据需要在程序模块之间组合或分割程序模块的功能。用于程序模块的计算机可执行指令可以在本地或分布式计算系统内执行。
术语“系统”和“设备”在本文中可互换使用。除非上下文另有明确说明,否则这两个术语都不意味着对计算系统或计算设备的类型的任何限制。通常,计算系统或计算设备可以是本地的或分布式的,并且可以包括专用硬件和/或通用硬件与实现本文描述的功能的软件的任何组合。
在本文描述的各种示例中,模块(例如,组件或引擎)可以被“代码化(coded)”以执行某些操作或提供某些功能,指示可以运行用于模块的计算机可执行指令以执行这样的操作,使得这样的操作被执行,或以其他方式提供这样的功能。尽管针对软件组件、模块、或引擎描述的功能可以作为分立软件单元(例如,程序、功能、类方法)来执行,但是不需要将其实现为分立单元。也就是说,功能可以合并到更大或更通用的程序中,诸如更大或通用程序中的一行或多行代码。
为了呈现,详细描述使用了像“确定”和“使用”之类的术语来描述计算系统中的计算机操作。这些术语是对计算机执行的操作的高级抽象,并且不应与人类执行的行为相混淆。对应于这些术语的实际计算机操作根据实现而变化。
示例10-云计算环境
图11描绘了可以实现所描述的技术的示例云计算环境1100,包括图3的环境300。云计算环境1100包括云计算服务1110。云计算服务1110可以包括各种类型的云计算资源,诸如计算机服务器、数据存储库、网络资源等。云计算服务1110可以是位于中央的(例如,由企业或组织的数据中心提供)或分布式的(例如,由位于不同位置(诸如不同的数据中心和/或位于不同的城市或国家)的各种计算资源提供)。
云计算服务1110由各种类型的计算设备(例如,客户端计算设备)利用,诸如计算设备1120、1122和1124。例如,计算设备(例如,1120、1122、和1124)可以是计算机(例如,台式计算机或膝上型计算机)、移动设备(例如,平板计算机或智能电话)、或其他类型的计算设备。例如,计算设备(例如,1120、1122、和1124)可以利用云计算服务1110来执行计算操作(例如,数据处理,数据存储等)。
示例11-实现
尽管为了便于呈现,以特定的、顺序的次序描述了一些所公开的方法的操作,但是应该理解,这种描述方式包括重新布置,除非本文所述的特定语言要求特定的排序。例如,顺序描述的操作在某些情况下可以被重新排列或同时执行。此外,为了简单起见,附图可能未示出所公开的方法可以与其他方法结合使用的各种方式。
所公开的方法中的任何方法可以实现为存储在一个或多个计算机可读存储介质上并在计算设备(例如,任何可用的计算设备,包括智能电话或包括计算硬件的其他计算设备)上执行的计算机可执行指令或计算机程序产品。有形计算机可读存储介质是可在计算环境内访问的任何可用有形介质(例如,诸如DVD或CD的一个或多个光学介质盘、易失性存储器组件(诸如DRAM或SRAM)、或非易失性存储器组件(诸如,闪存或硬盘))。作为示例并参考图10,计算机可读存储介质包括存储器1020和1025,以及存储装置1040。术语计算机可读存储介质不包括信号和载波。另外,术语计算机可读存储介质不包括通信连接(例如,1070)。
用于实现所公开的技术的任何计算机可执行指令以及在所公开的实施例的实现期间创建和使用的任何数据可以存储在一个或多个计算机可读存储介质上。计算机可执行指令可以是例如专用软件应用或经由网络浏览器或其他软件应用(诸如远程计算应用)访问或下载的软件应用的一部分。这样的软件可以例如在单个本地计算机(例如,任何合适商用计算机)上运行或在(例如,经由因特网、广域网、局域网、客户端-服务器网络(诸如云计算网络或其他这样的网络))使用一个或多个网络计算机的网络环境中运行。
为清楚起见,仅描述了基于软件的实现的某些所选方面。省略了本领域公知的其他细节。例如,应该理解,所公开的技术不限于任何特定的计算机语言或程序。例如,所公开的技术可以通过用C++、Java、Perl、JavaScript、Python、Ruby、ABAP、SQL、Adobe Flash、或任何其他合适的编程语言编写的软件来实现,或者,在一些示例中,可以通过诸如html或XML的标记语言、或合适的编程语言和标记语言的组合来实现。同样地,所公开的技术不限于任何特定计算机或硬件类型。合适的计算机和硬件的某些细节是公知的,并且不需要在本公开中详细阐述。
此外,可以通过合适的通信手段上载、下载、或远程访问基于软件的实施例中的任何实施例(包括,例如,用于使得计算机执行所公开的方法中的任何方法的计算机可执行指令)。这样的合适的通信手段包括,例如,因特网、万维网、内联网、软件应用、电缆(包括光纤电缆)、磁通信、电磁通信(包括RF、微波、和红外通信)、电子通信,或其他这样的通讯手段。
所公开的方法、装置、和系统不应被解释为以任何方式进行限制。相反,本公开针对各种公开的实施例的所有新颖和非显而易见的特征和方面,单独地以及以与彼此的各种组合和子组合。所公开的方法、装置、和系统不限于任何特定方面或特征或其组合,所公开的实施例也不要求存在任何一个或多个特定优点或解决任何问题。
来自任何示例的技术可以与其他示例中的任何一个或多个中描述的技术组合。鉴于可以应用所公开技术的原理的许多可能的实施例,应该认识到,所示实施例是所公开技术的示例,并且不应该被视为对所公开技术的范围的限制。相反,所公开的技术的范围包括所附权利要求的范围和精神所涵盖的内容。
Claims (15)
1.一种实现多租户数据库环境的计算系统,该计算系统包括:
一个或多个存储器;
一个或多个处理单元,其被耦合到所述一个或多个存储器;以及
存储指令的一个或多个非暂时性计算机可读存储介质,当所述指令被加载到所述一个或多个存储器中时,使得所述一个或多个处理单元执行以下操作:
从用户接收对扩展包中的对象进行分类以便部署到多租户环境的请求,所述多租户环境包括可由一个或多个租户、或一个或多个租户容器访问的共享容器,其中扩展包包括一个或多个非生成的对象和至少第一和第二生成的对象,其中所述对象中的每一个包括:
响应于基础应用或扩展包内的用户动作而在需要时所生成的生成的对象,其中基础应用是用于与数据库管理系统接口的数据库应用,其中所述对象用作数据库应用的扩展,或者
在最初安装基础应用或扩展包时实例化的对象的编译时对象;
将非生成的对象部署到共享容器;
确定第一生成的对象不是用户可修改的;
将第一生成的对象部署到共享容器;
确定第二生成的对象是用户可修改的;
向用户显示第二生成的对象的标识符;
接收第一用户输入以将第二生成的对象部署到一个或多个租户容器中的至少第一租户容器;以及
将第二生成的对象部署到至少第一租户容器。
2.如权利要求1所述的计算系统,其中,所述扩展包与可由所述一个或多个租户中的租户修改并部署在所述一个或多个租户容器中的租户容器中的对象相关联。
3.如权利要求1所述的计算系统,其中,所述扩展包与可由用户修改的对象相关联,所述对象包括部署在所述至少第一租户容器的数据库层中的数据库表。
4.如权利要求1所述的计算系统,其中所述共享容器包括扩展库,并且不允许与所述一个或多个租户中的租户相关联的扩展库的用户修改存储在共享容器中的一个或多个基础软件应用的代码。
5.如权利要求1所述的计算系统,所述操作还包括:
接收第二用户输入将扩展包的第一类型的对象分类为要存储在共享容器的扩展库中;以及
为第一类型的对象设置指示第一类型的对象不可由所述一个或多个租户中的租户修改的指示符。
6.根据权利要求1所述的计算系统,其中第三生成的对象包括指示所述第三生成的对象可由终端用户修改并且应该被部署在所述至少第一租户容器中的元数据。
7.如权利要求1所述的计算系统,所述操作还包括:
确定所述扩展包中的第三生成的对象不可由用户修改;以及
基于确定所述第三生成的对象不可由用户修改,将所述第三生成的对象部署到共享容器的扩展库。
8.如权利要求1所述的计算系统,所述操作还包括:
确定扩展包未被分配给能够向一个或多个基础软件应用中的基础软件应用注册的功能代码单元;
生成功能代码单元;以及
将扩展包分配给所述功能代码单元。
9.如权利要求1所述的计算系统,其中,当所述扩展库的授权用户中的给定授权用户并不是所述一个或多个租户容器的给定租户容器中的给定授权用户时,禁止所述共享容器的扩展库的授权用户访问所述一个或多个租户容器的数据库层的数据。
10.如权利要求1所述的计算系统,其中所述一个或多个租户容器中的租户容器的应用层包括所述共享容器的扩展库中的扩展包的位置的标识符,其中允许所述租户容器的用户使用所述标识符读取扩展包的一个或多个对象。
11.如权利要求1所述的计算系统,其中,所述标识符被存储在被授权访问所述扩展包的租户容器中,并且不被存储在未被授权访问所述扩展包的租户容器中。
12.如权利要求1所述的计算系统,所述操作还包括:
确定租户是否被授权访问所述扩展包的计算机可执行指令,其中如果被授权,则允许用户读取扩展包的一个或多个对象,否则禁止。
13.一种实现扩展包分类服务的计算系统,用于对扩展包中的对象进行分类,以便部署到共享容器或一个或多个租户容器,所述计算系统包括:
一个或多个存储器;
一个或多个处理单元,其被耦合到所述一个或多个存储器;以及
存储指令的一个或多个非暂时性计算机可读存储介质,当所述指令被加载到所述一个或多个存储器中时,使得所述一个或多个处理单元执行以下操作:
检索基础应用的扩展包,所述扩展包包括多个对象,其中基础应用是用于与数据库管理系统接口的数据库应用,其中所述对象用作数据库应用的扩展,其中所述对象中的每一个包括:
响应于基础应用或扩展包内的用户动作而在需要时所生成的生成的对象,或者
在最初安装基础应用或扩展包时实例化的对象的编译时对象;
从扩展包读取多个对象中的第一对象;
对于第一对象,确定第一对象是非生成的对象;
基于确定第一对象是非生成的对象,将第一对象部署到多租户环境中的共享容器,其中多租户数据库环境具有数据库容器,包括共享容器、第一租户容器和第二租户容器;
从扩展包读取多个对象中的第二对象;
对于多个对象中的第二对象,确定第二对象是生成的对象;
对于第二对象,确定第二对象不是可由终端用户修改的;以及
对于第二对象,基于确定对象不是可由终端用户修改的,将第二对象部署到共享容器。
14.如权利要求13所述的计算系统,其中,所述指令还使得所述一个或多个处理单元执行以下操作:
从扩展包读取多个对象中的第三对象;
对于多个对象中的第三对象,确定第三对象是生成的对象;
对于多个对象中的第三对象,确定第三对象是可由终端用户修改的;以及
将第三对象部署到租户容器。
15.如权利要求14所述的计算系统,其中,所述指令还使得所述一个或多个处理单元执行以下操作:
向用户显示对第三对象进行分类以便部署到共享容器或租户容器的请求;以及
接收用户输入以将第三对象部署到租户容器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/956,512 US10824648B2 (en) | 2018-04-18 | 2018-04-18 | Classification and distribution of extension objects in multitenant environments |
US15/956,512 | 2018-04-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110389829A CN110389829A (zh) | 2019-10-29 |
CN110389829B true CN110389829B (zh) | 2023-12-19 |
Family
ID=66248510
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910202175.3A Active CN110389829B (zh) | 2018-04-18 | 2019-03-18 | 多租户环境中扩展对象的分类与分发 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10824648B2 (zh) |
EP (1) | EP3557408B1 (zh) |
CN (1) | CN110389829B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11507786B2 (en) | 2019-11-04 | 2022-11-22 | FinancialForce.com, Inc. | Dynamic generation of client-specific feature maps |
US11119752B2 (en) * | 2019-12-03 | 2021-09-14 | FinancialForce.com, Inc. | Scalably providing multiple application updates to multiple subscribers |
US20220334829A1 (en) * | 2021-04-15 | 2022-10-20 | Sap Se | Custom abap cloud enabler |
US11409505B1 (en) * | 2021-04-16 | 2022-08-09 | 27 Software U.S. Inc. | Automated authoring of software solutions from a data model with related patterns |
US11693652B2 (en) | 2021-04-16 | 2023-07-04 | 27 Software U.S. Inc. | Automated authoring of software solutions from a data model |
US11650860B2 (en) * | 2021-08-02 | 2023-05-16 | Dell Products L.P. | Managing services across containers |
US20230068864A1 (en) * | 2021-09-01 | 2023-03-02 | Sap Se | Shared data for network tenants |
CN113821215A (zh) * | 2021-09-22 | 2021-12-21 | 北京神州泰岳软件股份有限公司 | 代码部署方法、装置和多租户分布式系统 |
US11841731B2 (en) * | 2021-09-24 | 2023-12-12 | Sap Se | Cloud plugin for legacy on-premise application |
US11922163B2 (en) | 2021-09-24 | 2024-03-05 | Sap Se | Cloud version management for legacy on-premise application |
US12026496B2 (en) | 2021-09-24 | 2024-07-02 | Sap Se | Cloud upgrade for legacy on-premise application |
US11805181B2 (en) | 2021-10-13 | 2023-10-31 | Sap Se | Migration of software extensions |
US11941386B2 (en) * | 2021-10-19 | 2024-03-26 | Sap Se | Flexible provision of multi-application content |
US12099887B2 (en) * | 2022-05-31 | 2024-09-24 | Suvoda LLC | Extensible software-as-a-service computing platform |
CN115794927B (zh) * | 2023-01-29 | 2023-05-09 | 北京仁科互动网络技术有限公司 | 业务功能扩展方法和系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101258483A (zh) * | 2005-09-09 | 2008-09-03 | 易享信息技术(上海)有限公司 | 用于在多租户数据库环境中导出、发布、浏览和安装随需应用的系统及其方法 |
CN102200977A (zh) * | 2010-03-23 | 2011-09-28 | 国际商业机器公司 | 多租户环境下扩展数据库表的方法和系统 |
US8140576B1 (en) * | 2007-07-19 | 2012-03-20 | Salesforce.Com, Inc. | On-demand database service system, method and computer program product for conditionally allowing an application of an entity access to data of another entity |
CN102651775A (zh) * | 2012-03-05 | 2012-08-29 | 国家超级计算深圳中心(深圳云计算中心) | 基于云计算的多租户共享对象管理的方法、设备及系统 |
CN104079613A (zh) * | 2013-03-29 | 2014-10-01 | 国际商业机器公司 | 用于多租户间共享应用程序对象的方法和系统 |
CN104160381A (zh) * | 2012-03-08 | 2014-11-19 | 国际商业机器公司 | 多租户环境中租户特定数据集的管理 |
CN105323282A (zh) * | 2014-07-28 | 2016-02-10 | 神州数码信息系统有限公司 | 一种面向多租户的企业应用部署与管理系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8924269B2 (en) * | 2006-05-13 | 2014-12-30 | Sap Ag | Consistent set of interfaces derived from a business object model |
US10191733B2 (en) * | 2013-06-25 | 2019-01-29 | Sap Se | Software change process orchestration in a runtime environment |
US10628388B2 (en) * | 2015-04-01 | 2020-04-21 | International Business Machines Corporation | Supporting multi-tenant applications on a shared database using pre-defined attributes |
US10289617B2 (en) * | 2015-12-17 | 2019-05-14 | Oracle International Corporation | Accessing on-premise and off-premise datastores that are organized using different application schemas |
US10768926B2 (en) * | 2017-01-20 | 2020-09-08 | Salesforce.Com, Inc. | Maintaining manageability state information distinct from managed metadata |
US20190129712A1 (en) * | 2017-10-27 | 2019-05-02 | Intuit Inc. | Methods, systems, and computer program products for an integrated platform for continuous deployment of software application delivery models |
-
2018
- 2018-04-18 US US15/956,512 patent/US10824648B2/en active Active
-
2019
- 2019-03-18 CN CN201910202175.3A patent/CN110389829B/zh active Active
- 2019-04-01 EP EP19166485.3A patent/EP3557408B1/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101258483A (zh) * | 2005-09-09 | 2008-09-03 | 易享信息技术(上海)有限公司 | 用于在多租户数据库环境中导出、发布、浏览和安装随需应用的系统及其方法 |
US8140576B1 (en) * | 2007-07-19 | 2012-03-20 | Salesforce.Com, Inc. | On-demand database service system, method and computer program product for conditionally allowing an application of an entity access to data of another entity |
CN102200977A (zh) * | 2010-03-23 | 2011-09-28 | 国际商业机器公司 | 多租户环境下扩展数据库表的方法和系统 |
CN102651775A (zh) * | 2012-03-05 | 2012-08-29 | 国家超级计算深圳中心(深圳云计算中心) | 基于云计算的多租户共享对象管理的方法、设备及系统 |
CN104160381A (zh) * | 2012-03-08 | 2014-11-19 | 国际商业机器公司 | 多租户环境中租户特定数据集的管理 |
CN104079613A (zh) * | 2013-03-29 | 2014-10-01 | 国际商业机器公司 | 用于多租户间共享应用程序对象的方法和系统 |
CN105323282A (zh) * | 2014-07-28 | 2016-02-10 | 神州数码信息系统有限公司 | 一种面向多租户的企业应用部署与管理系统 |
Non-Patent Citations (2)
Title |
---|
Oracle Database 12c 多租户环境研究与实现;赵茉秋 等;电脑编程技巧与维护;全文 * |
Platform-as-a-Service Architecture for Performance Isolated Multi-Tenant Applications;Rouven Krebs 等;2014 IEEE 7th International Conference on Cloud Computing;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110389829A (zh) | 2019-10-29 |
US20190325058A1 (en) | 2019-10-24 |
US10824648B2 (en) | 2020-11-03 |
EP3557408B1 (en) | 2022-03-23 |
EP3557408A1 (en) | 2019-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110389829B (zh) | 多租户环境中扩展对象的分类与分发 | |
US9189507B2 (en) | System and method for supporting agile development in an enterprise crawl and search framework environment | |
Robinson et al. | Professional C# (2004 Ed.)(Wrox) | |
US7607126B2 (en) | System and method for external override of annotations | |
CN110032599B (zh) | 数据结构的读取及更新方法、装置、电子设备 | |
US8584082B2 (en) | System for dynamic discovery, configuration, and development of process-bound widgets | |
US7627865B2 (en) | Method and apparatus for accessing instrumentation data from within a managed code environment | |
CN105723341B (zh) | 用于布局引擎和脚本引擎的存储器模型的实现方法及系统 | |
KR101795844B1 (ko) | 런타임 시스템 | |
US20050091346A1 (en) | Settings management infrastructure | |
US20150324174A1 (en) | Dynamically building locale objects or subsections of locale objects based on historical data | |
US20130232475A1 (en) | Graph oriented programming and execution | |
Nagel et al. | Professional C# 4.0 and. NET 4 | |
EP3567488A1 (en) | Materializable database objects in multitenant environments | |
WO2011118003A1 (ja) | ウェブアプリケーション構築システム、ウェブアプリケーション構築方法、ウェブアプリケーション構築プログラムおよびウェブアプリケーション構築プログラムを記録した記録媒体 | |
EP4290393A1 (en) | Consolidation spaces providing access to multiple instances of application content | |
KR20060047998A (ko) | 문서에 문맥 정보를 삽입하는 방법 및 시스템 | |
US9141353B2 (en) | Dynamically building locale objects at run-time | |
US8433728B2 (en) | System and method for creating and managing business objects | |
US11080102B2 (en) | System and method for developing modularized application | |
US8448069B2 (en) | Object set property viewer | |
EP4170484A1 (en) | Flexible provision of multi-application content | |
CN117234466B (zh) | 企业管理软件开发方法、系统、设备及存储介质 | |
Srinivasan et al. | Mobile Application Development-A practitioners Approach | |
Del Sole et al. | Platform-Specific Code in Xamarin. Forms |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |