在最近的一篇文章中,我与 Dima Kassab 一起介绍了一项关于教授开源 NoSQL 数据库的倡议。我们合作为纽约州立大学奥尔巴尼分校信息学系的 22 名学生准备了三个 NoSQL 数据库的课程材料,并将所有这些材料以知识共享署名许可协议发布。
我们在第一节课中介绍了 MongoDB,在第二节课中介绍了 Neo4j。第三节课于 2012 年 11 月 13 日举行,重点介绍了 M 数据库——它在医疗保健和金融应用中的重要性,我在 之前的文章中讨论过。
这些数据库的顺序介绍受益于遵循相同的数据示例——如何管理电影数据库——因为它被建模以适应这些强大数据库中的每一个的框架。能够将这些数据库相互之间以及与关系数据建模方法进行对比非常有用。
- MongoDB:文档数据库
- Neo4j:图数据库
- M:分层数据库
命令行
在我们关于 MongoDB 的第一节课中,我们计划了基于命令行级别交互的动手练习。它们包括诸如 插入记录、查询和 更新等主题。由于许多这些练习都涉及到使用 JSON 表示法输入命令,我们发现练习所用的时间比我们最初预期的要多得多。这并不是对 JSON 格式的批评,实际上我们发现 JSON 格式对于学生来说非常直观且易于理解,而是观察到一个事实,即当我们需要输入大量的花括号、双引号、逗号和冒号时,所有这些都必须在正确的位置,大量的时间都花在了在屏幕上组成行上,而这种努力分散了学生对与数据库实际交互的注意力——这应该是练习的重点。
我们还发现学生不太熟悉命令行的使用。这个发现恰好是 OpenHatch 于 2012 年 4 月在 RPI 举办的开源研讨会 上讨论的一个话题,该研讨会由 OpenHatch 组织。我们发现,工程专业的学生不一定会被介绍到命令行的使用,不幸的是,他们花费了太多的时间与 GUI、IDE 以及最近的 Web 界面进行交互。这些最后的方式都很好……但是……“极客”应该了解命令行,以便精通并获得行业中的强大工具。学术界必须在这方面做些什么;我们的 ITK BarCamp 项目 正在为此做出一些努力。
命令行方面的分心影响了我们预期运行动手练习的速度,并消耗了我们最初为 TBL 小组讨论 分配的一些时间。
由于没有时间介绍关于命令行使用的专门培训,在第二节课中,当介绍 Neo4j 时,我们讽刺地专注于使用 Web 界面 来与数据库进行交互。在图数据库的情况下,我们发现 图形表示 非常有帮助,它可以显示图中节点和关系的当前状态。数据输入和简单查询也是通过 Web 界面中提供的 数据浏览器 完成的。对于高级查询,我们使用了 Web 界面中内置的 Gremlin 命令行。 Gremlin 允许我们编写针对非常有趣问题的查询,例如:“列出你的朋友的朋友喜欢的电影。”
服务器
提供一个服务器,供学生登录进行实践练习,结果出乎意料地困难。我们通过在 Amazon EC2 云中设置一台 Linux 机器来解决这个问题。并面临着基本安全实践阻碍培训的事实。
是的,我们意识到在生产环境中安全很重要,但是……这让我们希望有一个“黑客空间”服务器,学生可以在沙箱环境中工作,而无需处理密码和 ssh 密钥。这样,我们可以将学习重点放在数据库的无模式方面,而无需花费时间来确保每个人都获得服务器的访问权限。特别是考虑到服务器将是一次性的,仅用于课堂。
这种经验与我们在 RPI 的开源软件实践课程中进行实践工作时面临的挑战是一致的。需要“访问服务器”,用于学生工作,在这种情况下,可以牺牲安全性和结构来换取敏捷性和易于访问。
在公共数据库中工作
在所有课程(MongoDB、Neo4j 和 M)中,服务器都被有意设置为所有学生都向同一个数据库添加数据。这样做是为了让他们看到随着所有人的协同工作,数据是如何增长的。从展示真实数据库安装将不断收到来自许多不同用户的更新,以及数据不一致和重复等问题将自然而然地出现这一角度来看,这是成功的。与小组的协作也让人初步了解了大量参与者如何在开源社区中协同工作。
M,分层数据库(我们的第三节课)
M 和分层数据库概念 的介绍在第三节课中非常顺利。我们发现,一旦学生接触过 文档 和 图 范式,分层 范式就很容易吸收了。
在练习中,我们使用了 M 语言 的最少特性,并有意专注于区分语言——与 M 数据库本身的分层方面区分开来。
我们在第三节课中引入的主要变化之一是使用两个特定的 循序渐进的课程。这样做是为了回应以下观察结果:当我们期望学生在 80 分钟的课程中同时进行阅读和动手练习时,注意力会被分散。这种方法效果很好,因为课程让更多的时间专门用于直接与数据库交互。回顾来看,大部分教程阅读本可以纳入学生定期做的家庭作业中,为 TBL 课程做准备。这再次与 Salman Khan 在 可汗学院 中提出的方法一致,其中 家庭作业和课堂作业的角色被重新定义。
为什么选择开源
本课程选择使用开源数据库是基于以下原则:
- 这些数据库在工业界和政府部门得到广泛使用。
- 许可证允许我们出于学术目的不受限制地使用它们。
- 它们的安装和配置在课程讲师的能力范围之内。
- 学生可以随时访问它们,只需简单的安装即可。
当然,还有我们对开源和教育相辅相成、相互促进的承诺和信念。
今天,学术机构并没有像他们本可以的那样,充分利用开源项目在各处提供的强大资源。另一方面,开源社区也错失了吸引年轻聪明的大学生思维的机会,他们可以为开源项目做出巨大贡献。
总结
第四次也是最后一次课程于 11 月 15 日星期四举行,以总结本系列课程。学生们回顾了三个 NoSQL 数据库的概念,并评估了他们自己对课程的体验(更多信息即将推出)。
我们计划在 11 月底之前在 纽约州立大学 的另一个数据库课程中重复一些课程,并在 12 月第一周在 MBA 课程中重复一些课程。
对于春季学期,我们计划将带有 Web 前端的数据库概念纳入课程,因为它们是当今部署生产应用程序的常见方法。想想 LAMP 堆栈,例如。
这与 Salman Khan 在他的书中 发表的一些评论 产生了共鸣,这些评论涉及当前教育的人为分隔。这里有一个案例,Web 设计和数据库被作为两个单独的主题教授,尽管事实上在实践中它们通常作为一个通用应用程序的一部分一起部署。因此,有人可能会说,数据库课程和 Web 开发课程应该更紧密地结合在一起,以反映工程和商业实践的现实。
1 条评论