NoSQL数据库实践教学:结合Benchmarking的方法

2023-01-05 03:10李幽铮
软件导刊 2022年11期
关键词:任课教师数据库课程

叶 枫,孙 骏,黄 倩,李幽铮,李 凌

(1.河海大学计算机与信息学院,江苏南京 211100;2.金陵科技学院建筑工程学院,江苏南京 211169)

1 问题与研究现状分析

近40 年来,关系数据库系统作为主流的数据库模型,得到了学术界和工业界广泛的研究与应用。随着大数据和人工智能时代的到来,数据驱动的决策模式愈加普遍,但关系数据库难以应对大数据的关键挑战:①表示不匹配。需要存储的数据类型往往是非结构化的,不适合关系模型[1];②事务模型导致系统性能下降。关系数据库提供了一种非常严格的事务控制模型(原子性、强一致性、隔离性和持久性,即ACID),而严格的事务模型往往会导致许多大数据系统的性能下降[2];③可伸缩性不强。扩展关系数据库较为困难,并且需要不断地调优以保障运行效率[3]。因此,工业界、学术界研发了诸多NoSQL 数据库[4]以适用于多样化的大数据应用场景。通常,NoSQL 数据库没有严格的模型定义,且数据库类型多样(图、宽列、键值、文档、时间序列、多模数据库等),差异化显著。目前,NoSQL 数据库的演化发展十分迅速,已经从2011 年的50余个发展到现在的200余个。

NoSQL 对工业界和学术界的影响也愈加深入。根据Forrester[5]最近的一项调查结果显示,近50%的受访企业或组织已经采用了NoSQL 解决方案。行业招聘的最新要求也表明,对接触、熟悉NoSQL 的毕业生需求急剧增加。但是,当前相关课程的教学现状是:依然重视关系数据库[6],对NoSQL 的关注不够;学生缺少NoSQL 数据库的实践能力,与业界要求大数据能力的鸿沟越拉越大。计算机科学作为一门学科,强调以问题为基础的学习,真实的案例和使用经验对提高计算机应用能力至关重要[7]。一些研究已经证实,通过实践来学习能显著地提升学习效果[8-9]。如何开展NoSQL 教学,一些代表性的研究[10-11]已经提出了有建设性的方案。但是,由于NoSQL 数量众多、异构性强,传统教学方式很难让学生更深入、全面地理解和应用NoSQL 数据库,特别是在未来工作中如何对众多NoSQL 数据库进行选型是一个难题。基于此,为了让学生全面了解NoSQL 概念以及不同NoSQL 数据库实例的差异性,提升学生的动手能力,提出一种新的NoSQL 数据库实践模式,即结合评测基准(Benchmarking)[12-14]的方法。

众所周知,评测基准是系统选型、开发与优化的重要驱动力量。如今,NoSQL 数据库的评测基准持续吸引着数据即服务(Data as a Service)提供商以及众多有意实现“上云用数赋智”的企业与相关科研人员等的关注。从数据即服务提供商角度,标准的评测基准有利于向服务消费者提供更丰富的应用场景支持,有效降低NoSQL 数据库维护成本;从众多企业的角度,可根据自身业务需要,快速选型大数据存储解决方案,并减少数据迁移成本;从研究人员的角度,可利用评测基准评估新技术、优化完善NoSQL 数据库,推动其快速演化发展。显然,若能将评测基准方法有效地与NoSQL 数据库教学实践结合,是非常有意义的。

2 实践背景

该课程适用于软件工程、计算机科学的本科高年级学生和研究生。在现有教学体系下,本科高年级学生和研究生通常已经完整地学习了数据库系统基础课程,也具备了以Java 语言为代表的编程能力。在此基础上,开展NoSQL数据库实践教学,可以在充分利用前期所学知识的基础上,更侧重于NoSQL 数据库的实践内容。

作为一所重视本科教育的高校,教学环节非常强调课堂上的主动学习和课堂以外面向问题的学习。为了贯彻这一教学原则,在NoSQL 数据库实践教学中,有目的、有意识地安排了大量实验和课堂活动,并要求学生仔细考虑如何将概念、知识应用到毕业后可能遇到的工作场景中。同时,为了锻炼团队的合作研发能力,特别要锻炼学生与实际工作接轨的能力,课程实践伊始就将3~5 人组为一个团队,这也为后面基于Benchmarking 学习模式的实施提供了一个组织基础。

3 NoSQL课程设置

3.1 设置思路

