• 使用pgcrypto对pg数据进行加/解密

    需要为pg中某些列进行加密,并且还要能够对加密的数据进行解密。 很明显,要解密就需要对称加密算法了,恰好pg的pgcrypto插件中有几个函数可以达到要求,发现网上关于这块的中文资料不是太多,这里就贴出来吧 1. 安装插件的方法就不提了,如果模块存在的话,直接 create extension 即可 2. 基本对称加密 encrypt 和 dec ...

    阅读全文
    作者:klwang | 分类:postgresql | 阅读:81 views
  • edb-installers 使用小记

    1. 简介 This is the build framework for the EnterpriseDB OneClick installers for PostgreSQL and various StackBuilder components. 如上,edb-installers 是 EnterpriseDB 的一键式安装包编译框架,作者 Dave Page。用来自动化 EnterpriseDB 各种组件的编译和安装工作。 2. 拿到框架 git clone git://git.pos ...

    阅读全文
    作者:klwang | 分类:Linux, postgresql | 阅读:142 views
  • EDB-failover 功能分析及配置方式

    功能结构: 如果所示,EDB-failover 的核心其实就是java写的agent(底层通信层使用JGroups),agent提供如下两个功能: 1. master数据库故障(宕机)后,对slave数据库进行promote 2. 漂移虚拟IP failover manager 根据运行的机器不同,扮演三种角色: 1. witness (类似cman中投票磁盘的概念,用来放置脑 ...

    阅读全文
    作者:klwang | 分类:postgresql | 阅读:160 views
  • Pldebugger 原理分析

    PLdebugger是用来对plsql进行调试的工具,架构设计上可以支持多中语言,但是目前只实现了对plsql的调式。 PLdebugger的结构如下图所示: 运行时有三个部件:client、target、和proxy。 client: client是用户使用debugger的接口,它通过libpq连接到proxy上。client和proxy之间使用sql语句进行交互(确切的说是一组API函 ...

    阅读全文
    作者:klwang | 分类:postgresql | 阅读:213 views
  • PEM agent 分析

    EnterpriseDB 开发的postgresql管理工具PEM很是强大,这里对其主要的闭源部件pem_agent做一个简单的分析,看看它都有什么功能。 pem_agent在工作时,会出现四个线程(会和alert_threads有关),它们分别完成如下的工作 线程1 LISTEN SNMP_SPOOL 收到通知后,在 pem.snmp_spool 找 send_status = 'u ...

    阅读全文
    作者:klwang | 分类:postgresql | 阅读:211 views
  • pgAgent 代码流程分析

    使用类似python代码的方式,梳理一下pgagent运行流程,作为笔记 1. 解析命令行参数 2. 是否要进行后台 daemon 3. MainLoop 3.1 连库,尝试 MAXATTEMPTS 次 3.2 检查是否存在 pga_job表, 设置 backendPid 为 pg_backend_pid() 3.3 检查是否存在 pgagent_schema_version函数,检查版本信息 3.4 MainRestartLoop 3.4.1 ...

    阅读全文
    作者:klwang | 分类:postgresql | 阅读:258 views
  • 神奇的void指针

    void 指针在C语言里一直很神奇, 比如,有下面这么一个要求 1. 为用户提供一些接口 2. 将我们具体的实现方法藏起来 要怎么才能办到呢,这里,我们利用void指针来传递数据结构 提供为用户的头文件 public.h #include <string.h> #include <stdio.h> #include <stdlib.h> ...

    阅读全文
    作者:klwang | 分类:Linux | 阅读:418 views | 标签:,
  • 二叉树关键字查找

    postgresql 中二叉树查找关键字的算法 src/backend/parser/kwlookup.c 关键字的存储结构 typedef struct ScanKeyword { const char *name; int value; ... ... 其他结构 } ScanKeyword; 将所有的关键字按照字符顺序排列成为一个数组 static const ScanKeyword ...

    阅读全文
    作者:klwang | 分类:Database, postgresql | 阅读:517 views
  • postgresql 异步消息处理

    有几种情况下后端会发送一些并非由特定的前端的命令流提示的消息。 在任何时候前端都必须准备处理这些信息,即使是并未涉及到查询的处理的时候。 至少,我们应该在开始读取查询响应之前检查这些情况。 NoticeResponse 消息有可能是因为外部的活动而生成的; 比如,如果数据库管理员进行一次”快速”数据库关 ...

    阅读全文
    作者:klwang | 分类:Database, postgresql | 阅读:729 views | 标签:,