MinIODB是一个极致轻量化、高性能、可水平扩展的分布式对象存储与OLAP查询分析系统。采用存算分离架构,以MinIO作为分布式存储底座,DuckDB作为高性能OLAP查询引擎,Redis作为元数据中心,提供企业级的数据分析能力。
- 🖥️ Dashboard控制台 - Web管理界面,支持实时监控、表管理、节点管理
- 🚀 灵活部署 - 支持单节点/分布式/All-in-One三种部署模式
- ⚡ 单节点模式 - 无需Redis依赖,仅需MinIO即可快速启动
- 📈 分布式扩展 - 支持水平扩展,通过增加节点线性提升处理能力
- 💾 轻量高效 - 资源占用少,适合资源受限环境
- 🛡️ 高可用 - 三层高可用体系(应用层/中间件层/存储层)
- 🔄 数据备份 - 热备+冷备完整备份体系,支持灾难恢复
- 🔐 权限体系 - 两级权限控制(功能权限+表级数据权限)
- 📊 表级管理 - 支持多表数据隔离和差异化配置
+----------------+ +----------------+ +----------------+
| gRPC Client | | RESTful Client| | Browser |
+----------------+ +----------------+ +----------------+
| | |
v v v
+---------------------------------------------------------------+
| API Gateway / Query Node (Go) - :8081 |
| |
| - Request Parsing & Validation - Dashboard Server (新增) |
| - Query Coordination - SSE Real-time Events |
| - Result Aggregation - Static SPA (embedded) |
| - Metadata Manager |
+---------------------------------------------------------------+
^ | ^ | ^ |
| | | | | |
| v | v | v
+---------------------------------------------------------------+
| Connection Pool Manager |
| |
| Redis Pool | MinIO Pool | Dashboard Config|
| ├─ Standalone | ├─ Primary Pool | ├─ All-in-One |
| ├─ Sentinel | ├─ Backup Pool | └─ Standalone |
| ├─ Cluster | ├─ Health Check | |
| └─ Health Check | └─ Auto Failover | |
+---------------------------------------------------------------+
| |
v (Service Discovery) v (Query Planning)
+----------------+ +---------------------------------+
| Redis | | Worker Nodes (Go Service) |
| -------------- | |---------------------------------|
| - Service Reg. |<-----| - Heartbeat & Registration |
| - Data Index |----->| - DuckDB Instance (embedded) |
| - Hash Ring | | - Data Ingestion & Buffering |
| - Table Meta | | - Parquet File Generation |
| - Metadata Ver | | - Read/Write to MinIO |
| - Backup Index | | - Table-level Processing |
+----------------+ | - Connection Pool Client |
+---------------------------------+
^ |
| | (S3 API via Pool)
v v
+-------------------------+
| MinIO Cluster |
| (Distributed Object |
| Storage) |
| ├─ Primary Storage |
| ├─ Backup Storage |
| └─ TABLE/ID/YYYY-MM-DD/ |
+-------------------------+
详细架构设计:docs/SOLUTION.md
单节点模式(推荐开发测试):
- Go 1.24+
- MinIO Server
- 4GB+ 内存
分布式模式(推荐生产环境):
- Go 1.24+
- Redis 6.0+
- MinIO Cluster
- 8GB+ 内存
git clone https://github.com/richenlin/minIODB.git
cd minIODB
go mod downloadcp config/config.yaml config/config.local.yaml单节点模式配置:
redis:
enabled: false # 关闭Redis,无需分布式协调
minio:
endpoint: "localhost:9000"
access_key: "minioadmin"
secret_key: "minioadmin"
bucket: "miniodb-data"分布式模式配置:
redis:
enabled: true
mode: "standalone" # 或 sentinel/cluster
addr: "localhost:6379"
minio:
endpoint: "minio-cluster:9000"
bucket: "miniodb-data"# 启动基础设施(Redis、MinIO)
./deploy/deploy.sh dev --install-deps
# 启动 MinIODB
go run cmd/main.go -c config/config.local.yaml服务启动后:
- gRPC端口: :8080
- REST API端口: :8081
- Swagger UI: http://localhost:8081/api-docs/index.html
- Prometheus指标: http://localhost:8081/metrics
# 健康检查
curl http://localhost:8081/v1/health
# 创建表
curl -X POST http://localhost:8081/v1/tables \
-H "Content-Type: application/json" \
-d '{"table_name": "users", "config": {"buffer_size": 1000}}'
# 写入数据
curl -X POST http://localhost:8081/v1/data \
-H "Content-Type: application/json" \
-d '{"table": "users", "id": "user-001", "timestamp": "2024-01-18T10:00:00Z", "payload": {"name": "张三"}}'
# 查询数据
curl -X POST http://localhost:8081/v1/query \
-H "Content-Type: application/json" \
-d '{"sql": "SELECT * FROM users WHERE id = '\''user-001'\''"}'本项目采用BSD-3-Clause许可证。详见LICENSE文件。
⭐ 如果这个项目对您有帮助,请给我们一个Star!
