从零写数据库系列-背景知识
背景
1970 年,IBM的研究员Edgar Frank Codd (TED) 发表了《A Relational Model of Data for Large Shared Data Banks》,这篇论文首次提出了关系模型。
1972年,TED 又提出了关系大事和关系演算的概念。
1974年,IBM的Ray Boyce和Don Chamberlin提出了SQL(Structured Query Language)语言。
有了关系模型和关系代数的理论基础,又有了SQL 这种语言来表达。那么我们可以开始设计数据库系统了。
在关系模型提出后,出现过两个著名的产品,System R 和 Ingres。Ingres使用的是一种叫做 QUEL 的语言,System R使用的就是早期的 SQL。由于 SQL 成为了 ANSI 的标准,所以QUEL 成为了历史。
有了这些历史背景,现在可以谈谈SQL的执行流程了。
Parser
词法(lexing),语法(syntax)。
Analyzer
语意(Semantic)。绑定,类型检查。
Planner
System R优化器第一次提出了自底向上的动态规划搜索策略,影响了后续的很多系统。另一个创新点在于提出来基于cost-based的优化方法,如何根据sargable条件计算selective,增加了interesting order属性来对访问方法(Access Path)进行影响。
Volcano/Cascades
Cascades 的实现,orca,cockroachdb。
1 | func (s *scope) endAggFunc(cols opt.ColSet) (g *groupby) { |