撰写于 2016
  • UUID性质原理与应用

    2016年11月06日 在 PG 开发

    最近一个项目需要生成业务流水号,需求如下: ID必须是分布式生成的,不能依赖中心节点分配并保证全局唯一。 ID必须包含时间戳并尽量依时序递增。(方便阅读,提高索引效率) ID尽量散列。(分片,与HBase日志存储需要) 在造轮子之前,首先要看一下有没有现成的解决方案。 Serial 传统实践上业务流水号经常通过数据库自增序列或者发码服务来实现。 MySQL的Auto Increment,Postgres的Serial,或者Redis+lua写个小发码服务都是方便快捷的解决方案。这种方案可以保证全 …

    更多

  • PostgreSQL MongoFDW安装部署

    2016年05月28日 在 PG 管理

    更新:最近MongoFDW已经由Cybertech接手维护,也许没有这么不堪了。 最近有业务要求通过PostgreSQL FDW去访问MongoDB。开始我觉得这是个很轻松的任务。但接下来的事真是让人恶心的吐了。MongoDB FDW编译起来真是要人命:混乱的依赖,临时下载和Hotpatch,错误的编译参数,以及最过分的是错误的文档。总算,我在生产环境(Linux RHEL7u2)和开发环境(Mac OS X 10.11.5)都编译成功了。赶紧记录下来,省的下次蛋疼。 环境概述 理论上编译这套 …

    更多

撰写于 0001
  • WAL与检查点概述

    0001年01月01日 在 PG 内核

    数据库需要保证两个基本的特性:可靠性与可用性。通俗来讲: 可靠性就是:出了故障,既不会丢数据,也不会弄脏数据。 可用性就是:保证足够的读写性能,出了故障后,能够快速恢复服务。 朴素的数据库实现有两个选项:在内存中修改数据页,或者将事物变更直接写入磁盘。但这产生了一个两难困境: 内存支持随机读写,因此在性能上表现强悍,然而作为易失性存储,一旦故障就会丢数据。 硬盘恰恰相反,随机读写表现糟糕,但在故障时数据要可靠的多。 内存可用性强可靠性差,硬盘可用性差但可靠性强,如何解决这一对矛盾,让内存与硬盘取 …

    更多

  • 0001年01月01日 在 数据库

    更多