通用数据生成器是一个灵活且强大的工具,用于生成模拟数据并支持多种数据源。该工具可以帮助开发人员、测试人员和数据分析师快速生成符合特定业务场景的测试数据。目前版本支持MySQL和Kafka数据源。
-
关系型数据库
- MySQL(当前版本已支持)
- Oracle(计划支持)
- PostgreSQL(计划支持)
- SQL Server(计划支持)
- 其他支持JDBC的数据库(计划支持)
-
消息队列
- Apache Kafka(当前版本已支持)
- RabbitMQ(计划支持)
- RocketMQ(计划支持)
- 其他支持的消息中间件(计划支持)
- 支持配置多个数据源连接
- 支持连接池管理
- 支持SSL/TLS加密连接
- 支持代理服务器配置
-
表/主题选择
- 支持选择指定数据库的所有表
- 支持选择指定数据库的部分表
- 支持选择Kafka主题
- 支持创建新的Kafka主题
-
字段配置
- 支持自定义字段生成规则
- 内置多种数据类型生成器:
- 数值类型(整数、浮点数)
- 字符串类型(随机字符串、姓名、地址等)
- 日期时间类型
- 布尔类型
- JSON类型
- 数组类型
- 自定义类型
-
数据关联
- 支持表间关联关系
- 支持外键约束
- 支持数据一致性维护
-
写入模式
- 覆盖模式:清空目标表后写入
- 追加模式:保留现有数据,追加新数据
- 更新模式:根据主键更新现有数据
-
批量控制
- 支持配置批量写入大小
- 支持配置写入频率
- 支持配置并发写入数
-
Kafka消息格式
- JSON格式(支持自定义结构)
- Avro格式
- Protobuf格式
- 自定义格式
-
数据模板
- 支持自定义数据模板
- 支持模板变量替换
- 支持条件判断和循环
- 支持创建多个数据生成任务
- 支持任务调度(定时执行)
- 支持任务暂停/恢复
- 支持任务监控和统计
- 实时监控数据生成进度
- 详细的执行日志记录
- 错误告警和通知
- 性能指标统计
- 数据源连接管理器
- 数据生成引擎
- 任务调度器
- 监控系统
- 配置管理系统
- 插件化架构
- 自定义数据生成器接口
- 自定义数据源适配器
- 自定义输出格式处理器
- 单元测试
- 集成测试
- 性能测试
- 压力测试
- 快速构建开发环境
- 模拟生产环境数据
- 数据迁移测试
- 数据可视化测试
- 报表开发测试
- 数据挖掘测试
- JDK 11或更高版本
- 最小内存:4GB
- 推荐内存:8GB或更高
- 磁盘空间:根据数据量配置
- 数据库驱动
- 消息队列客户端
- 配置中心(可选)
- 监控系统(可选)
- 敏感数据脱敏
- 数据加密传输
- 访问权限控制
- 用户认证
- 角色授权
- 操作审计
- 安全日志
- 支持更多数据源
- 增强数据生成规则
- 优化性能
- 提供Web管理界面
- 支持容器化部署
- 支持云平台集成
- 支持CI/CD集成
- 支持监控系统集成
欢迎提交Issue和Pull Request来帮助改进项目。在提交代码前,请确保:
- 代码符合项目规范
- 添加必要的测试用例
- 更新相关文档
- 提供清晰的提交信息
本项目采用 MIT 许可证
这是一个用于生成模拟数据的应用程序,当前版本仅支持MySQL和Kafka数据源。
- Docker
- Docker Compose
在开始使用应用前,需要先创建数据库和相关表结构:
CREATE TABLE `data_source` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`name` varchar(100) NOT NULL COMMENT '数据源名称',
`type` varchar(20) NOT NULL COMMENT '数据源类型',
`url` varchar(500) NOT NULL COMMENT '连接URL',
`username` varchar(100) NOT NULL COMMENT '用户名',
`password` varchar(100) NOT NULL COMMENT '密码',
`driver_class_name` varchar(100) DEFAULT NULL COMMENT '驱动类名',
`description` varchar(500) DEFAULT NULL COMMENT '描述',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否删除',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COMMENT='数据源配置表';
CREATE TABLE `data_task` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`name` varchar(100) NOT NULL COMMENT '任务名称',
`data_source_id` bigint(20) NOT NULL COMMENT '数据源ID',
`target_type` varchar(20) NOT NULL COMMENT '目标类型',
`target_name` varchar(5000) NOT NULL COMMENT '目标名称',
`write_mode` varchar(20) NOT NULL COMMENT '写入模式',
`data_format` varchar(20) NOT NULL COMMENT '数据格式',
`template` text COMMENT '数据生成模板',
`batch_size` int(11) NOT NULL DEFAULT '1000' COMMENT '批量大小',
`frequency` int(11) NOT NULL DEFAULT '1' COMMENT '生成频率(秒)',
`concurrent_num` int(11) NOT NULL DEFAULT '1' COMMENT '并发数',
`status` varchar(20) NOT NULL DEFAULT 'STOPPED' COMMENT '任务状态',
`cron_expression` varchar(100) DEFAULT NULL COMMENT '定时任务表达式',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否删除',
PRIMARY KEY (`id`),
KEY `data_source_id` (`data_source_id`),
CONSTRAINT `data_task_ibfk_1` FOREIGN KEY (`data_source_id`) REFERENCES `data_source` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COMMENT='数据生成任务表';
CREATE TABLE `system_info` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`cpu_usage` double DEFAULT NULL COMMENT 'CPU使用率',
`memory_usage` double DEFAULT NULL COMMENT '内存使用率',
`disk_usage` double DEFAULT NULL COMMENT '磁盘使用率',
`jvm_heap_usage` double DEFAULT NULL COMMENT 'JVM堆内存使用率',
`jvm_non_heap_usage` double DEFAULT NULL COMMENT 'JVM非堆内存使用率',
`uptime` bigint(20) DEFAULT NULL COMMENT '系统运行时间(毫秒)',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1248 DEFAULT CHARSET=utf8mb4 COMMENT='系统信息表';
CREATE TABLE `task_execution` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`task_id` bigint(20) NOT NULL COMMENT '任务ID',
`start_time` datetime NOT NULL COMMENT '开始时间',
`end_time` datetime DEFAULT NULL COMMENT '结束时间',
`status` varchar(20) NOT NULL COMMENT '执行状态',
`total_count` bigint(20) NOT NULL DEFAULT '0' COMMENT '总记录数',
`success_count` bigint(20) NOT NULL DEFAULT '0' COMMENT '成功记录数',
`error_count` bigint(20) NOT NULL DEFAULT '0' COMMENT '失败记录数',
`error_message` text COMMENT '错误信息',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否删除',
PRIMARY KEY (`id`),
KEY `task_id` (`task_id`),
CONSTRAINT `task_execution_ibfk_1` FOREIGN KEY (`task_id`) REFERENCES `data_task` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=217 DEFAULT CHARSET=utf8mb4 COMMENT='任务执行记录表';
您可以将上述SQL保存为init.sql
文件,然后执行:
mysql -u用户名 -p密码 < init.sql
或者在MySQL客户端中直接执行这些SQL语句。
- JDK 11+
- Maven 3.6+
- MySQL 5.7+
- Kafka 2.8+
- 进入后端目录
cd backend
- 编译项目
mvn clean package -DskipTests
- 启动应用
java -jar target/data-generator-backend-1.0.0.jar
或者在开发IDE中直接运行com.datagenerator.DataGeneratorApplication
类。
后端配置文件位于backend/src/main/resources/application.yml
,您可以根据需要修改数据库连接、Kafka配置等。
- Node.js 14+
- npm 6+ 或 yarn 1.22+
- 进入前端目录
cd frontend
- 安装依赖
npm install
# 或
yarn install
- 启动开发服务器
npm run serve
# 或
yarn serve
- 构建生产版本
npm run build
# 或
yarn build
前端API配置文件位于frontend/src/config/index.js
,您可以根据需要修改API地址等配置。
frontend/
: 前端Vue应用backend/
: 后端Spring Boot应用docker-compose.yml
: Docker Compose配置文件start.sh
/start.bat
: 启动脚本stop.sh
/stop.bat
: 停止脚本
默认的MySQL数据库配置:
- 数据库名:data_generator
- 用户名:datagenerator
- 密码:datagenerator123
如需修改,请编辑docker-compose.yml
文件中的相关配置。
默认创建的主题:test
如需添加更多主题,请修改docker-compose.yml
文件中的KAFKA_CREATE_TOPICS
配置。
如果应用启动失败,可以查看Docker日志:
docker-compose logs
针对特定服务的日志:
docker-compose logs backend
docker-compose logs frontend
docker-compose logs mysql
docker-compose logs kafka
-
数据库连接失败
- 检查数据库服务是否正常运行
- 验证连接信息是否正确
- 确认数据库用户是否有足够权限
-
Kafka连接问题
- 检查Kafka服务是否正常运行
- 验证主题是否已创建
- 检查网络连接是否通畅
-
前端无法连接后端API
- 确认后端服务是否正常运行
- 检查前端配置中的API地址是否正确
- 检查是否存在跨域问题
data-generator/
├── backend/ # 后端项目目录
│ ├── src/ # 源代码
│ ├── pom.xml # Maven配置文件
│ └── Dockerfile # 后端Docker构建文件
├── frontend/ # 前端项目目录
│ ├── src/ # 源代码
│ ├── package.json # npm配置文件
│ ├── nginx.conf # nginx配置文件
│ └── Dockerfile # 前端Docker构建文件
├── docker-compose.yml # Docker Compose配置文件
├── deploy.sh # 一键部署脚本
└── README.md # 项目说明文档
- Docker 20.10.0+
- Docker Compose 2.0.0+
- 操作系统:Linux/MacOS/Windows
- 内存:至少4GB RAM
- 磁盘空间:至少10GB可用空间
- 克隆项目:
git clone <项目地址>
cd data-generator
- 运行部署脚本:
chmod +x deploy.sh # 给脚本添加执行权限(Linux/MacOS)
./deploy.sh # 运行部署脚本
- 访问应用:
- 前端界面:http://localhost
- 后端API:http://localhost:8080
- 数据库:localhost:3306
- 数据库:MySQL 8.0
- 用户名:data_generator
- 密码:data_generator
- 数据库名:data_generator
- 前端:80
- 后端:8080
- MySQL:3306
backend/src/
: 后端源代码目录backend/pom.xml
: Maven项目配置文件backend/Dockerfile
: 后端Docker镜像构建文件
frontend/src/
: 前端源代码目录frontend/package.json
: npm项目配置文件frontend/nginx.conf
: nginx服务器配置文件frontend/Dockerfile
: 前端Docker镜像构建文件
- 构建镜像:
docker-compose build
- 启动服务:
docker-compose up -d
- 查看服务状态:
docker-compose ps
- 查看服务日志:
docker-compose logs
docker-compose down
- 端口冲突
- 问题:服务启动失败,提示端口被占用
- 解决:修改
docker-compose.yml
中的端口映射配置
- 数据库连接失败
- 问题:后端服务无法连接到数据库
- 解决:检查数据库配置和网络连接
- 前端访问后端API失败
- 问题:前端页面无法加载数据
- 解决:检查nginx配置中的代理设置
- 更新应用:
git pull # 获取最新代码
./deploy.sh # 重新部署
- 查看容器日志:
docker-compose logs -f # 实时查看所有服务的日志
docker-compose logs backend # 查看后端服务日志
docker-compose logs frontend # 查看前端服务日志
- 备份数据:
docker exec data-generator-mysql mysqldump -u root -p data_generator > backup.sql
- 后端:Spring Boot
- 前端:Vue.js
- 数据库:MySQL
- 服务器:Nginx
- 容器化:Docker & Docker Compose
- 生产环境部署
- 修改数据库密码
- 配置HTTPS
- 启用数据库备份
- 配置监控告警
- 安全建议
- 定期更新依赖
- 限制数据库远程访问
- 使用安全的密码
- 配置防火墙规则