Recent Posts

PostgreSQL 设计优化case - 大宽表任意字段组合查询索引如何选择(btree, gin, rum) - (含单个索引列数超过32列的方法)

20 minute read

背景 大宽表,任意字段组合查询,透视。是实时分析系统中的常见需求: 1、实时写入。 2、实时任意字段组合查询、透视。 PostgreSQL中,有多种方法支持这种场景: 《PostgreSQL 9种索引的原理和应用场景》 1、方法1,每个字段加一个索引(普通类型用btree, 多值类型(数组,json,全...

PostgreSQL 设计优化case - 多对多 转 一对多(数组)

less than 1 minute read

背景 某个系统存储了会员的标签,以及标签的描述信息。业务上需要通过会员ID得到会员的标签,再得到描述信息。 每个会员有若干标签,原来是这么存储的 1、会员标签表,人数5亿左右,每个人平均有几百个标签,1500亿行左右。 create table a(uid int8, tag int); 2、标签描...

PostgreSQL AB表切换最佳实践 - 提高切换成功率,杜绝雪崩 - 珍藏级

6 minute read

背景 AB表切换经常出现在数据导入的场景中,例如每天或者每个固定周期,需要全量导入一批数据到数据库,同时被导入的数据要持续的被查询。 为了尽量避免导入影响查询,通常会使用AB表切换的方法。使用如下步骤: 1、建新表 2、全量数据导入到新表 3、在新表上面建必要的索引 4、切换新、老表名 但是,注意,由...

PostgreSQL 生成空间热力图

6 minute read

背景 结合空间数据,计算基于地理位置信息的热力图,在空间数据可视化场景中是一个非常常见的需求。 结合流计算,可以实现实时的热力图计算。 结合并行计算,可以高效率的对海量数据进行热力图计算。 计算热力图中bucket的方法 https://www.postgresql.org/docs/devel/st...

PostgreSQL 空间位置(geometry 经纬、点、线、面…)、行政地址(门牌、商圈、行政区…) 相互转换方法

2 minute read

背景 空间位置(geometry 经纬、点、线、面…)、行政地址(门牌、商圈、行政区…) 相互转换需求,如果你有这方面的素材库,在PostgreSQL里面转换,性能是非常高效的。 例如输入任意一个空间对象,扫描出附近的空间对象,或者包含它的对象,或者它包含的对象。(构图) 输入任意一个空间对象,搜索离他最近的...