# java-benchmark **Repository Path**: lianglin1979/java-benchmark ## Basic Information - **Project Name**: java-benchmark - **Description**: benchmark tools for dolphindb - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-25 - **Last Updated**: 2025-12-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DolphinDB Java 性能测试框架 ## 1. 设计目的 本项目是一个基于Java实现的DolphinDB数据库性能测试框架,旨在为DolphinDB用户提供一套标准化的性能基准测试工具。通过此框架,用户可以: - 执行标准化的读写性能测试 - 收集多维度的性能指标(TPS、QPS、RPS、延迟百分位等) - 灵活配置测试参数和测试场景 - 扩展自定义测试用例 - 生成详细的测试报告 ## 2. 代码框架说明 ### 2.1 核心组件架构 ``` com.dolphindb/ ├── BenchmarkMain.java # 程序入口点 ├── runner/ │ └── BenchmarkRunner.java # 测试运行器,负责调度和执行测试 ├── config/ │ ├── BenchmarkConfig.java # 基准测试全局配置 │ ├── DBConfig.java # 数据库连接配置 │ └── TestCaseConfig.java # 测试用例配置 ├── tests/ │ ├── AbstractBenchmarkTest.java # 测试用例抽象基类 │ └── WritePerformanceTest.java # 写入性能测试实现 ├── metrics/ │ └── PerformanceMetrics.java # 性能指标收集器 ├── database/ │ └── DolphinDBConnector.java # 数据库连接器 └── utils/ └── JSONConfigLoader.java # JSON配置加载器 ``` ### 2.2 核心类功能说明 - **BenchmarkMain**: 应用程序入口,负责初始化并启动测试流程 - **BenchmarkRunner**: 测试运行控制器,加载配置、管理测试生命周期 - **AbstractBenchmarkTest**: 所有测试用例的抽象基类,定义测试接口 - **PerformanceMetrics**: 性能指标收集和计算 - **DolphinDBConnector**: 封装DolphinDB Java API的连接和操作 ### 2.3 性能指标体系 框架收集以下核心性能指标: - **TPS/QPS**: 每秒事务/查询数 - **RPS**: 每秒处理行数 - **延迟百分位**: P50、P90、P95、P99等延迟指标 - **成功率**: 操作成功与失败统计 ## 3. 用户扩展接口说明及示例 ### 3.1 扩展新的测试用例 要扩展新的测试用例,需要继承`AbstractBenchmarkTest`抽象类并实现其抽象方法: ```java package com.dolphindb.tests; import com.dolphindb.database.DolphinDBConnector; import java.util.Map; public class ReadPerformanceTest extends AbstractBenchmarkTest { public ReadPerformanceTest(DolphinDBConnector connector, Map config) { super(connector, config); // 初始化自定义配置参数 } @Override public void setup() throws Exception { // 测试前的准备工作 createTestTable(); // 其他初始化逻辑 } @Override public void runTest() throws Exception { metrics.start(); // 实现具体的测试逻辑 for (int i = 0; i < iterations; i++) { long startTime = System.nanoTime(); boolean success = executeReadOperation(); long endTime = System.nanoTime(); metrics.recordOperation(success, (endTime - startTime) / 1_000_000, processedRows); } metrics.stop(); } @Override public void cleanup() throws Exception { // 清理测试环境 dbConnector.executeScript("dropTable('" + tableName + "')"); } @Override public String getTestName() { return "read-performance-test"; } } ``` ### 3.2 注册测试用例 在`BenchmarkRunner.java`的`createTestInstance`方法中注册新测试: ```java private AbstractBenchmarkTest createTestInstance(String testName, Map config) { switch (testName) { case "write-performance-test": return new WritePerformanceTest(dbConnector, config); case "read-performance-test": return new ReadPerformanceTest(dbConnector, config); case "custom-test": return new CustomPerformanceTest(dbConnector, config); // 添加更多测试用例... default: System.err.println("Unknown test type: " + testName); return null; } } ``` ### 3.3 配置文件示例 创建对应的JSON配置文件`config/read-test.json`: ```json { "tableName": "test_read_table", "databaseName": "dfs://test_db", "iterations": 10000, "queryPattern": "range", "concurrency": 4, "warmupIterations": 1000 } ``` 在主配置文件`config/benchmark-config.json`中启用测试: ```json { "database": { "host": "localhost", "port": 8848, "username": "admin", "password": "123456" }, "testCases": [ { "name": "write-performance-test", "configFile": "config/write-test.json", "enabled": true, "description": "测试写入性能" }, { "name": "read-performance-test", "configFile": "config/read-test.json", "enabled": true, "description": "测试读取性能" } ] } ``` ## 4. 代码贡献及参与方法 ### 4.1 开发环境要求 - JDK 8+ - DolphinDB Server - DolphinDB Java API ### 4.2 项目构建 ```bash # 克隆项目 git clone # 编译项目 mvn compile # 打包 mvn package # 运行测试 mvn test ``` ### 4.3 贡献流程 1. Fork本项目到个人账户 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 创建Pull Request ### 4.4 开发指南 - 遵循Java编码规范,使用4空格缩进 - 为新功能添加单元测试 - 更新相关文档和README - 确保所有测试通过后再提交PR ### 4.5 待完成功能 欢迎贡献以下功能: - [ ] 更多的内置测试用例:1.读取数据测试用例,2,并行读取多线程用例;3同时多读多写用例。 - [ ] 增加CPU,内存,网络用量的指标监控,可以利用dolphindb的指标收集功能。 - [ ] 完整的报告生成功能,增加多用例的动态表格添加 通过参与本项目,您将深入了解DolphinDB性能特性和Java性能测试最佳实践。