# ss-rtdb **Repository Path**: stuhu/ss-rtdb ## Basic Information - **Project Name**: ss-rtdb - **Description**: 工业级 实时数据库 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://smartsite.top/ - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2026-10-17 - **Last Updated**: 2026-10-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: Scada, rtdb, 实时数据库, 时序数据库, 天存储 ## README # ss-rtdb 面向工业与物联网场景的**轻量级实时 / 时序数据库**。一套引擎、两种形态、零运行时依赖。 `ss-rtdb` 以**嵌入式库**或**独立服务**两种形态提供,两者共享同一个引擎与同一套磁盘数据格式 —— 可以先在进程内嵌入式使用,之后把数据目录直接交给服务端,**无需任何迁移**。 | 形态 | 包 / 可执行文件 | 形态特征 | 可类比 | | ---- | ---------------- | -------- | ------ | | **A — 嵌入式库** | `@ss/rtdb-core` | 进程内直接调用引擎,无网络、无部署 | SQLite | | **B — 独立服务** | `rtdb-server`(配套 `rtdbctl`、SDK、Web 控制台) | 单进程暴露 HTTP API,多客户端、多语言 | InfluxDB | ## 能力概览 - **写入**:兼容 InfluxDB Line Protocol,同时支持 JSON 批量写入;目标吞吐 ≥5 万点/秒,写入按 `(指标, 时间戳)` 幂等,可安全重试。 - **查询**:只有四个原语 —— `range`、`last`、`count`、`aggregate` (`avg` / `sum` / `min` / `max` / `count` / `last`,其中 `avg` 为时间加权平均)。 - **存储**:一天一个日目录,目录内按容量滚动段文件;块编码采用 Gorilla / delta-of-delta / RLE / 字典编码,整块压缩比 ≥10 倍。 - **持久化**:WAL + 每块 CRC 校验;已封存的段不可变;掉电注入测试零损坏。 - **运维**:按整日目录做保留策略、冷归档(`tar.gz`)、拷目录即备份、离线修复, 内置 status / Prometheus 指标 / 存活探针。 - **零运行时依赖**:引擎、服务、CLI 与两个 SDK 仅依赖 Node / Python 标准库, 无原生模块、无 `.node` / `.exe` 产物。 - **多用户**:角色 `admin` / `write` / `readonly`,scrypt 口令哈希,可吊销的 API 令牌。 > 设计上的非目标:仅支持单节点(当前版本不提供集群);没有 SQL 引擎、JOIN、事务, > 除“一库一目录”隔离外不支持多租户。 ## 文档 中文为完整译本,英文为原始文档,两套逐页对应: | # | 中文文档 | English docs | | - | -------- | ------------ | | — | [文档首页](./docs-o/zh/README.md) | [Docs home](./docs-o/en/README.md) | | 01 | [安装](./docs-o/zh/01-installation.md) | [Installation](./docs-o/en/01-installation.md) | | 02 | [配置](./docs-o/zh/02-configuration.md) | [Configuration](./docs-o/en/02-configuration.md) | | 03 | [运行服务与 `rtdbctl` CLI](./docs-o/zh/03-running-and-cli.md) | [Running the server & `rtdbctl`](./docs-o/en/03-running-and-cli.md) | | 04 | [HTTP API](./docs-o/zh/04-http-api.md) | [HTTP API](./docs-o/en/04-http-api.md) | | 05 | [客户端 SDK(Node 与 Python)](./docs-o/zh/05-client-sdks.md) | [Client SDKs](./docs-o/en/05-client-sdks.md) | | 06 | [嵌入式引擎(形态 A)](./docs-o/zh/06-embedded-engine.md) | [Embedded engine](./docs-o/en/06-embedded-engine.md) | | 07 | [Web 管理控制台](./docs-o/zh/07-web-admin.md) | [Web admin console](./docs-o/en/07-web-admin.md) | | 08 | [运维与维护](./docs-o/zh/08-operations.md) | [Operations & maintenance](./docs-o/en/08-operations.md) | | 09 | [开发者指南](./docs-o/zh/09-developer-guide.md) | [Developer guide](./docs-o/en/09-developer-guide.md) | | 10 | [Smart Site 数据模拟客户端](./docs-o/zh/10-smart-site-demo.md) | [Smart Site demo client](./docs-o/en/10-smart-site-demo.md) | | 11 | [存储格式与写入路径(细化设计)](./docs-o/zh/11-segment-format.md) | [Storage format & write path](./docs-o/en/11-segment-format.md) | 新用户建议按 **01 → 03 → 04** 阅读;运维人员建议按 **02 → 08** 阅读。 ## 快速上手 要求:**Node.js ≥ 24**(源码通过 Node 原生 TypeScript 类型剥离直接运行)与 npm。 ```bash # 1. 安装工作区依赖(npm 工作区根目录是 src/) cd src npm install # 2. 启动服务(前台) npm start --workspace @ss/rtdb-server # -> rtdb-server started: http://127.0.0.1:6180 (dataDir=./rtdb-data) ``` 首次启动且开启了鉴权(默认)时,服务会生成令牌并写入 `./rtdb.token`: ```bash cat rtdb.token # Linux / macOS type rtdb.token # Windows cmd TOKEN=$(cat rtdb.token) curl -X POST "http://127.0.0.1:6180/api/v1/write?db=plant_a" \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: text/plain" \ --data-binary $'station01.powerMeter.kwh 1024.5\nstation01.powerMeter.kwh 1030.25' curl -X POST "http://127.0.0.1:6180/api/v1/query/last" \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{"db":"plant_a","metricName":"station01.powerMeter.kwh"}' ``` 无需凭据的健康检查:`/healthz`、`/api/v1/status`、`/metrics`(Prometheus)。 Web 控制台:(需先构建 `admin` 包,见文档 07)。 控制台首次打开即为登录页:首启且用户目录为空时会自动创建默认管理员 `admin` / `ss-rtdb` (见文档 02 §6.4),登录后即用其换取 API 令牌;也可以直接调登录端点: ```bash curl -X POST http://127.0.0.1:6180/api/v1/auth/login \ -H "Content-Type: application/json" \ -d '{"username":"admin","password":"ss-rtdb"}' ``` 嵌入式用法(形态 A): ```ts import { RtdbEngine } from '@ss/rtdb-core'; const rtdb = new RtdbEngine({ dataDir: './rtdb-data' }); await rtdb.open(); await rtdb.writeBatch('plant_a', [ { metricName: 'station01.powerMeter.kwh', timestamp: Date.now(), value: 1024.5 }, ]); await rtdb.close(); ``` ## 在线演示 仓库附带一个已部署的公开实例,无需本地安装即可体验 Web 控制台与 HTTP API: | 项目 | 地址 / 说明 | | ---- | ----------- | | 站点入口 | (302 跳转控制台) | | Web 控制台 | | | 登录账号 | `admin` / `ss-rtdb`(首启引导管理员,登录后请立即修改密码) | | 数据浏览 | 数据库 `smart_site_remote`:44 个模拟指标(f64 / i64 / bool / string 四类值型,1 秒采样) | | 免鉴权观测端点 | `/healthz`、`/api/v1/status`、`/metrics`(Prometheus) | | 接口文档 | `/api/docs`(OpenAPI JSON:`/api/docs/openapi.json`) | ```bash curl https://smartsite.top:8081/healthz curl https://smartsite.top:8081/api/v1/status ``` > 该端口为 **TLS-only**:`http://…:8081` 会握手失败(`wrong version number`),请使用 `https://`。 > 查询与写入需要令牌(控制台登录即用其换取);示例数据由本仓库的模拟客户端写入,可随时重跑覆盖: ```bat cd f:\work\smartdata\202603_trace\trunk\code\ss-rtdb bin\start-demo-server.bat remote smartsite.top:8081 --duration 60 --interval 1000 ``` 位置参数目标地址、令牌解析顺序与退出码含义见[文档 10 §3.5](./docs-o/zh/10-smart-site-demo.md)。 ## 仓库结构 ``` ss-rtdb/ ├── bin/ # 启动 / 打包脚本(start-server / build-release / build-sea ...) ├── conf/ # rtdb-server.json —— 服务端默认配置(由工作目录自动加载) ├── src/ # npm 工作区根目录(所有 npm 命令在此执行) │ └── packages/ │ ├── core/ # @ss/rtdb-core — 引擎,零运行时依赖 │ ├── server/ # @ss/rtdb-server — 形态 B 的 HTTP 服务(rtdb-server) │ ├── cli/ # @ss/rtdb-cli — rtdbctl │ ├── admin/ # @ss/rtdb-admin — Vue 3 Web 控制台 │ └── demo/ # 演示与测试客户端(npm 工作区)+ 统一配置 │ ├── client-node/ # @ss/rtdb-client — Node.js SDK │ ├── client-python/ # ss-rtdb-client — Python SDK(仅标准库) │ ├── client-smart-site/ # Smart Site 实时数据模拟客户端 │ └── conf/ # rtdb-server.json / client-smart-site.json └── docs-o/ ├── en/ # 英文文档 └── zh/ # 中文文档 ``` ## 许可证与联系 Apache License 2.0 —— 每个源文件都带有标准 Apache-2.0 文件头;提交补丁前请先阅读 [开发者指南 §6 编码规范](./docs-o/zh/09-developer-guide.md)。 - 网站: - 联系:zkxxa@qq.com,zcwebms@gmail.com --- ## 更新日志 | 日期 | 变更 | 处理模型 | | ---- | ---- | -------- | | 2026-10-17 | 由两行占位改写为项目门面:简介与形态对照、能力概览、中英对照文档索引、快速上手、仓库结构、许可与联系 | DeepSeek-V4.1-Flash | | 2026-10-17 | 文档索引新增 10 — Smart Site 数据模拟客户端(中英对照) | DeepSeek-V4.1-Flash | | 2026-10-17 | 快速上手补充控制台登录:首启默认管理员 `admin` / `ss-rtdb` 与 `POST /api/v1/auth/login` 示例 | DeepSeek-V4.1-Flash | | 2026-10-17 | 仓库结构补充 `bin/` 与 `conf/`(服务端默认配置 `conf/rtdb-server.json`,运行时自动加载) | DeepSeek-V4.1-Flash | | 2026-10-17 | 文档索引新增 11 — 存储格式与写入路径(细化设计,中英对照) | GLM-5.3-Flash | | 2026-10-18 | 新增「在线演示」章节:公开实例 的控制台入口、默认管理员、示例数据库 `smart_site_remote`、观测端点与接口文档,并说明端口为 TLS-only、模拟数据可由 `bin\start-demo-server.bat remote` 重新生成 | DeepSeek-V4.1-Flash |