Skip to content

Commit d75e05f

Browse files
digoal zhoudigoal zhou
authored andcommitted
new doc
1 parent 956b141 commit d75e05f

File tree

9 files changed

+1233
-2
lines changed

9 files changed

+1233
-2
lines changed

202101/20210120_01.md

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
## PostgreSQL sharding 分库分表 插件 citus - 开源企业版功能 - cigration citus+migration - 扩容、缩容、替换节点
2+
3+
### 作者
4+
digoal
5+
6+
### 日期
7+
2021-01-20
8+
9+
### 标签
10+
PostgreSQL , sharding , citus , migration , 扩容 , 缩容 , 替换节点
11+
12+
----
13+
14+
## 背景
15+
感谢sn
16+
17+
https://github.com/cloud-sn2/cigration
18+
19+
https://github.com/citusdata/citus
20+
21+
cigration是一个由一系列工具函数组成的PostgreSQL扩展,主要用于执行Citus的在线分片迁移,可用于Citus集群扩容和缩容场景。cigration是Citus + migration的拼写。当前cigration处于beta阶段。
22+
23+
## 1. 使用场景
24+
Citus的分片表由CN上的一个逻辑表和分布在各个Worker上的若干分片组成,当进行集群扩缩容等操作时,可以通过迁移分片来实现。
25+
26+
![pic](20210120_01_pic_001.png)
27+
28+
具体支持的场景和操作步骤如下
29+
30+
### 1.1 扩容
31+
32+
1、添加新的worker节点到Citus集群
33+
2、从既有worker节点迁移部分分片到新worker节点,实现分片部署均衡
34+
35+
### 1.2 缩容
36+
37+
1、从将被缩容掉的Worker迁出分片
38+
2、从Citus集群删除Worker
39+
40+
### 1.3 Worker节点替换
41+
当需要用新机器替换掉某个Worker时,也可以通过迁移分片实现。比如某个Worker节点的机器故障频发需要替换。
42+
43+
1、添加新的worker节点到Citus集群
44+
2、把准备下线的Worker节点上所有分片都迁移到新加入的Worker
45+
3、从Citus集群删除准备下线的Worker
46+
47+
## 2. 技术原理
48+
cigration的主要功能就是在Citus Worker节点间在线迁移分片,迁移过程中产生的更新通过逻辑订阅机制进行同步。单个分片的迁移过程如下
49+
50+
![pic](20210120_01_pic_002.png)
51+
52+
为了确保迁移不破坏分片表的亲和关系,互相亲和的一组分片需要同时迁移。
53+
54+
另外,对一次扩容或者缩容作业,需要迁移大量分片,如果人工一个分片一个分片迁移是非常繁琐的,cigration简化了这些操作。迁移时首先会对一个扩容或者缩容作业生成所需的若干迁移任务,每个迁移任务是最小的分片迁移单位,包含一组互相亲和的分片。然后通过调度这些迁移任务最终完成扩容或者缩容作业。
55+
56+
迁移过程中,每个分片迁移任务的状态变化如下所示
57+
58+
![pic](20210120_01_pic_003.png)
59+
60+
注:上图的sn_前缀实际应该是cigration_前缀
61+
62+
对于中途出错的任务,可以通过调用函数cigration_shard_migration_env_cleanup(),将其变回到初始的init状态,再继续执行。
63+
64+
65+
66+
#### [PostgreSQL 许愿链接](https://github.com/digoal/blog/issues/76 "269ac3d1c492e938c0191101c7238216")
67+
您的愿望将传达给PG kernel hacker、数据库厂商等, 帮助提高数据库产品质量和功能, 说不定下一个PG版本就有您提出的功能点. 针对非常好的提议,奖励限量版PG文化衫、纪念品、贴纸、PG热门书籍等,奖品丰富,快来许愿。[开不开森](https://github.com/digoal/blog/issues/76 "269ac3d1c492e938c0191101c7238216").
68+
69+
70+
#### [9.9元购买3个月阿里云RDS PostgreSQL实例](https://www.aliyun.com/database/postgresqlactivity "57258f76c37864c6e6d23383d05714ea")
71+
72+
73+
#### [PostgreSQL 解决方案集合](https://yq.aliyun.com/topic/118 "40cff096e9ed7122c512b35d8561d9c8")
74+
75+
76+
#### [德哥 / digoal's github - 公益是一辈子的事.](https://github.com/digoal/blog/blob/master/README.md "22709685feb7cab07d30f30387f0a9ae")
77+
78+
79+
![digoal's wechat](../pic/digoal_weixin.jpg "f7ad92eeba24523fd47a6e1a0e691b59")
80+

202101/20210120_01_pic_001.png

Lines changed: 1 addition & 0 deletions
Loading

202101/20210120_01_pic_002.png

Lines changed: 931 additions & 0 deletions
Loading

202101/20210120_01_pic_003.png

Lines changed: 1 addition & 0 deletions
Loading

202101/20210120_02.md

Lines changed: 214 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,214 @@
1+
## 开源数据库全球化协作浪潮 思考 - 24问
2+
3+
### 作者
4+
digoal
5+
6+
### 日期
7+
2021-01-20
8+
9+
### 标签
10+
PostgreSQL , 全球化 , 开源 , 协作
11+
12+
----
13+
14+
## 背景
15+
### 1、商业数据库为什么要开源?
16+
资本是追逐利润的, 商业数据库开源的根源首先要搞清楚, 他们不是雷锋, 开源一定是基于牟利的基础.
17+
18+
通过开源可以培养用户群体, 当然这里有很多可能是穷鬼没有办法直接从中收割, 但是有一些用户在使用并依赖上这些产品后, 可能有付费的意愿(比如高级功能你不得不付费).
19+
20+
不付费的群体就没有价值吗? 错了, 他们可以帮你宣传产品, 帮你培养使用、管理、开发人才, 这些企业的员工出去都是你的人肉广告体.
21+
22+
### 2、商业数据库什么情况下会选择闭源
23+
当你辛辛苦苦把生态培养起来, 却发现付费用户的钱不是流向你的口袋时.
24+
25+
当用户已经离不开你, 生态已经完整时.
26+
27+
### 3、商业数据库什么情况下会选择改开源协议
28+
同上, 改开源协议针对性更明显, 例如云厂商, 或者数据库厂商(基于你的产品改吧改吧拿去卖).
29+
30+
钱流进别人口袋, 给别人数钱是很惨的.
31+
32+
### 4、未来的商业数据库要不要开源?
33+
取决于你开源的目的, 如果有其他更好的方法达到这个目的, 或者这个目的在商业上没有太大价值可能就不需要开源.
34+
35+
开源最大的意义在于培养生态, 如果你已经有自己的客户群体, 有自己的渠道, 有自己的护城河, 其实没必要开源.
36+
37+
### 5、未来的商业数据库选择什么开源协议?
38+
开源协议嘛, 可以改的, 资产是你的.
39+
40+
所以看阶段, 初期可能选择更友好的开源协议, 让大家跟你玩, 等客户群体上来差不多了, 如果有给别人数钱的风险, 换个开源协议也无妨.
41+
42+
孙权也不是一会跟刘备合作打曹操, 一会又和曹操合作打刘备嘛.
43+
44+
### 6、如何看待mongo, es改开源协议?
45+
主要就是防止给云厂商数钱, 大家都上云了, 钱给了云厂商, 而不是es或者mongo. 云厂商可能改吧改吧就把企业版的功能做了, 甚至做得更好, 拿怎么办, 改协议先止血, 同时寻求与云厂商合作.
46+
47+
mongo就和阿里云有很好的合作.
48+
49+
### 7、mongo改完协议后一年过去了, 站在商业角度mongo公司发生了什么?
50+
其实发展并没有受太大影响, dbengine 数据来看mongo的发展还是很快, 今年增速排名第三. 原因是什么?
51+
52+
其实mongo改协议无非就是影响了云厂商, 云厂商不能售卖改完协议后的版本, 而最终用户依旧能使用mongo的最新版本.
53+
54+
云厂商如果需要售卖mongo改协议后的版本, 需要与mongo商业合作, 例如阿里云.
55+
56+
### 8、为什么国产化数据库这么火?
57+
熟话说, 缺什么就补什么, 说明我们的数据库研发能力欠缺呀.
58+
59+
重点是把研发能力提上来, 别让人卡脖子.
60+
61+
至于国产数据库占比要达到多少, 不是目的, 目的还是那句话: 有能力, 但是不一定要表现出来.
62+
63+
[《新冠,为什么rmb会升值 - 国家需要什么,全球需要什么,我们做什么? 为什么? - GDP , 外汇 之间有什么关系? - 乱弹》](../202101/20210118_04.md)
64+
65+
### 9、PG成功吗?
66+
作为一款没有商业数据库主体在背后推动的开源数据库, 纯社区化运作, 全球协作, 你觉得它今天能取得全球数据库第四名, 并且最近4年获得3届数据库发展冠军, 算不算成功?
67+
68+
[《庆祝PostgreSQL 连续4年3次夺得DB-engine年度数据库桂冠》](../202101/20210105_01.md)
69+
70+
如果没有大量企业在用, 没有高校在教学, 没有大量代码贡献者, 你觉得它会发展这么快吗, 不可能嘛.
71+
72+
### 10、PG成功的核心是什么?
73+
1、成功的先决条件是, 市场足够大(用滚雪球的俗的话来说, 雪的赛道宽, 雪的厚度够, 雪的赛道长).
74+
75+
很荣幸, PG是数据库产品, 随着通信的发展, 互联网、物联网发展, 数据爆炸式发展, 数据需要存储, 需要计算, 需要互联互通, 因此数据库是最大受益的产品之一.
76+
77+
2、有良好的顶层设计, 简直是大师级别的设计.
78+
79+
社区产品顶层设计: 被谁需求(目标客户) -> 目标客户怎么回馈PG社区(代码)
80+
81+
商业产品顶层设计: 目标客户 -> 目标客户怎么回馈商业公司(付费)
82+
83+
- 最终用户
84+
- 公司不以贩卖PG产品为核心, 母牛业务与PG不想关, 只是使用PG
85+
- 大客户, 买商业数据库比自己养几个PG代码贡献者贵, 而且被商业数据库绑定, 很危险
86+
- 以小博大, 四两拨千斤, 如果全球有很多PG大客户都给PG贡献代码, 实际上PG发展会远远比商业数据库发展快
87+
- 我说了算, 我给PG社区贡献代码, 当然站在我自己的角度, 需要什么特性就去贡献什么特性
88+
- 放心, 自己掌握核心科技, 放心
89+
- 从PG代码的架构更加可以证明这一点, PG代码架构非常开放(可能是全球数据库产品中最好的, 不信你可以去看看呀), 可读性非常好, 扩展能力极强, 原因是什么? 因为最终用户希望更多企业参与贡献, 代码可读性, 代码可扩展性, 灵活性是首当其冲的.
90+
- 云数据库服务商, 数据库厂商
91+
- 目的是收割没有内核研发能力的数据库使用者
92+
- PG的开源协议允许任何厂商包装PG代码, 拿出去售卖, 无论你是否将包装后的代码开源, 都没有法律风险
93+
- 为什么选你, 你的品牌影响力足够大, 比自建省心
94+
- 怎么体现你的影响力, 有能力搞定PG内核
95+
- 贡献PG代码越多, 你的影响力越大
96+
- 技术支持服务商
97+
- 技术支持的目标客户是传统客户
98+
- 这种客户怎么选择服务商呢? 商业数据库有官方授权服务商, PG这种纯社区的开源数据库, 没有官方给你授权了呀?
99+
- 商业数据库技术支持的影响力, 可以通过给PG贡献代码来证明(这是最简单直接的方式), 你是这个行业的专家, 你有多少这个行业的专家
100+
- PG用户社区, 作为权威组织, 给技术支持服务商办法专业认证, 技术支持服务商给PG用户会做贡献(这个方式存在一些内幕, 公信力没有直接给PG社区贡献代码强)
101+
- 高校
102+
- 目的是培养数据库人才, 当然选择经久不衰的开源数据库.
103+
- 高校为什么要以某个公司的开源产品或者商业产品来教学呢? 说不过去嘛. 所以PG是最好的选择.
104+
- 教学成果如何展示, 学生能力如何体现. 贡献代码呀.
105+
106+
就这样PG形成了良好的闭环. PG全球化开源协作已历经23年, 管理组织, 规章制度完善.
107+
108+
### 11、PG目标用户人群有哪些?
109+
前面已回答.
110+
111+
### 12、PG目标用户人群从PG这得到什么?
112+
前面已回答.
113+
114+
### 13、PG目标用户人群为什么要回馈PG代码?
115+
前面已回答.
116+
117+
### 14、在PG发展中受益的群体有哪些? (包括未回馈代码的群体)
118+
前面已回答.
119+
120+
### 15、在PG发展过程中为什么有持续扩大的目标群体?
121+
因为行业在发展, 数据在爆炸, 这是前提.
122+
123+
而选择PG的用户越来越多, 说明PG这种开源理念和全球化协作模式正在被更多的用户认可.
124+
125+
PG的全球化协作一定是趋势, 一定会越来越多国家参与.
126+
127+
### 16、百分之多少的PG用户群体在回馈代码就能保证PG持续发展?
128+
这个问题是, 多少人躺赢, 还能保持PG发展.
129+
130+
懒人绑架勤奋的人. 例如: A贡献者是行业翘楚, B紧随其后, A与B都使用PG, A与B的业务与PG紧密相关, 然而只有A在贡献代码, B不贡献.
131+
132+
这种情况可能发生吗? A完全可以保留某些代码不贡献出去呀, PG的开源协议很友好. 概率极小.
133+
134+
而且我认为B如果真这样, 也不可能站在第二的位置. 概率太小.
135+
136+
以目前PG的发展状态, 不太可能出现大家不贡献了的情况, 没有任何一家厂商能追上PG的发展速度, 那些重新拉一个分枝出去发展的, 后来又回来了.
137+
138+
![pic](20210120_02_pic_001.png)
139+
140+
### 17、什么情况下PG的发展可能降速? (留存流失, 新增降低, 达到零界点)
141+
- 不再社会被需要, 无法满足用户群体需求, 用户数下降
142+
- 有性价比更高的替代产品
143+
- 法律问题
144+
145+
### 18、为什么国内用户给PG贡献代码偏少?
146+
- 全球化协作精神还需要培育
147+
- 能力需要提升
148+
149+
### 19、PG处于什么发展阶段?
150+
一个产品的发展通常有5个阶段:
151+
萌芽
152+
发展
153+
成熟
154+
衰退
155+
复苏
156+
157+
PG介于发展和成熟之间的上升通道.
158+
159+
![pic](20210120_02_pic_001.png)
160+
161+
目前PG产品还有哪些todo呢?
162+
163+
[[未完待续] PostgreSQL\Greenplum Customer视角TODO》](../201710/20171017_01.md)
164+
165+
[《未来数据库方向》](../202005/20200527_06.md)
166+
167+
https://wiki.postgresql.org/wiki/Todo
168+
169+
170+
### 20、企业应该 选择 全球化数据库 还是 商业数据库?
171+
能选全球化的首当其冲, 当然还需要看它的阶段, 背后的贡献者, 社区健壮性等.
172+
173+
如果你的行业 或者 你的场景 没有满足业务需求的像PG这样的全球化数据库, 那么只能选商业的.
174+
175+
当然PG因为架构上是很容易扩展的, 也行你能基于PG改出一个适合你场景的专业数据库. 例如 pipelinedb, timescaledb, agensgraph, pase, gpdb, edb, polardb, recdb.
176+
177+
https://wiki.postgresql.org/wiki/PostgreSQL_derived_databases
178+
179+
### 21、未来还会有PG这样的纯社区的, 全球协作的开源数据库产品吗?
180+
PG是全球化协作的开源数据库典范. 严格来说, 是个公益性质的开源项目.
181+
182+
未来如果还有类似的开源数据库出现, 可能来自:
183+
- 高校
184+
- 个人公益贡献
185+
186+
商业公司的开源数据库产品几乎不可能出现这样的情况, 追逐利润是资本天性.
187+
188+
### 22、PG发展的天花板是什么? 能超过所有商业和开源数据库吗?
189+
1、市场足够大
190+
2、水大鱼大, PG作为全球化协作研发的数据库, 我认为是有很大机会成为全球最大的开源数据库的。
191+
192+
193+
### 23、全球化和国家核心能力,矛盾吗?国家公民和全球公民角色。怎么抉择。
194+
[《新冠,为什么rmb会升值 - 国家需要什么,全球需要什么,我们做什么? 为什么? - GDP , 外汇 之间有什么关系? - 乱弹》](../202101/20210118_04.md)
195+
196+
### 24、为什么bsd操作系统不如pg流行。流行和开源协议强相关吗?
197+
留给大家思考.
198+
199+
200+
#### [PostgreSQL 许愿链接](https://github.com/digoal/blog/issues/76 "269ac3d1c492e938c0191101c7238216")
201+
您的愿望将传达给PG kernel hacker、数据库厂商等, 帮助提高数据库产品质量和功能, 说不定下一个PG版本就有您提出的功能点. 针对非常好的提议,奖励限量版PG文化衫、纪念品、贴纸、PG热门书籍等,奖品丰富,快来许愿。[开不开森](https://github.com/digoal/blog/issues/76 "269ac3d1c492e938c0191101c7238216").
202+
203+
204+
#### [9.9元购买3个月阿里云RDS PostgreSQL实例](https://www.aliyun.com/database/postgresqlactivity "57258f76c37864c6e6d23383d05714ea")
205+
206+
207+
#### [PostgreSQL 解决方案集合](https://yq.aliyun.com/topic/118 "40cff096e9ed7122c512b35d8561d9c8")
208+
209+
210+
#### [德哥 / digoal's github - 公益是一辈子的事.](https://github.com/digoal/blog/blob/master/README.md "22709685feb7cab07d30f30387f0a9ae")
211+
212+
213+
![digoal's wechat](../pic/digoal_weixin.jpg "f7ad92eeba24523fd47a6e1a0e691b59")
214+

202101/20210120_02_pic_001.png

13 KB
Loading

202101/readme.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
### 文章列表
44
----
5+
##### 20210120_02.md [《开源数据库全球化协作浪潮 思考 - 24问》](20210120_02.md)
6+
##### 20210120_01.md [《PostgreSQL sharding 分库分表 插件 citus - 开源企业版功能 - cigration citus+migration - 扩容、缩容、替换节点》](20210120_01.md)
57
##### 20210119_05.md [《终于说清楚了 - 常用字符集编码详解:ASCII 、GB2312、GBK、EUC-CN、GB18030、UTF-8、unicode》](20210119_05.md)
68
##### 20210119_04.md [《唐僧又要去取经了, 这次只能带3个徒弟, 到底谁会被干掉呢?》](20210119_04.md)
79
##### 20210119_03.md [《PostgreSQL SQL 技巧例子 - 网站数据解析和copy LOAD, json处理, 字符串处理, 数组处理, CTE与法, 函数, inline code , 数据ETL (generated from原始数据)》](20210119_03.md)

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
4、[《为什么企业应该参与PG社区建设?》](202003/20200321_01.md)
4949
5、[《PostgreSQL 社区建设思考》](202004/20200426_01.md)
5050
5\.1、[《PostgreSQL 社区建设商业策划 {未完}》](202008/20200828_01.md)
51-
6、[[未完待续] PostgreSQL\Greenplum Customer 社区管理 TODO》](201710/20171017_05.md)
51+
6、[[未完待续] PostgreSQL\Greenplum 社区管理 TODO》](201710/20171017_05.md)
5252
7、[[未完待续] PostgreSQL\Greenplum Customer视角TODO》](201710/20171017_01.md)
5353
8、[《为什么数据库选型和找对象一样重要》](202003/20200322_01.md)
5454
9、[《云、商业、开源数据库终局之战 - 商业角度解读PG如何破局 - openapi 、 扩展能力、插件开源协议》](202007/20200727_04.md)
@@ -79,6 +79,8 @@ digoal's|PostgreSQL|文章|归类
7979

8080
### 所有文档如下
8181
----
82+
##### 202101/20210120_02.md [《开源数据库全球化协作浪潮 思考 - 24问》](202101/20210120_02.md)
83+
##### 202101/20210120_01.md [《PostgreSQL sharding 分库分表 插件 citus - 开源企业版功能 - cigration citus+migration - 扩容、缩容、替换节点》](202101/20210120_01.md)
8284
##### 202101/20210119_05.md [《终于说清楚了 - 常用字符集编码详解:ASCII 、GB2312、GBK、EUC-CN、GB18030、UTF-8、unicode》](202101/20210119_05.md)
8385
##### 202101/20210119_04.md [《唐僧又要去取经了, 这次只能带3个徒弟, 到底谁会被干掉呢?》](202101/20210119_04.md)
8486
##### 202101/20210119_03.md [《PostgreSQL SQL 技巧例子 - 网站数据解析和copy LOAD, json处理, 字符串处理, 数组处理, CTE与法, 函数, inline code , 数据ETL (generated from原始数据)》](202101/20210119_03.md)

generate_readme.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ echo "3、[《企业为什么纷纷选择阿里云AliPG》](202005/20200523_01.m
5959
echo "4、[《为什么企业应该参与PG社区建设?》](202003/20200321_01.md) " >> ./README.md
6060
echo "5、[《PostgreSQL 社区建设思考》](202004/20200426_01.md) " >> ./README.md
6161
echo "5\.1、[《PostgreSQL 社区建设商业策划 {未完}》](202008/20200828_01.md) " >> ./README.md
62-
echo "6、[《[未完待续] PostgreSQL\Greenplum Customer 社区管理 TODO》](201710/20171017_05.md) " >> ./README.md
62+
echo "6、[《[未完待续] PostgreSQL\Greenplum 社区管理 TODO》](201710/20171017_05.md) " >> ./README.md
6363
echo "7、[《[未完待续] PostgreSQL\Greenplum Customer视角TODO》](201710/20171017_01.md) " >> ./README.md
6464
echo "8、[《为什么数据库选型和找对象一样重要》](202003/20200322_01.md) " >> ./README.md
6565
echo "9、[《云、商业、开源数据库终局之战 - 商业角度解读PG如何破局 - openapi 、 扩展能力、插件开源协议》](202007/20200727_04.md) " >> ./README.md

0 commit comments

Comments
 (0)