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

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

概述

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

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

下载

方法一

复制代码
git clone git@github.com:cnosdb/wrappers.git
cd 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 extension
create extension wrappers;

SELECT * FROM pg_extension;
复制代码
-- create foreign data wrapper and enable 'CnosdbFdw'
CREATE FOREIGN DATA WRAPPER cnosdb_wrapper
HANDLER cnosdb_fdw_handler
VALIDATOR cnosdb_fdw_validator;

SELECT * FROM pg_foreign_data_wrapper;
复制代码
-- create server and specify custom options
CREATE SERVER my_cnosdb_server
FOREIGN DATA WRAPPER cnosdb_wrapper
OPTIONS (
    url 'http://localhost:8904',
    username 'root',
    password '',
    tenant 'cnosdb',
    db 'public'
);

-- create an example foreign table
CREATE FOREIGN TABLE air(
    time timestamp,
    station text,
    visibility double precision,
    temperature double precision,
    pressure double precision
)
SERVER my_cnosdb_server
OPTIONS (
    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简介

CnosDB是一款高性能、高易用性的开源分布式时序数据库,现已正式发布及全部开源。

欢迎关注我们的社区网站:https://cn.cnosdb.com

相关推荐
FungLeo6 小时前
成为全栈·基础补充·数据库索引:为什么加了索引还是慢
mysql·postgresql·sqlite·sql优化·数据库索引·成为全栈
codeejun6 小时前
每日一Go·MySQL-11、覆盖索引 & 回表原理
javascript·数据库·mysql
CoderYanger7 小时前
Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)
java·数据库·spring·面试·职场和发展·java-ee·mybatis
XLYcmy7 小时前
信息检索报告数字经济赋能城市低碳治理的路径研究——基于“传统数据库 + 生成式人工智能”双轮驱动的检索实践 检索实施与结果分析 Web of Science
数据库·ai·llm·prompt·ssci·deepseek·wos
Decay__7 小时前
21_MySQL 优化案例集 —— 慢 SQL 优化、索引重构与参数调整收益对比
运维·数据库·sql·mysql·架构
codigger8 小时前
MySQL 深分页优化:limit 100000, 10 慢在哪,怎么救
数据库·sql·mysql·程序员
麦壳饼9 小时前
SonnetDB 5.0 正式发布:增强 SQL 与事务,开放九模型 MCP 读写
数据库·人工智能·sql·sonnetdb
Decay__18 小时前
18_MySQL 智能巡检方案 —— 巡检项清单 / 一键巡检脚本 / 健康评分
运维·数据库·sql·mysql·架构
java_logo18 小时前
Docker 部署 Liquibase:轻松搭建数据库变更管理
数据库·docker·容器·数据库管理·liquibase·轩辕镜像·数据库变更
凤凰院凶涛QAQ19 小时前
《MySQL内核拆解:从SQL到InnoDB》(四) : 联合查询 & 视图
数据库·sql·mysql