通过浏览nosql-database.org 网站上NoSQL 数据库现状,不难发现,不同类型的NoSQL 数据库均有其独特性质,每一类NoSQL 数据库又包括众多不同实例。与标准的关系型数据库不同,每个NoSQL 数据库都是针对特定问题而开发的,并具有各自的基本概念和交互语言。一个关键问题是:如何开始了解NoSQL 课程涉及的概念和数据库实例?可以想象,采用教SQL 和关系数据库的技术与方法讲授NoSQL 数据库是不切实际的。针对此问题,可以认识到:在实践教学中,选择每一类中最知名和有代表性的NoSQL 数据库实例作为讲解基础,充分利用为期12周的教学时间来介绍4~5 种NoSQL 系统,并通过分组让学生们开展某一类NoSQL 的Benchmarking 实验是一种好的教学途径。具体而言,从以下几类NoSQL 数据库中选择最有代表性和流行的工具:①面向文档的数据库MongoDB;②图数据库Neo4J;③键值数据库Redis;④列族数据库Cassandra;⑤时间序列数据库Riak TS、Druid 和IoTDB;⑥多模数据库ArangoDB、OrientDB。

每个系统都涵盖数据建模、查询、扩展和建立一个Benchmarking 系统。课程目标如下:①解释代表性的NoSQL 数据库的基本存储结构和访问技术,包括键值数据库、文档数据库、图数据库、列族数据库、时间序列数据库以及多模数据库;②熟悉代表性的NoSQL 数据库的典型操作,如每类NoSQL 数据库的查询操作、数据建模等;③识别新数据库与先前已知数据库之间的语义相似性和差异性(例如图数据库的索引机制、文档数据库的分片机制等),并区分常用的一致性模型;④根据要存储的数据和期望的可用性、可伸缩性及一致性要求,讨论如何部署NoSQL/SQL 数据库;⑤在UCI 机器学习库、Kaggle 等网站选用不同数据集,在Benchmarking 实验基础上,研究如何对NoSQL数据库进行选型。在每学期实践教学中,根据学生和行业领域工程师的反馈,对上述主题进行扩展细化。

3.2 教材与实践环境

如何选用教材也是NoSQL 课程实践能取得成功的关键。由于NoSQL 数据库的发展和演化速度非常快,相应地,目前市面上也涌现了众多内容丰富,且具有实用性的相关教材,例如:陆嘉恒[15]著的《大数据挑战与NoSQL 数据库技术》、袁燕妮[16]著的《NoSQL 数据库技术》等。对于这些教材,本研究邀请多名领域专家、业内专业工程师等采用打分的方式,为该课程选择合适的教材。另外,该实践课程也将NoSQL 数据库发布的官方文档作为补充教材,因为这些文档很好地概述了数据模型、查询语言以及常见用例和遇到的问题等。

为了开展NoSQL 数据库的Benchmarking 实验,在实践环节中,为每组学生配备了3 台虚拟机构成的集群,并安装了最新版本的Ubuntu。每台机器有16 GB 内存、500 GB硬盘和4核i5的CPU。这些机器既可以由学院现有基础设施提供,也可以租用阿里云环境。学生们使用这些机器集群来安装NoSQL 数据库,并跟随课堂上介绍的概念熟悉其操作。

4 双层学习模式

随着NoSQL 数据库的快速发展,持续学习变得日益重要,有必要要求选课的学生探索其现有知识库和所遇到的新范例之间的联系。在整个实践课程中,重点是让学生们结合实际进行学习与思考,最终掌握NoSQL 数据库的关键细节。此外,NoSQL 数据库选型是一个关键问题,目前没有现成方式可以用来为各种应用场景选择合适的NoSQL系统。因此,学生们必须通过一些不同的数据集,在学习基本概念和知识的基础上,对这些NoSQL 数据库进行Benchmarking 实验。考虑到这些目标,构建一个双层学习模式,具体包含课堂概念与实践、基于NoSQL 数据库的Benchmarking 实验两个层面,其实质也是从定性到定量研究NoSQL 数据库的过程。该模式将为学生提供大量机会来实践如何更好地应用NoSQL 数据库的重要技能,做到有的放矢。

4.1 课堂概念与实践

自主学习已被证明在阐述计算机科学概念方面是非常有效的,特别是数据库[17-18]。每节课的设计都考虑到这一点,并针对课堂上涉及的各种概念、技术和数据库重点设置了如下课堂内容:

(1)基本概念讲解。结合上文所述NoSQL 数据库文档,对每一种NoSQL 数据库是什么、为什么使用及其关键特征进行讲解,让学生们熟悉不同NoSQL 数据库的关键概念和基础知识。

(2)数据建模练习。NoSQL 数据建模倾向于强调数据聚合、非规范化数据、数据访问模式以及数据结构支持等。根据以往经验,数据建模可看作一个跨越这些约束的优化问题。因此,学生需要较多地练习才能掌握。首先在课堂上用交互式的方式指导学生建模案例,课程结束后,要求每个团队模仿完成一个样本数据建模活动。团队必须提出一个数据模型,并根据前面提到的标准为其设计提供理论依据。活动结束时,各团队向班级汇报工作,并由任课教师对各团队的设计进行分析和完善。

(3)现场编程能力提升。现场编程涉及对NoSQL 系统的增、删、改、查等主要操作。之后,学生有能力对类似的数据集、问题域开展编程工作。通过该方式,让学生在虚拟机集群上将NoSQL 操作与实际编程结合起来,有助于提升其实践信心与深入学习的兴趣。

