BigDataTool - 大数据查询比对工具
BigDataTool是一个功能强大的数据库查询比对工具,专门用于Cassandra数据库和Redis集群的数据一致性验证。支持单表查询、TWCS分表查询、多主键查询等多种复杂场景。
🚀 核心功能
Cassandra数据比对
- 单表查询:标准的生产环境与测试环境数据比对
- 分表查询:基于TWCS策略的时间分表查询支持
- 多主键查询:支持复合主键的精确匹配和比对
- 智能数据比较:JSON、数组等复杂数据类型的深度比较
Redis数据比对
- 全类型支持:String、Hash、List、Set、ZSet、Stream等所有Redis数据类型
- 集群支持:单节点和集群模式的自动检测和连接
- 随机采样:支持随机Key采样和指定Key比对两种模式
- 性能监控:详细的连接时间和查询性能统计
配置管理
- 配置组管理:数据库连接配置的保存、加载和复用
- 查询历史:查询记录的持久化存储和一键回放
- 实时日志:详细的操作日志和性能监控
- YAML导入:支持YAML格式配置的一键导入
📋 系统要求
- Python 3.8+
- Flask 2.3.3
- Cassandra Driver 3.29.1
- Redis 5.0.1
🛠️ 安装部署
快速开始
方式1:直接运行(推荐开发环境)
# 1. 克隆项目
git clone https://github.com/your-org/BigDataTool.git
cd BigDataTool
# 2. 安装依赖
pip install -r requirements.txt
# 3. 启动应用
python app.py
方式2:Docker容器化部署(推荐生产环境)
# 1. 克隆项目
git clone https://github.com/your-org/BigDataTool.git
cd BigDataTool
# 2. 构建并启动(简化版本)
make build
make run
# 或者使用Docker Compose直接启动
docker-compose -f docker-compose.simple.yml up -d
方式3:完整Docker环境(包含缓存和监控)
# 启动完整服务栈
docker-compose up -d
# 查看服务状态
make ps
容器化部署详情
🐳 Docker镜像特性
- 基础镜像: Python 3.9 Alpine(轻量级)
- 镜像大小: < 200MB
- 安全性: 非root用户运行
- 健康检查: 内置应用健康监控
- 多架构: 支持AMD64和ARM64
🚀 一键部署命令
# 查看所有可用命令
make help
# 构建镜像
make build
# 启动服务(简化版本)
make run
# 启动完整服务(包含Redis缓存)
make run-full
# 启动生产环境(包含Nginx反向代理)
make run-prod
# 查看服务日志
make logs
# 进入容器调试
make shell
# 健康检查
make health
# 停止服务
make stop
# 清理资源
make clean
🔧 环境变量配置
# 设置应用密钥(生产环境必须设置)
export SECRET_KEY="your-super-secret-key-change-in-production"
# 设置运行环境
export FLASK_ENV=production
export FLASK_DEBUG=False
# 数据库配置
export DATABASE_URL="sqlite:///config_groups.db"
# 安全配置
export FORCE_HTTPS=true
📊 服务端点
启动后可访问以下地址:
简化部署:
完整部署:
- 主应用: http://localhost:5000
- Redis缓存: localhost:6379
- Prometheus监控: http://localhost:9090
生产环境:
- HTTP: http://localhost
- HTTPS: https://localhost
传统部署方式
Python虚拟环境部署
# 创建虚拟环境
python -m venv venv
source venv/bin/activate # Linux/Mac
# 或 venv\Scripts\activate # Windows
# 安装依赖
pip install -r requirements.txt
# 启动应用
python app.py
生产环境部署(Gunicorn)
# 安装Gunicorn
pip install gunicorn
# 启动生产服务
gunicorn -w 4 -b 0.0.0.0:5000 app:app
🎯 快速开始
Cassandra数据比对
- 访问
http://localhost:5000/db-compare
- 配置生产环境和测试环境的Cassandra连接信息
- 设置主键字段和查询参数
- 输入要比对的Key值列表
- 点击"开始查询"执行比对
单主键查询示例
主键字段: id
查询Key值:
1001
1002
1003
复合主键查询示例
主键字段: docid,id
查询Key值:
8825C293B3609175B2224236E984FEDB,8825C293B3609175B2224236E984FED
9925C293B3609175B2224236E984FEDB,9925C293B3609175B2224236E984FED
Redis数据比对
- 访问
http://localhost:5000/redis-compare
- 配置两个Redis集群的连接信息
- 选择查询模式(随机采样或指定Key)
- 设置查询参数
- 执行比对分析
🏗️ 系统架构
BigDataTool采用模块化分层架构设计:
┌─────────────────────────────────────────┐
│ 前端界面层 │
│ (HTML + JavaScript + Bootstrap) │
└─────────────┬───────────────────────────┘
│
┌─────────────▼───────────────────────────┐
│ API路由层 │
│ (Flask Routes) │
└─────────────┬───────────────────────────┘
│
┌─────────────▼───────────────────────────┐
│ 业务逻辑层 │
│ ┌─────────────┬─────────────────┐ │
│ │ 查询引擎 │ 比对引擎 │ │
│ │Query Engine │ Comparison │ │
│ └─────────────┴─────────────────┘ │
└─────────────┬───────────────────────────┘
│
┌─────────────▼───────────────────────────┐
│ 数据访问层 │
│ ┌─────────────┬─────────────────┐ │
│ │ Cassandra │ Redis │ │
│ │ Client │ Client │ │
│ └─────────────┴─────────────────┘ │
└─────────────┬───────────────────────────┘
│
┌─────────────▼───────────────────────────┐
│ 数据存储层 │
│ ┌──────┬──────┬─────────────────┐ │
│ │SQLite│Cassandra│ Redis │ │
│ │(配置) │ (生产) │ (缓存) │ │
│ └──────┴──────┴─────────────────┘ │
└─────────────────────────────────────────┘
核心组件
- 查询引擎: 负责Cassandra和Redis的查询执行
- 比对引擎: 实现智能数据比对算法
- 配置管理: SQLite存储的配置持久化
- 日志系统: 实时查询日志收集和展示
数据比对引擎
- 智能JSON比较:自动处理JSON格式差异和嵌套结构
- 数组顺序无关比较:忽略数组元素顺序的深度比较
- 字段级差异分析:详细的字段差异统计和热点分析
- 数据质量评估:自动生成数据一致性报告和改进建议
分表查询支持
- TWCS策略:基于Time Window Compaction Strategy的分表计算
- 时间戳提取:智能从Key中提取时间戳信息
- 混合查询:支持生产分表+测试单表等组合场景
- 并行查询:多分表并行查询以提高性能
用户界面
- 响应式设计:基于Bootstrap的现代化界面
- 实时反馈:查询进度和结果的实时显示
- 分页展示:大数据集的高效分页显示
- 多视图模式:原始数据、格式化、差异对比等多种视图
🔧 配置说明
Cassandra配置
{
"cluster_name": "示例集群",
"hosts": ["127.0.0.1", "127.0.0.2"],
"port": 9042,
"datacenter": "dc1",
"username": "cassandra",
"password": "password",
"keyspace": "example_keyspace",
"table": "example_table"
}
Redis配置
{
"name": "示例Redis",
"nodes": [
{"host": "127.0.0.1", "port": 6379},
{"host": "127.0.0.2", "port": 6379}
],
"password": "redis_password",
"socket_timeout": 3,
"socket_connect_timeout": 3,
"max_connections_per_node": 16
}
📈 性能指标
响应时间
- 单表查询(100条记录):< 10秒
- 分表查询(100条记录):< 15秒
- Redis查询(100个Key):< 10秒
- 页面加载时间:< 3秒
系统容量
- 最大并发查询数:10个
- 单次最大查询记录:10,000条
- 支持的数据库连接数:无限制
- 内存使用峰值:< 1GB
数据处理能力
- Cassandra分表自动计算准确率:> 95%
- JSON深度比较支持嵌套层级:无限制
- Redis全数据类型支持:100%
- 查询历史存储容量:无限制
🔄 版本更新
v2.0 (2024-08)
- ✨ 新增Redis集群比对功能
- ✨ 支持多主键复合查询
- ✨ 智能数据类型检测和比对
- 🚀 性能优化和UI改进
- 📚 完整文档体系建设
v1.0 (2024-07)
- 🎉 基础Cassandra数据比对功能
- 🎉 TWCS分表查询支持
- 🎉 配置管理和查询历史
- 🎉 Web界面和API接口
🔍 故障排查
常见问题
-
Cassandra连接失败
- 检查网络连通性:
telnet <host> <port>
- 验证认证信息:用户名、密码、keyspace
- 确认防火墙设置
- 检查网络连通性:
-
Redis连接失败
- 检查Redis服务状态:
redis-cli ping
- 验证集群配置:节点地址和端口
- 确认密码设置
- 检查Redis服务状态:
-
查询超时
- 调整连接超时参数
- 检查数据库服务器负载
- 优化查询条件和索引
-
内存使用过高
- 减少单次查询的记录数量
- 使用分批查询处理大数据集
- 定期清理查询历史和日志
-
分表查询失败
- 检查Key中是否包含有效时间戳
- 确认分表参数配置正确
- 验证目标分表是否存在
📝 API文档
主要API端点
POST /api/query
- 单表查询比对POST /api/sharding-query
- 分表查询比对POST /api/redis/compare
- Redis数据比对GET /api/config-groups
- 获取配置组列表POST /api/config-groups
- 创建配置组GET /api/query-history
- 获取查询历史GET /api/query-logs
- 获取查询日志
🤝 贡献指南
我们欢迎所有形式的贡献!请遵循以下步骤:
基本流程
-
Fork项目
git clone https://github.com/your-username/BigDataTool.git cd BigDataTool
-
创建功能分支
git checkout -b feature/amazing-feature
-
遵循代码规范
- 查看 代码规范
- 使用PEP 8 Python风格
- 添加必要的测试用例
- 更新相关文档
-
提交更改
git commit -m 'feat: Add some AmazingFeature'
-
推送到分支
git push origin feature/amazing-feature
-
创建Pull Request
- 描述变更内容和原因
- 确保所有测试通过
- 添加必要的截图或演示
贡献类型
- 🐛 Bug修复
- ✨ 新功能开发
- 📚 文档改进
- 🎨 界面优化
- 🚀 性能优化
- 🔧 配置和工具
代码审查
所有贡献都将经过代码审查,包括:
- 功能正确性验证
- 代码质量检查
- 安全性评估
- 文档完整性确认
详细开发指南请参考 开发者文档
🛡️ 安全声明
BigDataTool致力于数据安全:
- 🔒 传输加密: 支持HTTPS/TLS加密传输
- 🔐 认证机制: 预留身份认证和权限控制接口
- 🔍 输入验证: 严格的输入参数验证和过滤
- 📝 审计日志: 完整的操作日志和安全事件记录
- 🛡️ 数据保护: 敏感信息不明文存储
如发现安全漏洞,请发送邮件至安全团队或创建私密Issue。
详细安全规范请参考 安全指南
📄 许可证
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情
👥 项目团队
核心开发者
- 项目负责人: BigDataTool项目组
- 架构师: 系统架构设计团队
- 前端开发: UI/UX开发团队
- 后端开发: 数据处理引擎团队
- 测试工程师: 质量保证团队
贡献者统计
感谢所有为项目做出贡献的开发者!
📞 支持与反馈
问题报告
社区支持
🙏 致谢
感谢以下开源项目和技术社区的支持:
特别感谢所有提供反馈、bug报告和功能建议的用户!
📊 项目状态
最后更新: 2024年8月6日
当前版本: v2.0
开发状态: 持续维护中
⚠️ 重要提示: 本工具主要用于开发测试环境的数据比对,生产环境使用请谨慎评估并做好安全防护。建议在使用前详细阅读 安全指南。
Description
Languages
JavaScript
48.6%
Python
33.3%
HTML
16.3%
Shell
0.9%
Makefile
0.6%
Other
0.3%