Skip to content

Commit 7d77a41

Browse files
committed
new doc
1 parent c6e0ca2 commit 7d77a41

18 files changed

+1441
-218
lines changed

201703/20170329_01.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
## PostgreSQL 10.0 preview 功能增强 - 流复制延迟评估 动态视图
1+
## PostgreSQL 10.0 preview 功能增强 - 流复制统计视图pg_stat_replication增强, 新增时间维度延迟评估
22
##### [TAG 13](../class/13.md)
33
44
### 作者

201703/readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
##### 20170330_01.md [《PostgreSQL 10.0 preview 功能增强 - 备库支持逻辑订阅,订阅支持主备漂移了》](20170330_01.md)
1212
##### 20170329_03.md [《PostgreSQL jdbc batch insert》](20170329_03.md)
1313
##### 20170329_02.md [《PostgreSQL 10.0 preview 性能增强 - GIN索引vacuum锁降低》](20170329_02.md)
14-
##### 20170329_01.md [《PostgreSQL 10.0 preview 功能增强 - 流复制延迟评估 动态视图](20170329_01.md)
14+
##### 20170329_01.md [《PostgreSQL 10.0 preview 功能增强 - 流复制统计视图pg_stat_replication增强, 新增时间维度延迟评估](20170329_01.md)
1515
##### 20170328_05.md [《一张图读懂RDBMS的历史和基因》](20170328_05.md)
1616
##### 20170328_04.md [《视觉挖掘与PostGIS空间数据库的完美邂逅 - 广告营销\圈人》](20170328_04.md)
1717
##### 20170328_03.md [《PostGIS 多点几何类型 空字符构造异常CASE》](20170328_03.md)

201705/20170507_02.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
digoal
55

66
### 日期
7-
2017-05-04
7+
2017-05-07
88

99
### 标签
1010
PostgreSQL , select for update , 读写冲突 , 读写堵塞 , advisory lock

201705/20170509_01.md

Lines changed: 514 additions & 0 deletions
Large diffs are not rendered by default.

201705/20170509_02.md