4.2 基于NoSQL的Benchmarking实验

在现代数据库世界中,特征驱动了数据库选择,而一个大数据应用系统中具有多个数据库工具是较为常见的。NoSQL 开发、管理人员需要识别并选择正确的数据库,快速学习并利用不同的NoSQL 数据库来满足实际要求。因此,在NoSQL 数据库实践教学中,学生同样被要求识别一个特定的NoSQL 数据库,并以团队形式进行研究。具体方法就是针对一类NoSQL 数据库,设计并实现Benchmarking实验,最终完成一份Benchmarking 实验报告。

在该阶段,每个团队成员首先需要结合教材、文档等,安装部署所选的NoSQL 数据库。接下来,团队成员分工设计并编程,实现多类负载(workloads)生成、数据集准备和评测指标度量(例如CPU 使用率、吞吐量等)。例如,在时间序列数据库的Benchmarking 实验中,任课教师结合专业特色,提供了水文传感器数据集[19]。学生们可以用Java 编程实现如下负载:①不同数据规模的传感器数据加载或数据插入;②按时间间隔查询某采样点数据;③按照一定的时间间隔,查询多个采样点数据;④随着传感器流数据不断注入NoSQL 数据库,增加查询次数;⑤在保持查询次数的同时,增加传感器采样的数据量;⑥按多个时间间隔查询采样点数据;⑦使用GroupBy 聚合查询;⑧索引查询。然后,根据不同负载下的执行结果,各个小组可以整理分析报告,设计与实现NoSQL 数据库Benchmarking 实验过程,既可以让选课学生从定量层面更深入地了解同类NoSQL数据库不同实例之间的差别,又可以了解不同类型NoSQL数据库的差别。最后,各组学生完成一份NoSQL 数据库评测报告,并在班级层面上进行分享交流,汇报所测评NoSQL 数据库的结论。该方式可以让学生快速而全面地了解不断发展的NoSQL 数据库,为后续使用NoSQL 数据库奠定了良好基础。

5 评价与讨论

对于该课程的评价,采用阶段评价和结课评价相结合的方式。在教学阶段,通过定期开展匿名调查的方式来获取学生对课程教学效果的反馈。团队任课教师会定期回应学生关注的问题,根据学生的反馈提供相关材料并完善实验内容,以提高学生的学习水平。除定期反馈外,课程结束时还将对学生进行总结性评估。总结性评估通常包括下列方面:①从总体上评价此课程;②评价个人在课堂上的学习质量;③描述本课程的一个或多个优点;④描述一个或多个改进课程的方法;⑤任课教师是否为课程作好了充分准备;⑥任课教师是否使用了帮助我学习的教学技巧;⑦解释你给任课教师等级或评价的依据;⑧解释通过学习,个人达到了怎样的水平;⑨还有哪些内容是期望学习到的;⑩该门课程对于未来的学习和就业有哪些具体帮助等。

从近5 年授课的调研结果来看,任课教师从这些问题上得到的反馈是积极、正面的。据统计,92%的学生认为自己的实践能力得到了有效提高,并且对大数据相关技术有了更多了解,这也为该课程的发展方向提供了另一个好的数据分析源。也有不少教师和学生建议,随着实验内容的丰富,可以将实验项目开源或者将其应用于一些较大的项目中。由于篇幅限制,对于学习评价的进一步研究在此不再深入讨论。列举部分学生的课程体会:“内容很有趣,值得学习;这些实验对我们加强对NoSQL 数据库的认识很有帮助;学习数据库如何确保多语言持久性和水平可扩展将对我的工作非常有帮助;当我终于弄清楚Druid、Riak TS和IoTDB 数据库之间的差异时,我感到非常有成就感。”另外,还有多篇关于NoSQL 数据库基准测评的论文在计算机学会推荐的会议和期刊上发表,如Journal of Database Management、ICA3PP、COMPSAC 和HPCC 等。

6 结语

NoSQL 数据库已越来越多地应用于驱动行业中,并被各种组织迅速采用。目前,计算机科学课程主要集中在关系系统上,而对NoSQL 范例关注不够。接触和体验各种NoSQL 范例和数据模型是学生技能集的关键部分,将有助于其成功过渡到行业。并且,学生通过基准测评多种NoSQL 范例,能更加深入、全面地了解和使用NoSQL 数据库。学生评估结果验证了该实践教学模式的效果。未来将在此基础上积累一批基于NoSQL 数据库的项目案例,尝试以开源形式供更多NoSQL 爱好者学习和使用。

猜你喜欢
任课教师数据库课程
《无机化学》课程教学改革
数字图像处理课程混合式教学改革与探索
软件设计与开发实践课程探索与实践
为什么要学习HAA课程?
班主任与任课教师合作发展的实践与思考
论高职班主任与任课教师的协作与沟通
要善于树立任课教师的威信
任课教师在班级管理中发挥的作用