PostgreSQL Oracle 兼容性 - synonym 匿名
背景 Oracle 的一个功能,支持对其他对象建立别名(匿名:synonym),它有什么用呢? 比如某些业务系统中,代码中写死了要访问的对象是在哪个用户下的。当迁移时,如果遇到用户名冲突,我们可能会选择将对象同步到其他用户下。那么问题来了,程序也要改动,如果是很老的程序,估计找不到人来做这件事情。用synony...
背景 Oracle 的一个功能,支持对其他对象建立别名(匿名:synonym),它有什么用呢? 比如某些业务系统中,代码中写死了要访问的对象是在哪个用户下的。当迁移时,如果遇到用户名冲突,我们可能会选择将对象同步到其他用户下。那么问题来了,程序也要改动,如果是很老的程序,估计找不到人来做这件事情。用synony...
背景 pgcrypto是一个加解密插件,可以对数据进行加解密,支持多种加密算法。 https://www.postgresql.org/docs/devel/static/pgcrypto.html encrypt(data bytea, key bytea, type text) returns bytea...
背景 闪回的需求往往是救命的需求,因为通常情况下数据库正常运行是不需要闪回的,往往是出现了误操作,被攻击,被注入后,数据库的数据被删除或恶意纂改并且纂改的事务已提交,也就是说纂改已经被持久化了。 这种情况下需要闪回来救命,回到被破坏前的状态。 闪回的目标分为两种: DML闪回和DDL闪回。 DML闪回指对...
背景 通常一个内容社区网站可能需要记录这么一些数据: 文章,用户,标签。 还有三者之间的关系,包括,文章的标签,用户阅读了文章,用户收藏了文章,用户关注了某用户,用户是某篇文章的作者。 最终要实现毫无人道的查询,例如: 阅读了此篇文章的人还在阅读什么其他文章,和我爱好相近的人都有哪些等等等等。 其中文章数...
背景 前面介绍了空间包含(st_contains, st_within)搜索降CPU的优化方法,将长条形(相对于BOUND BOX空间占比很小)的对象切分成多个空间对象,提升相对于bound box的空间占比,从而减少扫描范围,提升命中率。 《PostgreSQL 空间st_contains,st_within...
背景 点面判断、按面圈选点或其他对象,是GIS几何应用中非常典型的需求。 在PostgreSQL中通过建立GiST索引可以加速这类判断,然而,建立索引就够了吗? 很多时候建立索引是不够的,性能没有到达巅峰,如果要更低的延迟,更少的CPU开销,还有什么优化手段呢? 实际上我以前写过一篇类似的文章,讲的是BTr...
背景 独立事件相关性分析是一件很有意思的事情,例如 探探软件的擦肩而过功能点,在不同时空与你擦肩而过的人。 舆情分析。 商品最佳销售组合。 安全系统中的人车拟合,对时空数据进行处理,用于司机、乘客、车辆的拟合。 人车拟合 1、建立表结构 人 create table u_pos ( id i...