基于MongoDB的数字化教学资源存取方案研究*
2018-03-06黄承明
黄承明
(湖南财经工业职业技术学院,湖南 衡阳421002)
引言
近10年来,教育信息化发展迅速,已成为各级院校提高核心竞争力的重要手段,[1]信息化建设内容也从以基础设施建设为主转变为以内容建设为主,教学应用形式日趋多样化,如微课、MOOC、SPOC[2]等,这些信息化教学应用都需要数字化教学资源来支撑。良好的数字化教学资源存取基础架构是信息化教学应用系统性能、健壮性和用户体验的根本保障。
一直以来,基于教学资源应用的各类平台在推广时普遍遇到的问题是:①访问效率低,用户体验不好;②功能扩展困难;③缺乏资源质量保障与评价技术手段,缺乏知识产权保护的技术支撑,使共享资源整体质量低下。
其主要原因有:①网络满足不了数字化资源的高带宽要求,或者后台数据库存取性能低下;②许多功能受关系型数据库技术约束,改进成本高、风险大。
这些问题的解决除了管理机制和政策因素外都受制于后台数字化教学资源的存取技术。良好的后台数字化教学资源的存取技术方案,是解决上述问题的根本手段。
数字化教学资源是指教学活动中所需要的电子化的教学资源,是以数字形态存在和服务教育教学的资源,如课程标准、电子教材、电子教案、课件、素材(如图形/图像、动画、音频、视频、网页/网站、动画、Flash、3D 模型、仿真模型)、试题库、案例库等。[3]
一、教学资源特征分析
1.内容特征
在内容上,教学资源最显著的特征是多样性。
(1)内容形态具有多样性。其内容形态有两大类:一类是基础形态的素材资源,如文本、数据、图片、图形、动画、音频、视频、仿真模型等;一类是复合形态的应用资源,它是将多种素材加以关联组合形成的一种形态,如图文(DOC、PDF、PPT、CHM 等)、网页、课程等。
(2)应用形式具有多样性。典型的应用形式有知识库、网络(在线)课堂、试题库、案例库、模型库等。
(3)内容格式具有多样性。常见的内容格式有文本格式(ANSI、UNICODE)、图片格式、视频格式、图文格式(DOC、PDF、PPT)等。
(4)表现形式具有多样性。有用来显示特殊字符的字体,静态展示的图文信息,动态播放的音视频动画,具有交互能力的网页、仿真模型等等。
此外,数字化教学资源的内容还有一个特征,就是所有数字化教学资源数据在结构上无固定模式,为非结构化数据或半结构化数据。
2.应用特征
数字化教学资源应用场景非常广泛,如精品课程、网络课堂、题库系统、考试系统、知识管理、在线教学、企业培训等等,在应用上都具有以下几个共同的特点。
(1)读多写少。用户在使用过程中,绝大多数时间都是以读取资源为主,如浏览、播放等;通常只是在修改或添加资源时才会有写入操作。当然访问日志、评价、交易记录则属于辅助数据,不是属于资源数据。
(2)引用与复制。应用中存在大量的引用和复制操作。通过对多个资源的重组或剪辑,能够表达新的教学内容、产生新的资源。
(3)动态扩展要求。在应用过程中经常会因为用户需求的变化发生结构上的扩展。一方面,应用功能的变化将引起结构的扩展,比如,早期的应用系统由于功能不多,仅需要类型、格式、文件名等信息,随着功能的改进,需要更多的描述信息,如版本信息,有时还会增加新的资源类型,就会引起数据库结构上的变化;另一方面,随着应用规模的扩大,需要更多数据库I/O,这就要求数据库在部署模式上进行扩展。
(4)高带宽要求。视频播放与资源引用复制功能是基于数字化教学资源的应用系统最常用的功能,而这些功能都是比较消耗网络带宽的功能,通常采用集中式部署的应用系统在广域网或互联网中使用时难以获得较好的用户体验,采用CDN技术或分布式部署将是必然的趋势。
二、现有的存取方案及其弊端
数字化形态的教学资源对象通常包括三大类型的数据:①资源体数据,如图片、视频等;②元数据,如格式、标题名称、版本、版权等;③日志数据,运行的一些动态数据,如存取访问、应用评价、共享交易等。如图1所示。
图1 数据逻辑模型
在现有的应用系统中,资源及相关数据的存储方案主要有两种:
一种是采用关系型数据库与磁盘文件相结合的方式,即元数据与日志数据存储在数据库中,体积较小的资源体数据,如词条、题干等,保存到数据库的BLOB/Image/Text类型字段中,体积较大的则以磁盘文件的形式保存。这种方案比较成熟,开发成本也较低,是最常用的方式。但是这种方案有三个缺陷:①功能扩展难度大,代价很高,需要重构表结构和重写业务逻辑;②不适合存储非结构化或半结构化数据;③资源数据分开存储,存在不一致的隐患。
另一种方案是采用Native XML数据库。通过Native XML可自定义XML Schema的功能,能够灵活地进行数据组织,存储二进制数据和非结构化数据,通过DOM、SAX、XPath和XQuery等技术,比较方便解析和检索,能够实现数据的统一存储存取与检索。[4]这种方案在数据结构上扩展非常方便。但是该方案同样存在分布式扩展困难、低性能的问题。
三、基于MongoDB的统一存取方案
1.NoSQL数据库
NoSQL(英文全称是Not Only SQL)[5]是指那些非关系型的、分布式的、不保证遵循ACID原则的数据存储系统[6]。NoSQL遵循CAP理论和BASE原则。[5]
MongoDB是一款支持非结构化/半结构化数据、文档型的NoSQL数据库产品,具有无模式(schema free)、高性能、易管理、分布式、高并发、海量数据、功能丰富、扩展性强等优点。
2.MongoDB的存储原理与特点
MongoDB采用集合方式来组织数据,是一种“面向集合(Collection-Oriented)”的数据库。[7]MongoDB 中的集合(Collection)相当于 RDBMS 中的表(table),不同的是Collection可以嵌套,而table不可以;集合中的每个数据对象称为“文档 (Document)”,相当于 RDBMS中行(row);MongoDB 中的所有 Collection、Document都有一个24字符长的ObjectId唯一标识。
MongoDB数据库特点很多,综合起来有以下几个方面:①采用键-值(Key-Value)形式存储数据,支持二进制数据格式的文档型数据。支持大型对象的存储且性能优良。②无模式,支持动态查询、完全索引、文档内嵌查询。③支持主-从(Master-Slave)服务器间的数据复制和故障恢复。支持数据分片技术,将数据分片存储到不同的服务器上,可动态添加、移出存储服务器。
3.MongoDB数据库的适用性
从MongoDB的上述特点来看,它非常适合数字化教学资源数据的存取和检索,相比较传统的存储方案具有更好的适用性,同时具有更高的性能。
(1)无模式特点能够方便、灵活地组织和存储数字化教学资源这种多形态的、非结构化/半结构化数据,且能实现低成本的功能扩展。
(2)支持大型对象存储,适合视频、大文件等存取。
(3)主-从服务器以及自动分片则能够极其方便地进行系统的结构性扩展,同时满足数字化教学资源各种应用系统读多写少的应用特点。并能实现在广域网或互联网上的分布式部署,大幅降低网络消耗,提高访问效率,增强用户体验。
四、关键技术的实现
采用MongoDB数据库作为数字化教学资源的存储方案需要解决一系列相关的技术问题,包括技术性可行性、兼容性和实际性能等问题,其中技术可行性问题是基础,是关键,下面就应用中的几个关键技术进行说明。
1.文件型数据的存储
MongoDB数据库采用 BSON(Binary JSON)形式来存储,如视频、图片等二进制格式数据,BSON是一种类JSON(JavaScript Object Notation)的二进制形式的存储格式,最大能存储16MB大小的数据,超过16MB的资源数据则采用GridFS进行存储。
GridFS是一种将大型文件存储在MongoDB中的分布式文件系统,这样解决了文件数据和文件元数据的统一存储和管理的问题,兼具文档型数据库和文件系统的优势。
对于小于16MB的文件的存储,可以直接存储在一个“document”中,如图 2 所示。
图2 数字化教学资源文档的存储示例
对于大于16MB的文档数据,MongoDB则采用GridFS来实现存储,默认使用fs.chunks和fs.files两个集合来存储文件。其中fs.files集合存放文件的信息,fs.chunks存放文件数据。一个fs.files集合中的一条记录内容如图3所示(即一个file的信息内容)。
图3 fs.files集合中的file信息存储示例
至于file所对应的fs.chunks中的chunk则如图4所示。
这里文件的length接近31MB字节,大于chunkSize的16MB字节限制,约为2倍,所以被分成了两个chunk存放。
2.文件流输入输出
图4 fs.chunks集合中的chunk存储示例
在数字化教学资源相关应用系统中,文件型数据的典型应用为文件的上传、下载、复制和播放,文档的复制通常由MongoDB的内部机制完成,播放功能实际上是一个下载功能,所以,这些功能基本上都归结为文件的upload和download两种基本操作,它们常采用文件流来实现输入输出。下面是文件的上传下载功能举例,图5是文件上传的Java代码。
图5 上传文件的Java代码
对于文件的下载或播放,首先,需要通过文件名或ID等信息获取指定的文件,然后进行文件流输出即可,图6是文件查找及下载的Java代码。
图6 文件查找及下载的Java代码
3.扩展能力
MongoDB的扩展能力可以通过主从模式 (Master-Slaves)、副本集(Replica Set)、分片模式(Auto Shard)三种部署模式来实现。其中分片模式是将MongoDB数据库中的数据分散存储到多个服务器中,从而达到负载分流的目的,类似于常说的“分表”、“分区”、“分库”等概念。数据存取时路由服务器根据片键识别对哪个分片实例进行存取,具有优良的数据扩展和分布式部署能力。[8]
数字化教学资源数据的存储可以将资源体数据、元数据、日志数据集合存储到不同的分片中,还可以对集合进一步分片。
五、结语
数字化教学资源的应用特征与MongoDB数据库的技术特点具有非常高的吻合度,通过对关键技术的编码测试表明,在技术上是可行的,MongoDB这种文档型数据库十分适合数字化教学资源统一的存取和管理,能够实现多种形态的、多层次的、非/半结构化的数据的存取与检索。下一步将在海量数据、分布式、高并发等真实环境下进行性能测试,为MongoDB数据库在数字化教学资源应用开发中提供参考。
[1]蒋艳红.江苏省高校教育信息化发展策略研究[D].江苏:江苏师范大学,2012.
[2]康叶钦.在线教育的“后MOOC时代”——SPOC解析[J].清华大学教育研究,2014(1):85-93.
[3]成秀丽.职业教育数字化教学资源研究——基于2005年-2015年文献统计分析[J].中国电化教育,2016(8):120-123.
[4]闫璐.基于XML的非结构化数据管理的研究与应用[D].北京:首都师范大学,2013.
[5]雷宇辉,钟雯,何清等.Nosql数据库研究文献综述[J].电子世界,2017(4):11-13.
[6]赵济洲.基于MongoDB的代码查询平台[D].江苏:南京大学,2015.
[7]朱亚兴,余爱民,王夷.基于 Redis+MySQL+MongoDB存储架构应用[J].微型机与应用,2014(13):3-5.
[8]王晓琳.MongoDB中的海量数据动态平衡[D].上海交通大学,2014.