Lines changed: 351 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,351 @@
1+
## 海量数据 "写入、共享、存储、计算" 最佳实践
2+
3+
### 作者
4+
digoal
5+
6+
### 日期
7+
2017-05-09
8+
9+
### 标签
10+
PostgreSQL , 冷热分离 , 数据共享 , 打破孤岛 , 无盘工作 , 存储计算分离 , 行为数据 , 轨迹数据 , 金融数据 , 监控数据 , 物联网 , GIS , 范围 , 数组 , 图片
11+
12+
----
13+
14+
## 背景
15+
数据是为业务服务的,业务方为了更加透彻的掌握业务本身或者使用该业务的群体,往往会收集,或者让应用埋点,收集更多的日志。
16+
17+
随着用户量、用户活跃度的增长,时间的积累等,数据产生的速度越来越快,数据堆积的量越来越大,数据的维度越来越多,数据类型越来越多,数据孤岛也越来越多。
18+
19+
日积月累,给企业IT带来诸多负担,IT成本不断增加,收益确不见得有多高。
20+
21+
![pic](20170509_02_pic_001.jpg)
22+
23+
上图描绘了企业中可能存在的问题:
24+
25+
1\. 数据孤岛问题严重(如果没有大数据平台时)。
26+
27+
2\. 对成本预估不足,计算能力扩容麻烦,又或者铺张浪费严重。
28+
29+
3\. 数据冗余问题突出。
30+
31+
4\. 存储成本昂贵。
32+
33+
5\. 业务萎缩后硬件成为固定资产,IT负担严重,几乎没有硬件伸缩能力。
34+
35+
6\. 数据量太大,几乎无法备份。
36+
37+
7\. 业务需求多,数据种类多,分析成本、开发成本高昂。
38+
39+
本文将针对这个场景,给出一个比较合理的方案,灵活使用,可以减轻企业IT成本,陪伴企业高速成长。
40+
41+
## 行业场景
42+
1\. 物流
43+
44+
一个包裹,从揽件、发货、运输、中转、配送到签收整个流程中会产生非常多的跟踪数据,每到一个节点,都会扫描一次记录包裹的状态信息。
45+
46+
运输过程中,车辆与包裹关联,车辆本身采集的轨迹、油耗、车辆状态、司机状态等信息。
47+
48+
配送过程,快递员的位置信息、包裹的配送信息都会被跟踪,也会产生大量的记录。
49+
50+
一个包裹在后台可能会产生上百条跟踪记录。
51+
52+
运输的车辆,一天可能产生上万的轨迹记录。
53+
54+
配送小哥,一天也可能产生上万条轨迹记录。
55+
56+
我曾经分享过一个物流配送动态规划的话题。有兴趣的童鞋也可以参考
57+
58+
[《聊一聊双十一背后的技术 - 物流、动态路径规划》](../201611/20161114_01.md)
59+
60+
物流行业产生的行为数据量已经达到了海量级别。
61+
62+
怎样才能有效的对这些数据进行处理呢?
63+
64+
比如:
65+
66+
实时按位置获取附近的快递员。
67+
68+
实时统计包裹的流量,快递员的调度,车辆的调度,仓库的选址等等一系列的需求。
69+
70+
2\. 金融
71+
72+
金融行业也是数据的生产大户,用户的交易,企业的交易,证券数据等等。
73+
74+
数据量大,要求实时计算,要求有比较丰富的统计学分析函数等。
75+
76+
我曾经分享过一个关于模拟证券交易的系统需求分析。有兴趣的童鞋也可以参考
77+
78+
[《PostgreSQL 证券行业数据库需求分析与应用》](../201704/20170417_01.md)
79+
80+
3\. 物联网
81+
82+
物联网产生的数据有时序属性,有流计算需求(例如到达阈值触发),有事后分析需求。
83+
84+
数据量庞大,有数据压缩需求。
85+
86+
我刚好也写过一些物联网应用的数据库特性分析,这些特性可以帮助物联网实现数据的压缩、流计算等需求。
87+
88+
[《流计算风云再起 - PostgreSQL携PipelineDB力挺IoT》](../201612/20161220_01.md)
89+
90+
[《旋转门数据压缩算法在PostgreSQL中的实现 - 流式压缩在物联网、监控、传感器等场景的应用》](../201608/20160813_01.md)
91+
92+
[《PostgreSQL 物联网黑科技 - 瘦身几百倍的索引(BRIN index)》](../201604/20160414_01.md)
93+
94+
[《一个简单算法可以帮助物联网,金融 用户 节约98%的数据存储成本》](../201604/20160404_01.md)
95+
96+
[《"物联网"流式处理应用 - 用PostgreSQL实时处理(万亿每天)》](../201512/20151215_01.md)
97+
98+
[《PostgreSQL 黑科技 range 类型及 gist index 助力物联网(IoT)》](../201205/20120517_01.md)
99+
100+
物联网还有一个特性,传感器上报的数据往往包括数字范围(例如温度范围)、地理位置、图片等信息,如何高效的存储,查询这些类型的数据呢?
101+
102+
4\. 监控
103+
104+
监控行业,例如对业务状态的监控,对服务器状态的监控,对网络、存储等硬件状态的监控等。
105+
106+
监控行业具有比较强的业务背景,不同的垂直行业,对监控的需求也不一样,处理的数据类型也不一样。
107+
108+
例如某些行业可能需要对位置进行监控,如公车的轨迹,出了位置电子围栏,发出告警。换了司机驾驶,发出警告。等等。
109+
110+
![pic](20170509_02_pic_002.jpg)
111+
112+
5\. 公安
113+
114+
公安的数据来自多个领域,例如 通讯记录、出行记录、消费记录、摄像头拍摄、社交、购物记录 等等。
115+
116+
公安的数据量更加庞大,一个比较典型的场景是风险控制、抓捕嫌犯。涉及基于地理位置、时间维度的人物关系分析(图式搜索)。
117+
118+
如何才能满足这样的需求呢?
119+
120+
6\. 其他行业
121+
122+
其他不再列举。
123+
124+
## 行业痛点
125+
如何解决数据孤岛,打通数据共享渠道?
126+
127+
如何高效率的写入日志、行为轨迹、金融数据、轨迹数据等?
128+
129+
如何高效的实时处理数据,根据阈值告警通知,实时分析等?
130+
131+
如何解决大数据的容灾、备份问题?
132+
133+
如何解决大数据的压缩和效率问题?
134+
135+
如何解决数据多维度、类型多,计算复杂的问题?
136+
137+
如何解决企业IT架构弹性伸缩的问题?
138+
139+
总结起来几个关键字:
140+
141+
写入、共享、存储、计算。
142+
143+
## 方案
144+
用到三个组件:
145+
146+
![pic](20170509_02_pic_004.jpg)
147+
148+
1\. RDS PostgreSQL
149+
150+
支持时序数据、块级索引、倒排索引、多核并行、JSON、数组存储、OSS_FDW外部读写等特性。
151+
152+
解决OLTP,GIS应用、复杂查询、时空数据处理、多维分析、冷热数据分离的问题。
153+
154+
2\. HybridDB PostgreSQL
155+
156+
支持列存储、水平扩展、块级压缩、丰富的数据类型、机器学习库、PLPYTHON、PLJAVA、PLR编程、OSS_FDW外部读写等特性。
157+
158+
解决海量数据的计算问题。
159+
160+
3\. OSS 对象存储
161+
162+
多个RDS实例之间,可以通过OSS_FDW共享数据。
163+
164+
OSS多副本、跨域复制。
165+
166+
解决数据孤岛、海量数据存储、跨机房容灾、海量数据备份等问题。
167+
168+
### 1 写入
169+
170+
![pic](20170509_02_pic_005.jpg)
171+
172+
数据写入分为3条路径:
173+
174+
1\. 在线实时写入,可以走RDS SQL接口,单个实例能达到 百万行/s 以上的写入速度。
175+
176+
2\. 批量准实时写入,可以走HybridDB SQL接口,单个实例能达到 百万行/s 以上的写入速度。
177+
178+
3\. 批量准实时写入,比如写文件,可以走OSS写入接口,带宽弹性伸缩。
179+
180+
### 2 共享
181+
多个RDS实例之间,可以通过OSS_FDW共享数据。
182+
183+
例如A业务和B业务,使用了两个RDS数据库实例,但是它们有部分需求需要共享数据,传统的方法需要用到ETL,而现在,使用OSS_FDW就可以实现多实例的数据共享,而且效率非常高。
184+
185+
![pic](20170509_02_pic_007.jpg)
186+
187+
通过RDS PostgreSQL OSS_FDW的并行读写功能(同一张表的文件,可以开多个worker process进程并行读写),共享数据的读写效率非常高。
188+
189+
![pic](20170509_02_pic_006.jpg)
190+
191+
并行体现三个方面:OSS读写并行、RDS PostgreSQL多核计算并行、RDS PG或HybridDB的多机并行。
192+
193+
![pic](20170509_02_pic_008.jpg)
194+
195+
### 3 存储
196+
197+
对于实时数据,使用RDS PostgreSQL, HybridDB的本地数据存储。对于需要分析、需要共享的数据,使用OSS进行存储。
198+
199+
OSS相比计算资源的存储更加的廉价,在确保灵活性的同时,降低了企业的IT成本。
200+
201+
通过OSS对象存储,解决了企业的数据冗余、成本高等问题,满足了数据的备份、容灾等需求。
202+
203+
### 4 计算
204+
205+
![pic](20170509_02_pic_009.jpg)
206+
207+
通过RDS PostgreSQL, HybridDB, OSS的三个基本组件,实现了计算资源、存储资源的分离。
208+
209+
因为计算节点的数据量少了(大部分数据都存在OSS了),计算节点的扩容、缩容、容灾、备份都更加方便。
210+
211+
#### 计算本身分为以下几种
212+
213+
1\. 流式计算
214+
215+
流式计算分为两种,一种是实时统计,另一种是设置阈值进行实时的告警。
216+
217+
通过pipelinedb(base on postgresql)可以实现这两类流计算。
218+
219+
好处:
220+
221+
SQL标准接口,丰富的内置函数支持复杂的流计算需求,丰富的数据类型(包括GIS,JSON等)支持更多的流计算业务场景,异步消息通知机制支持第二类流计算需求。
222+
223+
pipelinedb正在进行插件化改造,以后可以作为PostgreSQL的插件使用。
224+
225+
https://github.com/pipelinedb/pipelinedb/issues?q=is%3Aissue+is%3Aopen+label%3A%22extension+refactor%22
226+
227+
![pic](20170509_02_pic_010.jpg)
228+
229+
例如在监控领域,使用流计算的异步消息机制,可以避免传统主动问询监控的无用功问题。
230+
231+
![pic](20170509_02_pic_003.jpg)
232+
233+
2\. 实时交互业务
234+
235+
传统的OLTP需求,使用RDS PostgreSQL可以满足。
236+
237+
PostgreSQL的特性包括:GIS、JSON、数组、冷热分离、水平分库、K-V类型、多核并行、块级索引、倒排索引等。
238+
239+
PostgreSQL支持的场景包括:流计算、图式搜索、时序数据、路径规划、模糊查询、全文检索、相似查询、秒杀、基因、金融、化学、GIS应用、复杂查询、BI、多维分析、时空数据搜索等。
240+
241+
覆盖银行、保险、证券、物联网、互联网、游戏、天文、出行、电商、传统企业等行业。
242+
243+
3\. 准实时分析
244+
245+
结合OSS对象存储,RDS PostgreSQL和HybridDB都可以实现准实时的分析。
246+
247+
同一份OSS的数据,也可以在多个实例之间进行共享,同时访问。
248+
249+
4\. 离线分析、挖掘
250+
251+
结合OSS对象存储,RDS PostgreSQL和HybridDB都可以实现对离线数据的分析和挖掘。
252+
253+
RDS PostgreSQL 支持单机多核并行,HybridDB for PostgreSQL支持多机并行。用户可以根据计算量进行选择。
254+
255+
#### 计算需要具备的能力
256+
计算的灵魂是类型的支持、以及类型的处理。
257+
258+
1\. PostgreSQL内置了丰富的类型支持,包括(数字、字符串、时间、布尔、枚举、数组、范围、GIS、全文检索、bytea、大对象、几何、比特、XML、UUID、JSON、复合类型等),同时支持用户自定义的类型。可以支持几乎所有的业务场景
259+
260+
2\. 操作符,为了满足对数据的处理需求,PG对每一种支持的类型,都支持非常丰富的操作,
261+
262+
3\. 内置函数,PG内置了丰富的统计学函数、三角函数、GIS处理函数,MADlib机器学习函数等。
263+
264+
4\. 自定义计算逻辑,用户可以通过C, python, java, R等语言,定义数据的处理函数。扩展PostgreSQL, HybridDB for PostgreSQL的数据处理能力。
265+
266+
5\. 聚合函数,内置了丰富的聚合函数,支持数据的统计。
267+
268+
6\. 窗口查询功能的支持。
269+
270+
7\. 递归查询的支持。
271+
272+
8\. 多维分析语法的支持。
273+
274+
## 方案小结
275+
### RDS PostgreSQL 优势
276+
主要体现在这几个方面
277+
278+
1\. 性能
279+
280+
RDS PostgreSQL主要处理在线事务以及少量的准实时分析。
281+
282+
PG OLTP的性能可以参考这篇文档,性能区间属于商业数据库水准。
283+
284+
[《数据库界的华山论剑 tpc.org》](../201701/20170125_01.md)
285+
286+
PG 的OLAP分析能力,可以参考这篇文档,其多核并行,JIT,算子复用等特性,使得PG的OLAP能力相比其他RDBMS数据库有质的提升。
287+
288+
[《分析加速引擎黑科技 - LLVM、列存、多核并行、算子复用 大联姻 - 一起来开启PostgreSQL的百宝箱》](../201612/20161216_01.md)
289+
290+
PostgreSQL 10 在HTAP方面还有更多的增强。
291+
292+
2\. 功能
293+
294+
功能也是PostgreSQL的强项,在上一章《计算需要具备的能力》有详细介绍。
295+
296+
3\. 扩展能力
297+
298+
计算能力扩展,通过增加CPU,可以扩展复杂计算的性能。
299+
300+
存储能力扩展,通过OSS存储以及oss_fdw插件,可以扩展RDS PG的存储能力,打破存储极限。
301+
302+
4\. 成本
303+
304+
存储成本:由于大部分需要分离的数据都存储到OSS了,用户不再需要考虑这部分的容灾、备份问题。相比存储在数据库中,存储成本大幅降低。
305+
306+
开发成本:RDS PG, HybridDB PG都支持丰富的SQL标准接口,访问OSS中的数据(通过TABLE接口),使用的也是SQL标准接口。节省了大量的开发成本,
307+
308+
维护成本:使用云服务,运维成本几乎为0。
309+
310+
5\. 覆盖行业
311+
312+
覆盖了银行、保险、证券、物联网、互联网、游戏、天文、出行、电商、传统企业等行业。
313+
314+
### HybridDB PostgreSQL 优势
315+
1\. 性能
316+
317+
HybridDB PostgreSQL为MPP架构,计算能力出众。
318+
319+
2\. 功能
320+
321+
在上一章《计算需要具备的能力》有详细介绍。
322+
323+
3\. 扩展能力
324+
325+
计算能力扩展,通过增加计算节点数,可以扩展复杂计算的性能。
326+
327+
存储能力扩展,通过OSS存储以及oss_fdw插件,可以扩展RDS PG的存储能力,打破存储极限。
328+
329+
4\. 成本
330+
331+
存储成本:由于大部分需要分离的数据都存储到OSS了,用户不再需要考虑这部分的容灾、备份问题。相比存储在数据库中,存储成本大幅降低。
332+
333+
开发成本:RDS PG, HybridDB PG都支持丰富的SQL标准接口,访问OSS中的数据(通过TABLE接口),使用的也是SQL标准接口。节省了大量的开发成本,
334+
335+
维护成本:使用云服务,运维成本几乎为0。
336+
337+
5\. 覆盖行业
338+
339+
覆盖了银行、保险、证券、物联网、互联网、游戏、天文、出行、电商、传统企业等行业。
340+
341+
### 典型用法
342+
![pic](20170509_02_pic_004.jpg)
343+
344+
![pic](20170509_02_pic_009.jpg)
345+
346+
## 参考
347+
[《RDS PostgreSQL : 使用 oss_fdw 读写OSS对象存储》](https://help.aliyun.com/document_detail/44461.html)
348+
349+
[《HybridDB PostgreSQL : 使用 oss_fdw 读写OSS对象存储》](https://help.aliyun.com/document_detail/35457.html)
350+
351+

201705/20170509_02_pic_001.jpg

110 KB
Loading

201705/20170509_02_pic_002.jpg

58.4 KB
Loading

201705/20170509_02_pic_003.jpg

50.9 KB
Loading

201705/20170509_02_pic_004.jpg

172 KB
Loading

201705/20170509_02_pic_005.jpg

153 KB
Loading

0 commit comments

Comments
 (0)