Skip to content

Commit 6cb0651

Browse files
digoal zhoudigoal zhou
authored andcommitted
new doc
1 parent bdfe3c0 commit 6cb0651

File tree

5 files changed

+214
-60
lines changed

5 files changed

+214
-60
lines changed

202201/20220110_04.md

Lines changed: 79 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,84 @@
1-
## 德说-第85期, 虚像=逻辑=基因=生命
2-
3-
### 作者
4-
digoal
5-
6-
### 日期
7-
2022-01-10
8-
9-
### 标签
10-
PostgreSQL , 虚像 , 逻辑 , 基因 , 生命 , 同一性 , 自组织
11-
12-
----
13-
14-
## 背景
15-
视频回放: https://www.bilibili.com/video/BV1WR4y1g7CL/
1+
## 德说-第85期, 逻辑与生命,因为相信所以"看见"
2+
3+
### 作者
4+
digoal
5+
6+
### 日期
7+
2022-01-10
8+
9+
### 标签
10+
PostgreSQL , 虚像 , 逻辑 , 基因 , 生命 , 同一性 , 自组织
11+
12+
----
13+
14+
## 背景
15+
视频回放: https://www.bilibili.com/video/BV1WR4y1g7CL/
16+
17+
逻辑是看不见摸不着的,但是这个世界只有逻辑是真实的.
18+
- 逻辑=基因=生命
19+
20+
是什么让集体的行为有了意识? 是什么让独立的个体能够组合成为虚拟集体生命?
21+
- 是逻辑!
22+
23+
专业术语 - 虚拟生命的2条法则:
24+
- 同一性的核心要素: 要求每个个体对同一性法则(逻辑)的绝对相信
25+
- 自组织涌现的核心要素: 要求附近个体之间的自主强连接
26+
27+
让人去相信无法证伪、无法证实的虚像, 相信看不见摸不着的逻辑, 是非常困难的事情:
28+
但是有句话你应该听过: 因为相信所以看见
29+
- 黄帝内经: 不信 - 阳虚
30+
- 黄帝内经: 存疑 - 阴实
31+
- 信仰信仰, 首先是信
32+
33+
还有我们的科学家发现的公理实际上也是先相信这个公理, 再去由后面的科学家去证实或者证伪.
34+
- 例如爱因斯坦先相信光速是绝对的, 时间是相对的. 而不是先测量出数据再得到这个结论.
35+
- 牛顿发现的万有引力公式, 这个公式本身也是逻辑.
36+
- 欧几里得先选择相信空间是平直的.
37+
38+
科学的现状就像《矩阵》里这个世界的虚拟设定:
39+
- 给你点希望, 好像通过努力就能过得更好.
40+
- 就好像拿个杆子, 绑个球, 绑在身体上, 你感觉跳起来就能购得到, 实际上永远够不到.
41+
- 如果你的目标是无穷大, 走100步和走100万步是一样的. 在系统内永远无法突破边界.
1642

17-
逻辑=基因=生命
43+
追述到源头是唯心,包括我们所说的科学,学科甚至一些商业公司的基石是唯心的 (先选择相信这些唯心的假设):
44+
- 托勒密的地心说的基石假设是地球是不动的, 创立地心说. (在那个时期人们无法测量地球动还是不动, 只是选择相信地球不动.)
45+
- 欧式几何的基石假设是空间是平直的, 创立了平面几何. (在那个时期人们无法测量甚至无法想象到空间什么样的, 只是选择相信空间是平直的.)
46+
- 经典力学的基石假设是时间是绝对的.
47+
- 诺基亚功能机的基石假设是手机都要有个键盘.
48+
- DEC的基石假设是计算机只有商用市场,所以它的产品做得死贵而且需要专业人士才能使用.
49+
- 常规火箭的基石假设是火箭都是一次性的,所以发射火箭的成本极高.
1850

19-
是什么让集体的行为有了意识? 是什么让独立的个体能够组合成为虚拟集体生命?
20-
- 是逻辑!
51+
每一次超越都是心的超越,也就是打破之前相信的边界(通过科学证伪,或者发现既定假设的漏洞或完美),建立新的边界, 例如:
52+
- 哥白尼打破地球是不动的假设, 创立了当时更先进的日心说.
53+
- 黎曼和罗巴切夫斯基打破空间是平直的假设, 创立了椭圆几何、双曲几何.
54+
- 爱因斯坦打破认为宇宙是可以用唯一公式解释的,万有引力和电磁学出现了逻辑失恰(无法他恰). 爱因斯坦认为时间并不是绝对的, 创立了基于光速是绝对的狭义相对论, 统一了电磁力和万有引力理论.
55+
- 实际上现在相对论和量子力学也出现了失恰, 科学家们依旧相信宇宙是可以用唯一公式解释的, 不同学科的理论应该能他恰, 所以又在发展弦理论来统一量子力学和相对论.
56+
- 苹果打破键盘的局限推出触摸屏手机.现在马斯克又在突破触摸输入的假设, 为什么电脑或手机一定要输入设备来与大脑意志通信, 从而创立了与大脑直接对接的芯片.
57+
- 苹果打破了计算机只能用作商用的局限, 推出了个人电脑.
58+
- 马斯克打破火箭只能用一次的假设, 发明了可回收火箭.
2159

