Recent Posts

Postgres-XC customized aggregate introduction

10 minute read

背景 postgres-xc是基于PostgreSQL的分布式数据库,分布式数据库的聚合与单节点数据库的聚合不一样,需要先在数据节点聚合,然后在COORDINATOR节点完成第二阶段的聚合。 目前还不支持多阶段聚合(类似mapreduce)。 本文将介绍一下postgres-xc的聚合函数的概念和开发。 正...

PostgreSQL 并行逻辑备份与一致性讲解 - PostgreSQL 9.3 parallel pg_dump

17 minute read

背景 PostgreSQL pg_dump并行备份的功能已经提交到最新的代码中, 9.3中应该会包含此功能. 导出速度提升非常明显. 前段时间写过一篇并行导出的BLOG, 与pg_dump的并行导出一样都用到了9.2开始引入的export snapshot功能. 感兴趣的朋友可以看如下文章 : http:/...

PostgreSQL 审计 - PostgreSQL Audit by Database or Role wide parameter

3 minute read

背景 本文基于PostgreSQL 9.2讲解. 审计的一个普遍用途就是记录用户在数据库中都干了些什么? 如果系统级的参数设置日志全记录下来当然也可以达到审计的目的, 但是这样做的话很多不需要的日志也会输出, 造成硬盘资源浪费甚至影响数据库性能. 所以精细化的审计非常有必要. 之前写过一篇关于Postgre...

PostgreSQL 审计成功事务 - PostgreSQL Fine-Grained Table,Column,Row Level Audit

5 minute read

背景 通过配置用户级或数据库级的参数可以实现用户以及数据库级别的审计, 但是这样的粒度可能还是太粗糙了. 如果需要更细致的审计, 例如针对某些表的操作审计, 某些用户对某些表的审计, 或者仅仅当某个列的值发生变化时才被审计(记录到LOG或表里面, 本文的例子是将审计信息输出到LOG, 使用raise). 这样...

PostgreSQL FDW mongo_fdw usage

4 minute read

背景 https://wiki.postgresql.org/wiki/Foreign_data_wrappers mongo_fdw是PostgreSQL众多FDW中的一个, 显而易见是连接mongoDB的. 最近在看CitusDB的时候, 文档中提到了mongo_fdw, 实际上在CitusDB中并没有发...

PostgreSQL Server Encoding sql_ascii attention

4 minute read

背景 群里一位兄弟问到的一个问题 : ” 我有一个postgresql,比较大,编码是sqlascii码,我想转换成有utf8 ,有方案可行吗? “ 如果使用场景中未用到non-ASCII编码的字符, 那很幸运, 导出导入就可以了. 但是如果场景中使用了non-ASCII编码的字符, 那就没那么幸运了, 因...

PostgreSQL 事件触发器 - PostgreSQL 9.3 Event Trigger

6 minute read

背景 PostgreSQL 9.3 将引入事件触发器, 与普通触发器不同的是, 事件触发器是数据库全局的触发器, 可以由DDL事件来触发. 例如可以用来实施DDL的操作审计,以及防止某些用户执行某些DDL,在某些表上面执行DDL等等。 Unlike regular triggers, which are at...

PostgreSQL 触发器 用法详解 2

14 minute read

背景 触发器在数据库中的应用非常广泛,例如在发生insert, update, delete, truncate时触发,调用事先写好的触发器函数。 触发器函数可以使用plpgsql , c , python , perl , java等语言编写。 触发器函数中支持很多内置的变量,可以干很多事情。 本文将以P...