跳转到主要内容
按工作负载选存储,用一套 API 访问数据。

1. 后端是什么

后端是注册在工作区内的物理存储 provider。HeavenBase 按名称将字段路由到后端实例,再用处理器为每个 provider 编译受支持的查询操作。 对普通应用代码,通常选择 preset,让工作区构建后端。
import heavenbase as hb

ws = hb.HeavenBase("core-backends", preset="debug")
print(ws.backends.names())
debug preset 创建三个后端实例:mainvecsearch

2. 内置后端族

HeavenBase 为本地、SQL、向量、文件与搜索场景提供后端构建器。
FamilyBackend keysUse it for
Local memoryinmem测试、demo、临时行。
Local filesjson, pickle, file简单持久化本地存储。
SQL rowssqlite, duckdb, postgres, pgvector, mysql, oceanbase, mssql, oracle, trino, starrocks结构化行存储与 SQL 原生过滤。
Vector storeslance, chroma, milvus, pinecone, pgvector原生向量搜索。
Searchelasticsearch文本搜索与搜索引擎支持的过滤。
可选 provider 需要对应 Python 驱动;服务器后端还需可达服务。若 provider 不可用,示例与测试请用 debug 或显式 inmem/sqlite 布局。

3. 配置自定义映射

显式后端字典以工作区本地名称为键,值内写 provider 类型。
ws = hb.HeavenBase(
    "core-backends-explicit",
    backends={
        "main": {"type": "sqlite", "database": ":memory:"},
        "scratch": {"type": "inmem"},
    },
)

print(ws.backends.names())
字段路由到后端名称,而非 provider 类型:
class Event(hb.Entity):
    title = hb.field(hb.ShortText).store(to="main")
    payload = hb.field(hb.Json).store(to="scratch")


ws.register(Event)
ws.upsert(Event, {"object_id": "e1", "title": "Import complete", "payload": {"rows": 12}})
print(ws.get("e1", entity=Event)["payload"]["rows"])

4. 发现能力

hb.capabilities 查看全局注册选项。需要答案限定在工作区已配置后端实例时,用 ws.capabilities
vector_backend_types = [option.type for option in hb.capabilities.backends(hb.Vector, op="near")]
workspace_ops = ws.capabilities.ops(hb.ShortText, hb.InlineColumn, backend="main")

print("inmem" in vector_backend_types)
print("match" in workspace_ops)
Capabilities 回答诸如:
  • 哪些后端可存 Vector
  • 哪些策略适用于 Array
  • 某后端可原生执行哪些操作或需回退
  • 特定 dtype、操作、后端与策略组合是否已注册

5. 了解安全边界

工作区方法在单个 HeavenBase 实例上线程安全。当前公开操作由工作区锁串行化,schema 注册、路由读取、CRUD、查询、refresh、drop、audit 与 repair 彼此不会竞态。 持久化后端在 provider 支持时,可被多个工作区实例打开。SQL 后端依赖数据库引擎。文件后端在外部手动编辑后,通过 refresh() 显式使缓存失效。

进一步探索

相关资源: