乐思软件

提交需求|联系我们|请电400-603-8000

传统软件向SaaS软件转型方案的研究

    2 SaaS软件的关键技术


    2.1 多租户模式下的数据存储


    SaaS软件与传统软件相比,最大不同就是多租户模式,多个租户共享同一个软件实例,租户的数据既有隔离又有共享。根据多租户模式的特点,在数据存储上有3种被选的解决方案。


    方案1:独立数据库。这种数据存储方案将每个租户的数据信息单独存储在独立的数据库中,是实现SaaS数据隔离最便捷的方式,而且对一个租户数据模型的更改不会影响其他租户的数据,安全性好。但是这种方案大大增加了数据库的安装费用,有多少个租户就需要搭建多少个数据库。这种数据存储方案适用于像银行、医院等安全性要求较高的企业,但明显不适合资金缺乏的中小企业的使用。


    方案2:共享数据库。独立架构,每个租户共享同一个数据库,但是对于每个租户都有一个独立的数据库架构与之对应,这意味着各个租户都有一套不同的数据表结构。当创建一个新租户时,系统会相应地创建一套默认的表结构,同时与一个独立的数据库架构建立关联关系。可在一个数据库中存储多个租户的数据,与独立数据库相比,虽然数据库的搭建费用降低了,还有一定的数据隔离,但是存在故障时恢复数据困难和数据统计难度。


    方案3:共享数据库。共享架构,即所有的租户共享一个数据库,共用同一套数据表结构。一个数据表存储了所有租户的数据信息,通过一个TenantID字段来区分各个租户的数据。这种方案是共享程度最高,隔离级别最低的数据存储方式。这种方案又是硬件维护和购买成本最低的,每台数据库服务器支持的租户最多。这种方式非常适用于大规模的中小企业的租户。因此下面将详细研究这种方案下的关键技术。


    2.2 共享数据库共享架构的多租户模式


    (1) 多租户技术


    多租户技术是SaaS服务模式区别于传统模式最本质的区别,达到SaaS模式的成熟度模型的必要条件是解决数据的隔离性,实现多租户模式。在SaaS模式下建立多租户,必须在业务表增加一个TenantID字段用来区别每个不同的租户,保证每个租户数据的安全。如表1所示。

     多租户业务表结构

    表1 多租户业务表结构


    通过TenantID字段来获得对应租户的业务数据。当系统用到租户的业务数据时,需要在每条SQL语句中增加‘TenantID = ?’ 条件进行业务数据操作。


    (2) 数据扩展技术


    为了满足不同租户的不同需求,SaaS软件必须能够保证对数据可扩展。多租户模式满足大规模租户对数据的个性化需要,最常见的解决方案就是实现扩展数据的可配置。实现数据的可配置有以下3种常见方案。


    方案1:定制字段,就是根据租户的需要在各租户共有的数据表上添加相应的定制字段来保存扩展数据。这种方案数据扩展非常简单但是其扩展性非常有限,当租户量达到一定数量,表中添加的字段就会非常多,而且每个租户添加的字段对另外租户是没有任何意义的,严重破坏了表的结构,有些扩展字段可能为空,浪费了表空间。


    方案2:预分配字段,该方法在表格中提供一定数量的预设字段,当租户要扩展数据时,从表中选取适当的预设字段进行扩展,但是不同租户选取同一个预设字段的含义可能也不一样。如表2中TenantID字段区分每个租户,除了一些固定的字段外,还提供了一些预分配字段,Ext1、Ext2、Ext3就是预分配的字段,预分配字段的使用由租户自己预定,一般初始为字符串类型,其真实类型可以采用元数据表来进行跟踪。

    预分配字段方案表结构

 

    表2 预分配字段方案表结构

集成系统网络情报信息数据库

CIO频道人物视窗
CIO频道方案案例库
大数据建设方案案例库
电子政务建设方案案例库
互联集成系统构建方案案例库
商务智能建设方案案例库
系统集成类软件信息研发企业名录