Duckgres:一款兼容PostgreSQL协议的DuckDB

Duckgres 是一个由 PostHog 开源的数据库服务器项目,它实现了 PostgreSQL 网络协议(Wire Protocol),同时底层使用 DuckDB 作为查询执行引擎。

Duckgres 采用 Go 语言开发,遵循 MIT 开源协议,代码托管在 GitHub:

https://github.com/PostHog/duckgres

功能特性

  • PostgreSQL 协议兼容:Duckgres 实现了完整的 PostgreSQL 网络协议,因此可以使用 psql、pgAdmin、lib/pq、psycopg2 等客户端直接连接,支持各种 PostgreSQL 语法,包括简单查询、扩展查询(预编译语句等)、COPY FROM / TO 命令、系统视图、系统函数等。
  • DuckDB 执行引擎:实际 SQL 语句的执行由 DuckDB 完成,可以利用 DuckDB 的列式存储、向量化执行(vectorized execution)、高效扫描与聚合等。
  • 连接与安全:强制使用 TLS 加密连接,保护明文密码认证;每个用户使用独立的 DuckDB 数据库文件进行隔离;内置连接限流、登录失败封禁、优雅停机(graceful shutdown)等运维友好功能。
  • DuckDB 扩展:支持 DuckDB 扩展加载(默认启用 DuckLake),可以将 DuckDB 作为 Lakehouse 查询层,访问对象存储(S3、GCS、MinIO 等)。
  • 运行模式:Duckgres 支持多种部署方式,包括适合本地开发的单进程模式(Standalone),适合生产环境的多进程模式(Control Plane),以及云原生模式(Remote Worker)。
  • 灵活配置:Duckgres 支持多种配置方式,优先级从高到低依次为命令行参数、环境变量、YAML 文件。
  • 可观测性:内置 Prometheus Metrics,方便系统监控;常见指标包括当前连接数、查询耗时直方图、错误计数、鉴权失败次数等。

下载安装

使用 Docker 快速体验的命令如下:

bash 复制代码
git clone https://github.com/PostHog/duckgres.git
cd duckgres

docker build -t duckgres:dev .

docker run --rm \
  -p 5432:5432 -p 9090:9090 \
  -v ./duckgres.yaml:/app/duckgres.yaml \
  -v ./data:/app/data \
  duckgres:dev

其中 5432 客户端连接端口,9090 是监控指标。

总结

Duckgres 能够让 PostgreSQL 生态直接使用 DuckDB 的高性能分析能力和灵活性。

相关推荐
夏炳辉.15 小时前
Rocky Linux 8 从零安装 psql(PostgreSQL 客户端)
linux·运维·postgresql
像风一样自由202019 小时前
17.Milvus如何完成一次向量相似度检索
人工智能·postgresql·大模型·milvus·rag·智能体
像风一样自由202019 小时前
19.Milvus数据分片扩展与高并发设计
postgresql·大模型·milvus·rag·智能体
l1t3 天前
DeepSeek总结的修复pgrust v0.2 #83:generate_series 聚合及其底层的两个成本 - #84
数据库·postgresql
l1t3 天前
DeepSeek总结的DuckDB在 CI 中为 release 和 glibc CLI 构建启用 LTO - #24225
开发语言·数据库·ci/cd·duckdb
2601_962181963 天前
数据库之PostgreSQL详解
数据库·postgresql
pnoker3 天前
IoT DC3 时序存储选型:四款数据库可插拔
数据库·物联网·postgresql·时序数据库·influxdb·tdengine·iotdb
xuefuhe3 天前
PostgreSQL源码1:select 1
postgresql
IvorySQL3 天前
PostgreSQL 日报|内核多项缺陷修复与数据校验补丁推进(8 月 27 日)
数据库·postgresql·区块链
Cloud云卷云舒4 天前
【运营商数据库】实战淬炼,规模落地 | 中国移动HaishanDB年中总结会圆满召开
数据库·postgresql·ai-native·haishandb·移动云海山数据库