我感兴趣的是学习数据库引擎如何工作(即它的内部 struct ).我知道CS中教的大多数基本数据 struct (树、哈希表、列表等),对编译器理论也有很好的理解(并实现了一个非常简单的解释器),但我不知道如何编写数据库引擎.我已经搜索了关于这个主题的教程,但没有找到,所以我希望其他人能给我指出正确的方向.基本上,我想了解以下信息:

  • 数据在内部的存储方式(即表格的表示方式等)
  • 引擎如何找到所需的数据(例如,运行SELECT查询)
  • 如何以快速高效的方式插入数据

以及可能与此相关的任何其他主题.它不必是磁盘上的数据库——即使是内存中的数据库也可以(如果更简单的话),因为我只想了解它背后的原理.

非常感谢你的帮助.

推荐答案

如果你擅长阅读代码,学习SQLite将教会你大量关于数据库设计的知识.它很小,所以更容易把你的头绕起来.但它也是专业写作的.

http://sqlite.org/

Sql相关问答推荐

带有双引号的json在Presto中是否有区别对待?

如何在SQL查询中只比较日期时间的年份和月份(而忽略日期比较)?

SQL使最终结果显示两个表后的所有数据(匹配和不匹配)?

当一个视图在Postgres中失效时?

最近3个月收到的邮箱总数

使用DatePart函数对日期时间值进行分组

在 Postgres 中将结果按几十年划分

从选定记录中提取摘要作为值的划分

如何判断小数点后千位是否不为0

将时间戳四舍五入到最近 10 分钟的查询

Postgres,使用 select 插入多个值

SQL Server中使用min()和max()从选定的特定值id表中删除不必要的时间

SQL 将 Varchar 转换为日期

SQL Server - 判断 ids 层次 struct 中的整数 (id)

如何根据 SQL Server 中 1 条语句中 SELECT 的结果进行 INSERT 或 UPDATE

Clob 问题 - 将 clob 列拆分为多行

计算 SQL 中的总体成功率:递归 CTE 还是替代方法?

在 BigQuery 数据集中查找表大小和占总数据集大小的百分比

Postgres 条件求和函数

创建一个将层次 struct 级别放入列中的查询