# BigDataTool - 大数据查询比对工具 [![Python Version](https://img.shields.io/badge/python-3.8%2B-blue.svg)](https://python.org) [![Flask Version](https://img.shields.io/badge/flask-2.3.3-green.svg)](https://flask.palletsprojects.com/) [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) 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. 克隆项目 ```bash git clone https://github.com/your-org/BigDataTool.git cd BigDataTool ``` ### 2. 安装依赖 ```bash pip install -r requirements.txt ``` ### 3. 启动应用 ```bash python app.py ``` 应用将在 `http://localhost:5000` 启动 ## 🎯 快速开始 ### Cassandra数据比对 1. 访问 `http://localhost:5000/db-compare` 2. 配置生产环境和测试环境的Cassandra连接信息 3. 设置主键字段和查询参数 4. 输入要比对的Key值列表 5. 点击"开始查询"执行比对 #### 单主键查询示例 ``` 主键字段: id 查询Key值: 1001 1002 1003 ``` #### 复合主键查询示例 ``` 主键字段: docid,id 查询Key值: 8825C293B3609175B2224236E984FEDB,8825C293B3609175B2224236E984FED 9925C293B3609175B2224236E984FEDB,9925C293B3609175B2224236E984FED ``` ### Redis数据比对 1. 访问 `http://localhost:5000/redis-compare` 2. 配置两个Redis集群的连接信息 3. 选择查询模式(随机采样或指定Key) 4. 设置查询参数 5. 执行比对分析 ## 📊 功能特性 ### 数据比对引擎 - **智能JSON比较**:自动处理JSON格式差异和嵌套结构 - **数组顺序无关比较**:忽略数组元素顺序的深度比较 - **字段级差异分析**:详细的字段差异统计和热点分析 - **数据质量评估**:自动生成数据一致性报告和改进建议 ### 分表查询支持 - **TWCS策略**:基于Time Window Compaction Strategy的分表计算 - **时间戳提取**:智能从Key中提取时间戳信息 - **混合查询**:支持生产分表+测试单表等组合场景 - **并行查询**:多分表并行查询以提高性能 ### 用户界面 - **响应式设计**:基于Bootstrap的现代化界面 - **实时反馈**:查询进度和结果的实时显示 - **分页展示**:大数据集的高效分页显示 - **多视图模式**:原始数据、格式化、差异对比等多种视图 ## 🔧 配置说明 ### Cassandra配置 ```json { "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配置 ```json { "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的高效查询 - **内存管理**:大结果集的内存友好处理 - **并行处理**:多表并行查询和数据比对 - **缓存机制**:查询结果和配置的智能缓存 ## 🔍 故障排查 ### 常见问题 1. **Cassandra连接失败** - 检查网络连通性:`telnet ` - 验证认证信息:用户名、密码、keyspace - 确认防火墙设置 2. **Redis连接失败** - 检查Redis服务状态:`redis-cli ping` - 验证集群配置:节点地址和端口 - 确认密码设置 3. **查询超时** - 调整连接超时参数 - 检查数据库服务器负载 - 优化查询条件和索引 ## 📝 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](docs/API.md) ## 📚 文档目录 - [API文档](docs/API.md) - 完整的API接口说明 - [使用指南](docs/USER_GUIDE.md) - 详细的功能使用说明 - [架构设计](docs/ARCHITECTURE.md) - 系统架构和设计原理 - [部署指南](docs/DEPLOYMENT.md) - 生产环境部署说明 ## 🤝 贡献指南 1. Fork 项目 2. 创建功能分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 开启 Pull Request ## 📄 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情 ## 👥 作者 BigDataTool项目组 ## 🙏 致谢 感谢所有为这个项目做出贡献的开发者和用户。 --- **注意**:使用前请确保已正确配置数据库连接信息,并在生产环境中谨慎使用。