Recent Posts

PostgreSQL Oracle 兼容性 - synonym 匿名

less than 1 minute read

背景 Oracle 的一个功能,支持对其他对象建立别名(匿名:synonym),它有什么用呢? 比如某些业务系统中,代码中写死了要访问的对象是在哪个用户下的。当迁移时,如果遇到用户名冲突,我们可能会选择将对象同步到其他用户下。那么问题来了,程序也要改动,如果是很老的程序,估计找不到人来做这件事情。用synony...

PostgreSQL flashback(闪回) 功能实现与介绍

14 minute read

背景 闪回的需求往往是救命的需求,因为通常情况下数据库正常运行是不需要闪回的,往往是出现了误操作,被攻击,被注入后,数据库的数据被删除或恶意纂改并且纂改的事务已提交,也就是说纂改已经被持久化了。 这种情况下需要闪回来救命,回到被破坏前的状态。 闪回的目标分为两种: DML闪回和DDL闪回。 DML闪回指对...

PostgreSQL 实践 - 内容社区(如论坛)图式搜索应用

4 minute read

背景 通常一个内容社区网站可能需要记录这么一些数据: 文章,用户,标签。 还有三者之间的关系,包括,文章的标签,用户阅读了文章,用户收藏了文章,用户关注了某用户,用户是某篇文章的作者。 最终要实现毫无人道的查询,例如: 阅读了此篇文章的人还在阅读什么其他文章,和我爱好相近的人都有哪些等等等等。 其中文章数...

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

5 minute read

背景 点面判断、按面圈选点或其他对象,是GIS几何应用中非常典型的需求。 在PostgreSQL中通过建立GiST索引可以加速这类判断,然而,建立索引就够了吗? 很多时候建立索引是不够的,性能没有到达巅峰,如果要更低的延迟,更少的CPU开销,还有什么优化手段呢? 实际上我以前写过一篇类似的文章,讲的是BTr...

PostgreSQL 独立事件相关性分析 二 - 人车拟合

2 minute read

背景 独立事件相关性分析是一件很有意思的事情,例如 探探软件的擦肩而过功能点,在不同时空与你擦肩而过的人。 舆情分析。 商品最佳销售组合。 安全系统中的人车拟合,对时空数据进行处理,用于司机、乘客、车辆的拟合。 人车拟合 1、建立表结构 人 create table u_pos ( id i...