应用系统的SaaS化的方案讨论
文/阿蜜果
日期/2012-11-26
1、SaaS的概念
SaaS是Software-as-a-service(软件即服务)的简称。SaaS在业内的叫法是软件运营,或称软营。是一种基于互联网提供软件服务的应用模式。一种随着互联网技术的发展和应用软件的成熟,在21世纪开始兴起的完全创新的软件应用模式,是软件科技发展的最新趋势。
企业根据实际需要,向SaaS提供商租赁软件服务。 SaaS 是一种软件布局模型,其应用专为网络交付而设计,便于用户通过互联网托管、部署及接入。 SaaS 应用软件的价格通常为“全包”费用,囊括了通常的应用软件许可证费、软件维护费以及技术支持费,将其统一为每个用户的月度租用费。
2、应用系统的SaaS化
2.1 概述
近来有个应用系统需要实现SaaS化,而且时间进度要求很紧,于是乎,几个同事一起想实现应用系统SaaS化的简便方案,这个方案需要满足以下两个条件:
(1)实现每个租户的业务数据信息的隔离(用户表、业务信息表等);
(2)涉及到原系统的代码改动尽可能的少。
通过网上查询资料以及讨论,我想出使用第二种方式实现,但上司提出了第三种方式,提出来后,我汗颜了,虽然可能涉及到的代码改动差不多,但在对表的管理上方便很多,看来跟他差得还不是一点半点呀!
2.2 SaaS化的方案
2.2.1 每个租户一个独立数据库
优点:不同租户(一般指企业客户)的数据物理分离,安全性很好。
缺点:数据库连接的利用效率不高,性能问题会很大。
系统将借由元数据(Metadata)来记录哪一个数据库属于哪一个特定客户,与此同时也可以部署一定的数据库访问策略来确保即使系统处于异常状况下,客户数据也不会被其它客户意外访问到。但是,这种数据模型的最大问题是对应的部署和维护成本非常高,硬件资源的消耗将明显高于其它两种方案,一台服务器将只能支持有限数量的客户。
2.2.2 租户使用同一数据库,但使用不同的表
方案描述:应用系统的所有租户使用相同的数据库,但每个租户的业务表是不同的,例如以唯一的租户ID添加为表名前缀或后缀。
在应用系统改造时,需要进行如下操作:
(1)在注册租户时,需要将所有与该租户有关的表都建上,表名带上租户前缀或后缀;
(2)在对业务表进行操作的方法中,需要将租户ID传入,iBatis和Hibernate中都可以实现数据库分表(动态表名映射),具体可参考《iBatis和Hibernate数据库分表(动态表名映射)的实现方法》,大家有兴趣的话,可以按照这篇文章所说的,尝试着实现一下。
优点:相对比较容易实现,而且从数据扩展性而言,这种解决方案和独立数据库一样,客户可以相对自由地对其中的数据结构进行新增和修改。
缺点:这种客户独立模式的方式比较适合应用在每个客户拥有比较少的表数量的情况下,比如每个客户只有100张表或更少。这种方式毫无疑问可以在每台服务器上支持比独立数据库方式更多的客户数量,减低了服务供应商的运营成本。
2.2.3 租户使用同一数据库,有自己的数据库用户,各租户表名相同,使用超级用户访问
方案描述:应用系统的所有租户使用相同的数据库,但是使用数据库超级管理员登录,以前缀访问不同的数据库用户的表,例如a.tbl_user_info、b.tbl_user_info的表。
在应用系统改造时,需要进行如下操作:
(1)在注册租户时,以数据库超级管理员的身份创建数据库用户(例如a、b等,并建立租户与数据库用户之间的对应关系),并为该数据库用户建立所有与该租户有关的表(例如tbl_user_info和tbl_file_info等);
(2)在对业务表进行操作的方法中,需要将租户ID传入,iBatis和Hibernate中都可以实现数据库分表(动态表名映射),具体可参考《iBatis和Hibernate数据库分表(动态表名映射)的实现方法》,这跟第2种方案是很相似的。
这种方案的优缺点与第二种方案类似,但是却多了一个很明显的优点:表管理比较方便,使用租户的数据库用户登录时,只会看到与该租户有关的表,所以该方案明显好于第2种方式。
路漫漫其修远兮,吾将上下而求索。与想到第3种方案的同事差得还不是一点半点呢!
3、参考文档
(1)《SaaS模式_百度百科》:http://baike.baidu.com/view/2796435.htm
(2)《SaaS模式下数据扩展性的设计与实现》:
http://cio.ccw.com.cn/hydt/htm2011/20110810_942292.shtml
(3)《iBatis和Hibernate数据库分表(动态表名映射)的实现方法》:
http://lamblog.blog.163.com/blog/static/200724238201271383032932/
posted on 2012-11-26 16:03
阿蜜果 阅读(3743)
评论(0) 编辑 收藏 所属分类:
解决方案