SQL相关和流批处理相关 | 青训营笔记
这是我参与「第四届青训营」笔记创作活动的第1天。
1 相关概念
1.1 批式计算与流式计算的对比
流式计算:类比水龙头,数据源源不断的往下“流”。对数据流进行处理,是实时计算。
批量计算:统一收集数据,存储到数据库中,然后对数据进行批量计算的数据计算方式。也叫批量计算。(简单而言就是先把数据收集起来再进行处理)
| 对比 | 流式计算 | 批式计算 |
|---|---|---|
| 数据时效性 | 实时、低延迟 | 非实时、高延迟 |
| 数据特征 | 动态,没有边界 | 静态 |
| 应用场景 | 时效性要求较高,比如实时推荐、业务监控 | 时效性较低,可离线计算,如数据分析、离线报表 |
| 运行方式 | 任务持续进行 | 任务一次性完成 |
低延迟是因为流式计算数据量相对较小。
1.2 SQL基本符号概念
1.2.1 选择
选择运算是选择关系中行的子集,即选择满足条件的对应行的元素。符号:σ
1.查询信息系(IS系)全体学生 σ Sdept=‘IS’(Student) 2.查询年龄小于20岁的学生 σ Sage<20(Student)
1.2.2 投影
投影是选取关系中列的子集。投影的结果不是原来的关系,是X中的几列属性。符号:π
投影结果中不应该包含重复行。
例子:查询学生关系Student中都有哪些系,即查询关系Student上所在系属性上的投影 Student关系如图所示:
| Sname | Sdept |
|---|---|
| 李勇 | CS |
| 刘晨 | CS |
| 王小明 | MA |
| 张超 | IS |
求 : π Sdept(Student)
答:因为Student关系原来有4个元组,但是我们的投影结果需要取消重复的CS元组,因此投影结果只有三个元组:
| Sdept |
|---|
| CS |
| MA |
| IS |
1.2.3 连接
连接:分为自然连接和等值连接。连接也称为θ连接。它是从两个关系的笛卡尔积中选取属性间满足一定条件的元组。
(θ为比较符: >,<,≥,≤,=,≠)
等值连接和自然连接的区别:自然连接去除了重复的属性列。
例题:求R和S的自然连接,等值连接,以及非等值连接R[C<E]S 的结果。
答:
R:
| A | B | C |
|---|---|---|
| a1 | b1 | 5 |
| a1 | b2 | 6 |
| a2 | b3 | 8 |
| a2 | b4 | 12 |
S:
1.3 编译原理相关
1.3.1 词法分析
英文:Lexical analysis或Scanning
编译过程的第一个阶段。这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号)。词法分析程序实现这个任务。词法分析程序可以使用lex等工具自动生成。(就好比学英语的时候判断出这个词是主语、谓语还是宾语)
token介绍:
二元组token格式: <种别码,属性值>
1.3.2 语法分析
语法分析是编译过程的一个逻辑阶段。语法分析的任务是在词法分析的基础上将单词序列组合成各类语法短语,如“程序”,“语句”,“表达式”等等(类比英语,就是分析这个句子的语法规则,比如主谓宾结构还是主谓双宾结构还是主谓结构)。语法分析程序判断源程序在结构上是否正确.源程序的结构由上下文无关文法描述。
1.3.3 语义分析
语义分析是编译过程的一个逻辑阶段。语义分析的任务是对结构上正确的源程序进行上下文有关性质的审查,进行类型审查。(就好比英语中的检查是否符合我们理解意思的习惯,比如山东话知不道对于其他省的人就听不懂,虽然它符合语法规则,只是举例,有可能不恰当哈)
例如一个C程序片断:
int arr[2], b;
b = arr * 10;
源程序的结构是正确的。语义分析将审查类型并报告错误:不能在表达式中使用一个数组变量,赋值语句的右端和左端的类型不匹配。
参考文章:
https://blog.csdn.net/Candle_light/article/details/84424034
https://blog.csdn.net/cprimesplus/article/details/105724168
https://www.cnblogs.com/BlogNetSpace/p/5108845.html
https://blog.csdn.net/qq_36535820/article/details/104531603
\