跳到主要内容

DatomsDBS 零到英雄部署和测试指南

版本: 1.0
日期: 2024年12月28日
适用于: DatomsDBS v0.1.0+


📖 概述

本指南将带您从零开始,完成DatomsDBS数据资产管理系统的完整部署、配置和测试。无论您是开发者、系统管理员还是数据工程师,都能通过本指南快速上手DatomsDBS。

🎯 本指南包含内容

  • 快速部署: 5分钟快速启动
  • 完整配置: 生产环境配置优化
  • 全面测试: 验证系统功能的完整性
  • 故障排除: 常见问题解决方案

🚀 第一部分:快速部署 (5分钟上手)

1.1 前置要求

系统要求:

  • 操作系统: Linux, macOS, 或 Windows (WSL推荐)
  • Node.js: >= 14.0.0 (下载地址)
  • 内存: 最低2GB,推荐4GB+
  • 存储: 最低10GB可用空间

可选要求:

  • Docker: >= 20.0.0 (用于容器化部署)
  • Git: 用于代码克隆

1.2 一键安装脚本 ⚡

# 1. 克隆项目
git clone <YOUR_PROJECT_GIT_URL>
cd datomsDBS

# 2. 运行一键设置脚本
./scripts/setup_datomsdbs.sh

# 3. 等待脚本完成,按提示选择启动方式

脚本执行过程:

  1. ✅ 系统要求检查 (Node.js, npm, Git)
  2. ✅ 自动生成 .env 配置文件
  3. ✅ 安装项目依赖
  4. ✅ 初始化数据目录
  5. ✅ 可选运行基础测试
  6. ✅ 选择启动模式

1.3 手动快速启动

如果您偏好手动安装:

# 1. 克隆和进入目录
git clone <YOUR_PROJECT_GIT_URL>
cd datomsDBS

# 2. 安装依赖
npm install

# 3. 复制并配置环境文件
cp .env.example .env
# 或创建基础 .env 文件
cat > .env << EOF
NODE_ENV=development
PORT=9000
JWT_SECRET=your-secret-key-here
ADMIN_USERNAME=admin
ADMIN_PASSWORD=admin123
EOF

# 4. 启动服务
npm start

1.4 验证部署成功

访问以下地址验证服务状态:

# 检查服务状态
curl http://localhost:9000/api/health

# 预期响应
{
"status": "ok",
"version": "0.1.0",
"timestamp": "2024-12-28T10:00:00.000Z"
}

Web界面访问:


⚙️ 第二部分:配置详解

2.1 环境变量配置

创建或编辑 .env 文件:

# ===========================================
# 🔧 基础配置
# ===========================================
NODE_ENV=development # 环境: development/production
PORT=9000 # 服务端口
LOG_LEVEL=info # 日志级别: debug/info/warn/error

# ===========================================
# 🔐 安全配置
# ===========================================
JWT_SECRET=your-jwt-secret-here-change-in-production
API_TOKEN=your-api-token-here
ENABLE_AUTH=true # 启用认证: true/false

# ===========================================
# 👤 管理员配置
# ===========================================
ADMIN_USERNAME=admin # 管理员用户名
ADMIN_PASSWORD=admin123 # 管理员密码 (生产环境必须修改!)

# ===========================================
# 💾 数据存储
# ===========================================
DATA_DIR=./data # 数据目录
AUTO_SAVE_INTERVAL=60000 # 自动保存间隔(毫秒)

# ===========================================
# 🤖 AI Agent 配置 (可选)
# ===========================================
LLM_SERVICE_URL=http://localhost:11434
LLM_MODEL_NAME=qwen2:1.5b

# ===========================================
# 🗄️ 数据库配置 (高级功能)
# ===========================================
DB_HOST=localhost
DB_PORT=5432
DB_NAME=datoms_db
DB_USERNAME=postgres
DB_PASSWORD=yourpassword

2.2 Docker部署配置

使用Docker Compose进行容器化部署:

# 启动完整环境 (包含Ollama LLM)
./scripts/start-with-ollama.sh

# 或使用标准Docker Compose
docker-compose up -d

# 查看容器状态
docker-compose ps

# 查看日志
docker-compose logs -f datomsdbs

Docker环境访问地址:

2.3 生产环境配置优化

性能优化配置:

# .env 生产环境配置
NODE_ENV=production
PORT=9000
LOG_LEVEL=warn

# 增加自动保存频率
AUTO_SAVE_INTERVAL=30000

# 启用生产优化
PM2_INSTANCES=4 # 如果使用PM2
MAX_MEMORY_RESTART=1G

安全加固:

# 强密码配置
JWT_SECRET=$(openssl rand -base64 64)
API_TOKEN=$(openssl rand -base64 32)
ADMIN_PASSWORD=$(openssl rand -base64 16)

# 禁用调试
DEBUG=false

🧪 第三部分:全面测试

3.1 系统健康检查

# 基础连通性测试
curl -f http://localhost:9000/api/health || echo "❌ Service health check failed"

