优化项目整合内容
This commit is contained in:
212
README.md
Normal file
212
README.md
Normal file
@@ -0,0 +1,212 @@
|
||||
# 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项目组
|
||||
|
||||
## 🙏 致谢
|
||||
|
||||
感谢所有为这个项目做出贡献的开发者和用户。
|
||||
|
||||
---
|
||||
|
||||
**注意**:使用前请确保已正确配置数据库连接信息,并在生产环境中谨慎使用。
|
Reference in New Issue
Block a user