Project Icon

quackpipe

无服务器OLAP API实现DuckDB与ClickHouse HTTP接口兼容

QuackPipe是基于DuckDB构建的无服务器OLAP API,模拟并兼容ClickHouse的HTTP API。用户可通过熟悉的接口使用DuckDB SQL和云存储,保持现有习惯和集成。该项目支持云存储操作、文件模式、STDIN快速查询和ClickHouse可执行UDF等功能。QuackPipe还提供简洁的在线playground,方便用户尝试示例查询。

适用于鸭子迷的管道

:baby_chick: quackpipe

QuackPipe 是一个建立在 DuckDB 之上的无服务器 OLAP API,模拟和别名化 ClickHouse HTTP API

通过熟悉的 API 使用 DuckDB SQL 和云存储,无需放弃旧习惯和集成。

:hatched_chick: 演示

:hatched_chick: 尝试 s3/parquet 查询示例 在我们的 迷你游乐场 (fly.io 免费套餐, 1x-共享-vcpu, 256Mb)
:hatched_chick: 在 fly.io 上启动你自己的 免费实例



:seedling: 开始使用

下载 二进制发布版,使用 docker 或从源代码构建

🐋 使用 Docker

docker pull ghcr.io/metrico/quackpipe:latest
docker run -ti --rm -p 8123:8123 ghcr.io/metrico/quackpipe:latest

📦 下载二进制文件

curl -fsSL github.com/metrico/quackpipe/releases/latest/download/quackpipe-amd64 --output quackpipe \
&& chmod +x quackpipe
🔌 使用参数启动服务器
./quackpipe --port 8123
🔌 使用文件数据库启动服务器,只读访问
./quackpipe --port 8123 --params "/tmp/test.db?access_mode=READ_ONLY"
🔌 使用 Motherduck 认证令牌启动服务器
使用 DuckDB 参数
./quackpipe --port 8123 --params "/tmp/test.db?motherduck_token=YOUR_TOKEN_HERE"
使用系统环境变量
export motherduck_token='<token>'
./quackpipe --port 8123 

使用 -h 运行以获取完整的参数列表

参数
参数用途默认值
--portHTTP API 端口8123
--hostHTTP API 主机0.0.0.0
--stdinSTDIN 查询模式false
--format格式处理器JSONCompact
--params可选参数

:point_right: 游乐场

使用嵌入式游乐场执行无状态查询,不进行持久化

👉 有状态查询

通过添加唯一的 HTTP 认证来执行有状态查询,实现数据持久化。无需注册。

:point_right: API

使用 POST API 执行查询

curl -X POST https://quackpipe.fly.dev 
   -H "Content-Type: application/json"
   -d 'SELECT version()'  

:point_right: 标准输入

使用标准输入执行查询

# echo "SELECT 'hello', version() as version FORMAT CSV" | ./quackpipe --stdin
hello,v0.7.1

:fist_right: 扩展

默认情况下,Docker镜像中预安装了几个扩展,包括 parquet、json、httpfs
使用HTTP API时,httpfs、parquet、json 扩展会被包装器自动预加载。

用户可以预安装扩展并使用自定义参数执行quackpipe:

echo "INSTALL httpfs;" | ./quackpipe --stdin --params "?extension_directory=/tmp/"
./quackpipe --port 8123 --host 0.0.0.0 --params "?extension_directory=/tmp/"

ClickHouse HTTP

Quackpipe可以用于查询自身的远程实例和/或使用HTTP API的ClickHouse

CREATE OR REPLACE MACRO quackpipe(query, server := 'https://play.clickhouse.com', user := 'play', format := 'JSONEachRow') AS TABLE
    SELECT * FROM read_json_auto(concat(server, '/?default_format=', format, '&user=', user, '&query=', query));

SELECT * FROM quackpipe("SELECT number as once, number *2 as twice FROM numbers(10)")

ClickHouse UDF

Quackpipe可以作为可执行UDF在ClickHouse查询中输入/输出DuckDB数据:

SELECT *
FROM executable('quackpipe -stdin -format TSV', TSV, 'id UInt32, num UInt32', (
    SELECT 'SELECT 1, 2'
))
Query id: dd878948-bec8-4abe-9e06-2f5813653c3a
┌─id─┬─num─┐
│  1 │   2 │
└────┴─────┘
1 rows in set. Elapsed: 0.155 sec.

🃏 这是什么?可以把它想象成一个SELECT嵌套在另一个SELECT中,只是语法不同。
🃏 格式混淆?使用包含的ClickHouse宏别名让DuckDB SQL感觉像ClickHouse



:construction: 功能状态

  • DuckDB核心 1
    • cgo绑定
    • 扩展预加载
    • 别名扩展
  • REST API 2
    • CH格式模拟
      • CSV, CSVWithNames
      • TSV, TSVWithNames
      • JSONCompact
      • Native
    • Web演示平台 (来自ClickHouse,Apache2许可) 3
  • STDIN快速查询执行
  • ClickHouse可执行UDF
  • :memory:模式云存储 (s3/r2/minio, httpfs等)
  • :file:模式使用可选_参数_

贡献者

    Contributors @metrico/quackpipe

社区

Stargazers for @metrico/quackpipe

:black_joker: 免责声明

Footnotes

  1. DuckDB ® 是DuckDB Foundation的商标。所有权利由各自所有者保留。

  2. 根据MIT许可发布。详见LICENSE。所有权利由各自所有者保留。

  3. ClickHouse ® 是ClickHouse Inc.的商标。不存在直接关联或认可。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号