输入关键词,开始搜索

↑↓ 选择↵ 打开esc 关闭
沉浸

AgoraDB - 多模态去中心化分析型数据库

AgoraDB

面向 Web3 的多模态去中心化分析型数据库

嵌入式。主权化。原生 P2P。


什么是 AgoraDB?

AgoraDB 是一个为去中心化网络构建的列式分析型数据库。它将现代数据湖(DuckDB、Snowflake)的查询能力带到 Web3 —— 无需中心化。

每个节点都是一个自主的数据主权单元。你的数据存在于一个 Space 中 —— 一个自包含的、DID 拥有的数据宇宙,容纳结构化表、属性图、向量嵌入和全文索引,全部由统一的 Iceberg Catalog 支撑。

┌─────────────────────────────────────────┐│  Space: space://did:agora:you/blog      ││  ├─ posts        (SQL table)            ││  ├─ followers    (Graph)                ││  ├─ embeddings   (Vector collection)    ││  └─ search_index (Full-text)            │└─────────────────────────────────────────┘

为什么选择 AgoraDB?

问题AgoraDB 如何解决
中心化数据孤岛每个 Space 都是主权的 —— 由你的 DID 拥有,存储在你选择的位置
Web3 中没有 SQL完整的 PostgreSQL 兼容 SQL + 用于图的 Cypher
昂贵的云分析在本地设备上查询;P2P 同步替代云管道
浏览器无法进行数据分析WASM 引擎在浏览器中运行 SQL,将重操作委托给对等节点
AI 智能体无法访问结构化数据MCP API 将 Space 暴露为 Claude、Cursor 等工具

它能做什么?

SQL 分析

SQL
-- 在 Parquet 文件上执行标准分析 SQLSELECT status, COUNT(*), AVG(totalprice)FROM ordersWHERE created_at > '2025-01-01'GROUP BY statusORDER BY COUNT(*) DESC;
  • 列式存储(Apache Parquet)带 Zone Map、Bloom Filter、ART 索引
  • 向量化执行(Apache DataFusion)—— 1024 行 Arrow 批次
  • 谓词下推 —— 过滤器下推到 Parquet 行组和页级别
  • 时间旅行查询 —— SELECT * FROM table TIMESTAMP AS OF '2025-06-01'

向量搜索

SQL
-- 近似最近邻搜索SELECT id, metadata, similarity(embedding, :query_vec) AS scoreFROM embeddingsORDER BY embedding <=> :query_vecLIMIT 100;
  • HNSW 索引用于余弦 / L2 / 内积
  • 量化支持(float32 → int8)用于受限环境

图查询

cypher
-- Cypher 用于社交图、知识图MATCH (u:User)-[:FOLLOWS]->(f:User)WHERE u.created_at > '2025-01-01'RETURN f.name, f.follower_count;
  • 基于 CSR 的遍历 —— O(degree) 出边查找
  • 图存储为 Parquet 边文件 + 顶点字典

多模态查询

SQL
-- 向量 → 图 → SQL 在一个查询中SELECT u.name, scoreFROM (  SELECT id, similarity(embedding, :vec) AS score  FROM user_embeddings  ORDER BY embedding <=> :vec LIMIT 100) vJOIN users u ON u.id = v.idJOIN user_graph g ON u.id = g.source_idWHERE g.relationship = 'follows'  AND u.created_at > '2025-01-01'ORDER BY score DESC;

架构

┌─────────────────────────────────────────────┐│  接口层                                      ││  SQL · Cypher · MCP · HTTP · WASM · CLI     │├─────────────────────────────────────────────┤│  查询层 (Apache DataFusion)                 ││  SQL Parser → Logical Plan → Optimizer      ││  (RBO + CBO) → Physical Plan → Execution   │├─────────────────────────────────────────────┤│  联邦规划器                                  ││  Remote/local fragmentation · Pushdown      │├─────────────────────────────────────────────┤│  Catalog Bridge (Iceberg → DataFusion)     ││  AgoraCatalogProvider · IcebergTableProvider│├─────────────────────────────────────────────┤│  存储引擎                                    ││  Iceberg Metadata · Parquet Column Store   ││  Zone Map · Bloom · ART · CSR · HNSW       │├─────────────────────────────────────────────┤│  VFS (虚拟文件系统)                          ││  Local Disk · S3 · OPFS (Browser) · IDB    │├─────────────────────────────────────────────┤│  安全与 P2P                                 ││  DID · UCAN · Arrow Flight · libp2p        │└─────────────────────────────────────────────┘

关键技术: Rust · Apache DataFusion · Apache Iceberg · Apache Parquet · Apache Arrow


节点类型

类型位置存储计算角色
Full NodeNAS / Server / VPSLocal disk + S3Multi-core, 16GB+权威存储、compaction、P2P 路由
Edge NodeDesktop / LaptopLocal disk (limited)Multi-core, 8GB+查询服务、P2P 直连
Browser NodeBrowser (WASM)OPFS / IndexedDBSingle-threaded WASM轻量级主权对等节点 —— 持有完整 Catalog,将重操作委托出去

