2025-08-05 19:56:38 +08:00
2025-08-05 19:56:38 +08:00
2025-08-05 19:56:38 +08:00
2025-08-05 19:56:38 +08:00
2025-08-05 11:23:49 +08:00
2025-08-05 19:56:38 +08:00
2025-08-05 11:23:49 +08:00
2025-08-04 09:14:27 +08:00

BigDataTool - 大数据查询比对工具

Python Version Flask Version 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. 克隆项目

git clone https://github.com/your-org/BigDataTool.git
cd BigDataTool

2. 安装依赖

pip install -r requirements.txt

3. 启动应用

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配置

{
  "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配置

{
  "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

📚 文档目录

🤝 贡献指南

  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 文件了解详情

👥 作者

BigDataTool项目组

🙏 致谢

感谢所有为这个项目做出贡献的开发者和用户。


注意:使用前请确保已正确配置数据库连接信息,并在生产环境中谨慎使用。

Description
No description provided
Readme 1.7 MiB
Languages
JavaScript 48.6%
Python 33.3%
HTML 16.3%
Shell 0.9%
Makefile 0.6%
Other 0.3%