
KaiwuDB 技术博客
文章平均质量分 84
分享数据库技术干货
KaiwuDB 数据库
KaiwuDB 是浪潮控股的数据库企业,拥有分布式多模数据库和数据服务平台2大核心产品,面向工业物联网、数字能源、车联网、智慧产业等各大行业领域,提供稳定安全、高性能、易运维的创新数据软件与服务方案。
展开
-
《一文讲透》第6期:揭秘 KWDB 的多模核心技术
• 如果关系数据的过滤性高并且关系数据和时序数据关联的条件中使用的是时序的 tag 值,则会选择将关系的数据下推到时序引擎端进行计算,优化的计算方式可以是直接 hash 过滤 tag 数据,还可以是 look up tag 数据,以此来提高时序数据的检索效率,提前过滤掉时序的大部分数据,减少跨模传递的数据量。用户进行查询时,根据查询的库表进行自适应的查询模式鉴别,通过统一的查询优化器,针对时序和关系的数据做特定的查询优化,生成统一的逻辑计划,最终根据查询的数据模不同定制不同的物理查询计划和物理计划优化。原创 2025-04-10 13:54:51 · 736 阅读 · 0 评论 -
Spring Boot 与 MyBatis Plus 整合 KWDB 实现 JDBC 数据访问
本文详细介绍了如何在 IDEA 中使用 Maven 管理的 Spring Boot 项目整合 KaiwuDB 数据库,并结合 MyBatis Plus 实现 JDBC 数据访问的过程。以下是关键点和总结:• 技术选型和环境搭建:使用 OpenJDK 1.8、Apache Maven 3.6.3、Spring Boot 2.7.18 和 MyBatis Plus 3.5.5 版本;通过 IDEA 创建基于 Maven 的 Spring Boot 项目,并配置 Java 8 作为开发环境。原创 2025-03-21 21:25:52 · 856 阅读 · 0 评论 -
《一文讲透》第4期:KWDB 数据库运维(7)—— 集群规划
KWDB 数据库可高效处理海量且连续的数据流,但对于运维人员来说,根据业务需求进行硬件规划是确保系统稳定、高效运行的基础。原创 2025-02-11 16:11:12 · 620 阅读 · 0 评论 -
《一文讲透》第4期:KWDB 数据库运维(6)—— 容灾与备份
KWDB 采用预写式日志(Write-Ahead Logging,WAL),记录每个时序表的模式变更和数据变更,以实现时序数据库的数据灾难恢复、时序数据的一致性和原子性。KWDB 默认会将保存在 WAL 日志缓存中的日志条目实时写入日志文件,每5分钟通过后台线程更新 WAL 文件和数据文件的 CHECKPOINT_LSN (检查点日志序列号),写入 CHECKPOINT WAL 日志,然后同步数据文件到磁盘。系统正常停机时,KWDB 会主动同步数据文件到磁盘并更新 CHECKPOINT_LSN。原创 2025-01-22 09:31:07 · 621 阅读 · 0 评论 -
数据库物理计划执行指南
数据库物理计划执行是解决数据库性能问题的重要手段之一,通过对数据库物理结构进行合理规划和优化,可显著提高数据库的查询速度、降低存储空间的占用率,从而提高数据库整体性能。原创 2024-06-18 11:49:52 · 837 阅读 · 0 评论 -
大咖专栏 | AI 时代下,我们可以拥有怎样的数据库?
KaiwuDB 引入原生 AI,期望借此帮助用户减负增效。本期主要和大家重点分享 KaiwuDB 的 AI 应用思路和具体实践原创 2024-06-19 10:37:47 · 1061 阅读 · 0 评论 -
Query 物理计划构建指南
一文了解物理计划结构核心概念及详细构建流程原创 2024-05-27 21:03:00 · 811 阅读 · 0 评论 -
KaiwuDB 事务中的 Raft 协议
Raft 协议是一种经典的分布式一致性算法,KaiwuDB 事务即是通过使用该协议来实现数据的一致性,本文主要介绍选举和日志提交两大主要过程.原创 2024-06-27 09:53:18 · 1015 阅读 · 0 评论 -
KaiwuDB 解析器之语义解析
解析器是数据库系统的重要组成部分之一,主要的功能是将客户端输入的 SQL 语句分解为语法单元,然后将这些语法单元转化成数据库内部可识别的数据结构,最终生成数据库可以执行的计划。从客户端输入一个 SQL 指令(文本格式),数据库执行器无法直接执行该文本指令,会先通过词法解析和语法解析将文本指令生成数据库能识别的数据结构 AST;语义解析对 AST 进行有效性校验,生成优化器需要的 Memo 数据结构;通过优化器(包括 RBO、CBO)优化后选出一个最优的 Memo 结构;原创 2024-05-06 15:28:43 · 952 阅读 · 1 评论 -
一文解读 SQL 生成工具
SQL 生成工具可用于测试 Parser 与其他数据库产品的兼容性,通过解析 YACC 语法文件中的产生式,生成对应的 SQL 语句,再使用数据库执行该 SQL,根据结果判断语句是否与其他数据库语法兼容。原创 2024-04-28 09:42:28 · 865 阅读 · 1 评论 -
数据库系统访问控制面面观
信息系统安全是保护信息系统中各类型数据资源免受未经授权的访问(包括查看、新增、修改、删除),确保数据完整性、保密性和可用性。在当下万物互联的发展背景下,信息安全尤其重要。访问控制作为信息安全的重要组成部分,既可对用户访问信息系统进行身份鉴别,又可细粒度控制用户对信息的访问权限。数据库作为信息系统的基础软件,承担着数据存储的责任,需要保证信息的完整性、保密性和可用性,就需要进行严格的访问控制。以下为部分内容节选,点击视频查看完整版内容。原创 2024-03-22 11:48:34 · 1308 阅读 · 1 评论 -
数据集成时表模型同步方法解析
数据治理的第一步,也是数据中台的一个基础功能 — 即将来自各类业务数据源的数据,同步集成至中台 ODS 层。业务数据源多种多样,单单可能涉及到的主流关系型数据库就有近十种。功能更加全面的数据中台通常还具有对接非关系型数据库、消息队列、日志源、文件源等功能。数据湖通常是 OLAP 型的数据库,虽然中台系统很少会采用多种数据仓库技术,但在技术选型时,可选项也有很多。数据集成可实现多种异构数据库间的数据同步,想要提升数据中台的易用高效性,自动表模型同步则显得至关重要。原创 2024-01-17 09:53:45 · 1052 阅读 · 0 评论 -
深度解析 PostgreSQL Protocol v3.0(一)
如果服务器不支持客户端请求的次要版本(例如,客户端请求版本为 3.1,但服务器仅支持 3.0,不支持 3.1 版本,此时就会发生这种情况),则服务器可以拒绝连接,或者可以使用包含其支持的最高次要协议版本的 NegotiateProtocolVersion 消息进行响应。需要注意的是,服务器可以返回的字符串长度没有预定义长度的限制,因此客户端比较好的编码策略是使用可扩展缓冲区,以便可以接收适合内存大小的内容。需要注意的是,由于历史原因,客户端发送的第一条消息(启动消息)没有消息类型的 1 个字节。原创 2023-08-30 10:38:34 · 797 阅读 · 0 评论 -
构建高效物理计划:从逻辑查询到算子实现
本文主要介绍内容一条查询语句如何实现由逻辑计划生成物理计划。查询语句要执行的操作、涉及的表信息等存放于逻辑计划的 PlanNode 中,物理计划的构建就是通过解析逻辑计划的 PlanNode,将对应的 PlanNode 转换为对应算子(Processor),算子之间再通过 Stream 连接。Physical Plan:物理计划,将逻辑查询计划的每一个操作符选择实现算法并选择这些操作符的执行顺序得到的计划。原创 2023-08-01 11:07:11 · 238 阅读 · 0 评论 -
SQL 执行计划管理(SPM)
optimizer_use_sql_plan_baselines - 控制 SQL 计划基准的使用,启用后,优化器在 SQL 计划基准中寻找正在编译的 SQL 语句的计划,如果找到,优化器会计算各个计划的性能开销,然后选择开销最低的计划。** 注意这里每次重新计算 cost 的代价不大,因为执行计划是已知的,优化器不必遍历所有的可能,只需根据算法计算出已知计划的 cost 便可。SQL 计划管理由三部分组成:SQL 计划基准捕获、SQL计划基准选择、SQL 计划基准发展。批量加载执行计划,包含四种技术。原创 2023-07-31 15:33:52 · 555 阅读 · 0 评论 -
如何实现高效的动态鉴权
Spring Security 是 Spring 框架内高度可定制化的安全框架,也是 Spring 应用的标准安全框架,提供了包括认证和鉴权在内的两大部分。其高度集成于 Spring 框架,无需引入第三方扩展模块,可以避 免大量的数据接口适配问题,大幅度减少开发成本和时间。如下图所示,Spring Security 的认证鉴权过程实际上位于请求过滤器和拦截器中,在请求通过了所有的过滤器和拦截器之后才会进行 API 适配。换言之,定制 Spring Security 就是修改过滤链中的各种过滤器和拦截器。原创 2023-07-26 16:46:30 · 219 阅读 · 0 评论 -
数据库集群方案详解
数据库集群是由多个数据库服务器组成的集合,这些服务器协同工作以提供高性能、高可用性和可扩展性的数据库解决方案。它们共享数据和工作负载,并通过协同处理查询和事务来提供一致性和可靠性。1. 数据库集群技术提供能力多个数据库服务器共享数据和工作负载高可用性和容错性数据复制和同步负载均衡和性能扩展统一的管理和监控2. 数据库集群优势高可用性和容错性负载均衡和性能扩展数据扩展和容量管理大数据处理和分析3. 数据库集群分类(1)按架构类型分类主从复制对等复制分片(sharding)原创 2023-07-25 18:26:13 · 624 阅读 · 0 评论 -
数据库集群方案简介
本期大咖KaiwuDB 资深解决方案专家周幸骏周老师毕业于复旦大学数学系,在金融科技行业服务超过 20 年,有丰富的客户项目实施、解决方案设计方面的经验。曾参与多家大型国有商业银行的核心业务数据库系统生产环境的设计与运维。近 10 年来重点关注业务连续性解决方案设计与产品开发,参与设计并实施了“两地三中心”等多个重大项目,拥有 3 项相关专利。数据库集群是由多个数据库服务器组成的集合,这些服务器协同工作以提供高性能和可扩展性等数据库解决方案。原创 2023-07-14 09:47:29 · 251 阅读 · 0 评论 -
SUFS: 存储资源使用量预测服务
1. 存储资源使用量预测的意义在典型的 IT 服务或应用中,计算、网络、存储是支撑上层应用服务的三个基础,保证存储系统的可用性对服务和应用的稳定运行有重要意义。存储系统可用性的一个重要方面就是有足够的容量,可以满足写入、存储的需求,所以合理规划存储系统的空间资源就非常重要。为了规划存储系统资源,就需要对资源的使用量进行预测,在预测的基础上进行资源的规划、扩缩容等操作。由于目前很多存储是以云服务的形式提供的,对存储资源进行预测对于服务的提供商和使用者都很重要。原创 2023-07-10 17:53:06 · 454 阅读 · 0 评论 -
SUFS: 存储资源使用量预测服务
论文提出了一个增强的 LSTM 神经网络和自适应的模型集成算法,为不同的存储系统提供统一的存储资源使用量预测服务,该方法的准确率在多个真实生产环境的存储系统中得到了验证。用户在不同存储系统中的存储资源使用策略千差万别,常见的时间序列预测模型难以对资源使用量做出准确预测。存储系统是 IT 基础架构中不可或缺的组成部分,准确预测存储资源使用是提供稳定可靠的存储服务的有效关键手段。2. 若预测偏低,存储资源短缺会面临数据无法写入甚至丢失的风险,导致服务不可用。1. 若预测偏高,冗余的存储资源会造成不必要的开销;原创 2023-06-21 09:37:04 · 413 阅读 · 0 评论 -
TBB 开源库及并发 Hashmap 的使用
容器模块也包含 concurrent_hash_map,它是一种支持多线程并发使用的 Hashmap 容器,有着较好的并发操作性能。该容器保存具有唯一 Key 的键值对,并且支持并发插入、查找、擦除等功能。同时,该容器支持迭代器功能。使用并发 Hashmap 容器,可以在保证并发操作性能的同时,维护并发操作数据的安全。原创 2023-06-19 10:25:12 · 1225 阅读 · 0 评论 -
数据库的 Schema 变更实现
元数据变更是数据库管理中不可避免的工作项,减少元数据变更次数可降低数据库维护和管理成本,减轻对业务的影响。在数据库设计和开发阶段,精细设计元数据结构可有效避免设计不合理或不充分的情况;为降低维护难度和变更次数,元数据结构设计应当秉承简单、实用、符合业务需求的原则,避免过度设计;在设计元数据结构时,合并使用约束,包括主键、外键、唯一性约束、非空约束等可以保证数据的完整性和一致性。原创 2023-06-13 12:20:43 · 868 阅读 · 0 评论 -
深入学习 Linux 操作系统的存储 IO 堆栈
当使用 read() 和 write() 系统调用向内核提交读写 I/O 请求操作时需要经历的步骤:1)首先,请求经过虚拟文件系统,虚拟文件系统提供了统一的文件和文件系统的相关接口,屏蔽了不同文件系统的差异和操作细节;2)其次,适配当前磁盘分区的文件系统,常见文件系统有 ext2/3/4、FATfs、sysfs、debugfs 等;3)再次,内核将 I/O 请求交给 I/O 调度层进行排序和合并处理。经过 I/O 调度层加工处理后,将 I/O 请求发送给块设备驱动进行最终的 I/O 操作;原创 2023-06-13 11:55:40 · 1465 阅读 · 0 评论 -
libpq SDK 发送 SQL 和解析结果
用户可以通过 PQresultStatus () 获取到结果状态,如果状态为 PGRES_COMMAND_OK,说明已经成功执行了命令,但是没有返回任何的值;如果获取到的结果对象状态良好,用户即可使用 PQntuples 获取列数,PQnfields 获取行数, PQfname 获取列名,PQgetvalue 获取某一行某一列的结果。PQExecParam 与 PQExec 很像,但提供了额外的功能:参数值可以与命令字符串本身分开指定,查询的结果也可以被指定为文本或者二进制。原创 2023-06-12 18:50:19 · 400 阅读 · 0 评论 -
执行器-Query 执行详解
它根据逻辑计划中不同执行算子的节点生成,在构建物理计划时,会采用分阶段 (stage) 的方式添加相应的 processor,实际上保存在 PhysicalPlan 结构体中的是处理器链路。1. 向执行引擎派发查询,通过识别 stmtBuff 的协议类型并进行分类,再对不同类型,调用不同的执行方法,如图 1 中所示,对于数据库执行的语句,一般都是 execStmt 类型;在 joinNode 中,算子主要是存储连接的结果,因此其下面的子算子才是真正执行的算子。原创 2023-06-12 16:16:50 · 1401 阅读 · 0 评论 -
一文走进 SQL 编译-语义解析
这些子任务实现几乎是纯粹的函数,唯一的缺陷是, TypeCheck 将 SQL 占位符($1、$2 等)的类型以一种对顺序敏感的方式,输出到通过递归传递的语义环境对象上。:此处的 normalize 有点不太准确,因为他并没有进行标准的 normalize,这里只是将除变量名以外的东西都放到比较符号的右侧,从而达到简化的目的。其代码流程介于 parser 和 memo 构建之间,将 parser 输出的 AST 中的对象进行语义解析,语义解析的输出作为 memo 构建的输入。原创 2023-06-12 15:27:48 · 1268 阅读 · 0 评论 -
数据库中的 Schema 变更实现
这样的做法虽然实现简单,无需考虑事务并发带来的影响;AI、DB 技术融合探索实践感兴趣的伙伴千万不要错过本期直播,扫描下方二维码,B站直播不迷路,4月11日(周二)19:30,我们不见不散↓ ↓ ↓。对 Schema 变更方案感兴趣的伙伴千万不要错过本期直播,扫描下方二维码,B 站直播不迷路,5月9日(周二)19:30,我们不见不散↓ ↓ ↓。该方法保证了数据在 Schema 变更过程中的可用性和一致性,并最大程度上减小了对系统性能的影响,在变更完成后依然保证数据的完整性。1. 背景及需求介绍。原创 2023-05-06 14:27:13 · 718 阅读 · 1 评论 -
深入浅出带你走进 RocksDB
AllocateAligned 从内存块的低地址开始分配,Allocate 从高地址开始分配。从内存管理架构图可以看出,RocksDB 维护了 CoreLocal 内存数组,每个线程从所在 CPU 对应的本地 Shard 上分配内存,若不足再去主内存 Arena 进行分配。Arena 负责实现 RocksDB 的内存分配,我们从中可以看到其针对不同大小的内存分配请求,采取不同的分配策略,从而减少内存碎片。如图所示,RocksDB 的内存管理器是支持并发的,接下来让我们一起从源码入手,看看具体如何实现的。原创 2023-04-12 17:17:01 · 775 阅读 · 0 评论 -
一种元数据同步的方法
基于复制的技术基础,回放模块启动后,触发和执行回放模块,在源端执行的元数据操作 SQL 语句,同步到目标端进行回放,从而达到元数据的同步。通过对复制过来的源端的回放表的查询,通过筛选查出回放表的未回放语句,查找对应 SQL 记录的回放状态,从而拿到需要回放的待回放语句。从回放表拿到的语句解析为待执行的字符串语句,这些语句就是待同步在目标端执行的语句,将其传入回放模块的下一阶段,执行回放语句。将获取的待回放语句传入执行回访模块,利用执行模块对获取到的语句进行执行,完成元数据在目标端的同步执行。原创 2023-03-29 14:12:07 · 439 阅读 · 0 评论 -
KaiwuDB 时序引擎数据存储内存对齐技术解读
本文对 KaiwuDB 时序引擎数据存储内存对齐技术进行解读,文章针对理论部分和应用部分对读者进行介绍。原创 2023-03-10 16:16:22 · 479 阅读 · 0 评论 -
数据库自治平台 KAP 监控告警架构及实例演示
KaiwuDB 高级研发工程师边旭霞老师,为大家介绍《数据库自治平台 KAP 监控告警架构及实例演示》原创 2023-03-02 09:39:20 · 256 阅读 · 0 评论 -
SQL 层功能改进 - lookupJoin 的优化
lookupJoin 的优化原创 2023-02-28 14:18:45 · 839 阅读 · 0 评论 -
学术贴 | FPGA 加速图数据库查询执行
本篇博客主要讲解发布于 Microprocessors and Microsystems 的文章《Semi-static Operator Graphs for Accelerated Query Execution on FPGAs》,介绍它所提出的算法与试验结果,并结合实际情况给出一些思考。原创 2023-02-22 10:39:22 · 475 阅读 · 0 评论 -
优化器-RBO 的规则转化
RBO(Rule-Based Optimization,基于规则的优化器)有着一套严格的使用规则,按照 RBO 去写 SQL 语句,无论数据表中的内容怎样,也不会影响到你的“执行计划”。换言之 RBO 对数据不“敏感”,它根据指定的优先顺序规则,对指定的表进行执行计划的选择。比如在规则中,索引的优先级大于全表扫描。RBO 是根据可用的访问路径以及访问路径等级来选择执行计划,在 RBO 中,SQL 的写法往往会影响执行计划。原创 2023-02-01 17:59:48 · 1530 阅读 · 0 评论 -
一文走进多核架构下的内存模
CPU 发展早期阶段,性能的提升主要来自于主频的提升和架构的优化,当这条优化途径出现瓶颈后,多核 CPU 开始流行起来。多核心同时执行任务极大地提高了系统整体性能,但也对硬件架构和软件编写提出了更大的挑战原创 2023-01-31 17:55:15 · 455 阅读 · 0 评论 -
SQL 编译与执行 -parser
以上就是 KaiwuDB 的 SQL parser 词法解析和语法解析部分,主要是语法解析部分使用 Goyacc 工具将 sql.y 中的规则生成对应的语法分析器,将词法分析器生成的 token-stream 解析成制定好的树结构。原创 2023-01-03 15:29:23 · 1992 阅读 · 0 评论 -
时序引擎架构和实例演练
它能让大量设备、数据采集器每天产生的高达 TB 甚至 PB 级的数据得到高效实时的处理,对业务的运行状态进行实时的监测、预警,从大数据中挖掘出商业价值。随着我国工业和信息化的发展,系统所需处理的数据量也越来越大,传统的数据库已经无法满足时序数据的高速写入和高并发的查询分析需求。KaiwuDB 时序引擎使用“就地运算”等技术,具备高速、易用及易运维等特性,满足海量、高并发的时序数据写入及快速查询和复杂查询的需求。也支持在表对象的查询语句中使用用户定义的函数,解决用户在生产中遇到的已有函数或功能无法解决的问题。原创 2022-12-29 09:25:12 · 690 阅读 · 0 评论 -
优化器核心技术—Join Reorder
采用文中的 Dpsube 算法,如果存在子集对 {S1,S2} 对于某个 Join Edge,能够满足该 Edge 下的冲突规则,生成的 Join 为合法 Join,Dpsube 按照这种方式枚举所有的 Join 顺序,在后续的 CBO 流程中,选出 cost 最低的一个。在该流程中,会有一个 Join-order-limit 限制,默认为 4,超过 4 个 Table 部分的 Join 关系不会进行 Join order 的调整,被当作一个整体的关系表达式参与 Join Reorder。原创 2022-12-26 09:30:57 · 737 阅读 · 0 评论 -
时序引擎架构和实例演练
时序数据量巨大,日均数据量即可高达上亿条且会产生频繁的写入操作,如何支持高频写入是一大重点难题。随着我国工业信息化的发展,系统所需处理的数据量日益增加,传统数据库已经无法满足时序数据高速写入、高并发查询分析等需求。同时,基于传统关系型数据库发展而来的时序引擎,由于可能存在性能不佳、运维管理复杂、SQL 支持不足等问题,已无法满足我国工业信息化的需求。对时序引擎架构感兴趣的伙伴千万不要错过本期直播,扫描下方二维码,B 站直播不迷路,12月27日晚 7:30,我们不见不散↓ ↓ ↓。原创 2022-12-22 17:50:29 · 213 阅读 · 0 评论 -
技术贴 | Rocksdb 中 Memtable 源码解析
Memtable 是 Rocksdb 在内存中保存数据的一种数据结构,一个 Memtable 的容量是固定的,在 Memtable 写满后,会转换为 Immutable Memtable,Immutable Memtable 中的数据会 Flush 到 SST File 中。Memtable 和 Immutable Memtable 的唯一区别是 Memtable 可读可写,而 Immutable Memtable 是只读且不允许写入。原创 2022-11-16 15:18:44 · 1258 阅读 · 0 评论