将 DuckDB 查询转换为安全的 REST API — 没有 httpserver 扩展,因此无法托管服务。
DuckDB 是一个快速的、基于文件的分析引擎,没有服务器进程,也没有内置身份验证。保存针对您的 SQL 查询 .duckdb 文件生成,为每个接收者生成一个 API 密钥,并将一个实时 JSON 端点交给合作伙伴——无需其他操作。 http服务器 无需构建 FastAPI 封装器,也无需发布数据库文件,即可公开扩展。只需一个受控的、只读的扩展即可。 DuckDB REST API 几分钟之内。
Query Streams 是一个安全的实时数据库集成平台,可将任何已保存的 DuckDB 查询转换为合作伙伴可用的 REST API 端点——具有每个接收者的密钥、只读强制执行和完整的审计跟踪。 你获得一个现场直播 DuckDB REST API 无需运行服务器,即可安装 http服务器 扩展名,或者发送您的数据库文件。 了解更多信息,请访问 QueryStreams.com 和 免费注册 几分钟内即可发布您的第一个 DuckDB 端点。
为什么要将 DuckDB 数据库作为 REST API 公开?
DuckDB之所以如此出色,恰恰在于它没有服务器——它在进程内运行,读取单个数据。 .duckdb 它能够读取文件(或直接查询 Parquet、CSV 和 JSON 格式的文件),并在笔记本电脑或定时任务服务器上以列式存储的速度处理分析工作负载。但是,一旦团队外部人员需要这些数据——例如客户需要实时数据流、合作伙伴的应用程序需要读取汇总数据、分析师需要将汇总数据添加到仪表板中——这种无服务器的优势就成了障碍。因为没有端口可供连接,也没有登录信息可供提供。常用的解决方法都行不通:比如,你通过电子邮件联系他们…… .duckdb 文件(现在你的数据完整副本存储在别人的硬盘上),你站出来支持社区 http服务器 你可以使用扩展程序或 FastAPI 封装器(现在你拥有了一个 HTTP 服务、它的身份验证和 TLS),或者安排另一次 CSV 导出。 DuckDB REST API 这是简洁版本——合作伙伴会收到一个 URL 和一个令牌,而不是您的文件。查询流则会保存一个查询并附带一个密钥。
没有服务器,也没有开放端口
DuckDB 没有网络监听器——而且你也没有添加。网络代理会读取你的 .duckdb 文件在本地传输并拨号出去;呼入电话通过该唯一一条出线连接返回。
每个接收者的 API 密钥
每个受赠者都会得到自己的 qsapi_* 关键在于:撤销其中一个密码无需触及其他密码——无需找回文件,也无需轮换密码。
默认只读
代理以只读方式打开 DuckDB,验证器会拒绝任何非 SELECT 语句。没有 安装, 复制,或 附 通过 API 的路径。
您的 SQL 和文件将保持私密
接收方可以看到端点 URL、JSON 响应以及您公开的任何过滤器——但绝不会看到您的 SQL、您的架构或 .duckdb 文件本身。
无需托管或修补
不 http服务器 扩展功能无需 FastAPI 应用或反向代理即可公开。该端点作为托管功能运行,因此无需维护部署管道或 TLS 轮换。
永久性的、过期的或自毁的
将端点设为永久端点,设置其在某个日期过期,或者为其设定一个固定的调用预算,使其在达到设定的请求次数后自动销毁。
在 DuckDB 上部署 REST API 的常用方法——以及它们为何会带来负面影响
这里确实有一些可行的方案,每种方案都有其适用之处。但关键在于,每种方案都需要您拥有基础设施、交出完整的数据副本,或者两者兼而有之。以下是常见方案与 Query Streams 共享端点的比较,前提是目标仅仅是“允许特定合作伙伴读取特定结果集”。
| 忧虑 | httpserver 扩展(自托管) | DIY FastAPI + duckdb | 发送 .duckdb 文件 | 查询流 |
|---|---|---|---|---|
| 网络暴露 | 您运行并公开一个 HTTP 服务器 | 您托管一项服务 | 没有——但数据将脱离你的控制。 | 仅出站代理——无入站端口 |
| 收件人持有 | 默认情况下会运行任意 SQL 语句的 URL | 指向您服务的 URL | 您的整个数据库的完整副本 | 一个用于单个查询的单用途键 |
| 数据/模式暴露 | 整个数据库,所有表 | 无论你手动编写什么代码 | 一切,永远 | 仅保存了一个查询,别无其他。 |
| 每个接收者的密钥 + 撤销 | 未内置 | 自己动手做 | 一旦共享就不可能了 | 内置 |
| 每次通话的审计日志 | 自行添加 | 自行添加 | 完全看不见 | 内置 |
| 您负责操作/修补/轮换 TLS。 | 是的,永远 | 是的,永远 | 没什么可跑的 | 为您管理 |
| 数据保持实时更新 | 是 | 是 | 发送出去的那一刻就失效了 | 每次通话都实时进行 |
想在不使用 httpserver 扩展的情况下通过 HTTP 提供 DuckDB 服务吗?
社区 http服务器 扩展程序非常适合在您控制的机器上快速启动一个临时查询端点。但它运行任意 SQL,并且没有针对每个接收者的密钥、配额或审计跟踪的概念——因此,您不应该将其指向合作伙伴。如果您希望向指定的合作伙伴提供一个受控的、只读的结果集,该结果集具有自己的密钥,且无需运行任何服务器,那么 Query Streams 正好可以满足您的需求。
Query Streams 如何将 DuckDB 查询转换为 REST API
在 DuckDB 文件旁边安装网络代理并配置好连接器后,将已保存的查询提升到共享的 REST 端点大约需要三个步骤。如果您已经在使用 Excel、Google Sheets 或 MCP 服务器的查询流,则代理和连接器已经就位——您可以从第二步开始。
将代理指向您的 DuckDB 文件
在存放您的设备的计算机上安装网络代理 .duckdb 修改文件并添加 DuckDB 连接器。代理程序以只读方式打开文件,并建立与查询流的出站 TLS 连接——所有数据都不会暴露在互联网上。
保存 SQL 查询
写下 选择 在针对 DuckDB 连接的查询构建器中,您可以进行聚合、窗口函数操作,并读取附加的 Parquet、CSV 或 JSON 文件。命名并保存即可。
推广它并分享一个密钥
打开“安装”选项卡,选择端点类型(永久、过期或呼叫预算)和输出格式,然后通过电子邮件邀请收件人。他们将获得一个魔法链接声明和他们自己的 qsapi_* 钥匙。
一个已保存的查询,多个表面
同一个已保存的 DuckDB 查询可以驱动 Excel 刷新、Google Sheets 侧边栏、Claude 或 Cursor 对话。 MCP 服务器, 和 同时,它还提供了一个面向合作伙伴的 REST 端点。您只需构建一次查询;查询流会处理所有接口。
没有服务器要运行,也没有文件要提交
安全模型是团队选择它而不是其他模型的原因。 http服务器 扩展名或共享文件。您的 DuckDB 文件永远不会离开您的计算机,其路径仅存在于您网络上的 Agent 配置中——它永远不会传输到我们的云端,也永远不会对接收者可见。DuckDB 本身以只读模式打开,并且您网络上的验证器会拒绝任何非 SELECT 语句。 只读违规 在它能够执行之前。
除了只读强制执行之外,同一个仅出站代理(端口 443 上的 HTTPS,没有入站端口或 VPN)支持每个端点的按接收者控制——IP 和 CORS 允许列表、两级速率限制以及可在共享之前收紧的可选字节配额。 仅出站连接和每个接收者级别的防护机制是如何运作的 →
调用你的 DuckDB REST API
接收方调用此端点的方式与其他 REST API 类似:提供一个 bearer token 和一个 URL。您公开的任何已保存查询参数都可以在每次调用时进行设置——在查询字符串中。 得到 或者在 JSON 正文中 邮政代理会将这些值绑定为正确的预处理语句参数,而不是字符串连接,因此接收者无法突破过滤器注入 SQL。
使用以下方式选择每次调用的输出格式: 接受 标题(或标题) ?format= 查询参数): JSON 对于单个数组, CSV 对于电子表格和 pandas,或者,在流式端点上, NDJSON (每行一个 JSON 数据)适用于按需解析的管道——这对于 DuckDB 旨在生成的大型分析结果集非常有用。对于带宽敏感型用户,可以选择启用 LZ4 有效载荷压缩 Accept-Encoding: lz4未压缩的响应也采用标准格式。 gzip 自动传输到网络。有关静态模式与流模式、四种线路组合以及 OpenAPI 3.1 版本的完整详细说明,请参阅…… 适用于 SQL 数据库的即时 REST API 指导。
使用量如何计费
API平台包含在所有查询流计划中——无需单独订阅——并且 Accept-Encoding: lz4 通话费用按实际传输的压缩字节计算。 API平台使用量计量方式 →
将其插入 Power BI、Tableau 以及任何可以读取 JSON 的工具。
DuckDB 是一个分析引擎,因此它的大部分结果都会输出到仪表盘。因为每个端点都会返回标准数据。 JSON — DuckDB 提供 CSV 和流式 NDJSON 格式 — 任何可以读取 REST 源的工具都可以直接使用您的 DuckDB 数据,而无需在他们那边安装任何东西。 Power Query 是进入微软 BI 技术栈最便捷的桥梁: Power BI 选择 获取数据 → 来自网页粘贴端点 URL,添加您的 授权 标题,Power Query 将 JSON 解析为可刷新的表格,该表格用于填充您的数据模型。(对于电子表格中的实时数据,可以使用原生方法。) 查询流 Excel 插件 更简单的方法是使用 Power Query,它能满足您在 Power BI 模型本身中获取数据的需求。)
它还提供饲料 n8n, Qlik, 卷曲, Python (请求 或 pandas.read_json)、失眠症、跳房子游戏——或者任何可以发送 HTTP 请求和读取 JSON 的脚本或工作流程。
可处理本地文件和网络共享文件
网络代理以相同的方式连接到本地网络 .duckdb 它支持从网络共享上的数据库文件或内存中的 DuckDB 读取数据,并可执行任何查询,包括读取 DuckDB 实例能够访问的 Parquet、CSV 或 JSON 文件的查询。为了获得最低延迟,请在存储数据的机器上或附近运行代理。一个 Query Streams 帐户可以在不同的机器和站点上运行多个代理,并且无论哪个代理提供服务,单个端点的行为都完全相同。
比 DuckDB 更胜一筹
相同的流程可以将已保存的查询从 PostgreSQL、Microsoft SQL Server、MySQL、MariaDB、SQLite、Microsoft Access、Snowflake、Oracle 或 BigQuery 提升到 REST 端点。DuckDB 是增长最快的入门级数据库之一。浏览 连接器设置指南 适用于当前列表。
常见问题
我需要运行服务器还是安装httpserver扩展? +
.duckdb 在您自己的计算机上以只读方式打开文件,并建立出站 TLS 连接 agent.querystreams.com 在 443 端口上。没有 http服务器 无需安装扩展程序,无需打开端口,也无需添加入站防火墙规则。收件人可以看到我的 SQL 文件或下载我的 .duckdb 文件吗? +
.duckdb 文件永远不会离开您的计算机——与通过电子邮件发送文件不同,您的数据副本永远不会出现在收件人的驱动器上。这与 DuckDB httpserver 扩展有何不同? +
http服务器 该扩展程序会将您控制的机器变成一个运行任意 SQL 的 HTTP 端点——非常适合快速的内部访问,但它没有针对每个接收者的密钥、没有配额、没有审计跟踪,而且您必须自行托管和保护它。Query Streams 则采用了相反的、更精准的出站共享方式:一个已保存的查询会成为一个端点,每个接收者都会获得自己的可撤销密钥,每次调用都会被审计,而且您无需部署或修补任何内容。API可以返回哪些输出格式? +
接受 标题或 ?format= 范围。 四种线材组合和LZ4压缩 →该查询能否通过 DuckDB 读取 Parquet、CSV 或 JSON 文件? +
选择 DuckDB 的读取端点可以是原生表、附加的 Parquet 或 CSV 文件、JSON 文档,甚至是跨多个表的视图。接收方只能看到 JSON 结果,而无需了解其底层数据来源是表还是文件。端点可以过期或自毁吗? +
DuckDB 的代理需要运行在哪里? +
.duckdb 文件或具有访问其所在网络共享权限的文件。为了获得最低延迟,请尽可能靠近数据运行。一个 Query Streams 帐户可以在不同的机器和站点上运行多个代理,并且任何代理都可以服务于同一个端点。收件人是否需要 Query Streams 帐户? +
开始
免费发布您的第一个 DuckDB REST API。
注册后,将网络代理安装到 DuckDB 文件旁边,保存 SQL 查询语句,然后通过电子邮件向收件人发送一个魔法链接声明。从第一次调用开始,每个收件人的密钥、只读强制执行和完整的审计跟踪功能都将启用。
相关指南: 适用于 SQL 数据库的即时 REST API | 将 PostgreSQL 公开为 REST API | 数据库 REST API 平台 | 连接器设置指南
类别:API平台
标签:duckdb-rest-api、duckdb、duckdb-server、duckdb-api、rest-api、expose-duckdb-as-api、httpserver-alternative、share-duckdb-data、per-recipient-keys、no-code-api、database-rest-api
元描述:将 DuckDB 查询转换为具有每个接收者密钥的安全、只读 REST API——无需 httpserver 扩展、服务器或代码。

