发布于 2017

  • PgSQL 5分钟实现推荐系统

    2017-04-05 @ 开发

    推荐系统大家都熟悉,猜你喜欢,淘宝个性化什么的,前年双十一搞了个大新闻,还拿了CEO特别贡献奖。 今天就来说说怎么用PostgreSQL 5分钟实现一个最简单ItemCF推荐系统,以推荐系统最喜闻乐见的movielens数据集为例。 原理 ItemCF的原理可以看项亮的《推荐系统实战》,不过还是稍微提一下吧,了解的直接跳过就好。 Item CF,全称Item Collaboration Filter,即基于物品的协同过滤,是目前业界应用最多的推荐算法。ItemCF不需要物品与用户的标签、属性,只 …

    更多

发布于 2016

  • UUID性质原理与应用

    2016-11-06 @ 开发

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

    更多

  • MongoFDW安装部署

    2016-05-28 @ 管理

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

    更多

发布于 0001

  • PgSQL: WAL与检查点

    0001-01-01 @ 管理

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

    更多