# 管理员认证测试
curl -X POST http://localhost:9000/api/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"admin123"}'

# 预期响应包含JWT token

3.2 运行测试套件

基于项目的测试目录结构,以下是详细的测试运行指南:

3.2.1 运行所有核心测试

# 运行主要测试套件
npm test # 单元测试
npm run test:integration # 集成测试
npm run test:coverage # 测试覆盖率

# 运行性能测试
npm run test:load # 负载测试
npm run test:memory # 内存泄漏测试

3.2.2 AI Agent系统测试

# Agent功能测试 (核心AI功能)
cd tests/agents
npm install
node agent-test-suite.js

# 或使用便捷脚本
./tests/agents/run-tests.sh

# 验证自然语言查询功能
curl -X POST http://localhost:9000/api/agents/chat \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-d '{
"type": "natural_language",
"query": "显示所有数据源",
"sessionId": "test-session-001"
}'

3.2.3 数据源连接测试

# 进入数据源测试目录
cd tests/db_source

# 测试MySQL连接
node test-mysql-connection.js

# 测试PostgreSQL连接
node test-postgres-connection.js

# 测试MongoDB连接
node test-mongodb-connection.js

# 测试文件数据源
node test-file-datasource.js

3.2.4 端到端测试

# 完整流程测试
cd tests/zero_2_hero_test

# 运行端到端测试套件
node complete-workflow-test.js

# 这将测试:
# 1. 用户注册和登录
# 2. 数据源创建
# 3. 数据提取和转换
# 4. 查询和分析
# 5. 权限管理

3.2.5 压力和负载测试

# 负载测试 (使用Artillery)
npm run test:load

# 手动运行特定负载测试
cd tests/load
artillery run config.yml

# 生成测试报告
npm run test:load:report

# 压力测试
cd tests/stress_test
node stress-test-suite.js

3.3 功能验证清单

完成以下功能验证确保系统正常工作:

✅ 基础功能验证

  • 服务启动: 服务在指定端口正常启动
  • 健康检查: /api/health 端点响应正常
  • 管理界面: Web管理界面可访问
  • API文档: Swagger文档可访问

✅ 认证和授权

  • 管理员登录: 默认admin账户可正常登录
  • JWT Token: 能够获取和使用JWT token
  • 权限控制: RBAC权限系统工作正常
  • API访问: 受保护的API需要认证

✅ 数据源管理

  • 创建数据源: 可以添加新的数据源
  • 连接测试: 数据源连接测试功能正常
  • 数据提取: 能够从数据源提取数据
  • 多种格式: 支持CSV、Excel、JSON等格式

✅ AI Agent功能

  • 自然语言查询: 中文/英文查询正常响应
  • 结构化命令: 结构化命令执行正常
  • 会话管理: 多轮对话功能正常
  • 工具调用: Agent能够调用系统工具

✅ 数据存储和查询

  • DatomsDB: 数据库引擎正常工作
  • 数据写入: 数据事务写入成功
  • 数据查询: Datalog和SQL查询正常
  • 数据持久化: 数据能够持久保存

3.4 性能基准测试

# API响应时间测试
curl -w "@curl-format.txt" -o /dev/null -s http://localhost:9000/api/health

# 并发用户测试
ab -n 1000 -c 10 http://localhost:9000/api/health

# 大数据量导入测试
# 创建大型测试数据集
node tests/optimization/create-large-dataset.js

# 测试导入性能
time node tests/optimization/test-bulk-import.js

🎯 第四部分:验证指南

4.1 基础功能验证

步骤1: 系统访问验证

# 1. 访问主页
open http://localhost:9000

# 2. 登录管理界面
open http://localhost:9000/admin
# 使用 admin/admin123 登录

# 3. 检查API状态
curl http://localhost:9000/api/health

步骤2: 数据源管理验证

  1. 创建测试数据源

    • 登录管理界面
    • 导航到"数据源管理"
    • 点击"添加数据源"
    • 选择"文件"类型,上传示例CSV文件
  2. 验证数据提取

    • 确认数据源状态为"已连接"
    • 查看提取的数据预览
    • 验证schema自动生成

步骤3: AI查询验证

# 获取JWT Token
TOKEN=$(curl -X POST http://localhost:9000/api/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"admin123"}' \
| jq -r '.token')

# 测试自然语言查询
curl -X POST http://localhost:9000/api/agents/chat \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{
"type": "natural_language",
"query": "显示所有的数据源",
"sessionId": "test-session"
}'

4.2 高级功能验证

数据血缘追踪

# 创建数据转换任务
curl -X POST http://localhost:9000/api/data-assets \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "测试数据资产",
"sourceId": "your-source-id",
"transformations": ["clean", "normalize"]
}'

# 查询数据血缘
curl http://localhost:9000/api/data-lineage/your-asset-id \
-H "Authorization: Bearer $TOKEN"

权限管理验证

