Skip to content

Commit 1c7c59c

Browse files
committed
new doc
1 parent a2aa943 commit 1c7c59c

File tree

10 files changed

+140
-178
lines changed

10 files changed

+140
-178
lines changed

201710/20171017_01.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,3 +136,20 @@ https://www.llamasoft.com/
136136
25. postgresql, 更新合并,对应秒杀场景。
137137

138138
26. btree, gist等 (非gin)索引,支持pending list特性,提升含索引时的数据写入性能。
139+
140+
27. 社区roadmap
141+
142+
https://wiki.postgresql.org/wiki/Development_information
143+
144+
28. 一些社区企业ROADMAP
145+
146+
https://postgrespro.com/roadmap/
147+
148+
https://wiki.postgresql.org/wiki/NTT_roadmap
149+
150+
151+
29. PostgreSQL 支持多种索引接口,支持自动选择合适的索引接口。
152+
153+
[《PostgreSQL 9种索引的原理和应用场景》](../201706/20170627_01.md)
154+
155+
[《自动选择正确索引访问接口(btree,hash,gin,gist,sp-gist,brin,bitmap...)的方法》](../201706/20170617_01.md)

201712/20171205_01.md

Lines changed: 0 additions & 176 deletions
This file was deleted.

201712/readme.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
##### 20171207_01.md [《PostgreSQL - 鱼与熊掌可兼得 - 多副本0丢失与高性能兼得 - 事务级异步、同步开关》](20171207_01.md)
3030
##### 20171206_01.md [《PostgreSQL - 全文检索内置及自定义ranking算法介绍 与案例》](20171206_01.md)
3131
##### 20171205_02.md [《用PostgreSQL 做实时高效 搜索引擎 - 全文检索、模糊查询、正则查询、相似查询、ADHOC查询》](20171205_02.md)
32-
##### 20171205_01.md [[未完待续] SQL流式案例 - 旋转门压缩(前后计算相关滑窗处理例子)》](20171205_01.md)
3332
##### 20171204_05.md [《PostgreSQL 用 CTE语法 + 继承 实现拆分大表》](20171204_05.md)
3433
##### 20171204_04.md [《PostgreSQL 逻辑订阅 - DDL 订阅 实现方法》](20171204_04.md)
3534
##### 20171204_03.md [《PostgreSQL Oracle兼容性 - substrb - orafce substrb 适配 Oracle substrb》](20171204_03.md)

201801/20180106_01_pic_001.png

766 KB
Loading

201801/20180106_01_pic_002.jpg

20.5 KB
Loading

201801/20180106_01_pic_003.jpg

4.34 MB
Loading

201801/20180107_01.md

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
## SQL流式案例 - 旋转门压缩(前后计算相关滑窗处理例子)
2+
3+
### 作者
4+
digoal
5+
6+
### 日期
7+
2018-01-07
8+
9+
### 标签
10+
PostgreSQL , 阅后即焚 , 流计算 , 旋转门压缩 , 滑窗分析 , 上下文相关滑窗 , 上下结果相关滑窗
11+
12+
----
13+
14+
## 背景
15+
16+
在流计算应用中,保持窗口和数据可重算(设置起点重新开始算)并覆盖已有计算结果。是两个比较特殊但又很有用的需求。
17+
18+
例如流数据来自多个业务线,数据在现实中的发生有先后逻辑,然而由于系统的问题可能有数据到达差异,例如先发生的事情,数据反而后到达,(比如说订单,先下单,后付款,在发货,这是多个业务线产生的数据,然而是围绕同一笔订单,如果数据到达发生了错乱,可能出现付款、下单、发货的到达顺序,影响流计算的准确性,通过重算可以达到修复的目的。)
19+
20+
抽象成流计算的功能:
21+
22+
1、下一次计算可能依赖上一次计算的结果,
23+
24+
2、下一次计算可能需要用到之前计算用到的源数据,
25+
26+
3、下一次计算可能改变上一次计算的结果,
27+
28+
4、可以回溯到之前的某个时间点开始重算(计算前结果也需要回溯到之前的某个点)。
29+
30+
PostgreSQL UDF、阅后即焚、事务原子性、结果可持久化、支持INSERT ON CONFLICT写合并、flash back(可将计算结果回退到某个时间点)等技术点,可以很好的支撑上面的需求。
31+
32+
本文以旋转门压缩计算为例,给一个PostgreSQL处理这类流计算需求的设计思路和DEMO。
33+
34+
旋转门压缩的背景技术请参考:
35+
36+
[《PostgreSQL 三角函数的用法举例 - 已知3点求任意夹角(旋转门续)》](../201608/20160816_01.md)
37+
38+
[《旋转门数据压缩算法在PostgreSQL中的实现 - 流式压缩在物联网、监控、传感器等场景的应用》](../201608/20160813_01.md)
39+
40+
## DEMO
41+
![pic](20180107_01_pic_001.jpg)
42+
43+
1、建输入表
44+
45+
2、建窗口保留表
46+
47+
3、建结果表
48+
49+
4、往输入表写入数据(开启pgbench,压测,实时写入)
50+
51+
5、编写批量消费、旋转门压缩函数(plpgsql)
52+
53+
包括重算逻辑:
54+
55+
```
56+
结果表,无记录:
57+
58+
输入表,按时间顺序,删除记录集R1,LIMIT N条。
59+
60+
窗口表,插入R1
61+
62+
计算,R1,并写入结果表。
63+
64+
结果表,有记录(判断是否有需要重算的结果):
65+
66+
窗口表,取出最小时间T2,最大时间T3
67+
68+
输入表,直接删除小于T2的数据。
69+
70+
输入表,取出最小时间T1
71+
72+
结果表,取出最大时间T4
73+
74+
如果T1 <= T4:
75+
76+
结果表,删除>=T1的数据。
77+
78+
窗口表,取出>=T1的数据集R2
79+
80+
输入表,按时间顺序,删除记录集R3(where ts <=T3)
81+
82+
窗口表,插入R3
83+
84+
输入表,按时间顺序,删除记录集R4,LIMIT N条。
85+
86+
窗口表,插入R4
87+
88+
计算,R2+R3+R4,并写入结果表。
89+
90+
如果T1 > T4:
91+
92+
窗口表,取出>=T4的数据集R5
93+
94+
输入表,按时间顺序,删除记录集R6,LIMIT N条。
95+
96+
窗口表,插入R6
97+
98+
计算,R5+R6,并写入结果表。
99+
```
100+
101+
6、调度旋转门压缩函数
102+
103+
## 相似案例
104+
[《人、机客户服务质量 - 实时透视分析 - (多股数据流上下文相关实时分析,窗口保持)》](../201712/20171208_05.md)
105+
106+
[《PostgreSQL 三角函数的用法举例 - 已知3点求任意夹角(旋转门续)》](../201608/20160816_01.md)
107+
108+
[《旋转门数据压缩算法在PostgreSQL中的实现 - 流式压缩在物联网、监控、传感器等场景的应用》](../201608/20160813_01.md)
109+
110+
[《HTAP数据库 PostgreSQL 场景与性能测试之 32 - (OLTP) 高吞吐数据进出(堆存、行扫、无需索引) - 阅后即焚(JSON + 函数流式计算)》](../201711/20171107_33.md)
111+
112+
[《HTAP数据库 PostgreSQL 场景与性能测试之 31 - (OLTP) 高吞吐数据进出(堆存、行扫、无需索引) - 阅后即焚(读写大吞吐并测)》](../201711/20171107_32.md)
113+
114+
[《HTAP数据库 PostgreSQL 场景与性能测试之 27 - (OLTP) 物联网 - FEED日志, 流式处理 与 阅后即焚 (CTE)》](../201711/20171107_28.md)
115+
116+
[《在PostgreSQL中实现update | delete limit - CTID扫描实践 (高效阅后即焚)》](../201608/20160827_01.md)
117+
118+
[《PostgreSQL 异步消息实践 - Feed系统实时监测与响应(如 电商主动服务) - 分钟级到毫秒级的实现》](../201711/20171111_01.md)
119+
120+
## 参考
121+
[《PostgreSQL flashback(闪回) 功能实现与介绍》](../201710/20171010_01.md)

