PostgreSQL 多场景 阿里云沙箱实验 预告

3 minute read

背景

为了能够让用户可以更快的上手PostgreSQL,与云栖团队的小伙伴制作了一系列阿里云RDS PostgreSQL沙箱实验。

所有实验内容都结合了应用场景,非常具有代表性,兴趣性与一定的挑战性。

沙箱简介

基础知识准备

http://www.postgresqltutorial.com/

客户端准备

安装 postgresql 10客户端 (需包含psql, pgbench 命令)

https://www.postgresql.org/download/

建议沙箱规格

建议要看效果的话,至少来个 RDS PG 10, 4核, 32G, 100G 空间

功能演示,可以小一点的规格

第1期:PostgreSQL 构造海量数据

知识点:pgbench, plpgsql开发法, srf函数

链接:

1、PostgreSQL 如何快速构建 海量 逼真 测试数据

https://github.com/digoal/blog/blob/master/201711/20171121_01.md

https://github.com/digoal/blog/blob/master/201711/readme.md

第2期:PostgreSQL 秒杀场景实践

知识点:行锁,等待,ad lock。

链接:

1、PostgreSQL 秒杀4种方法 - 增加 批量流式加减库存 方法

https://github.com/digoal/blog/blob/master/201801/20180105_03.md

2、HTAP数据库 PostgreSQL 场景与性能测试之 30 - (OLTP) 秒杀 - 高并发单点更新

https://github.com/digoal/blog/blob/master/201711/20171107_31.md

3、聊一聊双十一背后的技术 - 不一样的秒杀技术, 裸秒

https://github.com/digoal/blog/blob/master/201611/20161117_01.md

4、PostgreSQL 秒杀场景优化

https://github.com/digoal/blog/blob/master/201509/20150914_01.md

第3期:PostgreSQL 实时搜索实践

知识点:GIN、RUM索引,分词、pg_trgm、全文检索、正则、模糊查询、文本相似搜索、词频统计

链接:

1、使用阿里云PostgreSQL zhparser中文分词时不可不知的几个参数

https://github.com/digoal/blog/blob/master/201603/20160310_01.md

2、用PostgreSQL 做实时高效 搜索引擎 - 全文检索、模糊查询、正则查询、相似查询、ADHOC查询

https://github.com/digoal/blog/blob/master/201712/20171205_02.md

3、PostgreSQL 模糊查询最佳实践 - (含单字、双字、多字模糊查询方法)

https://github.com/digoal/blog/blob/master/201704/20170426_01.md

4、PostgreSQL 相似搜索设计与性能 - 地址、QA、POI等文本 毫秒级相似搜索实践

https://github.com/digoal/blog/blob/master/201802/20180202_01.md

5、PostgreSQL 相似搜索分布式架构设计与实践 - dblink异步调用与多机并行(远程 游标+记录 UDF实例)

https://github.com/digoal/blog/blob/master/201802/20180205_03.md

6、HTAP数据库 PostgreSQL 场景与性能测试之 12 - (OLTP) 字符串搜索 - 前后模糊查询

https://github.com/digoal/blog/blob/master/201711/20171107_13.md

7、HTAP数据库 PostgreSQL 场景与性能测试之 13 - (OLTP) 字符串搜索 - 相似查询

https://github.com/digoal/blog/blob/master/201711/20171107_14.md

8、HTAP数据库 PostgreSQL 场景与性能测试之 14 - (OLTP) 字符串搜索 - 全文检索

https://github.com/digoal/blog/blob/master/201711/20171107_15.md

9、HTAP数据库 PostgreSQL 场景与性能测试之 16 - (OLTP) 文本特征向量 - 相似特征(海明…)查询

https://github.com/digoal/blog/blob/master/201711/20171107_17.md

10、HTAP数据库 PostgreSQL 场景与性能测试之 17 - (OLTP) 数组相似查询

https://github.com/digoal/blog/blob/master/201711/20171107_18.md

11、PostgreSQL 全文检索 - 词频统计

https://github.com/digoal/blog/blob/master/201803/20180309_02.md