# 创建新用户
curl -X POST http://localhost:9000/api/users \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"username": "testuser",
"password": "testpass123",
"roles": ["viewer"]
}'

# 测试权限限制
# (使用testuser登录,尝试访问管理功能)

🔧 第五部分:故障排除

5.1 常见问题解决

问题1: 服务启动失败

# 检查端口占用
lsof -i :9000
netstat -tulpn | grep 9000

# 检查Node.js版本
node --version # 应该 >= 14.0.0

# 检查依赖安装
npm list --depth=0

# 查看详细错误日志
NODE_ENV=development npm start

问题2: 数据库连接失败

# 检查数据目录权限
ls -la data/
chmod 755 data/

# 检查DatomsDB存储
ls -la data/
cat data/db_list.json

# 重新初始化数据库
rm -rf data/
mkdir data
echo "[]" > data/db_list.json
npm start

问题3: AI Agent不响应

# 检查Ollama服务 (如果使用)
curl http://localhost:11434/api/version

# 检查LLM配置
grep LLM .env

# 测试Agent端点
curl -X POST http://localhost:9000/api/agents/status \
-H "Authorization: Bearer $TOKEN"

问题4: 权限错误

# 重置管理员密码
export ADMIN_PASSWORD=new_password
npm start

# 清除JWT缓存
rm -f ~/.datomsdbs/tokens.json

# 检查RBAC配置
curl http://localhost:9000/api/admin/roles \
-H "Authorization: Bearer $TOKEN"

5.2 日志和调试

启用详细日志

# 开发环境调试
NODE_ENV=development DEBUG=* npm start

# 设置日志级别
LOG_LEVEL=debug npm start

# 查看实时日志
tail -f server.log
tail -f logs/app.log

性能调试

# 生成heap dump
kill -USR2 <node_process_pid>

# 内存使用监控
node --inspect src/server.js

# 性能分析
node --prof src/server.js

5.3 数据恢复

备份和恢复

# 备份数据
tar -czf datomsdbs-backup-$(date +%Y%m%d).tar.gz data/ logs/

# 恢复数据
tar -xzf datomsdbs-backup-20241228.tar.gz

# 验证数据完整性
node scripts/verify-data-integrity.js

📚 第六部分:下一步和进阶

6.1 生产环境部署

使用PM2进程管理

# 安装PM2
npm install -g pm2

# PM2配置文件 (ecosystem.config.js)
cat > ecosystem.config.js << EOF
module.exports = {
apps: [{
name: 'datomsdbs',
script: 'src/server.js',
instances: 'max',
exec_mode: 'cluster',
env: {
NODE_ENV: 'development'
},
env_production: {
NODE_ENV: 'production',
PORT: 9000
}
}]
}
EOF

# 启动生产环境
pm2 start ecosystem.config.js --env production
pm2 startup # 设置开机自启
pm2 save

反向代理配置 (Nginx)

# /etc/nginx/sites-available/datomsdbs
server {
listen 80;
server_name your-domain.com;

location / {
proxy_pass http://localhost:9000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
}

6.2 监控和告警

系统监控

# 安装监控工具
npm install -g @pm2/pm2-plus

# 配置监控
pm2 plus

# 健康检查脚本
cat > health-check.sh << EOF
#!/bin/bash
if ! curl -f http://localhost:9000/api/health > /dev/null 2>&1; then
echo "DatomsDBS service is down!" | mail -s "Alert" admin@yourdomain.com
pm2 restart datomsdbs
fi
EOF

# 设置定时健康检查
crontab -e
# 添加: */5 * * * * /path/to/health-check.sh

6.3 扩展和定制

自定义连接器开发

// src/connectors/custom-connector.js
class CustomConnector {
async connect(config) {
// 实现自定义连接逻辑
}

async extractData(config, options) {
// 实现数据提取逻辑
}
}

自定义Agent工具

// src/agents/tools/custom-tool.js
module.exports = {
name: 'custom_analysis',
description: '执行自定义数据分析',
parameters: {
type: 'object',
properties: {
datasetId: { type: 'string' },
analysisType: { type: 'string' }
}
},
execute: async (params) => {
// 实现自定义分析逻辑
}
}

🎉 总结

恭喜!您已经完成了DatomsDBS的完整部署和测试流程。现在您拥有:

✅ 已完成的配置

  • 完全功能的DatomsDBS实例
  • 配置好的环境变量
  • 验证过的核心功能
  • 运行通过的测试套件

🚀 下一步建议

  1. 探索数据源: 连接您的实际数据源
  2. 自定义配置: 根据需求调整配置
  3. 用户培训: 为团队成员提供使用培训
  4. 监控设置: 配置生产环境监控
  5. 定期备份: 建立数据备份策略

📞 获取帮助

  • 文档中心: docs/ 目录中的详细文档
  • API参考: http://localhost:9000/api/docs
  • 社区支持: 查看项目README中的联系信息
  • 问题报告: 通过项目Issue tracker报告问题

🔗 相关文档链接:


本指南会持续更新,建议定期查看最新版本