201801/20180107_01_pic_001.jpg

37.3 KB
Loading

201801/readme.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
### 文章列表
22
----
3+
##### 20180107_01.md [《SQL流式案例 - 旋转门压缩(前后计算相关滑窗处理例子)》](20180107_01.md)
34
##### 20180105_03.md [《PostgreSQL 秒杀4种方法 - 增加 批量流式加减库存 方法》](20180105_03.md)
45
##### 20180105_02.md [《PostgreSQL 大学选课相关性应用实践》](20180105_02.md)
56
##### 20180105_01.md [《PostgreSQL json 任意位置 append 功能实现》](20180105_01.md)

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ digoal's|PostgreSQL|文章|归类
2929

3030
### 未归类文档如下
3131
----
32+
##### 201801/20180107_01.md [《SQL流式案例 - 旋转门压缩(前后计算相关滑窗处理例子)》](201801/20180107_01.md)
3233
##### 201801/20180105_03.md [《PostgreSQL 秒杀4种方法 - 增加 批量流式加减库存 方法》](201801/20180105_03.md)
3334
##### 201801/20180105_02.md [《PostgreSQL 大学选课相关性应用实践》](201801/20180105_02.md)
3435
##### 201801/20180105_01.md [《PostgreSQL json 任意位置 append 功能实现》](201801/20180105_01.md)
@@ -70,7 +71,6 @@ digoal's|PostgreSQL|文章|归类
7071
##### 201712/20171207_01.md [《PostgreSQL - 鱼与熊掌可兼得 - 多副本0丢失与高性能兼得 - 事务级异步、同步开关》](201712/20171207_01.md)
7172
##### 201712/20171206_01.md [《PostgreSQL - 全文检索内置及自定义ranking算法介绍 与案例》](201712/20171206_01.md)
7273
##### 201712/20171205_02.md [《用PostgreSQL 做实时高效 搜索引擎 - 全文检索、模糊查询、正则查询、相似查询、ADHOC查询》](201712/20171205_02.md)
73-
##### 201712/20171205_01.md [[未完待续] SQL流式案例 - 旋转门压缩(前后计算相关滑窗处理例子)》](201712/20171205_01.md)
7474
##### 201712/20171204_05.md [《PostgreSQL 用 CTE语法 + 继承 实现拆分大表》](201712/20171204_05.md)
7575
##### 201712/20171204_04.md [《PostgreSQL 逻辑订阅 - DDL 订阅 实现方法》](201712/20171204_04.md)
7676
##### 201712/20171204_03.md [《PostgreSQL Oracle兼容性 - substrb - orafce substrb 适配 Oracle substrb》](201712/20171204_03.md)

0 commit comments

Comments
 (0)