第4期:PostgreSQL 实时多维分析

知识点:GIN、RUM索引,任意字段组合查询,数组相交、包含、相似搜索

链接:

1、PostgreSQL ADHoc(任意字段组合)查询 与 字典化 (rum索引加速) - 实践与方案1

https://github.com/digoal/blog/blob/master/201802/20180228_01.md

2、PostgreSQL ADHoc(任意字段组合)查询(rums索引加速) - 非字典化,普通、数组等组合字段生成新数组

https://github.com/digoal/blog/blob/master/201805/20180518_02.md

3、HTAP数据库 PostgreSQL 场景与性能测试之 17 - (OLTP) 数组相似查询

https://github.com/digoal/blog/blob/master/201711/20171107_18.md

4、HTAP数据库 PostgreSQL 场景与性能测试之 18 - (OLAP) 用户画像圈人场景 - 数组包含查询与聚合

https://github.com/digoal/blog/blob/master/201711/20171107_19.md

5、HTAP数据库 PostgreSQL 场景与性能测试之 19 - (OLAP) 用户画像圈人场景 - 数组相交查询与聚合

https://github.com/digoal/blog/blob/master/201711/20171107_20.md

6、HTAP数据库 PostgreSQL 场景与性能测试之 20 - (OLAP) 用户画像圈人场景 - 多个字段任意组合条件筛选与透视

https://github.com/digoal/blog/blob/master/201711/20171107_21.md

第5期:PostgreSQL 估值、概率计算

知识点:统计信息、采样接口、概率计算插件HLL\CMS_TOPN、滑窗分析、EXPLAIN 估值

链接:

1、《秒级任意维度分析1TB级大表 - 通过采样估值满足高效TOP N等统计分析需求》

https://github.com/digoal/blog/blob/master/201709/20170911_02.md

2、《PostgreSQL count-min sketch top-n 概率计算插件 cms_topn (结合窗口实现同比、环比、滑窗分析等) - 流计算核心功能之一》

https://github.com/digoal/blog/blob/master/201803/20180301_03.md

3、《PostgreSQL 任意列组合条件 行数估算 实践 - 采样估算》

https://github.com/digoal/blog/blob/master/201804/20180403_03.md

4、《妙用explain Plan Rows快速估算行》

https://github.com/digoal/blog/blob/master/201509/20150919_02.md

5、《PostgreSQL pg_stats used to estimate top N freps values and explain rows》

https://github.com/digoal/blog/blob/master/201308/20130811_01.md

6、HLL估值,滑窗分析

https://github.com/aggregateknowledge/postgresql-hll

https://github.com/digoal/blog/blob/master/201302/20130226_01.md

https://github.com/digoal/blog/blob/master/201302/20130227_01.md

https://github.com/digoal/blog/blob/master/201302/20130228_01.md

第6期:用户画像系统实践

知识点:标签聚合计算,varbit插件, 异步消费, BIT位计算, dblink异步并行

链接:

1、《阿里云RDS for PostgreSQL varbitx插件与实时画像应用场景介绍》

https://github.com/digoal/blog/blob/master/201705/20170502_01.md

2、《基于 阿里云RDS PostgreSQL 打造实时用户画像推荐系统》

https://github.com/digoal/blog/blob/master/201610/20161021_01.md

3、《阿里云RDS PostgreSQL varbitx实践 - 流式标签 (阅后即焚流式批量计算) - 万亿级,任意标签圈人,毫秒响应》

https://github.com/digoal/blog/blob/master/201712/20171212_01.md

4、《惊天性能!单RDS PostgreSQL实例 支撑 2000亿 - 实时标签透视案例 (含dblink异步并行调用)》

https://github.com/digoal/blog/blob/master/201712/20171223_01.md

第7期:PostgreSQL 并行计算

知识点:并行计算、优化器参数、内置并行与异步并行、自定义并行聚合函数

链接:

1、《HTAP数据库 PostgreSQL 场景与性能测试之 23 - (OLAP) 并行计算》

