探索中国CIO人才现状 | 第四季调研报告
基于SaaS模式的科技信息资源托管系统
2014-03-04  作者:万方数据 

  1概述


  当前,广大科技信息资源分散在基层科技信息工作者手中,如县乡情报员,从而慢慢形成了一个个彼此隔离的信息孤岛,信息资源不能有效共享,同时信息资源服务的权威性及可靠性都难以得到保障,为此,科技主管部门期望能够建立全国范围内的科技信息资源中心,通过资源的汇聚、加工组织,保障资源能够有效共享与服务。全国科技信息服务网是一项以基于互联网整合分散的科技信息资源和提供丰富的科技信息应用为目标的国家科技基础条件平台建设工作。


  作为该项目的有机组成,科技信息资源中心旨在构建一种具有在线托管运营能力的科技信息资源汇聚与整合软件系统。其核心需求和挑战问题如下:


  (1)大规模数据的存储与高效访问的问题,以及动态的数据扩展。科技信息资源中心要求支持约10000个租户,每个租户提交30个数据集,每个数据集包含100万条数据,估算数据量达300TB。(2)科技信息资源托管元数据管理问题。从科技信息资源提供者和使用者角度,科技信息资源中心要求同时兼顾资源的隔离存储与共享访问,这需要有效的元数据管理机制进行保证。本文针对上述问题,探讨在线科技信息资源托管系统的核心机制和系统架构。


  2相关工作


  2.1常见的在线数据托管工具


  当前,互联网涌现了大量的在线数据托管工具,例如zohoDB&Reports,Quickbase,zohoCreator和DabbleDB等,它们为用户提供在线数据库服务。这些在线数据托管工具拥有以下3个共同点:


  (1)支持多种形式的数据接入,如csv、excel文件导入、在线电子表格编辑和使用内置模板等。


  (2)支持数据的在线编辑、浏览和删除等。


  (3)支持用户自定义数据表结构。


  作为比较成熟的在线数据托管工具,它们通用性比较强,但同时也存在很多缺陷,例如对导入文件大小的限制(zohoDB&Repons文件大小限制在10MB以内,DabbleDB文件记录数限制在15000条以内)、元数据管理不成熟、不支持备份还原等。可见,已有的在线数据托管工具无法解决在线科技信息资源托管的需求和问题。


  2.2基于SaaS模式的多用户数据体系结构


  基于SaaS模式如何对多用户的数据进行隔离管理是个不容忽视的问题。3种基于SaaS模式的多用户数据体系结构,即完全隔离、部分共享、完全共享.

  


  (1)完全隔离:在所有用户通常在服务器上共享计算资源和应用代码,但每个用户拥有自己独立的一套数据,这些数据在逻辑上彼此隔离。元数据将每个数据库与相应的用户关联,数据库的安全机制防止用户无意或恶意存取其他用户的数据。


  (2)部分共享:各个用户在同一数据库进程上拥有各自的表,在此种方式下,不同的用户共享内存和连接池,节省了资源开销。


  (3)完全共享:对于户数据采用相同的数据库和相同的表集。给定表格包括以任一顺序存储的多个用户的记录。通过用户ID列将每条记录与相应用户关联。实现该多用户数据模型的方法主要有扩展表、通用表、轴表、块表、Key/value方法等。


  上述3点通过比较可知,完全隔离结构适用于用户数比较少,数据隔离性、备份还原性能、定制性要求比较高的情况;完全共享结构是以较少的服务器为大量用户服务,而且用户愿意为降低成本而牺牲数据隔离;而部分共享结构则是两者的折中。


  所以,从用户数量、数据隔离性、备份还原性能、定制性等方面综合考虑,完全隔离结构更适合于科技信息资源中心。本文在隔离架构的基础上,使用元数据管理机制建立用户数据关联,在保障隔离性的同时兼顾共享访问。


  3在线科技信息资源托管系统


  基于SaaS模式的在线科技信息资源托管系统将数据库应用环境服务化,通过互联网对外提供数据交付服务,支持多租户数据的接入与在线管理。其需要解决的核心问题主要有,如何有效地管理元数据;如何安全地存储多租户的数据;如何保证系统的高效访问和数据扩展性。针对上述问题,本节介绍系统中的核心机制以及系统实现。


  3.1核心机制


  3.1.1多租户数据结构


  针对元数据管理有效性和租户数据的安全性问题,该系统采用元数据驱动,且完全隔离的多租户数据体系结构,保证数据的安全性,使系统集隔离存储与共享访问于一体。通过租户标识tenantID可以获得该租户创建的所有数据库信息dbInfo,而从dbInfo可以进一步获得dbServer的访问地址accessAddress及其端口号portNum等其他信息,从而将租户定位到相应的数据库服务器。另外,从数据模型可以看出,元数据管理器还存储数据表元数据tableInfo和字段元数据fieldInfo。完备了元数据管理机制。


 


  3.1.2分布式数据库代理


  基于SaaS模式的在线科技信息资源托管系统采用分布式数据库代理DBPrxoy,屏蔽底层的租户数据库群,对外提供统一的接口,通过配置动态扩展数据库服务器,解决大规模数据的存储问题。另外,DBProxy在对租户数据进行分片存储的同时,对租户查询请求进行预处理,以保证系统的高效访问。下面介绍DBPmxy的数据分片以及查询请求预处理工作。


  DBProxy采用简单哈希算法的数据扩展机制,将不同的租户数据分散到不同的数据库节点上,具体做法描述为:存储数据的数据库节点=租户ID%总节点数,其中,租户ID是数字表示的每个租户的唯一标识符;总节点数指科技信息资源托管系统中所有数据库的总数。


  当多个不同租户发送查询请求时,DBProxy将所有的查询请求根据租户ID路由到不同的数据库,在执行相应的操作后,将结果返回给相应的租户,从而避免将租户请求发送到无该租户数据的数据库。

 
  3.2.1系统架构


  根据基于SaaS模式的在线科技信息资源托管机制提出一种系统架构。该系统架构采用完全隔离的多租户数据体系结构对各租户数据进行完全隔离管理,同时采用分布式数据库代理策略,屏蔽底层数据库的水平扩展。该架构不仅支持不同租户的个性化定制,而且备份还原性能比较高。基于SaaS模式的在线科技信息资源托管系统架构主要分为3层:应用层,数据库调度层和数据库层。

  


  (1)应用层:负责与租户交互,通过界面的方式实现资源接入、浏览、编辑、删除和检索,资源的备份还原,个性化配置,租户管理和元数据编辑等功能。


  (2)数据库调度层:数据库调度层分为租户和元数据管理器以及分布式数据库代理DBProxy2个部分。分布式数据库代理DBProxy根据租户和元数据管理器中的租户信息连接到相应的租广数据库,并根据元数据信息建立相应结构的数据库表。租户和元数据管理器负责将租户信息和元数据持久化到元数据库中。


  (3)数据库层:分为元数据库和租户数据库群。前者存储租户信息和元数据,而租户数据库群存储租户的资源数据。


  整个架构的流程执行如下:


  (1)应用层负责将租户信息和元数据、资源信息传给数据库调度层的租户和元数据管理器以及分布式数据库代理DBPmxy。


  (2)租户和元数据管理器负责为DBProxy提供租户信息和元数据,并将租户信息和元数据持久化到元数据库。


  (3)DBPmxy根据租户和元数据管理器提供的信息,连接相应的租户数据库,并根据元数据建立相应的数据库表,完成资源信息的存储以及查询等操作。


  3.2.2云环境下的系统部署


  在线科技信息资源托管系统在云环境下的系统部署如图5所示。该系统的基础设施包括一台应用系统服务器和多台数据库服务器。


     应用系统服务器用来部署在线科技信息资源托管系统和元数据库。每台数据库服务器包含多台虚拟机,虚拟机安装一个数据库MySQL,用来存储租户的科技信息资源,这里的数据库服务器可通过配置实现动态扩展。应用系统服务器与数据库服务器通过互联网进行通信,租户通过互联网访问整个在线科技信息资源托管系统。