本课程主要介绍数据结构原理,内容有:
1. 绪论;
2. 三种主要数据模型;
3. 关系数据库标准语言、关系系统及其查询优化;
4. 关系数据理论;
5. 数据库设计;
6. 数据库维护;
7. 数据库管理系统;
8. 分布式数据库系统;
9. 计算机网络的安全等。
首先你要理解SQL并写一个SQL的编译器。本来tokenizer和parser两部分就可以够程序员撕逼了,你还需要写一个你不知道文法(别看了,那书里绝对没有文法)的编译器。这块如果你没学过编译原理,我很好奇你需要怎么实现,甚至怎么寻找或设计文法到实现编译器的前端。
第二,你需要了解关系模型,并实现关系模型的存储。你需要对数据结构,其中最核心的是B+树索引和Hash索引,重点是实现他们在磁盘上的版本。由于磁盘的存储方式和内存不一样,你需要针对磁盘的存储进行特殊的处理。
第三,你需要实现查询引擎。查询引擎的原理是将SQL转换成一系列关系代数操作符组成的操作树。之前你已经实现了这个查询引擎,也就是SQL编译器的前端。现在你需要理解关系代数,并实现关系代数操作符。并实现一个类似于解释器,或者叫调度器的工具,将关系操作树给依次执行。其中关系代数操作符里最麻烦的就是join操作,因为join操作有好几种join算法。如果需要的话,你还需要实现查询优化引擎。查询优化引擎姑且算是一个抽象的黑盒子,里面需要用到一些启发式的高级算法,需要你对动态规划和树遍历等等算法有了解。同时在cost estimation的部分需要从历史数据中估算cost,往大了说还是统计学和机器学习呢。
第四,你需要实现事务和恢复(回滚)机制,这是数据库最重要的功能之一。事务的话需要各种锁的机制实现,而回滚需要有完善的日志系统。这两部分需要大量的工作量和对操作系统有深入的了解。
第五,你最好还要实现一个api。这就是把socket通信封个包的苦力了。
我很好奇150天中你要各分配给上面的东西多少天。举个例子,阿里一堆“大神”做oceanbase,当然transaction和存储复杂多了,用了四年。今年图灵奖得主michael stonebraker的学生做的voltdb的原型,接近十个人做一年。
我本科并没有实现一个数据库就毕业了。当时也是看着大神们说什么撸一个数据库感到各种膜拜。现在我回过头来反思,一个人撸一个数据库到底是不是一件很有意义的事情,而且也完不成。几个人一起分工各做一部分姑且能勉强完成任务。诚然,如上文所讲,还不完全(我没撸过数据库,所以上面讲的并不能如数家珍),数据库作为一个计算机软件是包含了计算机科学里许多模块的一个十分综合的软件系统。对数据库的学习可以延展到对算法与数据结构,编译器,计算理论,操作系统等等方方面面的学习,是非常好的一件事。同时做一个数据库一定需要对这些多方面的知识有着十分详细的了解才能做到游刃有余。这些绝对不是,也没必要是,一个大学低年级同学应该做到的。甚至不是大部分工程师应该做到的。因为工程师的业务绝大部分人涉及不到这么多方面,尤其是编译器部分。
实在不明白你想知道什么,就大概说下吧。
数据库有好多,比如sql server,oracle,mysql,access,db2等等,这些是常用的,据我所知,大学里用到的,一般是access和mysql,主要的还是access多点吧,但是如果工作了,oracle绝对是主流,其次,sql server,db2,sql server也是很多公司用的!
邮件系统我不知道你说的是什么,一般的公司的话都有自己的邮箱,但我在学校的时候没怎么用过什么所谓的学校邮件!
杀毒软件就看你自己了啊,喜欢什么用什么呗,比如360,金山等等!
还有要问的,就留言吧!
版权声明:我们致力于保护作者版权,注重分享,被刊用文章【大学计算机专业里的《数据库》课程主要有什么内容?】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!;
工作时间:8:00-18:00
客服电话
电子邮件
beimuxi@protonmail.com
扫码二维码
获取最新动态