据介绍,cstore_fdw实现了 PostgreSQL 数据库的列式存储。列存储非常适合用于数据分析的场景,数据分析的场景下数据是批量加载的。
这个扩展使用了Optimized Row Columnar (ORC)数据存储格式,ORC改进了Facebook的RCFile格式,带来如下好处:

压缩:将内存和磁盘中数据大小削减到2到4倍。可以扩展以支持不同压缩算法。
列投影:只提取和查询相关的列数据。提升IO敏感查询的性能。
跳过索引:为行组存储最大最小统计值,并利用它们跳过无关的行。

其实官方自测性能也最多就提升了1倍,大多数在10%到50%之间(这里也有一个测试:http://blog.chinaunix.net/uid-20726500-id-4325901.html,不过LZ是根据实际生产场景进行的)。趁着假期对比各基于SQL的数据库平台,顺带测一下。

注:pg目前本身没有列式存储特性(只有基于pg的纯粹列式模式pg),倒是有提交的patch,可以参考https://yq.aliyun.com/articles/691878,但是没有被合并。

安装

从https://github.com/citusdata/cstore_fdw下载最新版本,例如cstore_fdw v1.6.1,支持pg 11.5。

安装protobuf-c,如下:

yum install protobuf-c-devel

一开始某台测试机器因为不能访问外网,下载了protobuf-c-compiler和protobuf源码进行安装。好不容易安装好了,但是最后安装cstore_fdw本身时,遇到Unrecognized syntax identifier "proto3". This parser only recognizes "proto2"(这里有个未经验证的解决方法:https://blog.csdn.net/AmbitiousRuralDog/article/details/80774518),罢了,最后仍然回去使用yum安装了。
然后编译cstore_fdw即可。如下:
postgresql.conf中增加
shared_preload_libraries 配置,如下:
shared_preload_libraries = 'cstore_fdw'    # (change requires restart)

 测试:

-- load extension first time after install
CREATE EXTENSION cstore_fdw; -- create server object
CREATE SERVER cstore_server FOREIGN DATA WRAPPER cstore_fdw; -- 创建测试表,具体可以参考github官网

CREATE FOREIGN TABLE xxx_FDW
(
-- 字段列表
)
SERVER cstore_server
OPTIONS(filename '/disk01/cstore/xxx_FDW.cstore',compression 'pglz');

-- 执行SQL(多表关联,只有一张大表是cstore,其他都是普通pg表)

最后效果比greenplum和postgresql都慢了N倍(不管是否压缩,10/11均如此),可能不太适合我们的场景(官网的场景和上面网上的都是单表统计)。

附protobuf-c源码安装过程:
https://github.com/protocolbuffers/protobuf
下载2.6.0,然后正常编译。
tar zxvf protobuf-2.6..tar.gz
cd protobuf-2.6.
./configure --prefix=/usr/ #必须在/usr下,不能/usr/local,否则最后install会提示必须要以/usr/lib结尾
make
sudo make install
在/etc/ld.so.conf 中添加一行: /usr/lib,保存退出
/sbin/ldconfig -v
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig #这一步不执行会提示找不到protobuf

https://github.com/protobuf-c/protobuf-c/releases
下载1.2.1,大多数要求protobuf 2.6.0以上。
./configure --prefix=/usr/local
make & make install
这样就安装完成了,只是最后报了上面的错误。

除了CSTORE外,还有HDFS\oss_fdw外置接口(这样存储就天然具备了HA特性),参见https://github.com/EnterpriseDB/hdfs_fdw、https://www.alibabacloud.com/help/zh/doc-detail/44461.htm。

postgresql cstore_fdw安装与性能测试的更多相关文章

  1. 给CentOS6.3 + PHP5.3 安装PHP性能测试工具 XHProf-0.9.2

    一.什么是XHProf XHProf官网:http://pecl.php.net/package/xhprof XHProf是一个分层PHP性能分析工具.它报告函数级别的请求次数和各种指标,包括 阻塞 ...

  2. Mac 下 PostgreSQL 的安装与使用

    在 mac 下,可以利用 homebrew 直接安装 PostgreSQL: 1 brew install postgresql -v 稍等片刻,PostgreSQL 就安装完成.接下来就是初始数据库 ...

  3. 给Windows + Apache 2.2 + PHP 5.3 安装PHP性能测试工具 xhprof_0.10.3_php53_vc9.dll

    1.下载XHProf 到这里 http://dev.freshsite.pl/php-extensions/xhprof.html 下载Windows版本的XHProf,我这里选择下载 XHProf ...

  4. Linux下的PostgreSQL简单安装手册

    1. 安装环境     linux版本: CentOS release 6.2 (Final)     pg版本    : postgresql-9.5.0   2. pg数据库下载地址 --http ...

  5. CentOS 6.3下PostgreSQL 的安装与配置

    一.简介 PostgreSQL 是一种非常复杂的对象-关系型数据库管理系统(ORDBMS),也是目前功能最强大,特性最丰富和最复杂的自由软件数据库系统.有些特性甚至连商业数据库都不具备.这个起源于伯克 ...

  6. postgresql编译安装与调试(二)

    接前文postgresql编译安装与调试(一),继续说说postgresql的编译安装与调试. 上一篇已经详细说明了如何在Linux系统上编译安装postgresql,这次我们在此基础上简单讲讲如何在 ...

  7. [转] Mac 下 PostgreSQL 的安装与使用

    在 mac 下,可以利用 homebrew 直接安装 PostgreSQL: 1 brew install postgresql -v 稍等片刻,PostgreSQL 就安装完成.接下来就是初始数据库 ...

  8. postgresql数据库安装及简单操作

    自从MySQL被Oracle收购以后,PostgreSQL逐渐成为开源关系型数据库的首选. 本文介绍PostgreSQL的安装和基本用法,供初次使用者上手.以下内容基于Debian操作系统,其他操作系 ...

  9. PostgreSQL+PostGIS安装以及使用

    安装,参照:    https://www.cnblogs.com/ytwy/p/6817179.html 创建企业级地理文件数据库时报错," You must copy the lates ...

随机推荐

  1. vue响应式原理,去掉优化,只看核心

    Vue响应式原理 作为写业务的码农,几乎不必知道原理.但是当你去找工作的时候,可是需要造原子弹的,什么都得知道一些才行.所以找工作之前可以先复习下,只要是关于vue的,必定会问响应式原理. 核心: / ...

  2. postgresql怎么导入数据库

    1.切换到postgres用户 : sudo su - postgres 2.在shell命令行下,创建数据库exampledb,并指定所有者为dbuser : sudo -u postgres  - ...

  3. Spring MVC 上传、下载、显示图片

    目录 1. 准备工作 1.1 数据库表准备 1.2 实体类 User 和 Mapper(DAO) 1.3 pom.xml 依赖包 1.4 SSM 框架的整合配置 2. 控制器 UserControll ...

  4. springboot使用阿里fastjson来解析数据

    1.spring boot默认使用的json解析框架是jackson,使用fastjson需要配置,首先引入fastjson依赖 pom.xml配置如下: <project xmlns=&quo ...

  5. Linux下 svn相关操作

    Linux下 svn相关操作 一.首先看看svn安装的位置: 命令: find / -name svn /var/svn :表示安装目录 /user/bin/svn :表示命令目录 可以看到的是svn ...

  6. Vim 简易配置

    Macbook终端vim使用系统剪切板 系统自带的, 可执行程序是 /usr/bin/vim, 安装目录是 /usr/share/vim/, 版本7.3. 我使用 homebrew 后顺手安装了一次 ...

  7. jmap错误:unknown CollectedHeap type : class sun.jvm.hotspot.gc_interface.CollectedHeap

    原文:https://www.jianshu.com/p/0e5d8db8ed5e 错误场景 今天使用jmap -heap命令查看堆的详细信息报错. [root@instance-2gak1pfv d ...

  8. 【PyTorch v1.1.0文档研习】60分钟快速上手

    阅读文档:使用 PyTorch 进行深度学习:60分钟快速入门. 本教程的目标是: 总体上理解 PyTorch 的张量库和神经网络 训练一个小的神经网络来进行图像分类 PyTorch 是个啥? 这是基 ...

  9. httprunner学习23-加解密

    前言 有些接口的请求参数是加密的,返回的接口内容也是需要解密才能看到. 加密接口 比如当我们访问下面这个登陆的接口时,请求参数账号和密码都是需要加密,通过parms参数传过去,服务器才能识别到 没加密 ...

  10. 微服务学习之路(三)——实现RPC远程服务调用

    RPC(Remote Producedure Call)调用原理:服务消费者称为客户端,服务提供者称为服务端,处于不同网络地址,需要建立网络连接.建立连接后,双方还必须按照某种约定的协议进行网络通讯— ...