优化项目整合内容

This commit is contained in:
2025-08-05 11:23:49 +08:00
parent 701a9a552e
commit 3f78ce7365
15 changed files with 898 additions and 2977 deletions

212
README.md Normal file
View File

@@ -0,0 +1,212 @@
# 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 <host> <port>`
- 验证认证信息用户名、密码、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项目组
## 🙏 致谢
感谢所有为这个项目做出贡献的开发者和用户。
---
**注意**:使用前请确保已正确配置数据库连接信息,并在生产环境中谨慎使用。