DatomsDBS 数据资产管理系统 - 系统架构与功能总结
📋 项目概述
DatomsDBS (DatomsDB Server) 是一个基于 Node.js 的数据资产管理系统,版本 0.1.0。该系统提供了完整的数据源连接、数据资产管理、用户认证、权限控制等功能,支持多种数据库类型和文件格式。
🏗️ 系统架构
技术栈
- 后端: Node.js + Express.js
- 数据库引擎: DatomsDB (自研)
- 前端: HTML + CSS + JavaScript (管理界面)
- 容器化: Docker + Docker Compose
- 日志: Winston
- 测试: Jest + Supertest
核心依赖
{
"datomsdb": "^0.2.3", // 核心数据库引擎
"express": "^4.17.1", // Web 框架
"mysql2": "^3.14.1", // MySQL 连接器
"pg": "^8.16.0", // PostgreSQL 连接器
"mongodb": "^6.16.0", // MongoDB 连接器
"jsonwebtoken": "^8.5.1", // JWT 认证
"@aws-sdk/client-s3": "^3.812.0" // AWS S3 支持
}
📁 项目结构
DatomsDBS/
├── src/ # 源代码目录
│ ├── api/ # API 层
│ │ ├── routes/ # 路由定义
│ │ ├── controllers/ # 控制器逻辑
│ │ └── middleware/ # 中间件
│ ├── services/ # 业务逻辑层
│ ├── db/ # 数据库引擎层
│ ├── connectors/ # 数据源连接器
│ ├── utils/ # 工具库
│ └── config/ # 配置文件
├── public/ # 静态资源
│ └── admin/ # 管理界面
├── data/ # 数据存储目录
├── tests/ # 测试套件
├── deployment/ # 部署配置
└── docs/ # 项目文档
🚀 核心功能模块
1. 用户认证与权限管理
实现文件:
src/api/controllers/authController.js- 认证控制器src/api/controllers/roleController.js- 角色管理src/api/controllers/accessController.js- 访问控制src/db/users.js- 用户数据管理
功能特性:
- JWT Token 认证
- 基于角色的访问控制 (RBAC)
- 用户注册、登录、权限管理
- 多层次权限控制(系统级、数据源级、数据资产级)
调用流程:
用户请求 → 认证中间件 → JWT 验证 → 权限检查 → 业务逻辑
2. 数据源管理
实现文件:
src/services/dataSourceService.js- 数据源服务 (1175行)src/api/controllers/dataSourceController.js- 数据源控制器src/connectors/- 各类数据源连接器
支持的数据源类型:
- 关系型数据库: MySQL, PostgreSQL
- NoSQL数据库: MongoDB
- 文件格式: CSV, Excel, JSON, PDF, Word, 图片
- API接口: REST API, GraphQL
- 云存储: AWS S3
核心连接器:
mysql-connector.js- MySQL 连接器postgres-connector.js- PostgreSQL 连接器mongodb-connector.js- MongoDB 连接器csv-connector.js- CSV 文件处理excel-connector.js- Excel 文件处理s3-connector.js- AWS S3 连接器
调用流程:
创建数据源 → 配置验证 → 连接测试 → 数据预览 → 保存配置 → 设置访问控制
3. 数据资产管理
实现文件:
src/api/controllers/dataAssetController.js- 数据资产控制器 (545行)src/services/dataProductService.js- 数据产品服务 (671行)src/services/datomsDbManagerService.js- DatomsDB 管理服务 (441行)
功能特性:
- 数据资产创建与管理
- 数据提取与转换
- 元数据管理
- 数据版本控制
- 数据质量监控
调用流程:
选择数据源 → 配置提取规则 → 数据提取 → 格式转换 → 创建数据资产 → 元数据记录
4. 数据库引擎
实现文件:
src/db/engine.js- 核心数据库引擎 (370行)src/db/persistence.js- 数据持久化src/services/datomsConversionService.js- 数据转换服务
核心特性:
- 基于 DatomsDB 的数据存储
- 多数据库实例管理
- 自动保存机制
- 并发写入保护
- 加密数据库支持
数据库操作流程:
初始化引擎 → 加载数据库列表 → 创建/加载数据库实例 → 数据操作 → 自动保存
5. API 接口系统
路由结构:
/api/
├── /admin # 管理员接口
├── /datoms # DatomsDB 操作接口
├── /data-sources # 数据源管理接口
├── /data-products # 数据产品接口
├── /data-assets # 数据资产接口
├── /subscriptions # 订阅管理接口
├── /api-keys # API密钥管理
├── /roles # 角色管理接口
└── /exchange # 数据交换接口
主要路由文件:
src/api/routes/index.js- 主路由配置src/api/routes/dataSourceRoutes.js- 数据源路由src/api/routes/dataAssetRoutes.js- 数据资产路由src/api/routes/datomsdbApiRoutes.js- DatomsDB API路由 (235行)
6. 文件处理与存储
实现文件:
src/services/FileStorageService.js- 文件存储服务src/services/fileChunkingService.js- 文件分块服务src/services/HashingService.js- 文件哈希服务
功能特性:
- 文件上传与存储
- 大文件分块处理
- 文件去重(基于哈希)
- 图片文件特殊处理
- 多种文件格式支持
7. 数据转换与预处理
实现文件:
src/services/datomsConversionService.js- DatomsDB 转换服务src/services/dataPreprocessingService.js- 数据预处理服务
转换流程:
原始数据 → 格式检测 → 数据清洗 → 结构转换 → DatomsDB 格式 → 存储
🔒 安全机制
1. 文件锁机制
- 保护文件:
data/dataSources.json,data/db_list.json,data/db_access.json - 实现位置: 各控制器和服务中
- 特性: 锁文件、原子性写入、重试机制、超时保护
2. 访问控制
- 多层次权限: 系统级 → 数据源级 → 数据资产级
- 实现文件:
src/services/accessControlService.js - 权限类型: 读取、写入、管理、删除
3. API 认证
- JWT Token: 基于 jsonwebtoken
- 中间件:
src/api/middleware/combinedAuth.js - API Key: 支持 API Key 认证
🧪 测试体系
测试目录结构
tests/
├── basic/ # 基础功能测试
├── integration/ # 集成测试
├── unit/ # 单元测试
├── load/ # 负载测试
├── memory/ # 内存泄漏测试
├── db_source/ # 测试数据库环境
├── dev_to_prod/ # 端到端测试
├── external_api_test/ # 外部API测试
└── zero_2_hero_test/ # 完整流程测试
测试环境
- Docker 测试数据库: MySQL, PostgreSQL, MongoDB
- 配置文件:
tests/db_source/docker-compose-test-dbs.yml - 测试脚本:
tests/dev_to_prod/dev_pro_test.py
🚀 部署架构
部署方式
- Docker 容器化部署
- Kubernetes 集群部署
- 传统服务器部署
部署文件
deployment/deploy.sh- 自动化部署脚本deployment/production-docker-compose.yml- 生产环境配置deployment/kubernetes/- K8s 部署配置Dockerfile- 容器镜像构建
监控与运维
- 健康检查:
/api/health,/api/status - 日志管理: Winston 日志系统
- 内存监控: 内存使用监控和泄漏检测
📝 核心业务流程
1. 数据源创建流程
1. 用户提交数据源配置
2. 验证配置参数
3. 测试数据源连接
4. 创建数据源记录
5. 设置访问控制策略
6. 转换为 DatomsDB 格式
7. 保存并返回结果
2. 数据资产创建流程
1. 选择已有数据源
2. 配置数据提取规则
3. 执行数据提取操作
4. 创建新的 DatomsDB 实例
5. 数据格式转换和清洗
6. 生成元数据信息
7. 设置访问权限
8. 保存数据资产记录
3. 用户认证流程
1. 用户提交登录凭据
2. 验证用户名和密码
3. 生成 JWT Token
4. 返回 Token 和用户信息
5. 后续请求携带 Token
6. 中间件验证 Token 有效性
7. 提取用户信息供业务使用
📊 系统配置
主要配置文件
src/config.js- 系统基础配置package.json- 项目依赖和脚本docker-compose.yml- 开发环境配置.env- 环境变量配置
关键配置项
{
port: 9000, // 服务端口
dataDirectory: './data', // 数据存储目录
autoSaveInterval: 60000, // 自动保存间隔
maxFileSize: '100MB', // 最大文件大小
supportedFormats: ['csv', 'json', 'xlsx', 'pdf', 'txt', 'jpg', 'png']
}
🔧 扩展机制
1. 连接器扩展
- 新增数据源类型只需实现标准连接器接口
- 位置:
src/connectors/ - 接口:
connect(),query(),disconnect()
2. 中间件扩展
- 支持自定义认证和权限中间件
- 位置:
src/api/middleware/
3. 服务扩展
- 业务逻辑模块化设计
- 位置:
src/services/
🎯 开发指南
启动开发环境
# 安装依赖
npm install
# 启动测试数据库
cd tests/db_source
docker-compose -f docker-compose-test-dbs.yml up -d
# 启动开发服务器
npm run dev
运行测试
# 单元测试
npm test
# 集成测试
npm run test:integration
# 负载测试
npm run test:load
# 完整测试套件
npm run test:all
API 调用示例
# 健康检查
curl http://localhost:9000/api/health
# 用户登录
curl -X POST http://localhost:9000/api/admin/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"password"}'
# 获取数据源列表
curl -H "Authorization: Bearer <token>" \
http://localhost:9000/api/data-sources
📈 性能特性
并发处理
- 文件锁机制防止并发写入冲突
- 连接池管理数据库连接
- 异步操作优化响应时间
内存管理
- 大文件分块处理
- 定期内存清理
- 内存泄漏监控
缓存策略
- 数据库实例缓存
- 连接复用
- 查询结果缓存
📞 技术支持
本系统已实现完整的数据资产管理功能,包括多数据源支持、用户权限管理、数据转换、API 接口等核心特性。系统采用模块化设计,易于扩展和维护。
对于新加入的开发者,建议从 src/server.js 入口文件开始了解系统架构,然后深入各功能模块进行开发。