李 莉, 张贺亮, 赵秋阳, 陈未如, 李 舸
(1.沈阳化工大学计算机科学与技术学院,辽宁沈阳110142; 2.东软集团股份有限公司,辽宁沈阳110179)
分布式数据库系统兴起于20世纪70年代中期.由于很多新兴应用涉及地理上分布的团体或组织的局部业务管理和系统全局管理,采用集中式数据库管理系统已无法实现应用需求.人们期望符合现实需求的、能处理分散地域的、具备数据库系统特点的新的数据库系统出现.由此,分布式数据库管理系统被提出,并得到迅猛发展.
网络技术的高速发展,使信息资源实现高度共享,并从根本上改变人们进行信息交流的方式,对教学的影响也必将是深刻的.一方面,它给教育管理模式以及教学模式等带来巨大影响.另一方面,它可帮助解决传统课堂教学中存在的问题,对教学过程提供有力支持[1].基于这些,充分利用校园网络,结合教学特点,开发研制网络教学平台可充分发挥其指导学生学习、促进师生交流作用.
本文采用分布式数据库技术设计开发通用的分布式网络教学平台.该系统可充分支持师生网上的教学活动,如进行教学信息发布及浏览、辅导答疑、师生交流等操作.另外,可方便实现教学资源的共享.
教学平台数据库系统主要设计方案:
(1)采用Amoeba for Aladdin中间件实现异构数据库系统间的集成.
(2)各分散数据库可对系统发布共享数据,应用程序通过一套资源注册机制查找合适的数据源.这样可将资源定位模块从传统分布式程序设计中脱离,便于维护和管理.
(3)建立一个虚拟数据库,对各个异构数据库的开放数据进行集成,转化成统一格式,为程序开发人员提供一个单一逻辑数据视图.
分布式数据库系统是地理上分散而逻辑上集中的数据库系统.即通过计算机网络将地理上分散的各局域结点连接起来共同组成一个逻辑上统一的大数据库系统[2].因此可以说分布式数据库系统是计算机网络技术和数据库技术相结合的产物.
分布式数据库系统中分布数据库由一个逻辑的虚拟数据库(称全局数据库)和分散在各个场地的局部数据库(物理上存储的数据库)两级数据库组成.结点的局部数据库在逻辑上集成为一个整体,并为分布式数据库系统的所有用户使用,这种应用称全局应用.应用程序与系统实际数据组织相分离,因此数据具有独立性或透明性.
分布式数据库系统允许用户只使用本地的局部数据库,该应用称局部应用.这种局部用户独立于全局用户的特性称局部数据库的自治性.
分布式数据库管理系统是分布式数据库系统的一组软件,负责分布式数据库的数据管理和操作[2].由于分布式数据库管理系统基于分布环境下实现,必须保证逻辑数据的一致性、完整性等,因此,其复杂度远高于集中式数据库管理系统.
分布式数据库管理系统通常由局部场地上的数据库管理系统,全局数据库管理系统,全局字典和通信管理系统4部分组成[3].分布式数据库管理系统按控制方式可分为全局控制集中的DDBMS与全局控制分散的DDBMS.按局部DDBMS类型可分为同构型DDBMS与异构型DDBMS[4].本网络教学平台使用的分布式数据库管理系统属于全局控制分散的、局部同构型DDBMS.
Amoeba for Aladdin项目,专注分布式数据库proxy开发,位于Client与DB Server(s)之间,致力于解决数据切分、读写分离等功能.对客户端透明,具有负载均衡、高可用性、sql过滤、读写分离、可路由相关的query到目标数据库、可并发请求多台数据库合并结果等特征.
1.3.1 项目的主要功能
(1)降低数据切分带来的复杂多数据库结构.
(2)提供切分规则并降低数据切分规则给应用带来的影响.
(3)降低db与客户端的连接数.
(4)读写分离.
(5)提供异构数据库(mysql,oracle等)整合能力.
1.3.2 项目特点
(1)Built on Java NIO,采用java NIO框架无阻塞模式,不像传统的Socket编程在大量并发的情况非常浪费系统资源、且可扩展性较差.
(2)Reusable Server Connection,Amoeba for Aladdin提供数据库连接的可重用度非常高,在Amoeba for Aladdin系统内所有database connection同时共享给所有连接到Amoeba for Aladdin的客户端.
(3)提供读写分离、数据切分,传统的读写分离技术需要通过客户端或者相关的database driver技术才能解决,而且客户端的配置也比较复杂.单台 database性能总是有限制,基于Amoeba for Aladdin可寻找一种可线性扩展的多数据库支持.Amoeba for Aladdin为DBA提供一种非常友好的类似SQL语法的数据切分规则,同时客户端不用担心过多的Database Server会给应用带来更多配置.
(4)支持高可用性、负责均衡,Amoeba for Aladdin提供Database连接的异常检测与连接恢复功能.用户可节省使用其他昂贵的负载均衡硬件设备,Amoeba for Aladdin提供多台 Database Server负载均衡策略.
教学资源平台需要将分散的教学资源进行集成管理,因此要求各局部数据库具有统一的数据格式.局部数据库系统原则上也可根据实际需求和数据量,采用任何类型的关系型数据库管理系统.本文各局部数据库系统统一使用mysql (mysql4.1以上).局部数据库以水平分片和垂直分片方式存储格式统一的分散数据.
以课程资源表(见表1)水平分片为例说明系统的分片设计原则.
表1 课程资源表Table 1 Table of course resource
由于各分片的表主键不能重复,所以通过res_id进行水平分片,每个具体的局部数据库将针对一个有限的res_id范围进行局部应用,如资源的上传(见图1).
图1 局部资源上传Fig.1 Local resource upload
对于全局应用系统将用Amoeba for Aladdin作为数据库访问的中间件来实现教学资源的集成.资源提供者是各个教师所开放的教学资源,资源保持原始的分布式存储状态.资源提供者将自己的资源注册到Amoeba for Aladdin,同时上传资源副本到全局数据库.在中间件上包含所有资源提供者注册的资源信息.资源请求者包括学生用户,也包括作为资源提供者的教师.当资源请求者提出访问请求时,系统向中间件系统提交查询并将其找到的资源信息返回给资源请求者,资源请求者根据得到的信息向资源提供者提出数据访问请求,如果资源存储在本地则可直接进行本地的资源访问,如果资源存放在异地数据库上则通过中间件系统进行访问.中间件系统中同样可以存放一些重要的资源副本,如果提供者当前由于某种原因(用户不在线、网络不通等)不能提供资源,可自动访问到中间件上的副本资源,将中间件上的资源副本信息交给资源请求者,如图2所示.
图2 资源共享结构Fig.2 Resource sharing structure
平台采用模块化设计和开发.如图3所示,平台一共分为4大模块:个人信息模块、课程信息模块、在线交流模块以及系统管理模块.各模块松散耦合,使平台中任何一个模块的变化对系统其他模块的影响降至最低程度.对任何一个模块的理解、测试和修改,无须涉及系统的其他模块.各模块之间的通信通过数据库进行.任何一个模块都针对教师、管理员、学生的不同角色设计不同的功能.
图3 系统模块结构Fig.3 System module structure
(1)课程信息模块.用户登录后,可从课程信息模块中查看到所有课程信息,并可选择自己感兴趣的课程添加到我的课程列表中,方便以后查看.用户可下载该课程所提供的所有资源,教师还可创建新的课程.
(2)个人信息模块.包含用户的个人信息,如姓名,年龄,院系等,用户登录后可修改自己的信息,其他用户只能查看.
(3)讨论区模块.包括在线讨论和留言板,用户登录后,进入在线交流,学生可通过聊天的方式与当前在线教师进行实时交流.在留言板里,学生把自己的问题通过发帖形式发布到留言板,等待教师的回答,教师通过回帖形式对问题进行解答.
(4)系统管理模块.本模块属于管理员和教师用户,教师可管理属于自己课程(我的课程列表中的课程)的讨论区,对留言进行修改和删除,管理员还可对非法用户进行删除,以及权限修改等操作.
系统的数据库中包含7个表:
学生表——学生个人信息;
教师表——教师个人信息;
课程表——课程信息;
学生课程表——学生与选择课程的对应关系;
教师课程表——教师与选择课程的对应关系;
管理员表——管理员个人信息;
资源表——资源信息.
中间件系统中保存7个表的完整信息,每个结点数据库只存放教师的个人、课程及资源信息,这样每个教师机器只拥有自己的信息.当有请求要访问该部分信息时,直接访问教师机器上的结点数据库.只有在该教师机器当前不可用时,再去访问中间件数据库.
系统采用MVC设计模式进行开发,视图层采用JSF框架,用户通过浏览器访问系统,看到的只能是视图层,在视图层上,用户进行相应操作.系统中大量的业务操作放置在业务逻辑层,业务逻辑层采用Spring框架进行设计,对业务的操作一般需要操作数据库,在业务层和数据层间采用基于Hibernate框架的持久层开发.系统架构如图4所示.
图4 局部系统架构Fig.4 Local system architecture
系统在windows平台下进行搭建和开发,采用mysql5.0作为局部数据库服务器、Amoeba for Aladdin作为分布式数据库管理系统.由于A-moeba for Aladdin采用跨平台的java语言编写,所以对于具体的操作系统平台没有特殊要求.另外,系统采用中间件的方式来集成教学资源,所以对于客户端以及局部应用等均没有特殊要求,可采用任何当前流行的技术实现.本系统使用Java技术开发实现.
针对各院系对自身教学资源的开放程度,系统将根据Amoeba for Aladdin配置文件的特点制定具体的资源发现机制来支持局部数据库服务器的扩展.若院系A要对外公布自己的教学资源,其可向Amoeba for Aladdin代理进行注册,注册的内容包括:IP地址、端口号、数据库名、用户名和密码.
3.3.1 配置Amoeba for Aladdin
在获取各局部数据库服务器的注册信息后,系统采用XML的Dom解析技术完成amoeba配置文件amoeba.xml与规则文件rule.xml的配置工作,如图5所示.
图5 资源定位结构Fig.5 Resource locating structure
3.3.2 访问Amoeba for Aladdin
系统对各院系公布中间件服务器的访问信息: IP地址、端口号、登录用户名和登录密码以及各个资源表的id范围,各院系便可针对自身的应用需求访问Amoeba for Aladdin代理来实现异地教学资源的访问.以某高校用户访问本地教学资源和全局教学资源为例,若用户需要访问本地资源,只需要通过局部应用就可实现,以减小分布式中间件的网络通信负担.若需要访问全局资源,则需通过分布式代理中间件(Amoeba for Aladdin)找到其他数据库中的资源或资源目录,实现机制如图6所示.
图6 分布式网络教学平台整体结构Fig.6 Global structure of distributed online teaching platform
基于Amoeba for Aladdin的分布式网络教学资源管理系统,符合全局控制分散的DDBMS体系结构的分布式数据库要求,实现了网络教学平台资源的集成与共享.
系统中的数据库按照统一的数据管理、分布式的资源存储模式,以便捷的方式实现各结点资源库资源的共享.整个系统资源库的结构对用户来说是透明的,用户可通过传统的访问方式访问到系统中所有资源,无需关注资源实际的物理存储位置.通过大量的系统测试表明本系统极大地提高结点资源库的访问效率,减少中心资源库的访问压力,减轻服务器的通信代价.同时相对于传统教学平台模式而言,建立在分布式数据库基础上的网络教学平台,有效地解决了资源和数据分散使用与集中管理的矛盾,很好地实现数据的共享和交换.实现了一个分布化、网络化,高效实用的教学资源管理平台.
[1] 刘卫国,谢华,蔡立燕.基于Struts与Hibernate的网络教学平台的设计与实现[J].教育信息化,2006(7):26-28.
[2] 萨师煊,王珊.数据库系统概论[M].2版.北京:高等教育出版社,2004:412-435.
[3] 夏伟伟.分布式数据库开发平台的研究[D].北京,中国石油大学,2006:5-16.
[4] 肖凌,刘继红,姚建初.分布式数据库系统的研究与应用[J].计算机工程,2001,27(1):33-34.