https://github.com/digoal/blog/blob/master/201711/20171107_24.md

2、《PostgreSQL 10 - 控制集群并行度》

https://github.com/digoal/blog/blob/master/201703/20170313_12.md

3、《PostgreSQL 10 - tuplesort 多核并行创建索引》

https://github.com/digoal/blog/blob/master/201703/20170312_05.md

4、《PostgreSQL 9.6 并行计算 优化器算法浅析》

https://github.com/digoal/blog/blob/master/201610/20161002_01.md

5、《PostgreSQL 9.6 引领开源数据库攻克多核并行计算难题》

https://github.com/digoal/blog/blob/master/201610/20161001_01.md

6、《PostgreSQL dblink异步调用实现 并行hash分片JOIN - 含数据交、并、差 提速案例 - 含dblink VS pg 11 parallel hash join VS pg 11 智能分区JOIN》

https://github.com/digoal/blog/blob/master/201802/20180201_02.md

7、《PostgreSQL 10 自定义并行计算聚合函数的原理与实践 - (含array_agg合并多个数组为单个一元数组的例子)》

https://github.com/digoal/blog/blob/master/201801/20180119_04.md

第8期:PostgreSQL 简单空间应用实践

知识点:GiST索引,BRIN索引,BTREE索引。cluster,geometry类型,GEOHASH。近邻搜索,点面判断,电子围栏。空间索引结构

链接:

1、《PostgreSQL 黑科技 - 空间聚集存储, 内窥GIN, GiST, SP-GiST索引》

https://github.com/digoal/blog/blob/master/201709/20170905_01.md

2、《PostGIS空间索引(GiST、BRIN、R-Tree)选择、优化 - 阿里云RDS PostgreSQL最佳实践》

https://github.com/digoal/blog/blob/master/201708/20170820_01.md

3、《万亿级电商广告 - brin黑科技带你(最低成本)玩转毫秒级圈人(视觉挖掘姊妹篇) - 阿里云RDS PostgreSQL, HybridDB for PostgreSQL最佳实践》

https://github.com/digoal/blog/blob/master/201708/20170823_01.md

4、《PostgreSQL 物流轨迹系统数据库需求分析与设计 - 包裹侠实时跟踪与召回》

https://github.com/digoal/blog/blob/master/201704/20170418_01.md

5、《菜鸟末端轨迹(解密支撑每天251亿个包裹的数据库) - 阿里云RDS PostgreSQL最佳实践》

https://github.com/digoal/blog/blob/master/201708/20170803_01.md

6、《HTAP数据库 PostgreSQL 场景与性能测试之 29 - (OLTP) 空间应用 - 高并发空间位置更新(含空间索引)》

https://github.com/digoal/blog/blob/master/201711/20171107_30.md

7、《HTAP数据库 PostgreSQL 场景与性能测试之 5 - (OLTP) 空间应用 - 空间包含查询(表内多边形 包含 输入空间对象)》

https://github.com/digoal/blog/blob/master/201711/20171107_06.md

8、《HTAP数据库 PostgreSQL 场景与性能测试之 6 - (OLTP) 空间应用 - KNN查询(搜索附近对象,由近到远排序输出)》

https://github.com/digoal/blog/blob/master/201711/20171107_07.md

9、《PostgreSQL 空间切割(st_split, ST_Subdivide)功能扩展 - 空间对象网格化 (多边形GiST优化)》

https://github.com/digoal/blog/blob/master/201710/20171005_01.md

10、《PostgreSQL 空间st_contains,st_within空间包含搜索优化 - 降IO和降CPU(bound box) (多边形GiST优化)》

https://github.com/digoal/blog/blob/master/201710/20171004_01.md

11、《PostgreSQL multipolygon 空间索引查询过滤精简优化 - IO,CPU放大优化》

https://github.com/digoal/blog/blob/master/201711/20171122_03.md

12、《PostgreSQL 电子围栏的应用场景和性能(大疆、共享设备、菜鸟。。。)》

https://github.com/digoal/blog/blob/master/201710/20171031_01.md

