diff --git a/ch02.md b/ch02.md index 3128785..74beaeb 100644 --- a/ch02.md +++ b/ch02.md @@ -1,4 +1,4 @@ - # DDIA 逐章精读(二):数据模型和查询语言 +# DDIA 逐章精读(二):数据模型和查询语言 # 概要 @@ -264,9 +264,10 @@ SELECT * FROM animals WHERE family = 'Sharks'; | 解耦程度 | 与实现解耦。
可以持续优化查询引擎性能; | 与实现耦合较深。 | 解析执行 | 词法分析→ 语法分析 → 语义分析
生成执行计划→ 执行计划优化 | 词法分析→ 语法分析 → 语义分析
中间代码生成→ 代码优化 → 目标代码生成 | | 多核并行 | 声明式更具多核潜力,给了更多运行时优化空间 | 命令式由于指定了代码执行顺序,编译时优化空间较小。 | -- Q:相对声明式语言,命令式语言有什么优点? - 1. 当描述的目标变得复杂时,声明式表达能力不够。 - 2. 实现命令式的语言往往不会和声明式那么泾渭分明,通过合理抽象,通过一些编程范式(函数式),可以让代码兼顾表达力和清晰性。 + +> Q:相对声明式语言,命令式语言有什么优点? +> 1. 当描述的目标变得复杂时,声明式表达能力不够。 +> 2. 实现命令式的语言往往不会和声明式那么泾渭分明,通过合理抽象,通过一些编程范式(函数式),可以让代码兼顾表达力和清晰性。 ## 数据库以外:Web 中的声明式 @@ -454,6 +455,7 @@ db.observations.aggregate([ | 入边集合 | 终止点 | | 属性集(kv 对表示) | 属性集(kv 对表示) | | 表示点类型的 type? | 表示边类型的 label | + - Q:有一个疑惑点,为什么书中对于 PG 点的定义中没有 Type ? 如果数据是异构的,应该有才对;莫非是通过不同的属性来标记不同的类型?