大数据背景下数据库系统实践课程的教学改革
2018-04-25谷林涛
窦 亮,徐 飞,谷林涛
(华东师范大学 计算机科学技术系,上海 200062)
0 引 言
随着Web2.0网站的兴起,各领域数据量呈现爆发式增长,大数据时代业已来临。传统的关系型数据库在存储和处理高并发和多样的海量数据时,或是成本代价过高,或是难以给出令人满意的解决方案,NoSQL(Not only SQL)技术为解决这些问题提供了新的方案。NoSQL数据库具有多种类型,特点各不相同,更加适合大数据的存储和管理,应用于不同的Web2.0场景获得了巨大的成功。根据业内权威的DB Engines排行榜[1]数据显示,虽然目前排名前三的数据库仍是关系型数据库(Oracle、MySQL和SQL Server),但典型的NoSQL数据库MongoDB、Cassandra、Redis等已进入前十位的排名,且市场占有率的增长非常稳定。
在现今大数据的背景之下,关系型数据库已不再是唯一的选择,但NoSQL数据库也不会直接取代关系型数据库,数据库领域正进入“混合持久化”(polyglot persistence)的时代[2],应用程序可以使用多种技术来管理数据。
1 课程现状及分析
作为数据库原理课程的延伸,数据库系统实践课程开设的目的是培养学生的数据库设计、数据库系统的管理和应用开发能力,使学生能够灵活地运用数据库技术解决实际的应用问题。原有的课程内容包括:以主流的关系型数据库Microsoft SQL Server作为实验环境,要求学生掌握SQL Server数据库的基本操作;教师给出典型的数据库设计案例和应用系统开发实例,通过分析讲解,让学生掌握数据库建模和设计的基本方法,要求学生自选题目完成一个完整的数据库应用系统的设计与实现。
在较长的时期中,课程教学内容以关系型数据库的应用实践为主,在目前大数据背景下,需要引入NoSQL数据库的教学内容,更好地适应时代的需求,但引入这部分教学内容并非轻而易举,主要面临以下问题。
(1)大数据处理和NoSQL技术涉及的内容繁多,市场上NoSQL数据库产品也十分繁杂,不同产品适合不同的应用场景,在学习的初始阶段需要进行大量的摸索和实践,然而目前这方面系统的参考资料却非常少,适合本科生学习和实践的教材更加稀少。
(2)引入NoSQL技术教学内容之后,课程涉及的内容显得更加多层次,对于专业水平尚在提升阶段的本科生而言,同时理解关系型和非关系型这两种完全不同的数据库技术会是一个难点。
可见,教师需要精心选取合适的教学案例,科学地设计课程实施方法,才能更好地激发学生对新技术、新趋势的热情,满足不同层次学生的需求,拥抱大数据时代。
2 教学改革实践
2.1 调整教学内容,适应时代需求
数据库技术涉及的内容是多层次的,可从数据库应用、数据库系统理论和数据库新技术等多个角度来看[3],引入的NoSQL数据库内容属于数据库新技术部分。引入新内容后,本课程涉及的内容更加丰富,但总体课时数有限,因此,针对本科生的教学需求调整教学内容成为首要问题。华东师范大学计算机科学技术系此门课程为2个学分,18个课时上课,36个课时上机实验。经过讨论,课程组大大简化了原来和特定DBMS比较相关的数据库备份与恢复、安全控制的内容,只对这部分内容做基本介绍,而增加了对NoSQL数据库应用技术的介绍。
调整后课程知识模块分成4部分。第1部分主题是SQL Server数据库管理系统,通过大量验证型的上机练习,使学生对关系型数据库理论有更加实际和深入的理解。第2部分主题是关系型数据库的设计,介绍4个典型的数据库设计案例,对数据库设计方法学进行解说,分析常见问题和错误,使学生能够具备设计出符合实际业务需求的数据库的核心素养。第3部分主题是数据库应用开发,介绍数据库应用系统的体系结构和常见数据库访问技术,完整地演示一个数据库应用系统开发的小型案例,要求学生根据自己的情况,至少掌握一种数据库访问技术。第4部分主题是NoSQL数据库,这部分对NoSQL技术的介绍不求面面俱到,也不对各种NoSQL技术的理论做深入剖析,只做基本的介绍,选取文档型数据库MongoDB作为代表进行介绍,通过分析两个案例,让学生了解NoSQL数据库的应用场景和解决方案。调整后的知识模块和课时分配见表1。
表1 课程知识模块和课时分配
2.2 精选典型案例,拓展学生视野
数据库技术课程是实践课,要求学生动手实践并在实践中学习与培养能力,但学生大多只掌握两门左右的编程语言,欠缺完整的实际性的软件项目的开发经验,因此,项目采用案例式教学的方法,使用典型案例供学生学习思考以及分析。事实证明案例式教学法在实践类课程中是行之有效的,可以让学生真正体会数据库的内涵与实质[4]。
在关系型数据库设计部分,讲解分析4个典型的数据库设计案例,分别是图书馆信息管理数据库、教学信息管理数据库、航班信息管理数据库和网上书店系统数据库,这些案例的需求和背景都是学生在日常生活中可以接触和深入了解到的,规模适中,适合本科生进行数据库设计的学习。在讲解分析数据库设计的过程中,对数据库设计中的常见问题和错误进行总结分析,包括确定系统边界的重要性;设计过程中选择实体还是属性,选择实体还是联系,选择二元联系还是多元联系[5];如何区分数据需求和系统业务需求,两者如何互相影响;优化关系数据模型的方法等。这些常见问题都是在历年学生的数据库设计作品中反映出来的,通过对这些问题的总结分析,让学生认识到理论与实践的距离,对数据库设计的准确性和合理性有更深入的认识。
在关系型数据库应用开发部分,演示一个完整的、基于ASP.Net技术和SQL Server数据库应用系统开发案例——新闻管理发布系统。该案例系统涵盖了各种典型功能,普通用户可以查阅新闻和搜索新闻,用户查阅新闻会增加点击率;管理员可以登录后台管理系统,对新闻的类别、标题、内容、发布者等信息进行增加、删除和修改操作。此案例开发使用Visual Studio工具,由于该工具提供了诸多ASP.NET控件,且测试环境简单易用,通过案例演示,学生可以在很短的时间内快速上手,对基于关系型数据库的应用系统开发基本过程有一个直观的认识。随着技术的飞速发展,数据库应用开发技术日新月异,软件开发体系结构不断演变,此部分要求学生通过课内或课外的学习,至少掌握一种数据库访问技术,具备数据库应用系统开发的基本能力,对MVC设计模式和应用系统架构中的分层思想有基本认识。
在NoSQL数据库应用开发部分,以MongoDB为例进行介绍,MongoDB是一个可扩展的高性能、开源、模式自由、面向文档的数据库[6],是NoSQL数据库的典型代表,具有网站实时数据存储所需的高度伸缩性。课程主要介绍MongoDB的特点和适用场景,重点介绍从数据库设计的角度,如何能够满足应用程序的需求,表现为一对一、一对多、多对多模式。两个基于MongoDB的应用开发案例,各有侧重点。第一个案例结合使用Node.js技术[7]和MongoDB数据库实现用户登录验证模块,功能简单,学生可以较容易地跟随案例步骤,完成整个开发环境的搭建,学会使用Node.js连接MongoDB数据库的方法。由于Node.js能够处理庞大并且高吞吐量的并发连接,和存储速度快的MongoDB数据库结合使用,可以处理实时交互的数据密集型应用,会是未来解决大规模I/O问题的技术选型趋势,对于学生了解这类应用系统的开发方法很有益处。另一个案例是一个经过裁剪的有实际应用背景的MongoDB应用案例,为一个网络负载量分析系统。该案例系统以图形化的方式直观地呈现分析结果,可以对网络的流量、速率、并发量和包速率等信息进行曲线图的单独显示,有效地为企业和单位提供网络性能分析结果。该系统在前端可视化部分采用了Amcharts图表,以曲线图的方式展现网络负载的各个指标,实现数据的动态展现。通过此案例的学习,可以帮助学生理解在大数据时代,除了需要快速有效地存取大规模量的数据,提高大数据的可视化水平也是一个非常重要的工作。
2.3 丰富教学方法,优化评价手段
2.3.1 多种教学方法的应用
在教学过程中,除了大量使用案例式教学法,还可采用对比式教学法和项目驱动教学法。
1)对比式教学法的应用。
对比式教学法将具有一定联系和区别的教学内容放在一起,进行对比和分析,使学生更能深刻理解教学内容[8]。大数据处理和NoSQL技术涉及的内容繁多,不同公司有不同的NoSQL数据库产品,而且某一产品往往是为特定的应用而设计的,并不一定能够适用于所有的场景。在教学过程中,可将不同的NoSQL数据库的开发语言、特性和应用场景进行对比说明,帮助学生掌握这一知识点。同时,NoSQL数据库的“非关系型”特性,与传统的“关系型”数据库形成了鲜明的特点,在掌握这两种具有一定对立特性的数据库的时候,需要深刻理解背后的原因和发展背景,也需要教师进行对比解说。
2)项目驱动的教学法的应用。
课程要求学生开发完成一个数据库课程设计作品,由1~2人成立小组完成,可以选择关系型数据库或NoSQL数据库,也可以混合使用这两类数据库,开发语言和平台不作限定。教师在项目选题初期给予一定的指导,帮助学生确定系统边界和技术选型,具体的需求分析、数据库设计、系统设计和开发以及测试和实施都由学生自行完成。项目驱动的教学法可充分调动学生学习兴趣,提高学生自觉学习的能力,项目的完成有利于学生对数据库系统和软件项目开发过程有一个整体的把握。
2.3.2 评价手段的优化
在评价方法上,力求从多角度全面客观地评价学生掌握知识和技能的情况。综合成绩由3部分组成:平时成绩占20%,成绩来源于课程第一模块的SQL Server的上机作业题平均分;开卷笔试和上机考试占40%,笔试部分考查关系型数据库的设计,上机考试考查对SQL Server的综合使用;课程设计作品占40%,从选题、数据库设计、应用软件设计、程序运行情况和测试数据量、课程报告5个维度进行评价,要求学生对作品进行解说和演示,回答教师问题,并提交一套完整的课程设计报告、数据库文件和应用系统程序。
为优化评价手段,我们开发了一套SQL作业的自动化批改平台,用于对课程第一模块的SQL Server上机实验题进行自动批改,也用于上机考试判卷。较传统的人工批改的方式,自动化批改提高了效率,降低了误判率。系统主要包含批改模块和成绩展示模块,其中批改模块负责对学生提交的SQL作业文档进行解析和批改,开发语言为Java,学生实验数据库为教师指定的SQL Server案例数据库,成绩数据库使用MySQL数据库;成绩展示模块提供Web访问方式,用于学生查询作业成绩和详细情况,开发语言为PHP,使用ThinkPHP框架。通过此模块,学生登录后即可清楚每次作业完成的具体情况和错误原因(逻辑错误或SQL语法出错),从而提高对各个知识点的掌握水平。
3 教学改革实践效果
数据库系统实践课程是计算机专业重要的实践类必修课,在大数据时代的背景之下,华东师范大学计算机科学技术系课程组引入前沿的教学内容,在教学方法和评价手段等方面进行改革实践,得到了学生的广泛好评。评教结果显示,此课程在2016-2017年下学期的评教中得到了4.92分的成绩(满分5分),院系有效相对排名为2/45,学生的反馈积极正面,如“老师备课充分,教学目标明确,教学内容丰富,教学方法与手段适当”“能扩展知识面”以及“通过学习实践,自己的综合能力有所提高”等。学生们普遍认为自己在数据库设计和应用开发、数据库管理系统的使用以及对大数据的存取技术方面的知识和能力得到了提高。
4 结 语
华东师范大学的教学改革表明了改革实施的可行性和有效性,但实践过程中仍存在一些问题。由于学生开发经验和实践经验都比较缺乏,有些同学在进行数据库设计时容易把题目设计得很大,或者选一些自己不太熟悉的应用领域进行设计,特别在引入NoSQL数据库的内容后,学生仍然对哪些场景可以且应该使用NoSQL数据库缺乏思路,这些问题也是今后的教学改革和实践应该注意解决的重点。
参考文献:
[1]DB-Engines Ranking [EB/OL]. [2017-06-10]. https://db-engines.com/en/ranking.
[2]塞得拉吉, 福勒. NoSQL精粹[M]. 爱飞翔, 译. 北京: 机械工业出版社, 2013.
[3]夏英. 研究生高级数据库系统技术课程建设与实践[J]. 计算机教育, 2015(23): 4-6.
[4]刘智, 刘加伶, 闫河, 等.“数据库”实践环节的“验证式”教学[J]. 计算机教育, 2009(15): 99-101.
[5]邝劲筠, 杜金莲. 数据库原理实践(SQL Server 2012). 北京: 清华大学出版社, 2015.
[6]MongoDB官网 [EB/OL]. [2017-06-10]. https://www.mongodb.com/.
[7]Node. js官网 [EB/OL]. [2017-06-10]. https://nodejs.org/en/.
[8]车蕾, 崔巍, 王晓波, 等. 数据库实践类课程体系优化方案研究[J]. 中国电力教育, 2013(34): 154-155.