1. 启动 SonnetDB
从仓库根目录构建镜像:
docker build -f src/SonnetDB/Dockerfile -t sonnetdb .
运行容器:
docker run --rm -p 5080:5080 -v ./sonnetdb-data:/data sonnetdb
默认行为:
- 容器内监听
http://0.0.0.0:5080 - 数据根目录为
/data - 帮助文档会随镜像一起发布到
/help
如果直接从源码运行服务端,也会默认监听 5080,并使用 ./sonnetdb-data 作为数据根目录。
2. 打开管理入口
浏览器访问:
http://127.0.0.1:5080/admin/
帮助文档入口:
http://127.0.0.1:5080/help/
3. 完成首次安装
当 <DataRoot>/.system 为空时,/admin/ 不会直接落到登录页,而是进入首次安装向导。
初始化需要填写:
- 服务器 ID
- 组织名称
- 管理员用户名
- 管理员密码
- 初始静态 Bearer Token
初始化成功后,服务端会在 <DataRoot>/.system/ 下生成:
installation.jsonusers.jsongrants.json
其中 Bearer Token 的元数据与哈希保存在 users.json 中,不会以明文再次落盘。
4. 创建数据库
完成首次安装并登录后,可以在管理界面中创建数据库,也可以直接调用 HTTP API:
curl -X POST "http://127.0.0.1:5080/v1/db" \
-H "Authorization: Bearer <your-token>" \
-H "Content-Type: application/json" \
-d "{\"name\":\"metrics\"}"
5. 写入第一批数据
通过 SQL:
curl -X POST "http://127.0.0.1:5080/v1/db/metrics/sql" \
-H "Authorization: Bearer <your-token>" \
-H "Content-Type: application/json" \
-d "{\"sql\":\"CREATE MEASUREMENT cpu (host TAG, usage FIELD FLOAT)\"}"
curl -X POST "http://127.0.0.1:5080/v1/db/metrics/sql" \
-H "Authorization: Bearer <your-token>" \
-H "Content-Type: application/json" \
-d "{\"sql\":\"INSERT INTO cpu (time, host, usage) VALUES (1713676800000, 'server-01', 0.71)\"}"
6. 验证查询
curl -X POST "http://127.0.0.1:5080/v1/db/metrics/sql" \
-H "Authorization: Bearer <your-token>" \
-H "Content-Type: application/json" \
-d "{\"sql\":\"SELECT time, host, usage FROM cpu WHERE host = 'server-01'\"}"
服务端会以 ndjson 方式返回 meta、rows 和结束标记。
7. 本地嵌入式访问
如果你不需要 HTTP 服务端,可以直接在进程内打开数据库目录:
using SonnetDB.Engine;
using SonnetDB.Sql.Execution;
using var db = Tsdb.Open(new TsdbOptions
{
RootDirectory = "./demo-data",
});
SqlExecutor.Execute(db, "CREATE MEASUREMENT cpu (host TAG, usage FIELD FLOAT)");
更完整的进程内示例见 嵌入式与 in-proc API。
8. ADO.NET 与 CLI
本地 ADO.NET 连接:
Data Source=./demo-data
远程 ADO.NET 连接:
Data Source=sonnetdb+http://127.0.0.1:5080/metrics;Token=<your-token>
CLI 示例:
sndb sql --connection "Data Source=./demo-data" --command "SELECT count(*) FROM cpu"
详细用法分别见:
常用端点
| 地址 | 说明 |
|---|---|
/admin/ |
产品首页、首次安装、登录和后台入口 |
/help/ |
帮助文档站点 |
/healthz |
健康检查 |
/metrics |
Prometheus 指标 |
/v1/setup/status |
查询是否需要首次安装 |
/v1/setup/initialize |
完成首次安装 |
/v1/db |
数据库列表、创建、删除 |
/v1/db/{db}/sql |
数据面 SQL 入口 |
/v1/sql |
控制面 SQL 入口,仅 admin |
/v1/events |
SSE 事件流 |