摘要:本文整理自武汉大学计算机学院、数据库课程组、珞珈图腾数据库实验室彭煜玮关于国产数据库研制人才培养实践的相关讲座。本篇内容主要分为三个部分:
- 背景介绍
- 国产/开源数据库在数据库教学中应用的实践
- 未来计划
- 背景介绍
武汉大学在数据库教学领域,采用了国产数据库,实际上应该是国产和开源数据库的组合。这涉及到各种教学方法、人才培养经验和教训。有些内容可能不太适合在PPT上展示,因此我会口头介绍。
彭煜玮所在的单位可以进一步细分为两个组织,即武汉大学计算机学院下属的数据库课程组,以及洛基图腾数据库实验室。数据库课程组负责教学工作,而洛基图腾数据库实验室则是科研团队。
在武汉大学,从事数据库系统研究的团队虽不是唯一,但却是最大的之一。因此,我在教学和科研两方面都有涉及。首先,我要介绍一下我们人才培养方面的背景。
在我们计算机学院,有两个主要方向,一个是计算机科学与技术、软件工程、人工智能,另一个是国家网络安全学院,专注于网络安全。其中,计算机科学与技术、软件工程、人工智能是我们的核心专业。此外,还有一个特色化示范性软件学院,致力于新型人才培养。无论是哪个方向,都需要学生学习数据库课程,因为数据库技术无论在研究还是应用方向都至关重要。
在数据库教学中,计算机科学与技术专业是最大的一部分,涵盖了三种教学方式。首先是普通班,占绝大多数学生。另外还有卓越工程师班和弘毅班,这两个班型致力于培养特殊方向的人才。弘毅班是一种独立的学院,但现在已回归计算机学院,有独特的数据库教学体系。
软件工程方向也有普通班和卓越工程师班,但相对没有弘毅班。此外,还有一个留学生班,主要接纳亚非拉学生,采用全英文教学。
人工智能专业相对较新,目前有普通班和特软班,前者已开始数据库课程,而后者则正处于制定教学大纲的阶段。
- 国产/开源数据库在数据库教学中应用的实践
关于学生培养方案的说明,我将其分为两个部分。首先,我们有主干课程,这一部分主要根据目前的情况进行规划。不过,从2023级开始,我们可能会进行一些调整。主干课程下分为主干课程和主观课程。主观课程共有三门课程,其中一门是数据库系统,这门课程被列为必修课程。
数据库系统曾被称为数据库原理,但在我接手之前发生了改变。这门课程的目标类似于其他高校的数据库原理或数据库系统概论课程,主要讲解数据库的基本概念、SQL语言以及应用开发等内容。这门课程主要面向计算机科学与软件工程领域的学生,而且从大二下学期开始开设。在课程体系的后续部分,会有更深入的课程。
其中一个重要的选修课程是数据库系统实现,虽然目前是选修,但是我在课程建设方面有所参与,经过对其他学校计算机专业培养方案的研究,我们发现本科阶段很少有开设数据库系统实现的课程。因此,我们选择在本科阶段开设这门课程,旨在探讨数据库系统的内部方法和数据库内核。课程内容包括《数据库系统实现》这本经典教材中的内容,主要涵盖数据库内核、优化器、执行器等方面的理论知识和实践。
该课程的对象范围相对广泛,计算机科学与软件工程的所有学生都可以选修。尽管技术难度较高,但是选择挑战的学生数量相对较少。在过去,课程主要侧重教授教材中的内容,然后进行笔试考核。随后,我们增加了实践环节,要求学生基于现有数据库进行改进,这增加了课程的难度。由于实践环节的加入,选课人数有所下降,但仍然有学生愿意挑战这门课程。
第二门课程是数据库内核技术,这门课程在硕士阶段作为选修课开设。它更加侧重于代码分析,学生会深入研究开源数据库的代码,特别是 PostgreSQL 和另一种分布式数据库。该课程主要面向计算机学院的专业硕士生,对于自由学习的硕士生而言,也是按照学制设置的。对于我们团队的学生来说,无论是专业硕士还是三年制硕士,都必须修读这门课程,因为我们的团队致力于数据库系统的研究。
总的来说,这是我们当前的主要课程体系。同时,过去还曾开设过一门博士生课程,名为数据库理论,这门课程主要讲解数据库的范式和相关理论,但由于课程难度较高,后来逐渐停止了开设。以上就是我们课程体系的概述。
接下来的部分涉及所谓的支线课程,这些课程在教育体系中是辅助性质的。支线课程包括各类小班教学,针对特定主题的课程。虽然这些课程在不同阶段的内容和主要知识点方面有相似之处,但教学方法和实践平台存在一些差异,同时教材和教学语言也有所区别。
举例来说,就拿技术和工程领域的课程来说,比如软件工程。这些课程与普通班级的课程有所不同。这种差异也为我们提供了一些机会,特别是对小班教学。这些小班实际上可以被视为试验场,因为相较于通常有两三百人的大班,小班能更容易进行教学实验和尝试新方法。
然而,一旦实验不成功,影响的范围将局限于8~10名学生,这使得这种尝试不太容易实施。但有了小班实验田,我们就有了一个探索新想法和方法的机会。需要强调的是,并不是将学生当作试验品,因为控制一个班级和控制十个班级的教学质量是截然不同的挑战。
举例来说,我们可以看看全英文的软件工程课程。尽管是全英文教学,但实际上在实践中,我们可能会采取双语教学的方式。这是因为并非所有学生都能适应完全用英文授课。因此,我们可能需要灵活调整教学方式。总之,这就是支线课程的基本情况。
接下来,我们将专注于本话题的主要部分。在前面的课程教学中,我们已经使用了一些国产和开源数据库来支持教学过程。现在,我将简要列举一下这些数据库,并根据我们的课程体系进行分类。在本科阶段的教学中,我们将内容分为两个主要阶段。首先,是关于数据库的使用和应用开发方面的内容。其次,涵盖了数据库内核的知识以及内核开发。
总体来说,我们的教学实验与其他高校在数据库课程中设置的实验环境相似。其中,一部分内容包括各种SQL操作,物化视图,索引等物理优化方法的实验。另一方面,学生需要完成一个大型项目,其中要求根据实际应用场景设计基于数据库的应用,可能是基于Web或移动设备的应用。这个项目涵盖了从数据库设计到编码再到最终优化的各个阶段。然而,由于时间有限,难以覆盖所有项目规模,因此重点是让学生理解如何设计表结构、物理结构以及应用开发。
值得注意的是,大多数学校在数据库教育中都面临时间有限的问题。由于本科生的学习时间减少,课程学时也减少。这使得我们难以在课堂上深入探讨更多内容,而只能涉及基本概念和原理。在这种情况下,在线上和线下教学相结合可能是一个有效的方式,让学生在慕课上学习基础知识,然后在课堂上深入探讨。
在实验方面,我们尝试过不同的方法。例如,在我们的软件工程数据库系统课程中,我们使用了PG社区版和欧高斯,并且将学生引导去从源码编译安装。由于不同老师的专业领域不同,我们并没有固定的实验环境要求。
此外,我们还与德哥德哥合作,尝试了使用Polo for PG来进行应用开发的工作。对于普通班级的数据库系统课程,由于班级数量较多,每个老师有自己的任课班级,因此实验环境的选择没有限制。
最后,我们得到了社区和华为项目的支持,获得了多项教育部协同育人项目的资助。我们已经取得了一些成果,例如基于Polo和PG编写的实验教材,以及关于数据库内核教学的视频。此外,我们还在教研性论文方面取得了一些成果。这些努力旨在提供更好的教育体验和教学内容,以适应不断变化的教育环境。
我们的重点和特色在于数据库内核开发。数据类型开发分为两个部分。在数据库系统实现中,无论是理工科、软件工程还是普通班的学生,都可以选择这门课程。唯一的区别在于,红一班的学生也会学习数据库系统实现,但教学方式和时间安排与普通班不同。关于数据库系统实现课程,有一个因素加剧了选课人数下降,即在2018年的培养方案中,将这门课程从理论讲授改为纯实践课程。这导致一些学生在没有接触过数据库系统实现课程的情况下,直接进行内核开发实践,进一步影响了选课情况。
目前这两门课程都是36学时,纯实践课程。我会在机房里指导学生进行实践工作。在教学方式方面,我们在普通班中多次尝试过不同的方法。
早期,我们以研究 PostgreSQL 为动机,因为我们的数据库基于一种新型的对象代理模型。在数据库系统实现中,我们尝试让学生使用 PostgreSQL 进行类似的扩展,添加他们的对象代理模型。然而,由于 PostgreSQL 复杂且庞大,修改时容易出错,因此尝试效果不佳。
后来,我们尝试从零开始构建小型数据库系统,支持多用户和 CS 模式的连接,并逐步增加功能,例如支持增删改查、索引、事务和并发控制。这种方法对学生来说更有挑战,因为需要涉及操作系统和编译原理等先修知识。
对于做数据库内核开发的企业或团队来说,我们为他们提供人才资源,即这些学生。他们可能更容易适应实际开发环境。此外,红一班的数据库系统实现课程侧重于嵌入式或移动式数据库系统的开发,具有一定的特殊性。
这两门课程的起源可以追溯到2006年。我们的目标是不仅让学生会用数据库,更要让他们会做数据库。虽然课程历史悠久,但在我支持下,我们一直努力推动数据库技术的发展,培养内核开发人才。
在实践中,我们已经培养了许多学生,他们在国内外的数据库厂商和开源项目中工作,为数据库内核做出了贡献。我们的成就体现在他们的工作和出版物上,如数据库内核分析和数据库源码解析两本书。
这些成就令人骄傲,也证明了我们的培养目标和方法的有效性。
在另一些领域中,我们也在使用国产和开源数据库来开展工作。另外,我在这方面需要说明一些内容。在协同育人项目中,我们与OB合作已有三个教育部协同育人项目,涉及合作范围较广。
预计不久后我们将迎来第四个项目。在教学产出方面,通过课程以及覆盖整个学校(不仅仅计算机学院)的通识课程《大数据导论》,我们成功将数据库相关内容嵌入其中。因此,我们在五大领域内培养了一百多位通过OC认证的学生。除了数据库课程组和数据库科研人员,还有其他一些团队也涉足了数据库相关内容。这些举措培养了众多能够熟练使用和应用OMA的师资。
通过这些核心课程,近年来学生在系统软件概念上也有所提升。实验室内从事数据库工作的学生人数显著增加,他们意识到数据库内核开发是有前景的行业。参与数据库内核竞赛的学生数量也明显增加。今年的系统能力大赛新增了数据库内核赛,基于CMU的框架进行,我们已有两支队伍进入了决赛,其中一支是初赛第一名。
此外,新的入围方式允许每所学校的第三支队伍外卡参赛。据我们了解,我们的队伍也已进入政策决赛圈,总共有五支队伍。我们期待在8月22号能够取得良好成绩。这些是一些杂项情况。
- 未来计划
一个主要问题是我们长期以来培养内核开发人才的目标。由于某些原因,在2018年,这个计划转变为一个纯粹的实践课程。这个转变限制了我们开展各种努力的能力。然而,当前的情况表明,领导层在我们的学术机构内非常强调系统软件,包括操作系统、编译器和数据库系统。提出的概念涉及为我们的计算机科学专业的毕业生提供设计几个关键系统的能力,包括自己的CPU芯片、操作系统、数据库系统和编译器。
幸运的是,这项努力得到了强有力的支持,使我们能够在2023年级开始实施。变化包括将数据库课程更名为“现代数据库系统”,将其转变为必修课程,课程时长为60至68个学时。这种较长的课程时长在高等教育机构中相对不常见。课程将包括56小时的理论教学和12小时的实验室实践。课程内容将融合数据库应用的研究和内部实现的重点,将之前分开的部分合并起来。
为了适应扩展后的课程,将采用传统和在线教学方法相结合的方式。基础理论概念将通过在线讲座进行讲解,而核心内容将集中在内核实现的深入解释上。实践部分将包括12个实验课程,将使用Polo和PostgreSQL环境进行,涵盖基本数据库操作的验证。
课程结构还将包括应用开发等相关任务。此外,课程的安排将调整为第六学期,利用学生在之前课程中获得的操作系统、网络和编译器原理的基础知识。此外,引入一个暑期学期将允许进行实际训练。
这一改进后的课程要求所有计算机科学专业的学生都参与内核开发。因此,每年参与内核实践的人数预计将在200到300人之间,为未来的工作提供了强大的人才储备。
教学方法将涵盖60个学时,大约为一个月的时间。在此期间,学生将使用现有的框架创建一个基本的数据库系统。MIB系统的转化将有助于这一实践性的任务。尽管数据库内核的核心保持不变,但将引入创新的问题类型,包括性能测试,以增强教学过程。
值得注意的是,尽管我们的教学方法在国家模板课程之前就已经存在,但我们的方法始终保持一致,与之无缝衔接。这种持续性使我们能够在2023年级开始这项计划。我们的愿景是培养更多国内人才,特别是在数据库内核研究和开发领域。