22-
专业术语 - 虚拟生命的2条法则:
23-
- 同一性的核心要素: 要求每个个体对同一性法则(逻辑)的绝对相信
24-
- 自组织涌现的核心要素: 要求附近个体之间的自主强连接
25-
26-
让人去相信无法证伪、无法证实的虚像, 相信看不见摸不着的逻辑, 是非常困难的事情:
27-
但是有句话你应该听过: 因为相信所以看见
28-
- 黄帝内经: 不信 - 阳虚
29-
- 黄帝内经: 存疑 - 阴实
30-
- 信仰信仰, 首先是信
60+
参看《第一性原理》、《逻辑三恰: 自洽、他恰、续恰》。
3161

32-
还有我们的科学家发现的公理实际上也是先相信这个公理, 再去由后面的科学家去证实或者证伪.
33-
- 例如爱因斯坦先相信光速是绝对的, 时间是相对的. 而不是先测量出数据再得到这个结论.
34-
- 牛顿发现的万有引力公式, 这个公式本身也是逻辑.
35-
- 欧几里得先选择相信空间是平直的.
36-
37-
科学的现状就像《矩阵》里这个世界的虚拟设定:
38-
- 给你点希望, 好像通过努力就能过得更好.
39-
- 就好像拿个杆子, 绑个球, 绑在身体上, 你感觉跳起来就能购得到, 实际上永远够不到.
40-
- 如果你的目标是无穷大, 走100步和走100万步是一样的. 在系统内永远无法突破边界.
62+
推荐:
63+
- 圣经
64+
- 开悟者眼中的生命真相
65+
- 复杂
66+
- 必然
67+
- 第一性原理
68+
69+
70+
#### [期望 PostgreSQL 增加什么功能?](https://github.com/digoal/blog/issues/76 "269ac3d1c492e938c0191101c7238216")
71+
72+
73+
#### [PolarDB for PostgreSQL云原生分布式开源数据库](https://github.com/ApsaraDB/PolarDB-for-PostgreSQL "57258f76c37864c6e6d23383d05714ea")
74+
75+
76+
#### [PostgreSQL 解决方案集合](https://yq.aliyun.com/topic/118 "40cff096e9ed7122c512b35d8561d9c8")
77+
78+
79+
#### [德哥 / digoal's github - 公益是一辈子的事.](https://github.com/digoal/blog/blob/master/README.md "22709685feb7cab07d30f30387f0a9ae")
80+
81+
82+
![digoal's wechat](../pic/digoal_weixin.jpg "f7ad92eeba24523fd47a6e1a0e691b59")
83+
4184

42-
推荐:
43-
- 圣经
44-
- 开悟者眼中的生命真相
45-
- 复杂
46-
- 必然
47-
- 第一性原理
48-
49-
50-
#### [期望 PostgreSQL 增加什么功能?](https://github.com/digoal/blog/issues/76 "269ac3d1c492e938c0191101c7238216")
51-
52-
53-
#### [PolarDB for PostgreSQL云原生分布式开源数据库](https://github.com/ApsaraDB/PolarDB-for-PostgreSQL "57258f76c37864c6e6d23383d05714ea")
54-
55-
56-
#### [PostgreSQL 解决方案集合](https://yq.aliyun.com/topic/118 "40cff096e9ed7122c512b35d8561d9c8")
57-
58-
59-
#### [德哥 / digoal's github - 公益是一辈子的事.](https://github.com/digoal/blog/blob/master/README.md "22709685feb7cab07d30f30387f0a9ae")
60-
61-
62-
![digoal's wechat](../pic/digoal_weixin.jpg "f7ad92eeba24523fd47a6e1a0e691b59")
63-

202201/20220111_01.md

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
## 一起学PolarDB - 第14期 - 为什么SQL不能动态分组计算?
2+
3+
### 作者
4+
digoal
5+
6+
### 日期
7+
2022-01-11
8+
9+
### 标签
10+
PostgreSQL , PolarDB
11+
12+
----
13+
14+
## 背景
15+
懂PostgreSQL, 学PolarDB不难, 就好像有九阳神功护体, 可以快速融会贯通.
16+
对于DBA只要学会PolarDB精髓即可.
17+
对于开发者来说不需要学习, 使用PolarDB和PostgreSQL一样.
18+
19+
#### 为什么SQL不能动态分组计算?
20+
21+
社区版本:
22+
Greenplum, 表的数据必须hash分布在所有计算节点中. (使用DISTRIBUTED REPLICATED的复制表除外)
23+
- 查询时, 所有节点都要参与计算. (含分区键条件的查询、使用DISTRIBUTED REPLICATED的复制表的查询除外.)
24+
25+
citus, pg-xc 可以创建节点分组, 然后将表的数据分布在指定的分组内.
26+
- 查询时, SQL中涉及的表所在的分组包含的计算节点需要参与计算. (含分区键条件的查询、复制表的查询除外.)
27+
- 如果遇到跨分组表JOIN(JOIN 的表分布在不同的逻辑分组内), 无法使用多阶段优化( [《HybridDB PostgreSQL "Sort、Group、distinct 聚合、JOIN" 不惧怕数据倾斜的黑科技和原理 - 多阶段聚合》](../201711/20171123_01.md) ), 必须跨多个分组重分布数据, 造成大量网络开销.
28+
29+
```
30+
pg-xc:
31+
32+
CREATE NODE GROUP cluster_group WITH Datanode1, Datanode2;
33+
34+
[
35+
DISTRIBUTE BY { REPLICATION | ROUNDROBIN | { [HASH | MODULO ] ( column_name ) } } |
36+
DISTRIBUTED { { BY ( column_name ) } | { RANDOMLY } |
37+
DISTSTYLE { EVEN | KEY | ALL } DISTKEY ( column_name )
38+
]
39+
[ TO { GROUP groupname | NODE ( nodename [, ... ] ) } ]
40+
```
41+
42+
```
43+
citus:
44+
45+
tables - distributed by column 记录映射到 shards
46+
shards 映射到 nodes
47+
多表shard对齐 : colocate tables shards
48+
```
49+
50+
哪些分组将会参与计算? 取决于建表时的指定, 不管怎么指定, 数据分布都是静态对应到某些节点的.
51+
- 每个分组中的每个节点只包含了部分数据.
52+
- 计算通常需包含所有节点(以greenplum为例)
53+
54+
shared nothing数据库在多节点计算方面存在什么可改进点?
55+
- 所有节点都参与计算, 一个大的SQL查询容易把资源打满, 影响其他查询性能, RT抖动比较严重.
56+
- Greenplum通过resource group来隔离资源, 尽量减少这样的影响
57+
- 网络开销较大, 指PG-XC, 如果遇到跨分组表JOIN(JOIN 的表分布在不同的逻辑分组内), 无法使用多阶段优化, 必须跨多个分组重分布数据, 造成大量网络开销.
58+
59+
60+
PolarDB:
61+
所有节点(RW, RO)共享一份存储, 当SQL需要用到多节点并行计算能力时, 可以多个实例共同出力(包括RW, RO), 出力是动态的, 所以可以满足SQL动态分组计算的前提.
62+
- 可以多少个节点处理?
63+
- 可以所有节点, 也可以指定某些节点.
64+
- 可以每个节点出多少力?
65+
- 每个节点分配多少个work都可以动态配置.
66+
67+
为什么PolarDB满足SQL动态分组计算的前提?
68+
- 所有节点共享一份数据, 任意节点想出力都行, 不需要跨节点传输数据, 不存在shared nothing的弊端.
69+
- 任意节点可以组合成1组gang (动态指定一批计算节点处理某一个SQL, 业务区分. sql hint、guc)
70+
71+
![pic](20220111_01_pic_001.png)
72+
73+
PolarDB SQL动态分组计算的典型应用场景:
74+
- 不同业务域的SQL同时跑在不同的节点集合上, 物理上隔绝干扰. (存储层是分布式块存储, 为所有PolarDB集群服务, 理论上可以认为是无限大、无限能力, 可以认为不存在存储层瓶颈)
75+
- HTAP 分时混合业务场景, 例如白天OLTP, 晚上T+1数据分析. 白天可以使用读写分离, 处理高并发小事务. 晚上可以用MPP特性, 调动所有节点的算力, 加速处理分析型SQL请求.
76+
- 节点级动态算力分配: 当某个节点负载较高时, 可以给这个节点分配较少的算力.
77+
78+
本期问题1:
79+
为什么shared nothing架构无法实现动态的节点算力调度?
80+
- a. shared nothing数据库的分布算法是hash算法.
81+
- b. shared nothing数据库需要每个节点参与计算, 使得每一次SQL查询都可以用到所有计算能力.
82+
- c. shared nothing数据库每个节点只能访问本地数据, 除了带分布键的查询或复制表的查询以为, 其他的查询都需要所有节点的参与, 无法动态调动指定节点参与.
83+
- d. shared nothing数据库的存储分布在所有的计算节点, 每一次SQL查询都需要访问所有计算节点, 才能访问到完整的数据.
84+
85+
答案:
86+
- c
87+
88+
解释:
89+
- 参考本文内容
90+
91+
本期问题2:
92+
为什么PolarDB可以实现动态的节点算力调度?
93+
- a. 共享数据, 任意节点都能访问完整的数据, 都可以参与计算
94+
- b. 支持类似MPP 的SQL优化器, 可以让多个计算节点参与计算
95+
- c. 支持通过HINT或参数控制每条SQL调动的算力
96+
- d. 查询时, 通过数据重分布实现跨节点动态计算
97+
98+
答案:
99+
- abc
100+
101+
解释:
102+
- 参考本文内容
103+
104+
本期问题3:
105+
动态的节点算力调度有什么益处?
106+
- a. 隔离不同的业务域, 不同业务域可以使用不同的节点分组进行计算
107+
- b. 每个节点都可以动态分配算力, 避免某些节点成为瓶颈(短板)
108+
- c. 适合混合负载, 白天oltp, 夜晚htap
109+
- d. 在需要时, 投入更多算力提高性能
110+
111+
答案:
112+
- abcd
113+
114+
解释:
115+
- 参考本文内容
116+
117+
118+
#### [期望 PostgreSQL 增加什么功能?](https://github.com/digoal/blog/issues/76 "269ac3d1c492e938c0191101c7238216")
119+
120+
121+
#### [PolarDB for PostgreSQL云原生分布式开源数据库](https://github.com/ApsaraDB/PolarDB-for-PostgreSQL "57258f76c37864c6e6d23383d05714ea")
122+
123+
124+
#### [PostgreSQL 解决方案集合](https://yq.aliyun.com/topic/118 "40cff096e9ed7122c512b35d8561d9c8")
125+
126+
127+
#### [德哥 / digoal's github - 公益是一辈子的事.](https://github.com/digoal/blog/blob/master/README.md "22709685feb7cab07d30f30387f0a9ae")
128+
129+
130+
![digoal's wechat](../pic/digoal_weixin.jpg "f7ad92eeba24523fd47a6e1a0e691b59")
131+

202201/20220111_01_pic_001.png

37.9 KB
Loading

202201/readme.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33
### 文章列表
44
----
5-
##### 20220110_04.md [《德说-第85期, 虚像=逻辑=基因=生命》](20220110_04.md)
5+
##### 20220111_01.md [《一起学PolarDB - 第14期 - 为什么SQL不能动态分组计算?》](20220111_01.md)
6+
##### 20220110_04.md [《德说-第85期, 逻辑与生命,因为相信所以"看见"》](20220110_04.md)
67
##### 20220110_03.md [《一起学PolarDB - 第13期 - 为什么木桶有短板?》](20220110_03.md)
78
##### 20220110_02.md [《github star趋势》](20220110_02.md)
89
##### 20220110_01.md [《一起学PolarDB - 第12期 - 为什么增加只读实例不能提高单条SQL的执行速度?》](20220110_01.md)

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,8 @@ digoal's|PostgreSQL|文章|归类
8787

8888
### 所有文档如下
8989
----
90-
##### 202201/20220110_04.md [《德说-第85期, 虚像=逻辑=基因=生命》](202201/20220110_04.md)
90+
##### 202201/20220111_01.md [《一起学PolarDB - 第14期 - 为什么SQL不能动态分组计算?》](202201/20220111_01.md)
91+
##### 202201/20220110_04.md [《德说-第85期, 逻辑与生命,因为相信所以"看见"》](202201/20220110_04.md)
9192
##### 202201/20220110_03.md [《一起学PolarDB - 第13期 - 为什么木桶有短板?》](202201/20220110_03.md)
9293
##### 202201/20220110_02.md [《github star趋势》](202201/20220110_02.md)
9394
##### 202201/20220110_01.md [《一起学PolarDB - 第12期 - 为什么增加只读实例不能提高单条SQL的执行速度?》](202201/20220110_01.md)

0 commit comments

Comments
 (0)