close
Skip to content

ctkqiang/HunTianDB

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

165 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

混天 DB

Image

时序安全数据库,兼容 PostgreSQL Wire Protocol v3.0。

快速开始

Docker(推荐)

# 国际 (Docker Hub)
docker pull ctkqiang/huntianandb:v0.1.7

# 中国 (阿里云容器镜像)
docker pull crpi-onofuhwrkmb5z0mn.cn-hangzhou.personal.cr.aliyuncs.com/nezhawanluoanquan/huntiandb:v0.1.7

# 运行
docker run -d \
  -p 5408:5408 -p 3000:3000 -p 5490:5490 \
  -v huntian_data:/app/data \
  ctkqiang/huntianandb:952d3f4e19adb464cd5da2d02edeed1d9a89781e

镜像暴露三个端口:

端口 协议 说明
5408 PostgreSQL Wire Protocol v3.0 psql、DBeaver、JDBC、psycopg2 连接
3000 HTTP REST API + Web Portal(仪表板、SQL 查询构建器)
5490 HTTP Prometheus /metrics + /health + /ready

源码编译

cd backend && cargo run --release

数据库启动后占用两个端口:

  • TCP 5408 -- PostgreSQL Wire Protocol v3.0(可用 psqlpsycopg2、JDBC、DBeaver 连接)
  • TCP 3000 -- REST API + 前端仪表板

连接

# psql 命令行
psql -h 127.0.0.1 -p 5408 -U admin -d huntiandb

# Python
import psycopg2
conn = psycopg2.connect(host="127.0.0.1", port=5408, user="admin", password="admin123", dbname="huntiandb")

默认账号:admin / admin123

SQL 支持

类别 命令
DDL CREATE TABLE, DROP TABLE, DESCRIBE
DML INSERT INTO, SELECT (WHERE, LIMIT, ORDER BY)
聚合 COUNT, SUM, AVG, MIN, MAX, GROUP BY
元数据 SHOW TABLES, SHOW USERS, SHOW COLUMNS FROM
用户 CREATE USER, DROP USER, INSERT INTO users

用户管理

-- 标准 SQL 语法
INSERT INTO users (username, role) VALUES ('analyst', 'reader');

-- 或者用内置命令
CREATE USER analyst 'securePass789' reader;
DROP USER analyst;
SHOW USERS;

角色:admin(管理员)、writer(写入者)、reader(只读)。 详见 用户管理

性能基准

数据来自 bench_1779259126.md -- 100,000 行、单节点 Apple Silicon macOS、psycopg2 PG wire protocol:

指标 混天 DB PostgreSQL 16 QuestDB 7.x
INSERT (batch=5000) 68,741 r/s 38,000 r/s 280,000 r/s
点查询 p50 0.58ms 1.2ms 0.2ms
COUNT(*) 10 万行 0.07ms 35ms 3.5ms
DDL CREATE TABLE 4.0ms 12ms 8.0ms
WAL 每条记录 109 字节 -- --

架构要点:

  • 写入路径使用异步无锁 WAL(crossbeam channel + 后台写入线程),客户端即刻返回
  • WAL 格式:zstd 压缩 bincode (v3),比 JSON 文本小 5 倍
  • 聚合函数采用列式缓存向量化,直接迭代 f64 连续切片
  • PG wire protocol 零摩擦兼容现有 PostgreSQL 工具链(Grafana、DBeaver、psycopg2)

架构

前端 (React + TDesign + Monaco Editor)
    |
REST API (axum)  +  PG Wire Protocol (tokio)
    \                    /
      数据库引擎 (内存 + WAL 持久化)
              |
    data/recovery.log  (zstd 压缩 bincode, 异步写入)

前端

cd frontend && bun install && bun run dev

访问 http://localhost:3000,提供:

  • 仪表板 -- 实时安全事件监控,含吞吐量面积图、事件类型分布柱状图、事件流 Feed
  • SQL 查询构建器 -- 多标签页 Monaco 编辑器,含数据表浏览器、查询历史、示例查询
  • 事件查看器 -- 分页安全事件表格,支持筛选
  • 设置 -- 系统信息与配置

可观测性

混天 DB 内置 Prometheus 指标端点,提供生产级监控能力。

端点: 默认 :5490/metrics(通过 METRICS_PORT / PROMETHEUS_PATH 配置)

指标:

指标 类型 说明
huntian_wal_fsync_seconds Histogram WAL fsync 耗时分桶 [0.1ms-100ms]
huntian_wal_size_bytes Gauge WAL 文件当前大小
huntian_wal_replay_lsn Gauge WAL 回放最后 LSN
huntian_memory_usage_bytes Gauge 进程 RSS 内存
huntian_open_fds Gauge 打开的文件描述符数
huntian_active_queries Gauge 当前执行中的查询数
huntian_slow_queries_total Counter 慢查询总数
huntian_checksum_failures_total Counter 校验和失败次数
huntian_query_duration_seconds Histogram 查询耗时分桶 [1ms-10s]
huntian_snapshot_duration_seconds Histogram 快照耗时分桶 [10ms-60s]
huntian_events_written_total Counter 写入事件总数

健康检查:

  • GET /health — 200 若服务存活
  • GET /ready — 200 若数据库已完成恢复并接受查询
# 启动时配置指标端口
METRICS_PORT=5490 PROMETHEUS_ENABLED=true cargo run

# 验证
curl http://localhost:5490/metrics
curl http://localhost:5490/health

配置:

环境变量 默认值 说明
PROMETHEUS_ENABLED true 启用/禁用指标端点
METRICS_PORT 5490 指标 HTTP 端口(0=禁用)
PROMETHEUS_PATH /metrics 指标导出路径

示例代码

Python 示例展示混天 DB 的核心用法,位于 examples/ 目录:

cd examples/
pip install psycopg2-binary
python3 create_table.py            # 创建数据表
python3 data_insert_totable.py     # 批量插入数据
python3 query_data.py              # 查询与聚合
python3 user_management.py         # 用户管理

详见 examples/README.md

文档

文档 语言
README (English) EN
用户管理 ZH
User Management EN
架构说明 ZH
安全说明 ZH

许可证

本项目基于 MIT 许可证 开源发布,详见 LICENSE 文件。

主要条款:

  • 可自由使用、复制、修改、合并、出版发行、再授权及销售本软件的副本
  • 允许商业用途,无需额外授权
  • 软件按"原样"提供,不提供任何形式的明示或暗示担保
  • 所有副本或重要部分中必须包含上述版权声明和本许可声明

Copyright (c) 2025-present, ctkqiang

如果您觉得本项目对您有帮助,欢迎请我喝杯咖啡 ☕️,您的支持是我持续维护和改进的动力!

微信扫码捐赠
微信扫码捐赠

About

混天是一款面向安全审计日志与金融数据的不可变时序数据库。支持 100万事件/秒的写入吞吐,兼容 PostgreSQL 线协议,内置 TLS 1.3 + AES-256-GCM 企业级加密。

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors