# doris测试系统 **Repository Path**: yangmingjava/doris-tets ## Basic Information - **Project Name**: doris测试系统 - **Description**: 一个调用doris的小系统 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-14 - **Last Updated**: 2025-08-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 多数据源管理系统 这是一个基于Spring Boot的多数据源管理系统,支持MySQL、Oracle、Doris和Kafka等多种数据源的动态配置和查询。 ## 功能特性 - 🔧 **动态数据源配置**: 支持运行时添加、删除、测试数据源连接 - 🗄️ **多数据源支持**: MySQL、Oracle、Doris、Kafka - 🔍 **SQL查询执行**: 支持在指定数据源上执行SQL查询 - 📊 **元数据查询**: 获取表列表、列信息等元数据 - 🌐 **Web界面**: 提供友好的Web管理界面 - 🔒 **连接测试**: 添加数据源前自动测试连接有效性 - 📤 **数据传输**: 支持从不同数据源查询数据并传输到Doris - 📋 **任务管理**: 支持数据传输任务的创建、执行、监控和管理 ## 技术栈 - **后端**: Spring Boot 2.7.18 - **数据库**: MySQL 8.0.33, Oracle 21.5, Doris 1.0.2 - **消息队列**: Kafka 3.2.3 - **连接池**: Druid 1.2.16 - **ORM**: MyBatis - **前端**: HTML5 + JavaScript + CSS3 ## 快速开始 ### 1. 环境要求 - JDK 8+ - Maven 3.6+ - 至少一个可用的数据源(MySQL、Oracle、Doris等) ### 2. 数据库初始化 首先需要在MySQL数据库中创建数据源配置表: ```sql -- 执行 src/main/resources/sql/datasource_config.sql 中的建表语句 ``` **注意**: 系统使用MySQL数据源来存储数据源配置信息(表:mul_datasource_config) ### 3. 启动应用 ```bash # 克隆项目 git clone cd doris-demo # 编译项目 mvn clean compile # 启动应用 mvn spring-boot:run ``` ### 4. 访问Web界面 打开浏览器访问: http://localhost:8080 ## API接口文档 ### 数据源管理接口 #### 1. 添加数据源 ``` POST /api/datasource/add Content-Type: application/json { "name": "mysql_prod", "type": "MYSQL", "host": "localhost", "port": 3306, "database": "test_db", "username": "root", "password": "password", "parameters": "useSSL=false&serverTimezone=UTC", "description": "生产环境MySQL数据库" } ``` #### 2. 获取数据源列表 ``` GET /api/datasource/list ``` #### 3. 测试数据源连接 ``` POST /api/datasource/test Content-Type: application/json { "name": "mysql_prod", "type": "MYSQL", "host": "localhost", "port": 3306, "database": "test_db", "username": "root", "password": "password" } ``` #### 4. 更新数据源 ``` PUT /api/datasource/update Content-Type: application/json { "name": "mysql_prod", "type": "MYSQL", "host": "localhost", "port": 3306, "database": "test_db", "username": "root", "password": "new_password", "parameters": "useSSL=false&serverTimezone=UTC", "description": "更新后的MySQL数据库" } ``` #### 5. 删除数据源 ``` DELETE /api/datasource/{name} ``` #### 6. 启用数据源 ``` PUT /api/datasource/{name}/enable ``` #### 7. 禁用数据源 ``` PUT /api/datasource/{name}/disable ``` #### 8. 获取启用的数据源列表 ``` GET /api/datasource/list/enabled ``` #### 9. 根据类型获取数据源列表 ``` GET /api/datasource/list/type/{type} ``` #### 10. 根据条件查询数据源 ``` GET /api/datasource/list/conditions?name=mysql&type=MYSQL&enabled=true ``` #### 11. 检查数据源是否存在 ``` GET /api/datasource/exists/{name} ``` ### 数据传输接口 #### 1. 创建数据传输任务 ``` POST /api/transfer/task Content-Type: application/json { "taskName": "用户数据同步", "sourceDataSource": "mysql_prod", "sourceSql": "SELECT * FROM users WHERE create_time >= '2024-01-01'", "targetTable": "users_sync" } ``` #### 2. 执行数据传输任务 ``` POST /api/transfer/task/{taskId}/execute ``` #### 3. 获取所有传输任务 ``` GET /api/transfer/tasks ``` #### 4. 根据状态获取传输任务 ``` GET /api/transfer/tasks/status/{status} ``` #### 5. 根据任务名称查询传输任务 ``` GET /api/transfer/tasks/search?taskName=用户 ``` #### 6. 删除传输任务 ``` DELETE /api/transfer/task/{taskId} ``` #### 7. 预览源数据 ``` POST /api/transfer/preview Content-Type: application/json { "dataSourceName": "mysql_prod", "sql": "SELECT * FROM users LIMIT 10", "limit": 10 } ``` ### 数据查询接口 #### 1. 执行SQL查询 ``` POST /api/query/execute Content-Type: application/json { "dataSourceName": "mysql_prod", "sql": "SELECT * FROM users WHERE age > ?", "parameters": [18] } ``` #### 2. 获取表列表 ``` GET /api/query/tables/{dataSourceName} ``` #### 3. 获取表列信息 ``` GET /api/query/columns/{dataSourceName}/{tableName} ``` ## 使用示例 ### 1. 添加MySQL数据源 ```json { "name": "mysql_local", "type": "MYSQL", "host": "localhost", "port": 3306, "database": "test", "username": "root", "password": "123456", "parameters": "useSSL=false&serverTimezone=UTC", "description": "本地MySQL测试数据库" } ``` ### 2. 添加Oracle数据源 ```json { "name": "oracle_prod", "type": "ORACLE", "host": "192.168.1.100", "port": 1521, "database": "ORCL", "username": "system", "password": "oracle123", "description": "生产环境Oracle数据库" } ``` ### 3. 添加Doris数据源 ```json { "name": "doris_analytics", "type": "DORIS", "host": "100.70.7.0", "port": 9030, "database": "doris_test", "username": "root", "password": "dev!DORIS2024", "parameters": "useSSL=false&serverTimezone=UTC", "description": "Doris分析数据库" } ``` ### 4. 执行查询示例 ```json { "dataSourceName": "mysql_local", "sql": "SELECT id, name, age FROM users WHERE age > ? ORDER BY age DESC LIMIT 10", "parameters": [25] } ``` ## 配置说明 ### 数据源类型说明 - **MYSQL**: MySQL数据库,使用MySQL JDBC驱动 - **ORACLE**: Oracle数据库,使用Oracle JDBC驱动 - **DORIS**: Apache Doris数据库,兼容MySQL协议 - **KAFKA**: Apache Kafka消息队列(仅支持连接测试) ### 连接参数说明 - **host**: 数据库服务器地址 - **port**: 数据库端口号 - **database**: 数据库名称 - **username**: 用户名 - **password**: 密码 - **parameters**: 额外的连接参数(可选) ## 注意事项 1. **安全性**: 生产环境中请妥善保管数据库密码,建议使用环境变量或配置文件 2. **连接池**: 系统使用Druid连接池,支持连接池监控和配置 3. **事务**: 当前版本不支持跨数据源事务 4. **性能**: 大量数据查询时建议添加分页和限制条件 5. **Kafka支持**: Kafka数据源仅支持连接测试,不支持SQL查询 ## 故障排除 ### 常见问题 1. **连接失败**: 检查网络连接、端口、用户名密码是否正确 2. **驱动问题**: 确保相关数据库驱动已正确添加到pom.xml 3. **权限问题**: 确保数据库用户有足够的权限执行查询 4. **字符编码**: 建议在连接参数中指定正确的字符编码 ### 日志查看 应用启动后,可以通过以下方式查看详细日志: ```bash # 查看应用日志 tail -f logs/application.log # 查看错误日志 tail -f logs/error.log ``` ## 开发计划 - [ ] 支持PostgreSQL数据源 - [ ] 支持SQL Server数据源 - [ ] 添加数据源连接池监控 - [ ] 支持跨数据源数据同步 - [ ] 添加SQL查询历史记录 - [ ] 支持数据导出功能 ## 贡献指南 欢迎提交Issue和Pull Request来改进这个项目。 ## 许可证 本项目采用MIT许可证。