当前位置: 首页 > 工具软件 > cstore_fdw > 使用案例 >

PostgreSQL cstore_fdw扩展安装 使用orc列式存储

曾歌者
2023-12-01

1.简介

  cstore_fdw实现了PostgreSQL的列式存储。列存储非常适合用于数据分析的场景,数据分析的场景下数据是批量加载的。fdw(ForeignDataWrappers)的含义是外部数据包装器。

  这个扩展使用了Optimized Row Columnar(ORC)数据存储格式,ORC改进了Facebook的RCFile格式。

优点:

  • 压缩: 将内存和磁盘中数据大小削减到2到4倍。可以扩展以支持不同压缩算法。(官方自测性能也最多就提升了1倍,大多数在10%到50%之间)

  • 列投影: 只提取和查询相关的列数据。提升IO敏感查询的性能。

  • 跳过索引: 为行组存储最大最小统计值,并利用它们跳过无关的行。也就是无法创建索引

 

2.安装

下载地址:https://github.com/citusdata/cstore_fdw

# cstore_fdw依赖于protobuf-c对表元数据进行序列化和反序列化

# 安装 protobuf-c-devel(联网下载)

yum -y install protobuf-c-devel

# 解压编译cstore_fdw

# 默认都需要安装gcc,使用root用户

tar -zxvf cstore_fdw-1.6.2.tar.gz

cd cstore_fdw-1.6.2

PATH=/usr/pgsql-10/bin:$PATH make

PATH=/usr/pgsql-10/bin:$PATH make install

# 修改shared_preload_libraries

vi /dbdata/postgresql/data/postgresql.conf

shared_preload_libraries = 'cstore_fdw'  

# 重启pg

su - postgres

pg_ctl restart

# 创建扩展和服务器对象

-- load extension first time after install
CREATE EXTENSION cstore_fdw;

-- create server object
CREATE SERVER cstore_server FOREIGN DATA WRAPPER cstore_fdw;

 

3.官方例子测试

# 下载测试数据

wget http://examples.citusdata.com/customer_reviews_1998.csv.gz
wget http://examples.citusdata.com/customer_reviews_1999.csv.gz

gzip -d customer_reviews_1998.csv.gz
gzip -d customer_reviews_1999.csv.gz

 

# 登录pg

su - postgres

psql

# 创建列存储外部表

-- create foreign table
CREATE FOREIGN TABLE customer_reviews
(
    customer_id TEXT,
    review_date DATE,
    review_rating INTEGER,
    review_votes INTEGER,
    review_helpful_votes INTEGER,
    product_id CHAR(10),
    product_title TEXT,
    product_sales_rank BIGINT,
    product_group TEXT,
    product_category TEXT,
    product_subcategory TEXT,
    similar_product_ids CHAR(10)[]
)
SERVER cstore_server
OPTIONS(compression 'pglz');

 

# 加载数据到表中

COPY customer_reviews FROM '/home/xuli/customer_reviews_1998.csv' WITH CSV;
COPY customer_reviews FROM '/home/xuli/customer_reviews_1999.csv' WITH CSV;

如果ERROR: cannot copy to foreign table "customer_reviews"尝试运行COPY命令时遇到问题,请再次检查是否已将cstore_fdw添加到shared_preload_librariesin postgresql.conf 并重新启动了Postgres。

 

# 收集表数据分布统计信息

ANALYZE customer_reviews;

 

4.卸载

# 卸载扩展之前,首先需要删除所有cstore表

postgres=# DROP FOREIGN TABLE cstore_table_1;

postgres=# DROP FOREIGN TABLE cstore_table_n;

# 删除cstore服务器和扩展名

postgres=# DROP SERVER cstore_server;

postgres=# DROP EXTENSION cstore_fdw;

 

# cstore_fdw自动在PostgreSQL的数据目录内创建一些目录来存储其文件,需要删除

rm -rf $PGDATA/cstore_fdw

 

# 删除cstore_fdw shared_preload_libraries在postgresql.conf

vim /dbdata/postgresql/data/postgresql.conf

shared_preload_libraries = '' # (change requires restart)

 

# 最后,要卸载扩展,您可以在扩展的源代码目录中运行以下命令。这将清除在安装过程中复制的所有文件:

PATH=/usr/pgsql-10/bin:$PATH make uninstall

 

 类似资料: