多租户环境下扩展数据库表的方法和系统技术方案

技术编号:6864432 阅读:249 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及数据库技术,尤其涉及在多租户环境下对数据库表进行扩展的技术。本发明专利技术提供了一种用于扩展数据库表的方法,包括:接收租户关于扩展数据库表的请求;以及根据所接收到的请求,生成对应于所述租户的描述文件,所述描述文件将为数据库表定义的扩展字段描述为至少一个扩展列。

【技术实现步骤摘要】

本专利技术涉及数据库技术,尤其涉及在多租户环境下对数据库表进行扩展的技术。
技术介绍
由于&iaS(Software as a Service软件作为服务、软件即服务)的出现,软件行业正在经历一场深刻的变革。MaS在许多国家已经流行并进入了普及阶段。MaS的安全技术日新月异,越来越多的企业开始认可MaS安全性和可靠性。基于互联网的特点,SaaS 软件有许多区别于前一代软件的独特性,从服务器端软件和数据库、数据传输、到客户端浏览器都出现了许多新技术。开发MaS软件系统时,均建立在多重租赁(Multi-Tenant),又称“多租户”的基础上,也就是一套软件和数据库平台,经过软件和数据库的隔离及保密等技术,多个企业(或者企业内部多个租户)同时使用。虽然非多重租赁的MaS产品不一定是“假MaS”产品, 然而多重租赁大大提高了运营效率、稳定性,降低运营商的维护和升级成本,变相地说最终消费者得到了价格上的实惠。在MaS系统中,相对于应用程序计算逻辑/层面而言,如何处理多租户 (Multi-Tenant)对数据库的访问更具有挑战性。在与“多租户对数据库的访问”相关的问题中,如何满足不同的租户对于扩展数据库表的不同需求是一个基础性的问题。举例而言, 在某&iaS员工信息系统中,存在一个基础信息统计表I,在表I中,租户A需要对其内部每个员工的员工代码进行记录,用于标识员工,而租户B不需要记录其每个员工的员工代码, 而是通过记录员工的家庭住址来标识员工。这就导致该员工信息系统在设计数据库表时会产生难题,因为在设计该系统时无法充分预料到未来的租户可能会有哪些对数据库表的需求。目前存在一些在多租户环境下扩展数据库表的技术方案。根据一种现有技术中的解决方案,可以在设计多租户^aS应用系统时为每个数据库表定义好所有的允许租户根据各自不同的需求去扩展的数据库表列。根据上面的例子,可以在设计该员工信息系统时就在表I中定义好一个可扩展的空表列。“员工代码”列和“员工家庭住址”列。这样,租户 A就可以选择该空表列作为“员工代码”列,而租户B就可以选择该空表列作为“员工家庭住址”列,从而根据各自的需求将该预先定义好的可扩展的空表列定义为其所需的表列,并完成相应的数据输入、查询等数据库操作。该解决方案的显著缺点是如果在设计系统时开发人员只提供了较少的可扩展的空表列,那么大量租户的对数据库表进行扩展的需求可能将无法得到满足。而如果在设计系统时开发人员提供了大量的可扩展的空表列,那么又会使得数据库表占用并且浪费大量空间,因为有许多可扩展表列可能仅仅是极个别租户所需的。在有些情况下,上述两个缺点可能同时发生既存在一些租户的需求无法被满足,又存在大量的可扩展表列的使用率极低导致大量空间被浪费。该解决方案的再一缺点是由于事先定义的可扩展的空表列不包含数据类型等相关信息(如数字型、日期型、字符串型), 这些信息必须由租户自行定义,因此必须通过联合操作(JointOperation)才能对数据正确进行解释,这就会耗费大量的运算资源从而影响系统性能以及用户体验。并且这样的解决方案需要多租户应用系统的开发者对于该产生的租户需求非常了解,会加大系统开发者的负担。根据另一种现有技术中的解决方案,通过创建私有表来为每个租户存储其私有数据(需要扩展的数据表列)。该解决方案的显著缺点是其一,需要在多租户系统中创建大量的私有表以满足大量未知租户的需求,并且所能创建的私有表的数量受到数据库管理系统DBMS的限制;其二,租户对其创建的私有数据(扩展表列中的数据)进行操作时,必须通过私有表和公有表之间的联合操作(Join Operation)才能进行,会耗费大量的运算资源从而影响系统性能以及用户体验。
技术实现思路
考虑到上述存在的问题,本专利技术的目的之一在于提供一种对应用的开发者透明的扩展数据库表(定制化)的方法和系统。本专利技术的又一目的在于提供一种对租户而言具有统一的数据模型的扩展数据库表(定制化)的方法和系统。本专利技术的再一目的在于提供一种无需占用大量数据库空间并且在执行数据库处理操作时无需进行联合操作(Joint Operation)的扩展数据库表(定制化)的方法和系统。根据本专利技术的一个方面,提供了一种用于扩展数据库表的方法,包括接收租户关于扩展数据库表的请求;以及根据所接收到的请求,生成对应于所述租户的描述文件,所述描述文件将为数据库表定义的扩展字段描述为至少一个扩展列。根据本专利技术的一个实施方式,所述方法还包括接收所述租户对所述数据库表的数据处理请求,所述数据处理请求与所述数据库表的扩展字段相关;根据所述租户的标识信息以及所述数据处理请求要处理的数据库表,查找对应于所述租户的所述描述文件;根据所查找到的所述描述文件的内容,重写所述数据处理请求;以及利用重写后的数据处理请求执行数据处理。根据本专利技术的另一方面,提供了一种用于扩展数据库表的系统,包括扩展请求接收装置,用于接收租户关于扩展数据库表的请求;以及描述文件生成装置,用于根据所接收到的请求,生成对应于所述租户的描述文件,所述描述文件将为数据库表定义的扩展字段描述为至少一个扩展列。通过本专利技术的方法和系统,可以实现使得扩展数据库表的过程无论对于多租户系统的设计开发者而言还是对于租户自身而言都是透明的技术效果。还可以实现向租户提供一种统一的数据模型来扩展数据库表(定制化)的技术效果。还可以实现在扩展数据库表时无需占用并浪费大量的数据库空间的技术效果。附图说明通过对结合附图所示出的实施方式进行详细说明,本专利技术的上述以及其他特征将更加明显,本专利技术附图中相同的标号表示相同或相似的部件。在附图中,图1示出了根据本专利技术一个实施例的用于扩展数据库表的方法的流程图;图2示出了根据本专利技术另一个实施例的用于扩展数据库表的方法的流程图;图3示出了在图1或图2的基础上根据本专利技术一个实施例的用于扩展数据库表的方法的流程图;图4A至4D示出了根据本专利技术又一个实施例的对数据库表进行扩展的实例的表结构变化图,其中图4A示出了多租户系统(平台)中的一个未经扩展的“employee”表,图4B 示出了定义了扩展字段后的“employee”表,也就是定义了扩展字段后的多租户系统的后端数据库中的实际表结构,图4C示出了租户tenantl扩展了其所需的“ID”列的前端(租户端)的数据结构展示,图4D示出了租户tenant2扩展了其所需的“Home Address"列的前端(租户端)的数据结构展示;图5示出了根据本专利技术一个实施例的用于扩展数据库表的系统的结构图;图6示出了根据本专利技术另一个实施例的用于扩展数据库表的系统的结构图。具体实施例方式在下文中,将参考附图通过实施方式对本专利技术提供的用于确定要被物化的节点的方法和系统进行详细地描述。图1示出了根据本专利技术一个实施例的用于扩展数据库表的方法的流程图。首先需要指出的是,在本说明书、权利要求书以及附图的任何地方,“扩展数据库表”并不一定意味着从物理上或者实际上对数据库表进行了真正的扩展,而可能意味着虽然没有真正从物理上或者实际上扩展数据库表,但是对于多租户系统中的租户而言,产生了扩展数据库表的效果或用户体验。在步骤101中,接收租户关于扩展数据库表的请求。根据本专利技术的一个实施方式,租户的扩展数据库表本文档来自技高网
...

【技术保护点】
1.一种用于扩展数据库表的方法,包括:接收租户关于扩展数据库表的请求;以及根据所接收到的请求,生成对应于所述租户以及所述数据库表的描述文件,所述描述文件将为所述数据库表定义的扩展字段描述为至少一个扩展列。

【技术特征摘要】

【专利技术属性】
技术研发人员:刘长浩王宁王启荣王小锋周英华肖振春张春林
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1