Browser Node 是杀手锏。 它们为其 Space 持有完整的 Iceberg Catalog,可以独立回答查询,并且只通过 UCAN 认证的远程执行将大型 JOIN 或 compaction 委托给 Full Node。


当前进展

AgoraDB 开发路线图

Phase 1: 查询引擎核心 (5)
DataFusion 集成(SQL parser + optimizer + execution)
100%
Iceberg Catalog Bridge(CatalogProvider + TableProvider)
100%
CREATE SPACE DDL 执行
100%
旧引擎清理(5,700+ 行代码删除)
100%
31 个测试通过,0 失败
100%
Phase 2: 写入路径 + 联邦 (5)
Append Buffer → Parquet flush → Iceberg commit
0%
INSERT INTO ... VALUES SQL 支持
0%
Arrow Flight Server(gRPC)
0%
跨 Space 的 Federated JOIN
0%
TPC-H Q1-Q5 benchmark on SF1
0%
Phase 3: 多模态 (4)
GRAPH 模式(Cypher + CSR index)
0%
VECTOR 模式(HNSW + similarity search)
0%
FTS 模式(BM25 + inverted index)
0%
MCP API for AI agents
0%
全部
Phase 1: 查询引擎核心
Phase 2: 写入路径 + 联邦
Phase 3: 多模态
全部
done
doing
todo
状态阶段任务进度
●Phase 1: 查询引擎核心DataFusion 集成(SQL parser + optimizer + execution)
100%
●Phase 1: 查询引擎核心Iceberg Catalog Bridge(CatalogProvider + TableProvider)
100%
●Phase 1: 查询引擎核心CREATE SPACE DDL 执行
100%
●Phase 1: 查询引擎核心旧引擎清理(5,700+ 行代码删除)
100%
●Phase 1: 查询引擎核心31 个测试通过,0 失败
100%
◉Phase 2: 写入路径 + 联邦Append Buffer → Parquet flush → Iceberg commit
0%
◉Phase 2: 写入路径 + 联邦INSERT INTO ... VALUES SQL 支持
0%
◉Phase 2: 写入路径 + 联邦Arrow Flight Server(gRPC)
0%
◉Phase 2: 写入路径 + 联邦跨 Space 的 Federated JOIN
0%
◉Phase 2: 写入路径 + 联邦TPC-H Q1-Q5 benchmark on SF1
0%
○Phase 3: 多模态GRAPH 模式(Cypher + CSR index)
0%
○Phase 3: 多模态VECTOR 模式(HNSW + similarity search)
0%
○Phase 3: 多模态FTS 模式(BM25 + inverted index)
0%
○Phase 3: 多模态MCP API for AI agents
0%
36%整体完成度
整体完成度
14 个任务 · 5 已完成 · 5 进行中 · 4 待办
DataFusion 集成(SQL parser + optimizer + execution)
100%
Iceberg Catalog Bridge(CatalogProvider + TableProvider)
100%
CREATE SPACE DDL 执行
100%
旧引擎清理(5,700+ 行代码删除)
100%
31 个测试通过,0 失败
100%
Append Buffer → Parquet flush → Iceberg commit
0%
INSERT INTO ... VALUES SQL 支持
0%
Arrow Flight Server(gRPC)
0%
跨 Space 的 Federated JOIN
0%
TPC-H Q1-Q5 benchmark on SF1
0%
GRAPH 模式(Cypher + CSR index)
0%
VECTOR 模式(HNSW + similarity search)
0%
FTS 模式(BM25 + inverted index)
0%
MCP API for AI agents
0%
状态分布
● 已完成████░░░░░░536%
◉ 进行中████░░░░░░536%
○ 待办███░░░░░░░429%

浏览器(WASM)

JavaScript
import { AgoraDB } from '@agoradb/sdk'; const db = await AgoraDB.open('myblog');const result = await db.sql(`  SELECT id, title FROM posts WHERE published = true`);console.log(result.batches);

使用场景

DApp 后端

每个 DApp 为每个用户部署一个 Space。即使 DApp 关闭,用户仍保留数据所有权。通过撤销 UCAN token 来撤销访问权限。

去中心化社交(PDS 2.0)

Browser Node 作为真正的个人数据存储 —— 保存帖子、社交图谱、媒体元数据。GRAPH 模式用于关注/粉丝。FTS 模式用于内容搜索。无需中心化中继。

链上分析

将链上数据(区块、交易、日志)转换为 Iceberg 表。订阅子集(特定合约、地址活动)。本地 SQL 分析并自动 P2P 同步 —— 无需 API 密钥,没有速率限制。

AI 智能体数据层

MCP API 将 Space 暴露为 Claude、Cursor 等的”工具”。UCAN token 将智能体访问范围限定到特定 Space 和行谓词。VECTOR 模式用于 RAG。FTS 模式用于关键词检索。


协议

Apache License 2.0


AgoraDB —— 每个节点都是主权的。每个查询都是本地的。每个 Space 都是你的。

未知标题
00:00
00:00
播放列表