第9期:PostgreSQL 时空业务实践

知识点:时空partial index,时空搜索。空间复合索引。

链接:

1、《空间复合索引加速空间搜索》

https://github.com/digoal/blog/blob/master/201706/20170620_01.md

2、《时间+空间 实时多维数据透视》

https://github.com/digoal/blog/blob/master/201706/20170601_02.md

3、《PostgreSQL\GPDB 毫秒级海量 时空数据透视 典型案例分享》

https://github.com/digoal/blog/blob/master/201706/20170629_01.md

4、《时间、空间、对象多维属性 海量数据任意多维 高效检索 - 阿里云RDS PostgreSQL最佳实践》

https://github.com/digoal/blog/blob/master/201707/20170722_01.md

5、《(新零售)商户网格化(基于位置GIS)运营 - 阿里云RDS PostgreSQL、HybridDB for PostgreSQL最佳实践》

https://github.com/digoal/blog/blob/master/201708/20170802_02.md

第10期:PostgreSQL 时空数据调度实践

知识点:近邻查询,拼车,空间热点消除

链接:

1、《滴滴打车派单系统思考 数据库设计与实现》

https://github.com/digoal/blog/blob/master/201804/20180414_03.md

2、《PostgreSQL 滴滴派单 高峰区域集中打车冲突优化1 - 宇宙大爆炸理论与PostgreSQL实践》

https://github.com/digoal/blog/blob/master/201804/20180416_02.md

3、《为什么geometry+GIST 比 geohash+BTREE更适合空间搜索 - 多出的不仅仅是20倍性能提升》

https://github.com/digoal/blog/blob/master/201804/20180417_01.md

第11期:PostgreSQL 在社交应用领域的最佳实践

知识点:关系数据,大V热点,正反向关系,计数器缓存

链接:

1、《PCC性能大赛 - facebook\微博 like场景 - 数据库设计与性能压测》

https://github.com/digoal/blog/blob/master/201705/20170512_02.md

2、《facebook linkbench 测试PostgreSQL社交关系图谱场景性能》

https://github.com/digoal/blog/blob/master/201609/20160911_01.md

3、《PostgreSQL 社交类好友关系系统实践 - 正反向关系查询加速》

https://github.com/digoal/blog/blob/master/201803/20180302_01.md

第12期:PostgreSQL 物联网最佳实践

知识点:时序数据特性,SCHEMAless设计思路,递归调用,规则,流式计算,滑窗聚合

链接:

1、《时序数据合并场景加速分析和实现 - 复合索引,窗口分组查询加速,变态递归加速》

https://github.com/digoal/blog/blob/master/201611/20161128_01.md

2、《PostgreSQL 证券行业数据库需求分析与应用》

https://github.com/digoal/blog/blob/master/201704/20170417_01.md

3、《PostgreSQL 海量时序数据(任意滑动窗口实时统计分析) - 传感器、人群、物体等对象跟踪》

https://github.com/digoal/blog/blob/master/201707/20170705_01.md

4、《时序业务,求每个传感器、对象的最新值(从7秒到7毫秒的优化之旅) - 阿里云RDS PostgreSQL最佳实践》

https://github.com/digoal/blog/blob/master/201708/20170823_02.md

5、《泛电网系统 海量实时计算+OLTP+OLAP DB设计 - 阿里云(RDS、HybridDB) for PostgreSQL最佳实践》

https://github.com/digoal/blog/blob/master/201708/20170826_01.md

6、《PostgreSQL 在铁老大订单系统中的schemaless设计和性能压测》

https://github.com/digoal/blog/blob/master/201709/20170927_03.md

第13期:PostgreSQL 图式关系数据应用实践

知识点:图式关系、递归查询、广度优先搜索

链接:

1、《PostgreSQL 家谱、族谱类应用实践 - 图式关系存储与搜索》

https://github.com/digoal/blog/blob/master/201804/20180408_03.md

2、《金融风控、公安刑侦、社会关系、人脉分析等需求分析与数据库实现 - PostgreSQL图数据库场景应用》

