peloton - CMU advanced database systems, 2018

第一讲 讲历史

如果你懂得写db代码,可以说你会写任何领域的代码

只讲单机的,不讲分布式的

上一期有人抱怨课程过于简单,于是他决定这期将重点谈query code generation,利用LLVM动态生成代码;

要求的背景:上过database基本课程;将会讲一些适用于现代硬件的算法变种如radix join, 所以最好对hash join等 有基本了解;
本期课程也不会sql, serializability theory, relational algebra, basic algorithms & data structures

引入了2篇论文,其中一个是红皮书里的:

  • What goes around comes around
  • What’s really new with NewSQL

这2篇的takeaway 就是现在的数据库概念大多来自早期,并不是很新的东西。
所以我们在讨论的中只是modern implementations or incarnations of them,要说区别就是硬件不一样了

关系模型

从networked data model -> hierarchical model -> relational model (Ted Codd, IBM 数学家)
image.png

image.png

对象数据库

在1980s时,有人觉得关系与对象有些不匹配,每次都得把对象分解成关系,所以有了object databases; 但是他们没有成功,有些是专有的,有些是没有开放的标准。
但是今日我们常用的xml, json 等风格的技术非常类似于对象数据库,这也正如 Mike 所说,what goes around comes around. (历史总是惊人的相似)
image.png

对象数据库举例:可以把Student 对象封装成一个json
但是这里面的问题,查询复杂,且没有标准(不像SQL,有规范的语言)
image.png

到了 1990s年代,db 理论没有非常大的成果,但是有不少的产品出现 ,
image.png

Middleware & warehouse

2000s时,公司开始开发中间件来对多个单机 db 实例进行分片
mid 2000s,又有了分析型的data warehouse(列式存储、闭源)出现,
image.png

NoSQL

late 2000s, NoSQL 兴起。 比起正确性更看重可用性,和扩展性
image.png

NewSQL

在 2010s时,就有了NewSQL,既要有可用性,又要有事务
image.png

HTAP

in the later of 2010s, db趋势是向HTAP发展,
image.png

云原生

image.png

共享存储

image.png

图数据库

Andy 以前一直不谈图数据库,因为有研究表明没有compelling 理由说用图数据库一定能比用关系型db 要好
image.png

时序db

对数据分布和workload query pattern 有假设

专有系统

image.png

有很多很多db
image.png

历史上,有这样的特点:学术界写出论文,但由于资源有限,无法付诸于一个实际系统,然后过几年后,工业界公司有人看论文后,把它实现了 (这段话在 18年的课程里他说过)

第2课 In-memory databases

历史上 DBMSs的发展其实都是在处理硬件资源有限的问题

如果给传统的DBMS配以足够的buffer pool,是否可匹敌in-memory db 呢? 答案是不可以,因为前者将会有很多无效操作,如映射tuple 到memory, 需要pin page等;

steal
no-force

cmu advanced database systems(spring 2019)

https://15721.courses.cs.cmu.edu/spring2019/schedule.html

https://www.youtube.com/watch?v=m72mt4VN9ik&list=PLSE8ODhjZXja7K1hjZ01UTVDnGQdx5v5U&index=1

cmu intro to db (fall 2019)

https://www.youtube.com/watch?v=oeYBdghaIjc&list=PLSE8ODhjZXjbohkNBWQs_otTrBTrjyohi

用的教材是数据库系统概念第7版
基于BusTub,一个学术版的DBMS

讲到了flat files的实现,比如一个简单的csv文件,装着歌手和唱片的信息,每一次查询都要扫整个文件;
且当不同应用都要访问它时,应用都得写相同的访问逻辑,若语言不一样,还得写多套

cmu advanced (spring 2020)

https://www.youtube.com/watch?v=SdW5RKUboKc&list=PLSE8ODhjZXjasmrEd2_Yi1deeE360zv5O&index=1