SonnetDB 多模型能力更新:向量、全文搜索、S3 对象桶与消息队列场景总览

SonnetDB 最近的变化,不再只是“时序数据库多了几个 SQL 函数”。更准确地说,它正在从单一时序引擎,变成一个适合工业应用本地部署的多模型数据底座:时序点、关系维表、JSON 文档、向量、全文索引、对象桶和实时事件流逐步放到同一个进程、同一个数据目录、同一套权限模型下面。

这件事对工业现场很重要。一个真实设备平台里,数据往往不是单一形态:

  • 传感器值是时序点。
  • 设备、资产、站点是关系维表。
  • 告警、工单、知识库是 JSON 文档。
  • 语义检索需要 embedding 向量。
  • 故障描述、日志、说明书需要全文搜索。
  • 固件、附件、备份包需要对象桶。
  • 消息队列则常常需要被观测、归档和分析。

SonnetDB 现在已经可以把其中不少能力放在一个 C# 应用里完成。下面这个最小示例先展示整体入口。

using SonnetDB.Engine;
using SonnetDB.Sql;
using SonnetDB.Sql.Execution;

using var db = Tsdb.Open(new TsdbOptions
{
    RootDirectory = "data/multimodel-demo"
});

SqlExecutor.Execute(db, """
    CREATE MEASUREMENT incidents (
        device_id TAG,
        severity FIELD FLOAT,
        embedding FIELD VECTOR(3) WITH INDEX hnsw(m=8, ef=32)
    )
    """);

SqlExecutor.Execute(db, """
    CREATE DOCUMENT COLLECTION knowledge
    """);

SqlExecutor.Execute(db, """
    CREATE FULLTEXT INDEX ft_knowledge_body
    ON knowledge ('$.body')
    USING unicode
    """);

这个例子里有三个关键点。

第一,VECTOR(3) 是 measurement 的 field,不是一个外部向量库的影子表。向量和时序点一起保留在 SonnetDB 的数据生命周期里。

第二,全文索引创建在 document collection 之上。文档主数据仍在 SonnetDB,DotSearch 负责派生索引和 BM25 相关性排序。

第三,对象桶和 SSE 事件流不需要把主业务拆成多个服务才能用。对象桶走 /v1/db/{db}/s3/...,事件流走 /v1/events,C# 客户端可以直接消费。

能力边界要说清楚

SonnetDB 当前没有把自己伪装成 Kafka 或 RabbitMQ。它提供的是时序、文档、搜索、对象桶和 SSE 事件订阅能力;消息队列场景里更适合用它记录队列积压、消费延迟、死信摘要和消息处理审计,而不是替代专业 broker。

这正是多模型数据库在工业场景的价值:不是什么都替代,而是把“长期要查、要审计、要搜索、要关联”的数据落在同一个可控底座里。

后面的文章会分别展开:

  • 如何用 C# 写入 VECTOR 并执行 KNN。
  • 如何创建全文索引并按 BM25 排序。
  • 如何把全文和向量融合成 Hybrid Search。
  • 如何用 S3-compatible API 存固件、附件和备份。
  • 如何用 SonnetDB 观测消息队列和消费链路。
  • 如何把这些能力组合成 IoTSharp 数据底座。

官网地址:https://sonnetdb.com

技术文章站:https://iotpaper.net

开源仓库:https://github.com/IoTSharp/SonnetDB

posted @ 2026-06-14 23:04  IoTSharp  阅读(2)  评论(0)    收藏  举报