CnosDB FDW:打通一扇通往PostgreSQL世界的大门

原创
2023/12/10 19:33
阅读数 14

本文档提供了下载、安装和使用 CnosDB FDW 的简要说明。请根据您的实际需求和环境对文档进行调整。

CnosDB FDW:打通一扇通往 PostgreSQL 世界的大门

概述

CnosDB FDW 是一个用于在 PostgreSQL 数据库中访问 CnosDB 数据库的外部数据包装器(Foreign Data Wrapper)。它提供了在 PostgreSQL 中查询 CnosDB 数据的功能。

本文档将指导您下载、安装和使用 CnosDB FDW。

下载

方法一

 
git clone git@github.com:cnosdb/wrappers.gitcd wrappers/wrappers
 

CnosDB FDW 依赖 pgrx,在安装之前需要先安装 pgrx,可以参考官方仓库 readme [https://github.com/pgcentralfoundation/pgrx#system-requirements]。

pgrx 安装完毕后,运行以下命令:

 
cargo pgrx install --pg-config [path_to_pg_config] --features cnosdb_fdw

方法二

release[https://github.com/cnosdb/wrappers/releases]下载对应系统的动态库,放置到 Postgres 对应目录

$PATH_TO_PG/share/extension/wrappers.control

$PATH_TO_PG/lib/wrappers-0.1.18.so

$PATH_TO_PG/share/extension/wrappers–0.1.18.sql

用例

准备 CnosDB 数据

启动 CnosDB server 和 client,在 client 中输入以下 SQL:

CREATE TABLE air (      visibility DOUBLE,      temperature DOUBLE,      pressure DOUBLE,      TAGS(station));
INSERT INTO air (time, station, visibility, temperature, pressure) VALUES('2023-01-01 01:10:00', 'XiaoMaiDao', 79, 80, 63);
INSERT INTO air (time, station, visibility, temperature, pressure) VALUES('2023-01-01 01:20:00', 'XiaoMai', 80, 60, 62);
INSERT INTO air (time, station, visibility, temperature, pressure) VALUES('2023-01-01 01:30:00', 'Xiao', 81, 70, 61);
 

执行查询 SQL:

SELECT * FROM air;
 
public ❯ select * from air;+---------------------+------------+------------+-------------+----------+| time                | station    | visibility | temperature | pressure |+---------------------+------------+------------+-------------+----------+| 2023-01-01T01:10:00 | XiaoMaiDao | 79.0       | 80.0        | 63.0     || 2023-01-01T01:20:00 | XiaoMai    | 80.0       | 60.0        | 62.0     || 2023-01-01T01:30:00 | Xiao       | 81.0       | 70.0        | 61.0     |+---------------------+------------+------------+-------------+----------+
 

 

使用 Postgres 查询 CnosDB 数据

创建 CnosDB 外部表

 
-- create extensioncreate extension wrappers;
SELECT * FROM pg_extension;
 

 

-- create foreign data wrapper and enable 'CnosdbFdw'CREATE FOREIGN DATA WRAPPER cnosdb_wrapperHANDLER cnosdb_fdw_handlerVALIDATOR cnosdb_fdw_validator;
SELECT * FROM pg_foreign_data_wrapper;
 

 

-- create server and specify custom optionsCREATE SERVER my_cnosdb_serverFOREIGN DATA WRAPPER cnosdb_wrapperOPTIONS (    url 'http://localhost:8904',    username 'root',    password '',    tenant 'cnosdb',    db 'public');
-- create an example foreign tableCREATE FOREIGN TABLE air(    time timestamp,    station text,    visibility double precision,    temperature double precision,    pressure double precision)SERVER my_cnosdb_serverOPTIONS (    table 'air');

查询 CnosDB 数据

 
SELECT * FROM air;
 
postgres=# select * from air;        time         |  station   | visibility | temperature | pressure---------------------+------------+------------+-------------+---------- 2023-01-01 01:30:00 | Xiao       |         81 |          70 |       61 2023-01-01 01:20:00 | XiaoMai    |         80 |          60 |       62 2023-01-01 01:10:00 | XiaoMaiDao |         79 |          80 |       63(3 rows)
 

 

注意事项

  • 在使用 CnosDB FDW 之前,请确保已安装和配置了正确版本的 CnosDB 数据库。

  • 目前只支持 PostgreSQL v14, v15 和 v16。

  • 在创建外部服务器时,根据实际情况修改 URL。

  • 在创建外部表时,根据实际情况修改表名和列定义。

  • CnosDB FDW 支持常见的查询操作,但某些高级功能(如时空函数,事务)可能受到限制。

  • CnosDB FDW 的代码实现存在限制,查询性能以及内存使用情况会受到影响。

  • 请参考 CnosDB FDW 的官方文档以获取更多详细信息和示例。

结论

通过 CnosDB FDW,您可以轻松地在 PostgreSQL 中访问和操作 CnosDB 数据库。本文档提供了下载、安装和使用 CnosDB FDW 的简要说明。请根据您的实际需求和环境对文档进行调整。

如果您需要更多帮助或有其他问题,请参考 CnosDB FDW 的官方文档或联系 CnosDB 支持团队。

希望这篇示例文档对您有所帮助!如果您有其他问题,请随时提问。

 

参与 CnosDB 社区交流群:

 

扫描下方二维码,加入 CC 进入 CnosDB 社区交流,CC 也会在群内分享直播链接哒

up-55fffc7defd74a930ab4770f21926394f77.png

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部