一种初始化多租户数据库的方法和装置制造方法及图纸

技术编号:7898142 阅读:187 留言:0更新日期:2012-10-23 04:20
本发明专利技术提出了一种初始化多租户数据库的方法和装置,该方法包括:针对试验数据库试验执行遗留初始化工具;捕获遗留初始化工具在试验执行过程中发出的数据库语句和数据库语句的试验执行结果;针对多租户数据库执行遗留初始化工具;截获遗留初始化工具在执行过程中发出的数据库语句;根据数据库语句的类型、数据库语句涉及的表的类型以及数据库语句的试验执行结果,模拟执行所截获的数据库语句,以完成对多租户数据库的初始化。

【技术实现步骤摘要】

本专利技术涉及多租户应 用,具体涉及一种用于初始化多租户数据库的方法和装置
技术介绍
越来越多的独立软件开发商(ISV)希望通过SaaS (软件即服务)业务模型提交其服务,并希望使现有的遗留单租户应用具有多租户特征。对于这些遗留应用来说,总是存在一些用于初始化其数据库(包括模式和数据)的自动化工具(包括初始化应用、脚本等)。例如,下面是一个初始化应用的代码片断Create table region(regionld long,regionName,varchar(50));Insert into region values(100001, ‘San Francisco,)...(或许初始化应用将进行计算 )Create table salesorder(sold long, merchandiseld long, price long,...)Create table mersalesreport(mdld long, avgprice long)...(或许初始化应用将进行计算 )insert into mersalesreport select merchandiseld, avg (price)fromsalesorder group by merchandiseld该初始化应用首先创建名称为region的表,并在该表中插入值,然后创建名称为salesorder的表以及名称为mersalesreport的表,并从salesorder表中取出相关数据并经计算后填入mersalesreport表中。用于遗留应用的初始化工具显然无法应用于多租户数据库。在通常的多租户数据库中,存在如下三种类型的表I.应用系统表,其模式是在所有租户间共享的,并存储有由所有租户共享的系统数据;表模式和表数据的创建和修改权限都属于应用管理员;2.租户共享表,其模式对于各租户来说是相同的,并存储有各租户的私有数据,且使用一个特殊的租户ID列来区分不同租户的数据;表模式的创建和修改权限属于应用管理员,而表数据的创建和修改权限属于各租户管理员;3.租户私有表,其模式对于租户来说是私有的,并存储有租户的私有数据;表模式和表数据的创建和修改权限属于各租户管理员。为了使现有的用于遗留应用的初始化工具能够应用于多租户数据库,一种办法是修改现有的初始化工具的代码,包括将多租户数据库中的租户共享表的租户ID列纳入考虑之中,例如将现有的初始化工具中的DML(数据修改语言)Insert into salesreport select avg(price)from salesorder修改为新的DML :Insert into salesreport select avg(price), tid from salesordergroup bytid这种办法的缺点是需要进行大量的代码修改,工作量很大;而且,修改是特定于初始化工具的,也就是说,对于不同的初始化应用需要分别进行不同的修改,从而进一步增加了工作量。
技术实现思路
根据本专利技术的一个方面,提供了一种初始化多租户数据库的方法,包括针对试验数据库试验执行遗留初始化工具;捕获所述遗留初始化工具在试验 执行过程中发出的数据库语句和数据库语句的试验执行结果;针对多租户数据库执行遗留初始化工具;截获遗留初始化工具在执行过程中发出的数据库语句;根据数据库语句的类型、数据库语句涉及的表的类型以及数据库语句的试验执行结果,模拟执行所截获的数据库语句,以完成对多租户数据库的初始化。根据本专利技术的另一个方面,提供了一种初始化多租户数据库的装置,包括执行模块,用于针对试验数据库试验执行遗留初始化工具;捕获模块,用于捕获所述遗留初始化工具在试验执行过程中发出的数据库语句和数据库语句的试验执行结果;所述执行模块还针对多租户数据库执行遗留初始化工具;截获模块,用于截获遗留初始化工具在执行过程中发出的数据库语句;模拟执行模块,用于根据数据库语句的类型、数据库语句涉及的表的类型以及数据库语句的试验执行结果,模拟执行所截获的数据库语句,以完成对多租户数据库中的初始化。本专利技术的技术方案实现了通过遗留初始化工具完成多租户数据库的初始化,而无需修改遗留工具的代码。并且,本专利技术的技术方案并不是针对特定的遗留工具的,而是通用的,可用于任何遗留工具。附图说明所附权利要求中阐述了被认为是本专利技术的特点的创造性特征。但是,通过参照附图阅读下面对说明性实施例的详细说明可更好地理解专利技术本身以及其优选使用模式、目标、特征以及优点,在附图中图I示意性地示出了本专利技术的技术方案的体系结构;图2示出了在应用上线时初始化多租户数据库的应用级部分的执行过程;图3示出了在每个租户上线时初始化多租户数据库的租户级部分的执行过程;图4示出了根据本专利技术的实施例的透明地初始化多租户数据库的方法;以及图5示出了根据本专利技术的实施例的透明地初始化多租户数据库的装置。具体实施例方式下面参照附图来说明本专利技术的实施例。在下面的说明中,阐述了许多具体细节以便更全面地了解本专利技术。但是,对于本
内的技术人员明显的是,本专利技术的实现可不具有这些具体细节中的一些。此外,应当理解的是,本专利技术并不限于所介绍的特定实施例。相反,可以考虑用下面的特征和要素的任意组合来实施本专利技术,而无论它们是否涉及不同的实施例。因此,下面的方面、特征、实施例和优点仅作说明之用而不应被看作是所附权利要求的要素或限定,除非权利要求中明确提出。现参照附图1,其示意性地示出了本专利技术的技术方案的体系结构。如图所示,该技术方案包括两个阶段准备阶段以及基于模拟的运行时阶段。一、准备阶段步骤1.1,捕获 DDL/DML -遗留工具调度器101针对试验数据库104执行遗留初始化工具102。所述试验数据库104是指仅仅为了捕获遗留初始化工具102在执行过程中发出的DDL/DML语句以及相应的执行结果而指定的任何数据库。如前文中所述,所述遗留初始化工具102是指用于初始化遗留应用的数据库的现有自动化工具,包括初始化应用、脚本等等。 -DDL/DML捕获器103捕获遗留初始化工具102在执行过程中发出的所有DDL/DML语句以及相应的执行结果。如本领域的技术人员所知的,DDL语句是指数据描述语言语句,其用于创建、撤销和修改表结构,而DML语句是指数据修改语言语句,其用于在表中插入、修改或删除数据,以及用于查看数据。如本领域的技术人员所知的,可以多种方案实现DDL/DML捕获器103。例如,可通过修改诸如ODBC或JDBC等数据库驱动程序来捕获通过该数据库驱动程序的DDL/DML语句,从而实现DDL/DML捕获器103。-DDL/DML捕获器103将这些DDL/DML语句和执行结果存储在多租户元数据库105中。例如,可以将所捕获的DDL/DML语句以及执行结果存储在如以下表I所例示的表中。表I所捕获的DDL/DML语句及其执行结果ID_DDL/DML语句_执行结果创建时间应用ID120087 create table Region (regionid void 2009-11-11 0562 long, name char(20))121003 create table Salesorder (soid Void 2009-11-本文档来自技高网
...

【技术保护点】
一种初始化多租户数据库的方法,包括:针对试验数据库试验执行遗留初始化工具;捕获所述遗留初始化工具在试验执行过程中发出的数据库语句和数据库语句的试验执行结果;针对多租户数据库执行遗留初始化工具;截获遗留初始化工具在执行过程中发出的数据库语句;根据数据库语句的类型、数据库语句涉及的表的类型以及数据库语句的试验执行结果,模拟执行所截获的数据库语句,以完成对多租户数据库的初始化。

【技术特征摘要】

【专利技术属性】
技术研发人员:王芝虎王启荣肖振春王小锋高波王宁张春林郭常杰
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:

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

1