您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 基于SAAS模式的共享模型的数据扩展技术研究
主动、专业、热忱基于SAAS模式的共享模型数据扩展技术研究0引言随着Internet技术的迅猛发展,将软件作为一种新的服务形式提供给客户的需求量逐年增加,而SAAS(SoftwareasService,软件即服务)作为一种新型软件服务形式的出现正是顺应了这个需求。它是一种颠覆传统的软件服务形式,将使软件供应商与客户之间的关系发生彻底转变,从简单的售卖关系转变为服务关系。SAAS服务面向互联网上的所有租户,每个租户根据自身的实际情况,所要求的数据结构各不相同,SAAS软件开发商们在搭建基于共享模型的SAAS架构时就不得不考虑各租户之间数据结构的差异性问题。针对各租户所要求的数据结构的不同,在进行系统数据库设计时就要对各租户不同的数据结构实施相应的数据扩展策略。1SAAS数据模型在设计基于SAAS模式的系统数据模型时,出于降低开发成本和接受服务的客户量等考虑,在数据的隔离、共享之间取得一定的平衡是一个必须考虑的重要因素。就一般而言,SAAS系统的数据模型有如下三种形式:(1)独立数据库将每个客户的数据单独存放在一个独立数据库中,使各客户间的数据完全隔离,最大限度地保证了客户数据的安全。(2)共享数据库、单独模式所有客户共享数据库,但各自有一套独有的数据表来存放各个客户的数据。这在各客户数据的隔离和共享之间取得了一定的平衡。(3)共享数据库、共享模式主动、专业、热忱所有客户共享一个数据库和同一套数据表。该模式下的一个数据表里可以包含多个客户的数据,由客户ID来区分数据归属于哪个客户。该模型具有投入成本低等特点,而且每台数据库服务器可以支持最大的客户量;但是由于所有客户的数据库存放在同一个数据表中,因此可能需要花费更多额外的成本来保证客户之间的数据安全。2共享模型的多租户数据扩展方案在这种模式下,所有的客户共享数据库、共享表结构,所有客户的数据存放在同一个数据表中,通过客户ID来区分不同客户的数据。该模式的数据库服务器硬件和数据备份成本最低,它允许每个数据库服务器所支持的客户量达到最多。但是由于所有客户共同使用一个表,在可扩展性、可配置性上产生了瓶颈。为了解决这个问题,通常有以下三种方法。2.1定制列即使用固定扩展集,指在表中除了各租户共有的一些字段外,还包括各租户各自独有的一些字段。如:可设计Table(TenantID,FixedColl,ExtendColu1,ExtendColu2...ExtendColun),其中TenantID,FixedColl是固定字段;ExtendColu1,ExtendColu2...ExtendColun是扩展字段。这种方法不需要处理复杂的数据扩展跟踪,单随着租户的增加,每个租户要求添加的列就很多,但特定租户扩展的数据列对于其他租户是没有任何意义的,严重地破坏了表的结构,并且提供的扩展有限,有时扩展字段中的字段可能为空,给表空间带来了巨大浪费。2.2预分配字段该方法在表格中提供一定预设数量的预设字段,当客户需要扩展数据时,从表中选取适量的预设字段来扩展数据,但每个客户选取的预设字段的涵义可能不同。如表1中F1、F2、F3就是预分配的字段。在表1中,TenantID字段将每条记录与租户相关联。除了一组标准字段外,还提供一些预设字段,预设字段的使用由租户决定,预设字段的数据类型可以不同,一般采用字符串数据类型,并使用元数据来跟踪其真实数据类型,如表2所示。表1预分配字段主动、专业、热忱表2元数据跟踪表该方案虽然满足客户数据的可扩展、可配置型,但在给定的数据表中,预设字段的数量具有不确定性,有的客户需求多,有的客户需求少。如果预设字段的数量设得过大,就会浪费空间;设得过小,又不得满足所有客户的需求。2.3名称值对名称值对讲所有用户异构的数据(扩展的数据)放在一个扩展表中,并在主数据表中有一个字段与扩展表相关联,并且用元数据表中的元数据来跟踪相应扩展字段的标记和数据类型。该方法使客户自己能够对数据模型进行延伸。元数据表存储各个客户定制字段的信息,包括字段名称和数据类型。数据表、扩展表和元数据表间接关系如图1所示。主动、专业、热忱图1数据表、扩展表、元数据表间关系该方法能最大限度地满足所有客户的无限扩展需求,客户能够自行决定数据的可扩展、可配置性,又保持了在该数据模型下的成本优势。虽然这种结构可以方便地扩展无数个字段,但增加诸如索引、查询以及更新记录等数据功能的复杂程度。3基于XML的共享模型的多租户数据扩展方案在共享模型的SAAS系统中,所有客户共享表结构,但租户间的数据结构是不同的,将异构的数据存入到固定的表,需要对异构的部分数据进行处理。而XML数据中数据结构是不尽相同的、是异构的,但可以通过XML技术灵活地管理XML数据中的节点。因此,可利用XML数据的特性并采用相应的技术来处理各租户间异构的数据。该方案是指在表中采用一种基于XML的数据模型字段来处理各客户间异构的数据。现在主流大型关系数据库系统都支持对XML数据的存储和管理。Oracle从9.2开始就支持一种主动、专业、热忱新的数据类型(XMLType),用于存储和管理XML数据,并提供了很多的函数,用来直接读取XML文档和管理节点。下面以Oracle数据库系统为例。表结构如:TableName(TenantID,Colu1,Colu2,Colu3,XMLDataField),其中TenantID,Colu1,Colu2字段是所有客户共用的字段;XMLDataField字段存储各客户独有的数据,其格式遵循XML的格式要求。设计XMLDmaField字段格式为:在上面XMLData字段格式中,每个节点代表一个扩展列,该扩展列可以有多种属性,如:colName、dataType等,以及该扩展列的值。通过这种方法可以实现灵活的数据查询、更新等操作,满足客户数据的无限扩展需求。1)利用关系数据系统(ORACLE)支持对XML数据的存储和管理,实现对XML类型数据的增加、删除、查找、修改功能。建立一个含XMLType类型字段(XMLData)的数据表User,下面详细介绍对该字段及字段里面的节点数据进行增加、删除、查找、修改操作。(1)向XMLData字段插入数据主动、专业、热忱注:用createXML函数往XMLData字段里插入XMLData类型数据。(2)向XMLData字段里面的数据节点里加入节点。注:XMLType提供了insertChildXML函数在XML数据节点最后追加一个节点,还提供了insertChildXMLBefore,appendChildXML两个函数分别表示在某个节点前追加节点以及在节点末尾追加多个节点。(3)查询XMLData字段里面的内容。注:Extract函数返回一个XML文档的一个节点树,或者某一节点下所有符合条件的节点。(4)更新XMLData字段里面的数据。注:使用updateXML函数来更新XMLData字段里面某个节点的数据;exiistsNode()函数来判断是否存在扩展列名为age的列,该函数的返回值只有1(存在)和0(不存在)。(5)删除XMLData字段里面的数据节点。注:使用deleteXML函数来删除XMLData字段里面某个节点。主动、专业、热忱2)性能分析。在基于XML的共享模型的多租户数据扩展方案中,利用XML来处理多租户各用户之间异构的数据,对整个SAAS应用的体系架构和性能将产生很大的影响。(1)在基于共享数据模型的SAAS模式下,其必须具备处理多租户异构数据的能力,满足多租户数据无限扩展的要求。在此模式下,用户量非常高,业务数据为海量级,并发压力也非常高。因此在如此海量数据和高并发压力的情况下,性能将会是做数据检索、统计计算的瓶颈。在上面提到的各种共享模型扩展方法中,定制列、预分配字段不满足多租户无限扩展的需求,而名称值对虽然能满足多租户无限扩展的要求,但是在进行数据检索时,至少进行三表(数据表、扩展表、元数据表)的连接操作,在海量级的数据检索时,性能的低下很难满足用户的需求。而基于XML共享模型的多租户数据扩展方案,在数据检索时不必进行连接多表操作,其数据检索跟普通的WEB应用的数据检索差不多,只是必须对检索得到的数据进行相应的处理后呈现给用户;并且该方案可以满足多租户无限扩展的要求,以最大限度地利用表空间。基于XML的共享模型的多租户数据扩展方案与定制列、预分配字段、名称值对从可扩展性、性能、灵活性等方面进行对比分析,如表3所示。表3各方案比较表(2)在软件设计模式中,MVC模式(Model-View-Controller)作为经典的设计模式,将模型、视图、控制器相互独立分开,模型层主要负责业务逻辑的处理和完成与数据库的交互;视图层主要负责与用户的交互;控制器的作用是从客户端接受请求,并选择执行相应的业务逻辑,把响应结果送回到客户端,它与模型层和视图层整合在一起完成用户的请求。主动、专业、热忱对于普通的WEB应用,MVC模式完全可以作为搭建其系统的设计模式,不必考虑软件使用者之间的冲突,只需关心自身的功能逻辑。而SAAS系统,是由不同用户共享一个软件系统,就必须需要考虑软件不同使用者之间的冲突,系统就必须需要完成对不同用户异构数据的处理。基于XML的共享模型的多租户数据扩展方案,只需在MVC模式中加入一个对XML数据的处理层,完成对XML数据的拆、封处理。其作用是在模型层完成对业务逻辑的处理后,将相应的异构数据转换成XML数据以便完成与数据库的交互;在模型层完成与数据库的交互后,将数据库中XML数据转换成相应的业务数据以便进行相应的业务逻辑处理。引入XML数据处理层后的四层模型如图2所示。点击图片查看大图图2SAAS服务模式下的四层模型(3)现在大型关系数据库系统基本都具有XML文档的导入、导出功能。用基于XML共享模型的多租户数据扩展方案,可以将异构的数据(XML数据)导出到本地磁盘,也可以将本地磁盘的XML文档导入到相应数据库表的XML数据列,增强了系统数据维护人员对异构数据的维护。4结束语从SAAS模式的数据模型入手,从多个方面分析了现行多租户数据扩展技术的优缺点,在此基础上提出一种基于XML的多租户数据扩展方案,并探讨了其对整个SAAS应用体系架构和性能所产生的影响,从各方面与当前常用的多租户数据扩展方案进行对比分析,可得在SAAS系统中应用基于XML的共享数据模型的多租户数据扩展方案是性能优良的。
本文标题:基于SAAS模式的共享模型的数据扩展技术研究
链接地址:https://www.777doc.com/doc-2572004 .html