登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
AI 队友
登录
注册
轻量养虾,开箱即用!低 Token + 稳定算力,Gitee & 模力方舟联合出品的 PocketClaw 正式开售!点击了解详情
代码拉取完成,页面将自动刷新
开源项目
>
数据库相关
>
数据库服务
&&
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
586
Star
1.6K
Fork
1.2K
GVP
KWDB
/
kwdb
代码
Issues
45
Pull Requests
29
Wiki
统计
流水线
服务
JavaDoc
PHPDoc
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
开发画像分析
我知道了,不再自动展开
标签
标签名
描述
提交信息
操作
v3.1.0_old
一、新增特性 1、数据库对象管理 (1)创建时序库表增强 创建时序库/时序表支持 IF NOT EXISTS 语句,避免重复创建报错 支持创建时序库时自定义时间分区间隔(默认 10 天),时序表继承所属数据库的配置 (2) 存储过程优化 支持在存储过程中设置自定义变量 支持在存储过程中使用 PREPARE、EXECUTE、DEALLOCATE 语句 2、数据写入与处理 (1)数据去重策略 支持将数据去重策略设置为 merge 模式,对同一设备相同时间戳的数据进行去重和整合处理,适用于数据源重复写入、多路采集等场景 (2)时序数据性能优化 新增 Raft Log 专用存储引擎,提升机械硬盘读写性能 (3)时序数据压缩管理 新增 ts.compress.last_segment.enabled 参数,用于控制是否对 last segment (最新数据段) 启用压缩 新增 ts.compress.stage 参数,用于控制时序数据的压缩层级,支持不压缩、一级压缩、二级压缩 新增 SHOW DISTRIBUTION 语句,用于查看指定时序库或时序表的存储空间和压缩比例 3、数据查询与分析 (1)查询性能优化 新增 ts.last_cache_size.max_limit 集群参数,设置时序数据last_row() 读缓存功能的内存限制,提升 last() 和 last_row() 查询响应速度 (2)连接能力提升 最大并发连接数提升至 50,000 (3)SQL 函数增强 新增 to_timestamp() 函数,用于将时间戳格式转换为时间格式 4、运维与管理 (1)集群运维 支持通过部署脚本进行多副本集群的扩缩容操作 支持通过 VACUUM TS DATABASES SQL 命令手动触发重组操作,立即释放存储空间或优化查询性能 (2)任务管理:SHOW JOBS 命令支持显示流计算、数据订阅和发布的相关信息 二、重要变更 1、 安装部署脚本优化 部署时配置确认机制:将 deploy.cfg 配置文件信息汇总并在终端展示,用户确认后方可继续安装,否则取消安装 新增便捷运维脚本:安装时生成 kw-status.sh 和 kw-sql.sh 脚本,用于查看集群状态和连接数据库 主备集群证书支持:deploy.cfg 配置文件新增 additional 配置段,用于安全模式部署时将备库集群节点 IP 加入证书,保证主备集群使用同一套证书 卸载优化:卸载数据库时支持保留证书 2、快速部署脚本 新增快速部署脚本 quick_deploy.sh,用户运行脚本后,系统将自动完成系统检测、参数配置、安装包下载和部署全流程 3、生态工具 (1) KaiwuDB 开发者中心 支持 BLOB 和 CLOB 大对象数据类型 (2)KaiwuDB JDBC Driver 升级至安全版本,消除安全风险;支持更多数据类型
06c16a1
2026-02-02 14:01
下载
查看发行版
v3.1.0
一、新增特性 1、数据库对象管理 (1)创建时序库表增强 创建时序库/时序表支持 IF NOT EXISTS 语句,避免重复创建报错 支持创建时序库时自定义时间分区间隔(默认 10 天),时序表继承所属数据库的配置 (2) 存储过程优化 支持在存储过程中设置自定义变量 支持在存储过程中使用 PREPARE、EXECUTE、DEALLOCATE 语句 (3)表删除管理优化: DROP TABLE 引入 DropTablesManager 单例(表删除管理器),全局统一管理已删除表的 ID,确保多场景下表状态的一致性 2、数据写入与处理 (1)数据去重策略 支持将数据去重策略设置为 merge 模式,对同一设备相同时间戳的数据进行去重和整合处理,适用于数据源重复写入、多路采集等场景 (2)时序数据压缩管理 新增 ts.compress.last_segment.enabled 参数,用于控制是否对 last segment (最新数据段) 启用压缩 新增 ts.compress.stage 参数,用于控制时序数据的压缩层级,支持不压缩、一级压缩、二级压缩 新增 SHOW DISTRIBUTION 语句,用于查看指定时序库或时序表的存储空间和压缩比例 (3)数据推送和发布订阅功能优化 支持时序数据删除和更新操作 自动捕获乱序插入的数据、IMPORT 语句导入的数据、任务开启前或暂停期间更新的数据 新增高可用场景下的数据推送和发布订阅支持 3、数据查询与分析 (1)查询性能优化 新增 ts.last_cache_size.max_limit 集群参数,设置时序数据last_row() 读缓存功能的内存限制,提升 last() 和 last_row() 查询响应速度 (2)Follower 副本数据读取 新增 KWBASE_ENABLE_FOLLOWER_READ 环境变量和 kv.kvserver.qps_ts_follower_read_threshold 集群参数,在多副本集群发生严重故障,存活节点数少于副本总数的一半;集群中存在热点数据分片或高负载数据分片时从 follower 副本读取数据 (3)SQL 函数增强 新增 to_timestamp() 函数,用于将时间戳格式转换为时间格式 4、运维与管理 (1)备份恢复功能增强 关系引擎支持备份恢复功能 时序引擎和关系引擎均支持增量备份恢复功能 (2)集群运维 支持通过部署脚本进行多副本集群的扩缩容操作 支持通过 VACUUM TS DATABASES SQL 命令手动触发重组操作,立即释放存储空间或优化查询性能 (3)多副本集群复制 支持将表级或库级时序数据和关系数据从源集群复制到目标集群,实现主备部署和灾备能力 (4)监控平台增强 支持通过订阅/发布页面查看实时发布、订阅和推送任务列表 支持通过点击发布、订阅任务名称查看关联任务及任务关系图 (5)任务管理:SHOW JOBS 命令支持显示流计算、数据订阅和发布的相关信息 5、安全与审计 (1)审计功能增强 新增对 STREAM、PIPE、PUBLICATION、SUBSCRIPTION 的创建、修改、删除操作审计 新增对 TS ENGINE、DATABASE、TABLE 的备份恢复操作审计 DATABASE、TABLE、INDEX、JOB、SCHEDULE 对象操作由语句级审计升级为系统级审计,添加到默认审计策略 二、重要变更 1、 安装部署脚本优化 部署时配置确认机制:将 deploy.cfg 配置文件信息汇总并在终端展示,用户确认后方可继续安装,否则取消安装 新增便捷运维脚本:安装时生成 kw-status.sh 和 kw-sql.sh 脚本,用于查看集群状态和连接数据库 主备集群证书支持:deploy.cfg 配置文件新增 additional 配置段,用于安全模式部署时将备库集群节点 IP 加入证书,保证主备集群使用同一套证书 卸载优化:卸载数据库时支持保留证书 2、操作系统和环境:麒麟 V10 SP3 2303 裸机部署支持 3、生态工具 (1)KaiwuDB Benchmark 性能基准测试工具 新增专为 KaiwuDB 设计的性能基准测试工具,支持高并发批量数据写入与查询两大核心功能 用户通过简单的 JSON 配置文件即可定义测试参数,快速执行性能测试并生成结构化结果报告 报告包含吞吐量、延迟等核心性能指标,适用于评估 KaiwuDB 在不同业务场景下的性能表现 (2) KaiwuDB 开发者中心 支持关系数据备份恢复以及关系数据和时序数据增量备份恢复 支持 BLOB 和 CLOB 大对象数据类型 (3) KaiwuDB 数据迁移工具 支持自主选择待迁移的表对象、字段列,并配置为时间戳列、标签列及主标签列 支持迁移工程与迁移任务的重命名和复制粘贴操作 优化用户体验:提供数据库 URL 连接示例、自动保存配置、支持下拉选择数据库、支持跳转操作、新增元数据迁移清单链接 (4)Kafka Connector 支持 KaiwuDB 数据库的数据推送功能,包含 DDL、DELETE、UPDATE (5)KaiwuDB JDBC Driver 升级至安全版本,消除安全风险;支持更多数据类型 4、预测分析引擎 内置 OpenTS 时序大模型,支持通过 KAT 或 SQL 语句调用模型,进行单变量时序数据的趋势预 5、异构数据库数据实时同步 支持通过 Flink 连接器实现 MySQL、TDengine 到 KaiwuDB 的实时数据传输
06c16a1
2026-02-02 14:01
下载
V3.1.0
KWDB 3.1.0
06c16a1
2026-02-02 14:01
下载
查看发行版
v1.0.0
# KWDB TS Engine 代码分析报告 ## 📋 概述 本报告针对 `kwdbts2/ts_engine` 目录下的核心时序数据库引擎代码进行深入分析,主要涵盖以下关键文件: - `ts_engine.cpp` (105KB) - 时序数据库引擎核心实现 - `ts_table_v2_impl.cpp` (60KB) - 表管理器实现 - `ts_vgroup.cpp` (103KB) - 虚拟组管理器实现 ## 🚨 高风险问题(需立即修复) ### 1. 内存管理问题 **位置**: `ts_table_v2_impl.cpp:1475` ```cpp char* buffer = static_cast<char*>(malloc(attrs[kw_scan_cols[i]].size)); memcpy(buffer, value, attrs[kw_scan_cols[i]].size); batch = new AggBatch(static_cast<void*>(buffer), 1); batch->is_new = true; // ❌ 缺乏对应的free,存在内存泄漏风险 ``` ### 2. 并发安全问题 **位置**: `ts_vgroup.cpp:891` ```cpp void TsVGroup::compactRoutine(void* args) { while (!KWDBDynamicThreadPool::GetThreadPool().IsCancel() && enable_compact_thread_) { bool compacted = false; auto s = Compact(&compacted); // ❌ 缺乏锁保护 // ... } } ``` ### 3. 异常安全性不足 **位置**: `ts_engine.cpp:1876` ```cpp try { s = Recover(ctx); if (s == KStatus::FAIL) { // 清理逻辑 } } catch (...) { LOG_ERROR("Recover fail. Now Reset ALL WAL.") // ❌ 重复的清理逻辑,可能导致二次错误 } ``` ## 📊 代码质量评估 | 维度 | 评分 | 状态 | |------|------|------| | 内存安全 | ⭐⭐ | 需改进 | | 并发安全 | ⭐⭐ | 需改进 | | 异常处理 | ⭐⭐⭐ | 可接受 | | 代码复杂度 | ⭐⭐ | 需改进 | | 可维护性 | ⭐⭐⭐ | 可接受 | ## 🛠️ 修复优先级 **P0 - 立即修复** 1. 内存泄漏问题 - 严重安全风险 2. 并发安全问题 - 数据竞争风险 **P1 - 高优先级** 3. 异常处理改进 4. 锁顺序统一 ## 📈 性能分析 ### 优点 - 使用内存池减少小对象分配 - 实现了多级缓存机制 - 支持异步I/O操作 ### 问题 - 频繁的锁竞争可能影响吞吐量 - 大对象拷贝影响性能 - 缺乏有效的内存回收机制 ## 📝 改进建议 ### 架构层面 1. 引入智能指针和RAII模式 2. 实现统一的错误处理机制 3. 添加详细的单元测试覆盖 ### 代码层面 1. 使用C++11/14特性提升代码质量 2. 增加详细的函数文档 3. 统一命名规范和代码风格 ## 📋 总结 TS Engine整体架构设计合理,实现了时序数据库的核心功能。但在内存管理、并发安全方面存在较为严重的问题,需要优先修复。建议团队制定分阶段的改进计划,首先解决高风险问题,然后逐步优化代码质量和性能。 **预计修复工作量**: 2-3个冲刺 **风险等级**: 中等(可控) **影响范围**: 核心存储引擎模块 --- *此报告基于静态代码分析生成,建议结合实际测试和动态分析进行综合评估。*
57232c9
2026-01-23 14:05
下载
code-review-ts_vgroup-v1.0
# KWDB ts_vgroup.cpp 代码分析报告 ## 📋 概述 **文件**: `kwdbts2/ts_engine/ts_vgroup.cpp` **文件大小**: 103KB **分析时间**: 2026-01-26 **代码行数**: 约3,500行 **主要功能**: 时序数据库虚拟组(VGroup)的核心实现,负责数据存储、压缩、清理等操作 --- ## 🏗️ 架构设计分析 ### 核心组件 - **TsVGroup**: 虚拟组主类,管理时序数据的存储和访问 - **内存管理**: 通过TsMemSegmentManager管理内存段 - **版本控制**: 通过TsVersionManager管理数据版本 - **WAL管理**: 通过WALMgr实现预写日志 - **压缩线程**: 后台压缩线程定期压缩数据 - **统计重算线程**: 后台线程重新计算统计信息 --- ## 🔍 问题发现 ### 🚨 高风险问题 #### 1. 内存安全问题 **位置**: 行 1475-1480 ```cpp char* buffer = static_cast<char*>(malloc(attrs[kw_scan_cols[i]].size)); memcpy(buffer, value, attrs[kw_scan_cols[i]].size); batch = new AggBatch(static_cast<void*>(buffer), 1); ``` **问题**: - 手动分配内存但缺乏对应的释放逻辑 - 可能导致内存泄漏 - RAII原则使用不一致 **建议**: 使用智能指针或RAII包装器管理内存 #### 2. 并发安全问题 **位置**: 行 891-901 ```cpp void TsVGroup::compactRoutine(void* args) { while (!KWDBDynamicThreadPool::GetThreadPool().IsCancel() && enable_compact_thread_) { bool compacted = false; auto s = Compact(&compacted); // 缺乏锁保护 ``` **问题**: - 压缩操作缺乏适当的同步机制 - 可能与其他操作产生竞态条件 - 数据一致性风险 **建议**: 添加适当的互斥锁保护 #### 3. 异常处理不当 **位置**: 行 1876-1885 ```cpp try { s = Recover(ctx); if (s == KStatus::FAIL) { LOG_ERROR("Recover fail. Now Reset ALL WAL.") // 如果ResetWAL失败,系统状态不一致 } } catch (...) { LOG_ERROR("Recover fail. Now Reset ALL WAL.") // 重复的清理逻辑 } ``` **问题**: - 异常捕获后处理逻辑可能不完整 - 重复的错误处理代码 - 可能导致系统状态不一致 --- ### 🟡 中风险问题 #### 4. 代码复杂度问题 **位置**: `FlushImmSegment` 函数 (行 2800-3000+) **问题**: - 函数过长(200+行) - 职责不清晰 - 嵌套层次过深 **建议**: 拆分为多个子函数,提高可读性 #### 5. 锁粒度问题 **位置**: 行 374-380 ```cpp TSEntityID TsVGroup::AllocateEntityID() { std::lock_guard<std::mutex> lock1(entity_id_mutex_); std::unique_lock<std::shared_mutex> lock2(entity_latest_row_mutex_); ``` **问题**: - 锁的嵌套顺序可能不一致 - 存在死锁风险 **建议**: 统一锁的获取顺序 #### 6. 硬编码常量 **位置**: 多处 ```cpp std::this_thread::sleep_for(std::chrono::seconds(2)); std::chrono::minutes(5) ``` **问题**: - 魔法数值 - 配置硬编码 - 可维护性差 **建议**: 使用配置常量 --- ### 🟢 低风险问题 #### 7. 日志记录不一致 **位置**: 多处 **问题**: - 日志级别使用不统一 - 部分关键操作缺乏日志记录 - 错误信息描述不够详细 #### 8. 资源清理时机 **位置**: 析构函数 **问题**: - 析构函数中资源清理复杂 - 可能存在异常安全风险 --- ## 📊 代码质量指标 | 指标 | 评分 | 说明 | |------|------|------| | **复杂度** | ⭐⭐⭐⭐ | 部分函数过于复杂 | | **可读性** | ⭐⭐⭐ | 缺乏足够注释 | | **可维护性** | ⭐⭐⭐ | 硬编码较多 | | **安全性** | ⭐⭐ | 内存和并发安全问题 | | **性能** | ⭐⭐⭐⭐ | 整体性能良好 | --- ## 🛠️ 改进建议 ### 立即修复 (高优先级) 1. **内存管理**: 使用RAII模式管理动态内存 2. **并发安全**: 为关键操作添加同步机制 3. **异常处理**: 完善异常安全处理逻辑 ### 中期改进 (中优先级) 1. **代码重构**: 拆分大函数,提高模块化 2. **配置化**: 将硬编码常量改为配置参数 3. **日志规范**: 统一日志记录标准 ### 长期优化 (低优先级) 1. **性能优化**: 分析并优化热点代码路径 2. **文档完善**: 添加详细的函数和类注释 3. **测试覆盖**: 增加单元测试覆盖率 --- ## 📈 性能分析 ### 性能瓶颈点 1. **压缩操作**: 大量数据的压缩可能耗时较长 2. **锁竞争**: 多线程环境下可能存在锁竞争 3. **内存分配**: 频繁的内存分配/释放操作 ### 优化建议 - 考虑使用内存池减少内存分配开销 - 优化锁粒度,减少锁竞争 - 异步化耗时操作 --- ## 📝 总结 `ts_vgroup.cpp` 是KWDB时序数据库的核心组件,整体架构设计合理,功能完整。但在内存管理、并发安全和代码质量方面存在一些需要改进的问题。 **优先级排序**: 1. 🔥 **立即修复**: 内存安全和并发问题 2. 🔸 **尽快处理**: 代码复杂度和异常处理 3. 🔹 **后续优化**: 日志规范和性能调优 建议制定分阶段的改进计划,优先解决高风险问题,逐步提升代码质量和系统稳定性。 --- ## 📁 附件 - 原始代码文件: `kwdbts2/ts_engine/ts_vgroup.cpp` (103KB) - 分析工具: 静态代码分析 - 分析范围: 全文件代码审查
57232c9
2026-01-23 14:05
下载
v3.0.0_old
一、新增特性 1、 数据库对象管理 •大型对象支持:关系引擎新增 BLOB(二进制大型对象)和 CLOB(字符型大型对象)支持,覆盖 DDL、DML、DCL 全生命周期 •触发器支持:关系引擎支持触发器的创建、修改、删除操作,提供灵活的触发条件和事件设置 •存储过程支持:新增存储过程功能,支持创建、查看、编辑、检查、运行、重命名、删除等操作,兼容完整 SQL 语法和特殊语法结构 •注释功能增强:支持在创建时序库、关系库、时序表、关系表时直接添加注释,无需后续单独处理 2 数据管理与查询 (1)数据存储与压缩 •实时压缩:支持时序数据入库实时压缩,可根据数据类型自适应选择最优压缩算法,提升压缩效率 (2)查询增强 •最值上下文查询:使用 min 或 max 函数查询时序数据时,可同时获取该值所在行的其他字段 (3)会话管理 •自定义变量:支持在 SQL 语句中使用以"@"开头的自定义变量进行赋值、引用和计算 (4) 数据导入导出 •导入导出增强:支持以 SQL 格式导出数据 (5) 时序数据处理 •流计算:支持创建与管理实时流计算,提供多种触发模式,支持乱序与过期数据策略,结果可订阅与发布 三、分布式架构 •数据分布优化: ○关系数据: ▪支持建表/改表时指定哈希、范围或列表分区方式,支持设置分区区域 ▪支持哈希分片索引功能,建表时定义哈希分区主键,改表时创建哈希分区 ○时序数据: ▪支持改表时指定哈希分区方式,支持设置分区区域 ▪支持建表时指定哈希值大小,决定最大数据分片数 ▪支持控制后台数据自动均衡及死亡节点副本补足行为 •写入性能优化:支持延长 raft log 落盘周期,合并 raft log 和 WAL,提升多副本集群写入性能 •数据同步监控:查看主副本与从副本间数据同步延迟 四、重要变更 1 操作系统和环境 •新增 KylinOS V10 SP2 支持 2 开发工具 •KaiwuDB 开发者中心: ○系统兼容:新增 Apple M 系列芯片 macOS 支持 ○数据管理:支持存储过程与触发器管理 ○易用性优化:支持复制粘贴数据源连接 •性能测试工具 (kwdb-tsbs):基于 TSBS 的时序数据库性能测试工具,可生成标准化数据集,并对 KWDB 的读写性能进行基准测试 3 生态兼容 •Flink 深度集成:提供 KaiwuDB Flink Connector 连接器,支持通过 DataStream API 和 Flink Table 实现双向数据流转,具备自动类型映射、灵活参数配置和并发读取优化等核心能力 •Kafka 数据接入:支持 Kafka 数据直接写入 KWDB 关系引擎 五、功能调整(相较于2.x版本) 当前版本暂不支持以下功能,后续版本将根据需求逐步完善: •库表设置:时序库暂不支持自定义分区间隔;时序表暂不支持设置活跃时间和分区间隔 •数据写入:去重策略暂不支持 merge模式(相同时间戳数据去重合并) •数据存储:预分配空间管理;查看磁盘分区空间 •数据压缩:周期性压缩(已优化为在线实时压缩);压缩算法与压缩级别设置;即时压缩
6be0cdd
2025-11-12 09:07
下载
查看发行版
V3.0.1
KWDB 3.0.1
cc4f63c
2025-11-27 14:27
下载
V3.1.0_BEFORE_3.0.1MERGE
KWDB 3.0.1代码同步至master前主分支代码
9674584
2025-10-31 20:16
下载
V3.0.0
KWDB 3.0.0
f92ba98
2025-10-17 15:36
下载
查看发行版
V3.0.0_STORAGE_BEFORE
KWDB 3.0存储合入前主分支代码
f0aba1b
2025-08-29 14:15
下载
V2.2.2
KWDB 2.2.2
2a079dd
2025-07-17 14:05
下载
查看发行版
V2.2.1
KWDB 2.2.1
415b274
2025-06-06 15:40
下载
查看发行版
V2.2.0
efa37de
2025-03-18 17:45
下载
查看发行版
V2.1.0
KWDB 2.1.0
72e2c73
2024-11-22 16:15
下载
查看发行版
V2.0.4
d8f2a8c
2024-09-25 09:22
下载
查看发行版
V2.0.3.2
KWDB 2.0.3.2
12171b2
2024-08-06 11:38
下载
查看发行版
下载
请输入验证码,防止盗链导致资源被占用
取消
下载
1
https://gitee.com/kwdb/kwdb.git
git@gitee.com:kwdb/kwdb.git
kwdb
kwdb
kwdb
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册