← 返回信息流
AI 资讯Hacker News·5 小时前

Show HN:基于对象存储构建的图数据库 HelixDB

原标题:Show HN: HelixDB – A graph database built on object storage

速览

HelixDB 是一个开源项目,展示了如何直接在对象存储(如 S3)上构建图数据库。这种架构利用对象存储的高耐久性和低成本特性,为图数据提供了更具经济效率的存储解决方案。该项目由开发者在 Hacker News 上分享,旨在探索去中心化或云原生图数据库的新范式。

AI 深度解读

Show HN: HelixDB – 基于对象存储构建的图数据库

背景

在构建现代 AI 应用时,开发者通常面临数据架构极度碎片化的问题。传统的开发模式往往需要同时维护多种异构数据库:用于业务逻辑的关系型数据库(Relational DB)、用于向量检索的向量数据库(Vector DB)、用于复杂关系分析的图数据库(Graph DB),以及用于非结构化数据的文档存储。此外,还需要额外的应用层代码来管理这些分散的数据存储位置。这种复杂性不仅增加了运维成本,也阻碍了 AI Agent(智能体)对数据的统一访问和“记忆”能力的构建。

HelixDB 正是在这一背景下诞生的解决方案。它旨在通过单一平台简化 AI 应用所需的所有组件,让开发者无需再为不同的数据类型部署和维护独立的数据库服务。HelixDB 的核心设计理念是提供统一的联邦访问权限,使 AI Agent 能够直接访问公司数据,从而构建“记忆”、“公司大脑”以及各类应用。

核心内容

HelixDB 是一个以对象存储(Object Storage)为底层基础构建的数据库系统。它主要采用“图 + 向量”的数据模型,同时也支持键值对(KV)、文档和关系型数据。这种混合模型使其能够同时处理结构化关系、非结构化语义以及复杂的数据关联。

本地开发与 CLI 工具链

HelixDB 提供了强大的命令行界面(CLI),用于管理本地实例并与 Helix Cloud 交互。

快速安装与更新: 开发者可以通过以下命令一键安装 CLI:

curl -sSL "https://install.helix-db.com" | bash

若已安装,可使用 helix update 更新至最新版本。

交互式引导器 helix chef 这是一个“一次性”的交互式引导工具,能够自动化完成以下任务:

  1. 安装 HelixDB 查询技能及文档 MCP(Model Context Protocol)。
  2. 搭建项目脚手架。
  3. 启动本地实例。
  4. 填充示例数据。
  5. 生成 HELIX_CHEF_PROMPT.md 文件。

如果环境中存在编码智能体(如 Claude Code、Codex 或 OpenCode),helix chef 甚至可以根据一行描述,自动构建包含前端在内的完整工作应用。

手动开发流程: 对于希望手动配置环境的开发者,流程如下:

  1. 初始化项目: 运行 helix init 会生成 helix.toml 配置文件、.helix/ 工作区目录以及预置的 examples/request.json

    mkdir my-helix-app && cd my-helix-app
    helix init
    
  2. 启动本地实例: 默认情况下,实例在后台容器中以端口 6969 运行,并等待查询就绪。

    helix start dev
    

    注意:默认存储模式为内存模式,停止实例将清除数据。若要持久化数据,请使用 helix start dev --disk;若要查看日志,可添加 --foreground 参数。

  3. 发送查询: 查询使用 Rust 或 TypeScript DSL 编写,并作为动态请求直接 POST 到运行中的实例(POST /v1/query),无需构建或部署步骤。

    helix query dev --file examples/request.json
    
  4. 停止实例

    helix stop dev
    

SDK 集成示例

HelixDB 提供 Rust 和 TypeScript 两种 SDK,两者生成的 JSON AST 相同,可直接发送给运行中的实例。

Rust 示例: 首先安装依赖 helix-dbtokiosonic-rs。查询被定义为带有 #[register] 宏的函数,通过客户端直接运行。

use helix_db::Client;
use helix_db::dsl::prelude::*;

#[register]
pub fn add_user(name: String) {
    write_batch()
        .var_as("user", g().add_n("User", vec![("name", name)])
        .value_map(None::<Vec<String>>),
    )
    .returning(["user"])
}

#[register]
pub fn get_user(name: String) {
    read_batch()
        .var_as("user", g().n_with_label("User")
        .where_(Predicate::eq("name", name))
        .value_map(None::<Vec<String>>),
    )
    .returning(["user"])
}

#[tokio::main]
async fn main() {
    let client = Client::new(None).unwrap(); // 默认连接 http://localhost:6969
    
    // 添加用户
    let new_user = client.query::<sonic_rs::Value>()
        .dynamic(add_user("John Doe".to_string()))
        .send().await.unwrap();
    
    // 获取用户
    let user = client.query::<sonic_rs::Value>()
        .dynamic(get_user("John Doe".to_string()))
        .send().await.unwrap();
}

TypeScript (Node.js 20+) 示例: 安装 @helix-db/helix-db 包。查询定义为函数,并通过 fetch POST 到实例。

import { Predicate, PropertyInput, PropertyProjection, defineParams, g, param, readBatch, writeBatch } from "@helix-db/helix-db";

const addUserParams = defineParams({ name: param.string() });
function addUser(p = addUserParams) {
    return writeBatch()
        .varAs("user", g().addN("User", { name: PropertyInput.param("name") })
        .project([PropertyProjection.new("name")]),
    )
    .returning(["user"]);
}

// ... getUser 函数类似 ...

const HELIX_URL = "http://localhost:6969/v1/query";

// 添加用户
const newUser = await fetch(HELIX_URL, {
    method: "POST",
    headers: { "content-type": "application/json" },
    body: addUser().toDynamicJson(addUserParams, { name: "John Doe" }),
}).then((r) => r.json());

云端部署:Helix Cloud

HelixDB Cloud 是一个基于对象存储的托管服务,具备以下特性:

  • 集成的向量搜索和全文搜索。
  • 完整的 ACID 事务支持。
  • 单写入器配合自动扩展的读取节点架构。
  • 高可用性(3+ 网关和数据库节点)。

云端集群使用与本地实例不同的部署路径。开发者需通过 CLI 进行认证、工作区和项目切换,并同步配置。

helix auth login # 认证
helix workspace switch <workspace> # 选择工作区
helix project switch <project>
helix init cloud --cluster-id <cluster-id> # 初始化云集群
helix sync production # 拉取网关 URL 和认证契约到 helix.toml
helix query production --file examples/request.json

HelixDB 提供分布式、高可用性的托管服务。感兴趣的企业用户可通过官网联系创始人获取服务。

关键要点

  • 统一数据平台:HelixDB 消除了对关系型、向量、图数据库及文档存储的分离需求,通过单一平台支持 AI 应用所需的所有数据组件。
  • 混合数据模型:核心采用“图 + 向量”模型,同时兼容 KV、文档和关系型数据,满足 AI Agent 对记忆、语义检索和复杂关系分析的需求。
  • 对象存储底层:基于对象存储构建,旨在实现低成本、高扩展性的数据存储后端。
  • 极简开发体验
    • 提供 helix chef 交互式引导器,可一键生成项目、启动实例并对接 AI 编码助手。
    • 支持 Rust 和 TypeScript SDK,查询通过 DSL 编写并直接作为动态 JSON 请求发送,无需编译部署。
  • 云原生架构:Helix Cloud 提供 ACID 事务、自动扩展读取节点
查看原文 →github.com