首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >浏览器正在成为新的数据库应用

浏览器正在成为新的数据库应用

作者头像
用户4035096
发布2026-07-09 21:30:54
发布2026-07-09 21:30:54
60
举报

浏览器正在成为新的数据库应用

提起数据库应用, 大家首先想到什么?

别着急回答, 思考10秒.

我个人想到的肯定是那些后端应用啊, 因为后端应用直接使用数据库.

也许有人会说不对啊, 前端也能直接使用数据库啊. 例如 PostgREST , 完全架空后端, 直接调用API即可操纵数据库. 使用 PostgREST 开发的模式通常被称为 “两层架构” (Two-tier Architecture)。在这种模式下,前端直接通过 HTTP 与数据库对话,完全“绕过”了传统意义上用 Java、Python 或 Node.js 编写的中间业务逻辑层。

也许还有人会说, AI啊, 现在都AI agent在调用数据库, 最典型的是RAG. 或者支持tools功能的LLM 和数据库MCP, LLM直接发起function call调用数据库SQL.

不过你万万想不到的是: 浏览器!

浏览器正成为新的数据库应用!

为什么? 总结起来就3个关键词: DuckDB-WASM + 对象存储 + pushdown

DuckDB-WASM + 对象存储 + pushdown

DuckDB-WASM 让你在浏览器中可直接运行DuckDB数据库, 这个数据库小巧但功能强大, 本身具备OLAP顶级梯队的性能.

同时DuckDB内置的各种插件可以访问远程数据库(例如 存储在OSS远程的 iceberg, parquet, 等)

支持下推, 当本地算力不足, 带宽肯定不足的情况下, 下推是最好的选择.

有这几点作为基础, 浏览器还不能成为数据库应用么? 在阅读下面的内容之前, 可通过这个链接尝鲜: https://duckdb.org/visualizer/?iceberg

谁会使用浏览器来运行数据库?

这个问题留给读者吧, 我第一个想到的可能是数据分析师、数据科学家、学生、老师.

发挥你的想象力, 可能还有更多.

作为数据库厂商: 你应该思考一下, 是不是要发行WASM版? 抓住这些用户, 先不管它能不能赚钱, 先截住用户、培养用户感情啊!

下面的内容翻译自duckdb blog, 看看他们怎么打造浏览器数据库应用的?

https://duckdb.org/2025/12/16/iceberg-in-the-browser


浏览器中的 Iceberg (Iceberg in the Browser)

摘要(TL;DR): DuckDB 是首个在浏览器标签页内实现与 Iceberg REST Catalog 全链路交互的界面。现在,您可以直接从浏览器读取和写入 Iceberg Catalog 中的表,而无需管理任何基础设施!

在这篇文章中,我们将描述当前与 Iceberg Catalog 交互的模式,并提出一个问题:这能在浏览器中完成吗?在详细阐述为实现这一功能而对 DuckDB 生态系统进行的更改后,我们将演示我们与 Iceberg REST Catalog 交互的方法。它仅限浏览器,无需额外设置。

Iceberg Catalog 的交互模式

Iceberg 是一种开放表格格式,它允许您将可变的数据库表捕获为对象存储(如 AWS S3)上的一组静态文件。Iceberg Catalog 允许您跟踪和组织 Iceberg 表。例如,Iceberg REST Catalog 通过 REST API 提供这些功能。

与 Iceberg Catalog 交互通常有两种方式:

  1. 客户端-服务器模式 (Client–Server): 操作的计算部分被委托给托管基础设施(如云端)。用户可以通过安装本地客户端或使用浏览器等轻量级客户端与服务器交互。
  2. 客户端即服务器模式 (Client-is-the-Server): 用户首先安装相关的库,然后直接在自己的机器上执行查询。

Iceberg 引擎遵循这些交互模式:它们要么运行在托管的计算基础设施中,要么由用户在本地运行。让我们看看加入 DuckDB 后情况如何!

使用 DuckDB 的 Iceberg

DuckDB 支持两种 Iceberg 交互模式。在客户端-服务器模式下,DuckDB 运行在服务器上读取 Iceberg 数据集。从用户的角度来看,引擎的选择是透明的,DuckDB 只是服务器在后台可能使用的众多引擎之一。

客户端即服务器模式更有趣:在这种模式下,用户在本地安装 DuckDB 客户端,并通过其 SQL 界面来查询 Iceberg Catalog。例如:

代码语言:javascript
复制
CREATE SECRET test_secret (    
    TYPE S3,     
    KEY_ID 'AKIAIOSFODNN7EXAMPLE',    
    SECRET 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY');    
    
ATTACH 'warehouse' AS db (    
    TYPE ICEBERG,    
    ENDPOINT_URL 'https://your-iceberg-endpoint',);    
    
SELECT sum(value)    
FROM db.table    
WHERE other_column = 'some_value';    

“客户端即服务器”模式解锁了强大的客户端,它们可以直接对数据进行操作。

您可以在我们早期的博客文章中发现 DuckDB-Iceberg 扩展的完整功能集,包括插入和更新能力。

浏览器中基于 DuckDB 的 Iceberg

虽然设置本地 DuckDB 安装非常简单,但打开浏览器标签页甚至更快。因此,我们问自己:我们能否直接在浏览器标签页中支持“客户端即服务器”模式?这可以为与 Iceberg Catalog 交互提供一个零设置、无基础设施、真正的无服务器(Serverless)选项。

幸运的是,DuckDB 有一个可以在任何浏览器中运行的客户端!DuckDB-Wasm 是 DuckDB 的 WebAssembly 移植版,它支持加载扩展插件

与 Iceberg REST Catalog 交互需要多项功能:通过 HTTP(S) 与 REST API 通信的能力、在对象存储上读取和写入 avroparquet 文件的能力,以及代表用户协商身份验证以访问这些资源的能力。所有这些都必须在浏览器中完成,而不调用任何原生组件。

为了支持这些功能,我们实现了以下高层级的变更:

  1. 在 DuckDB 核心代码库中: 我们重新设计了 HTTP 交互方式,以便扩展插件和客户端能够拥有统一的网络堆栈接口。[相关 PR]
  2. 在 duckdb-wasm 中: 我们实现了一个接口,在此案例中,它是对可用 JavaScript 网络堆栈的包装器。[相关 PR]
  3. 在 duckdb-iceberg 中: 我们将所有网络请求通过通用的 HTTP 接口进行路由,从而使原生 DuckDB 和 DuckDB-Wasm 执行相同的逻辑。[相关 PR]

结果是,您现在可以直接在浏览器中运行 DuckDB 来查询 Iceberg!现在,您可以利用浏览器标签页的隔离性,通过客户端-服务器客户端即服务器纯粹的无服务器方式访问同一个 Iceberg Catalog!

欢迎来到无服务器 Iceberg

要查看无服务器 Iceberg 的演示,请访问我们的表格可视化工具:duckdb.org/visualizer?iceberg

演示中的当前凭据通过一个权限极小的临时账户提供。如果您输入自己的凭据并共享链接,您将共享您的凭据。

访问您自己的数据

通过替换为您自己的 S3 Tables 存储桶 ARN 和具有 AmazonS3TablesReadOnlyAccess 策略的凭据,您也可以访问您的目录、元数据和数据。计算完全在本地进行,凭据和仓库 ID 仅发送到您在 ATTACH 命令中指定的 Catalog 端点。输入会被转换为 SQL,并添加到 URL 的 hash 分段中。

这意味着:

  • 不会有敏感数据被处理或发送到 duckdb.org
  • 计算是本地的,完全在您的浏览器中进行。
  • 您可以使用熟悉的 SQL 界面,并使用可以在运行 DuckDB 的任何地方运行的相同代码片段。
  • 如果您编辑凭据并共享生成的链接,您将共享新的凭据。

截至今天,这已支持 Amazon S3 Tables。这是通过与 Amazon S3 Tables 团队合作实现的。要了解有关 S3 Tables、如何入门及其功能集的更多信息,可以查看其产品页面或文档。AWS re:Invent 2025 上演示了 DuckDB 从浏览器查询 S3 Tables 的案例 —— 查看演示稿。

结论

DuckDB-Iceberg 扩展现在已获得 DuckDB-Wasm 的支持,它可以读取和编辑 Iceberg REST Catalog。用户现在可以从浏览器内部访问 Iceberg 数据,而无需安装或管理任何计算节点!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-02-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 digoal德哥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 浏览器正在成为新的数据库应用
  • DuckDB-WASM + 对象存储 + pushdown
  • 谁会使用浏览器来运行数据库?
  • 浏览器中的 Iceberg (Iceberg in the Browser)
    • Iceberg Catalog 的交互模式
    • 使用 DuckDB 的 Iceberg
    • 浏览器中基于 DuckDB 的 Iceberg
    • 欢迎来到无服务器 Iceberg
    • 访问您自己的数据
    • 结论
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档