8097e9b7698dfc432efc52b6cd4d795387e9d792
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. 克隆项目
git clone https://github.com/your-org/BigDataTool.git
cd BigDataTool
2. 安装依赖
pip install -r requirements.txt
3. 启动应用
python app.py
应用将在 http://localhost:5000
启动
🎯 快速开始
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)
- 设置查询参数
- 执行比对分析
📊 功能特性
数据比对引擎
- 智能JSON比较:自动处理JSON格式差异和嵌套结构
- 数组顺序无关比较:忽略数组元素顺序的深度比较
- 字段级差异分析:详细的字段差异统计和热点分析
- 数据质量评估:自动生成数据一致性报告和改进建议
分表查询支持
- TWCS策略:基于Time Window Compaction Strategy的分表计算
- 时间戳提取:智能从Key中提取时间戳信息
- 混合查询:支持生产分表+测试单表等组合场景
- 并行查询:多分表并行查询以提高性能
用户界面
- 响应式设计:基于Bootstrap的现代化界面
- 实时反馈:查询进度和结果的实时显示
- 分页展示:大数据集的高效分页显示
- 多视图模式:原始数据、格式化、差异对比等多种视图
🔧 配置说明
Cassandra配置
{
"cluster_name": "生产集群",
"hosts": ["192.168.1.100", "192.168.1.101"],
"port": 9042,
"datacenter": "dc1",
"username": "cassandra",
"password": "password",
"keyspace": "my_keyspace",
"table": "my_table"
}
Redis配置
{
"name": "生产Redis",
"nodes": [
{"host": "192.168.1.200", "port": 7000},
{"host": "192.168.1.201", "port": 7001}
],
"password": "redis_password",
"socket_timeout": 3,
"socket_connect_timeout": 3,
"max_connections_per_node": 16
}
📈 性能优化
- 连接池管理:优化的数据库连接复用
- 批量查询:支持大批量Key的高效查询
- 内存管理:大结果集的内存友好处理
- 并行处理:多表并行查询和数据比对
- 缓存机制:查询结果和配置的智能缓存
🔍 故障排查
常见问题
-
Cassandra连接失败
- 检查网络连通性:
telnet <host> <port>
- 验证认证信息:用户名、密码、keyspace
- 确认防火墙设置
- 检查网络连通性:
-
Redis连接失败
- 检查Redis服务状态:
redis-cli ping
- 验证集群配置:节点地址和端口
- 确认密码设置
- 检查Redis服务状态:
-
查询超时
- 调整连接超时参数
- 检查数据库服务器负载
- 优化查询条件和索引
📝 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
- 获取查询日志
详细API文档请参考 API.md
📚 文档目录
🤝 贡献指南
- Fork 项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature
) - 提交更改 (
git commit -m 'Add some AmazingFeature'
) - 推送到分支 (
git push origin feature/AmazingFeature
) - 开启 Pull Request
📄 许可证
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情
👥 作者
BigDataTool项目组
🙏 致谢
感谢所有为这个项目做出贡献的开发者和用户。
注意:使用前请确保已正确配置数据库连接信息,并在生产环境中谨慎使用。
Description
Languages
JavaScript
48.6%
Python
33.3%
HTML
16.3%
Shell
0.9%
Makefile
0.6%
Other
0.3%