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

news2025/1/13 13:07:49

本文档提供了下载、安装和使用 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1281604.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

并发编程2:Java 加锁的原理和JVM对锁的优化

为什么要加锁 在多进程的环境下,如果一个资源被多个进程共享,那么对资源的使用往往会表现的随机和无序,这显然是不行的。例如多个线程同时对控制台输出,每个线程都输出的是完整的句子但是多个线程同时同时输出,则输出…

sd_webui的实用插件,prompt/lama/human matting/...,持续开源更新!!

热烈欢迎大家在git上star!!!冲鸭!!! 1.prompt优化插件 GitHub - leeguandong/sd_webui_beautifulprompt: beautifulprompt extension performs stable diffusion automatic prompt engineering on a bro…

博途PLC数组指针应用(SCL)

CODESYS数组类型变量使用介绍 https://rxxw-control.blog.csdn.net/article/details/131375218https://rxxw-control.blog.csdn.net/article/details/131375218 博途PLC数组类型变量使用介绍还可以查看下面文章博客: https://rxxw-control.blog.csdn.net/article/details/1…

通义灵码简单使用例子

首先我们需要了解到通义灵码的能力: 行/函数级实时续写: 当我们在 idea进行代码编写时(确认开启了自动云端生成的模式),通义灵码会根据当前代码文件及相关代码文件的上下文,自动为你生成代码建议。你可以不用,也可以t…

Android把宽高均小于给定值的Bitmap放大到给定值,Kotlin

Android把宽高均小于给定值的Bitmap放大到给定值,Kotlin 假设拉伸放大到SIZE2048 fun scaleSize(image: Bitmap): Bitmap {val w image.widthval h image.heightvar newW: Intvar newH: Intif (w > h) {newW SIZEnewH (SIZE / w.toFloat()) * h} else {newW …

计算机网络TCP篇③问答篇

目录 一、如何理解 TCP 是面向字节流协议 先来说说为什么 UDP 是面向报文的协议? 如果收到了两个 UDP 报文,操作系统是如何区分开的呢? 再说说为什么 TCP 是面向字节流的协议? 二、如何解决粘包问题? ①、固定消…

23.12.3日总结

饿了么项目进度 新建菜品的添加属性: 适应不同尺寸的媒体查询: 菜品详细页面: 项目上遇到的问题 媒体查询遇到的问题: 关于媒体查询不能生效的原因-CSDN博客 答辩总结 js中声明变量的关键字(const,let…

前缀和例题:子矩阵的和AcWing796

//前缀和模板提,在读入数据的时候就可以先算好前缀和的大小 //计算前缀的时候用:g[i][j] g[i][j-1] g[i-1][j] - g[i-1][j-1] Integer.parseInt(init[j-1]); //计算结果的时候用:g[x2][y2] - g[x1 - 1][y2]- g[x2][y1-1] g[x1 -1][y1 - 1] "\n" //一些重复加的地…

YOLOv8 区域计数 | 入侵检测 | 人员闯入

大家好,昨天的 YOLOv8 新增加了一个功能,区域计数,用这个功能我们能实现很多的任务, 比如入侵检测,流量统计,人员闯入等,使用方式也非常的方便,但是一定要使用最新版的 YOLOv8 代码(2023/12/03更新的代码)。 低版本是不具备这个功能的,上面是演示效果。 使用非常的方…

InsCode实践分享

在当今信息爆炸的时代,如何从海量信息中脱颖而出,获取更多的关注和认可,成为了许多人的共同追求。作为知乎平台上的优质用户,我愿意分享一些自己的经验和技巧,帮助大家更好地运用InsCode,实现个人成长和进步…

细说CountDownLatch

CountDownLatch 概念 CountDownLatch可以使一个获多个线程等待其他线程各自执行完毕后再执行。 CountDownLatch 定义了一个计数器,和一个阻塞队列, 当计数器的值递减为0之前,阻塞队列里面的线程处于挂起状态,当计数器递减到0时…

Linux下activemq的安装与安装成功确认

一、下载 apache-activemq-5.14.0-bin.tar.gz 二、安装 将压缩包拷入linux内,进行解压tar -zxvf apache-activemq-5.14.0-bin.tar.gz,与redis、nginx不同的是,active解压不需要安装就可以直接启动! 启动命令:./bin…

某60区块链安全之Create2实战二学习记录

区块链安全 文章目录 区块链安全Create2实战二实验目的实验环境实验工具实验原理实验内容Create2实战二 实验步骤Create2实战二 实验目的 学会使用python3的web3模块 学会分析以太坊智能合约中的伪随机数问题 学会利用Create2可在同一地址部署不同合约特性解决伪随机数问题 找…

❀My学习Linux命令小记录(6)❀

目录 ❀My学习Linux命令小记录(6)❀ 26.ps指令 27.grep指令 28.awk指令 29.sed指令 30.wc指令 ❀My学习Linux命令小记录(6)❀ 26.ps指令 功能说明:报告当前系统的进程状态。 (ps.ps命令 用于报告当前系统的进…

免费数据采集软件,多种数据采集方式

数据无疑是企业决策的关键驱动力。要充分利用数据,就需要进行数据收集,而数据采集的方式多种多样。 数据采集方式的丰富多彩 数据采集并非一蹴而就的简单任务,而是一个多层次、多步骤的过程。在这个过程中,我们有着多种数据采集…

数据结构实验任务六 :基于 Dijsktra 算法的最短路径求解

本次代码为实验六:基于 Dijsktra 算法的最短路径求解实现。本实验的重点在于对于Dijsktra算法的理解。有关Dijsktra的资料可以参考有关博文: 图论:Dijkstra算法——最详细的分析,图文并茂,一次看懂!-CSDN博客 以下附上…

[LeetCode周赛复盘] 第 374 场周赛20231203

[LeetCode周赛复盘] 第 374 场周赛20231203 一、本周周赛总结100144. 找出峰值1. 题目描述2. 思路分析3. 代码实现 100153. 需要添加的硬币的最小数量1. 题目描述2. 思路分析3. 代码实现 100145. 统计完全子字符串1. 题目描述2. 思路分析3. 代码实现 100146. 统计感冒序列的数…

USART的PAL库编程

USART驱动的工作原理 总结一下我们之前使用中断的方式来进行数据的发送和接收 如果收到数据数据在RDR寄存器中 RXNE标志位就从0到1触发中断 进入中断服务函数 把数据缓存在队列中 然后在到进程函数中断接收数据函数中进行出队处理 发送数据就是把中断关闭(标志位TXE…

《Junit单元测试》

目录 SpringBoot2.2.0版本之前的单元测试模式 SpringBoot2.2.0版本之后的单元测试模式 SpringBoot2.4以上版本移除了默认对Vintage的依赖 SpringBoot2.2.0版本之前的单元测试模式 SpringBooot 2.2.0 版本开始引入Junit5作为单元测试默认库,之前的版本是使用Junit…

线程...

文章目录 1.Linux中线程该如何理解2.重新定义线程 和 进程3.重谈地址空间 --- 第四讲4.Linux线程周边的概念 线程:是进程内的一个执行分支。线程的执行粒度,要比进程要细 很多教材喜欢这么说,这只是一个线程的特征之一,来解释线程。 1.Linux中线程该如何…