我正在考虑实施 RDBMS。关于数据库如何在内部工作,以及在开始构建自己的数据库时我需要了解哪些方面的信息,是否有任何好的资源?(请不要评论这是否是一个实用的想法 - 只是想象它是为了一个爱好项目或其他东西)。
再次 - 对 RDBMS 设计感兴趣,而不是数据库设计。效率非常重要(如果我不关心速度,设计某种关系数据库之类的结构似乎相当容易)。
那里有一些关于这类东西的教科书,当我在大学时,我们为一个班级项目做了这个。这本书应该对你的数据库系统:全书有所帮助
我忘了提,但我的代码在 googlecode 上:cs4420-dbase
请原谅它是用 java 编写的,但我的队友在这个决定上投票超过了我。但是基本的想法都还在。它处理文件创建和处理以及简单的 SQL 解析器和优化器。它处理基本索引(b-tree)和“内存”管理。请原谅一些缺乏评论和奇怪的评论,许多深夜都花在了那个项目上。
我建议从Introduction to Database Systems and Transactional Information Systems开始。他们都应该有参考书目来带你走得更远。
构建 RDMS 并非易事,您需要将多个领域的经典 CS 知识与有关硬盘驱动器、操作系统细节、文件系统、内存、cpu、缓存的深入知识相结合,以提高效率。
我们需要阅读的一篇关于架构的好文章是:
http://www.nowpublishers.com/product.aspx?product=DBS&doi=1900000002
关于数据库的理论知识我建议买一本关于这个主题的书,我只能谈谈我为此使用的书,即 Kifer、Bernstein 和 Lewis 的 Database Systems an Application-Oriented Approach。
您可能想查看一些开源数据库以获取想法。
我最近遇到了同样的问题,和其他人一样,我很难找到一本有助于从头开始构建实际 RDBMS 的书(当然是最小的)。与其他 CS 领域(操作系统、编译器等)发生的情况相反;数据库领域在这方面的资源似乎较少。可能是因为 RDBMS 是最难掌握和实施的;-|
尽管如此,我终于找到了一个令人满意的答案。Sciore 的书《数据库设计与实现》:
http://www.wiley.com/WileyCDA/WileyTitle/productCd-EHEP000711.html
前两部分专门用于学习使用您可能已经知道的 RDBMS。但最后两部分涵盖了实现细节;有趣的是,一个最小的RDBMS(SimpleDB)用于说明概念,也可以作为进行编程练习的平台。Wiley 网站有一句名言说得更好:
“附带 SimpleDB,这是一个免费下载、功能齐全的简化数据库系统,它(与商业数据库系统不同)体积小、易于阅读且易于修改。SimpleDB 可用作学生完成作业项目和实施概念的平台书中记载。”
不要为示例 RDBMS 是用 Java 编写的事实而烦恼;这具有隐藏在 C/Unix 中实现的低级细节的优势(恕我直言)。如果您像我一样来自应用程序世界,那么您可能对系统编程的东西不熟悉;但是学习像 Java 这样的高级语言中的 RDBMS 实现概念,可以作为过渡的良好桥梁。
Wiley 网站允许购买该书的电子版,但无论您购买,源代码都可用。我不能发布两个以上的链接,但只需 google 这个词(包括双引号),你会很容易找到 SimpleDB 主页(在那里你可以下载它):
“SimpleDB 数据库系统”
如果您不确定是否要购买这本书(与其他核心 CS 书籍一样,对学生来说并不便宜);也许您可以开始阅读代码和这篇介绍性文章:
http://www.cs.bc.edu/~sciore/papers/SIGCSE07.pdf
如果您觉得它很有吸引力,那么购买这本书可能是一项不错的投资。
希望有帮助,干杯。