Files
BigDataTool/README.md
2025-08-05 11:23:49 +08:00

213 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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