论文部分内容阅读
在多租户的SaaS应用系统中,所有租户共享该系统上的应用服务程序、应用服务器和数据库服务器等软硬件资源。不同的租户之间的需求也各不相同,租户会根据企业内部自身的业务需求、内部管理结构等提出不同的个性化定制。这就要求SaaS应用应支持租户对不同级别服务的定制需求。租户之间千差万别的需求对SaaS应用系统提出了更高的要求。本文主要研究了面向多租户SaaS应用中的定制模型。在SaaS的定制模型中主要包括定制对象管理、定制规则管理、定制验证和定制执行等几个模块。定制对象管理模块主要负责对所有可定制对象的定义、添加和修改等操作,定制规则管理模块主要负责管理可定制对象之间的约束依赖关系,验证模块主要负责对租户提交的定制请求进行验证,定制执行是将租户的定制请求进行持久化处理。定制模型的各个模块之间相互合作共同处理租户提交的定制请求。根据定制对象层次的不同,将租户对SaaS的定制划分为服务定制、功能定制、数据表定制和字段定制四个层次。在定制层次划分的基础上,本文提出了面向多租户SaaS应用的分层递归定制模型,该定制模型的具体思想如下:SaaS服务提供商在推出具体的应用之前,将系统中的可定制对象按照其所在分层分别划分成相对独立的对象单元,然后根据该应用的业务逻辑为相同层次和相邻层次的对象单元之间定义约束依赖关系,来指引和限制租户的定制请求。然后将所有的可定制对象及其依赖关系分别存储在对象信息表和对象关联表中。当租户向系统发出定制请求时,定制流程首先通过对象关联表查询该定制对象的依赖对象集合,并以此对集合中的依赖对象进行递归定制,对集合中所有的依赖对象定制执行后,最后对租户请求的对象执行定制。该模型很好地简化了租户的定制请求。当租户对每个层次的对象进行定制时,系统会递归地定制其所依赖的对象,不仅极大地减轻了租户的定制难度,而且有效地提高了定制的成功率。在该定制模型下,如果SaaS服务提供商提供的可定制服务无法满足租户的个性化需求时,租户可以将该需求向服务提供商进行反馈。应用系统设计者可以灵活地将租户需求的对象添加到可定制列表中,并为其定义相关的依赖关系。为了支持租户对数据和字段的定制,在数据存储结构中采用元数据和业务数据相结合的方式共同来管理租户的数据。通过存储映射机制将租户的定制信息存储到元数据表中。在支持数据扩展的几种存储方式中,本文通过实验比较了预分配字段、宽表和键值对三种存储方式的性能。本文根据数据的共用程度和访问频率不同,将业务数据分别存储在不同的存储结构中,当租户对其业务数据发出查询请求时,通过查询转换机制将查询请求重写成对数据实际存储结构的访问请求。