https://github.com/digoal/blog/blob/master/201612/20161213_01.md

3、《PostgreSQL 图式搜索(graph search)实践 - 百亿级图谱,毫秒响应》

https://github.com/digoal/blog/blob/master/201801/20180102_04.md

4、《PostgreSQL 递归妙用案例 - 分组数据去重与打散》

https://github.com/digoal/blog/blob/master/201804/20180406_01.md

5、《PostgrSQL 递归SQL的几个应用 - 极客与正常人的思维》

https://github.com/digoal/blog/blob/master/201705/20170519_01.md

第14期:PostgreSQL 数据清洗、采样、脱敏、批处理、合并

知识点:数据清洗、去重、采样、脱敏、批处理、合并

链接:

1、数据采样和脱敏实践

《PostgreSQL 数据采样与脱敏》

https://github.com/digoal/blog/blob/master/201706/20170602_02.md

《PostgreSQL 巧妙的数据采样方法》

https://github.com/digoal/blog/blob/master/201609/20160929_01.md

2、数据清洗和去重实践

《PostgreSQL 数据去重方法大全》

https://github.com/digoal/blog/blob/master/201706/20170602_01.md

《PostgreSQL 重复 数据清洗 优化教程》

https://github.com/digoal/blog/blob/master/201612/20161230_01.md

《车联网案例,轨迹清洗 - 阿里云RDS PostgreSQL最佳实践 - 窗口函数》

https://github.com/digoal/blog/blob/master/201707/20170722_02.md

3、《数据入库实时转换 - trigger , rule》

https://github.com/digoal/blog/blob/master/201706/20170619_02.md

4、《PostgreSQL 如何实现批量更新、删除、插入》

https://github.com/digoal/blog/blob/master/201704/20170424_05.md

5、《PostgreSQL upsert功能(insert on conflict do)的用法》

https://github.com/digoal/blog/blob/master/201704/20170424_04.md

6、《PostgreSQL 如何实现upsert与新旧数据自动分离》

https://github.com/digoal/blog/blob/master/201605/20160524_02.md

7、《PostgreSQL 数据rotate用法介绍 - 按时间覆盖历史数据》

https://github.com/digoal/blog/blob/master/201703/20170321_02.md

8、《PostgreSQL rotate table 自动清理调度 - 约束,触发器》

https://github.com/digoal/blog/blob/master/201803/20180311_06.md

9、《PostgreSQL 相似文本检索与去重 - (银屑病怎么治?银屑病怎么治疗?银屑病怎么治疗好?银屑病怎么能治疗好?)》

https://github.com/digoal/blog/blob/master/201803/20180329_01.md

第15期:PostgreSQL 新类型提高开发生产力

知识点:JSON, ARRAY, RANGE

链接:

多值字段(数组、多重含义数组、全文检索) + 单值字段 组合查询加速案例

1、《PostgreSQL 店铺运营实践 - JSON[]数组 内部标签数据等值、范围检索100倍+加速示例 (含,单值+多值列合成)》

https://github.com/digoal/blog/blob/master/201802/20180208_01.md

2、《PostgreSQL UDF实现tsvector(全文检索), array(数组)多值字段与scalar(单值字段)类型的整合索引(类分区索引) - 单值与多值类型复合查询性能提速100倍+ 案例 (含,单值+多值列合成)》

https://github.com/digoal/blog/blob/master/201802/20180207_02.md

3、《PostgreSQL 多重含义数组检索与条件过滤 (标签1:属性, 标签n:属性) - 包括UPSERT操作如何修改数组、追加数组元素》

https://github.com/digoal/blog/blob/master/201801/20180124_02.md

4、《会议室预定系统实践 - PostgreSQL tsrange(时间范围类型) + 排他约束》

https://github.com/digoal/blog/blob/master/201712/20171223_02.md

5、《PostgreSQL 黑科技 range 类型及 gist index 20x+ speedup than Mysql index combine query》

https://github.com/digoal/blog/blob/master/201206/20120607_01.md

Flag Counter

digoal’s 大量PostgreSQL文章入口