213 lines
6.0 KiB
Markdown
213 lines
6.0 KiB
Markdown
# BigDataTool - 大数据查询比对工具
|
||
|
||
[](https://python.org)
|
||
[](https://flask.palletsprojects.com/)
|
||
[](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项目组
|
||
|
||
## 🙏 致谢
|
||
|
||
感谢所有为这个项目做出贡献的开发者和用户。
|
||
|
||
---
|
||
|
||
**注意**:使用前请确保已正确配置数据库连接信息,并在生产环境中谨慎使用。
|