![](https://img-blog.csdnimg.cn/59641ece16b44f8982483e3a8fbeec2d.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
KaiwuDB 技术博客
文章平均质量分 84
分享数据库技术干货
KaiwuDB 数据库
KaiwuDB 是浪潮控股的数据库企业,拥有分布式多模数据库和数据服务平台2大核心产品,面向工业物联网、数字能源、车联网、智慧产业等各大行业领域,提供稳定安全、高性能、易运维的创新数据软件与服务方案。
展开
-
数据库物理计划执行指南
数据库物理计划执行是解决数据库性能问题的重要手段之一,通过对数据库物理结构进行合理规划和优化,可显著提高数据库的查询速度、降低存储空间的占用率,从而提高数据库整体性能。原创 2024-06-18 11:49:52 · 728 阅读 · 0 评论 -
大咖专栏 | AI 时代下,我们可以拥有怎样的数据库?
KaiwuDB 引入原生 AI,期望借此帮助用户减负增效。本期主要和大家重点分享 KaiwuDB 的 AI 应用思路和具体实践原创 2024-06-19 10:37:47 · 894 阅读 · 0 评论 -
Query 物理计划构建指南
一文了解物理计划结构核心概念及详细构建流程原创 2024-05-27 21:03:00 · 719 阅读 · 0 评论 -
KaiwuDB 事务中的 Raft 协议
Raft 协议是一种经典的分布式一致性算法,KaiwuDB 事务即是通过使用该协议来实现数据的一致性,本文主要介绍选举和日志提交两大主要过程.原创 2024-06-27 09:53:18 · 913 阅读 · 0 评论 -
KaiwuDB 解析器之语义解析
解析器是数据库系统的重要组成部分之一,主要的功能是将客户端输入的 SQL 语句分解为语法单元,然后将这些语法单元转化成数据库内部可识别的数据结构,最终生成数据库可以执行的计划。从客户端输入一个 SQL 指令(文本格式),数据库执行器无法直接执行该文本指令,会先通过词法解析和语法解析将文本指令生成数据库能识别的数据结构 AST;语义解析对 AST 进行有效性校验,生成优化器需要的 Memo 数据结构;通过优化器(包括 RBO、CBO)优化后选出一个最优的 Memo 结构;原创 2024-05-06 15:28:43 · 866 阅读 · 1 评论 -
一文解读 SQL 生成工具
SQL 生成工具可用于测试 Parser 与其他数据库产品的兼容性,通过解析 YACC 语法文件中的产生式,生成对应的 SQL 语句,再使用数据库执行该 SQL,根据结果判断语句是否与其他数据库语法兼容。原创 2024-04-28 09:42:28 · 702 阅读 · 1 评论 -
KaiwuDB 乱序数据处理功能解读
在处理乱序数据时,指定时间窗口内(比如 10 分钟或 1 小时)的乱序数据会根据去重策略处理之后存储下来,时间窗口之外的乱序数据会被丢弃。下图是乱序数据写入的基本流程:时间窗口是指表最新数据时间戳的时间点再前置的一段时间,在表没有新数据的写入时,它的时间窗口不会变。配置文件中存在参数:ts_st_iot_disorder_interval,用以支持乱序数据写入的时间窗口,单位:秒。此配置项的值不能超过分区时间间隔数值。原创 2024-04-08 09:45:10 · 288 阅读 · 0 评论 -
数据库系统访问控制面面观
信息系统安全是保护信息系统中各类型数据资源免受未经授权的访问(包括查看、新增、修改、删除),确保数据完整性、保密性和可用性。在当下万物互联的发展背景下,信息安全尤其重要。访问控制作为信息安全的重要组成部分,既可对用户访问信息系统进行身份鉴别,又可细粒度控制用户对信息的访问权限。数据库作为信息系统的基础软件,承担着数据存储的责任,需要保证信息的完整性、保密性和可用性,就需要进行严格的访问控制。以下为部分内容节选,点击视频查看完整版内容。原创 2024-03-22 11:48:34 · 995 阅读 · 1 评论 -
基于 Ractor 模型优化事务复制回放性能
当扫描线程发现可回放的事物后,会将事物 ID 加入 txnList 执行 enqueu 操作,加入事物 ID 后,扫描线程会执行 notify 操作,唤醒正在睡眠的回放线程进行事务回放操作,示意图参考如下图 2。过去发现的可回放事务都会被加入到 txnList 中,现在发现的可回放事务正在由回放线程进行回放,将来发现的可回放事务是由扫描线程扫描 UUID 进行发现的。当可回放事务全部回放结束后,认为回放结束。可回放事务分为 3 类,过去发现的可回放事务/现在发现的可回放事务/将来发现的可回放事务。原创 2024-03-01 10:37:37 · 330 阅读 · 0 评论 -
数据集成时表模型同步方法解析
数据治理的第一步,也是数据中台的一个基础功能 — 即将来自各类业务数据源的数据,同步集成至中台 ODS 层。业务数据源多种多样,单单可能涉及到的主流关系型数据库就有近十种。功能更加全面的数据中台通常还具有对接非关系型数据库、消息队列、日志源、文件源等功能。数据湖通常是 OLAP 型的数据库,虽然中台系统很少会采用多种数据仓库技术,但在技术选型时,可选项也有很多。数据集成可实现多种异构数据库间的数据同步,想要提升数据中台的易用高效性,自动表模型同步则显得至关重要。原创 2024-01-17 09:53:45 · 936 阅读 · 0 评论 -
深度解析 PostgreSQL Protocol v3.0(一)
如果服务器不支持客户端请求的次要版本(例如,客户端请求版本为 3.1,但服务器仅支持 3.0,不支持 3.1 版本,此时就会发生这种情况),则服务器可以拒绝连接,或者可以使用包含其支持的最高次要协议版本的 NegotiateProtocolVersion 消息进行响应。需要注意的是,服务器可以返回的字符串长度没有预定义长度的限制,因此客户端比较好的编码策略是使用可扩展缓冲区,以便可以接收适合内存大小的内容。需要注意的是,由于历史原因,客户端发送的第一条消息(启动消息)没有消息类型的 1 个字节。原创 2023-08-30 10:38:34 · 702 阅读 · 0 评论 -
一文走进时序数据库性能测试工具 TSBS
加载数据并生成查询后,只需为正在测试的数据库使用相应的 tsbs_run_queries_ 二进制文件,通过更改数据库以及数据库对应自定义目录下生成的查询语句类型来实现各类型的查询性能测试。–timestamp-end:数据生成后一秒的结束时间,例如:对于 2016-01-01T00:10:00Z 使用 2016-01-01T00:10:01Z;因此,对于时序数据库的性能进行测试也就尤为重要,TSBS 作为一款对时序数据库批量加载性能和查询执行性能的开源测试工具,得到了越来越多的应用。原创 2023-08-09 14:20:41 · 698 阅读 · 0 评论 -
构建高效物理计划:从逻辑查询到算子实现
本文主要介绍内容一条查询语句如何实现由逻辑计划生成物理计划。查询语句要执行的操作、涉及的表信息等存放于逻辑计划的 PlanNode 中,物理计划的构建就是通过解析逻辑计划的 PlanNode,将对应的 PlanNode 转换为对应算子(Processor),算子之间再通过 Stream 连接。Physical Plan:物理计划,将逻辑查询计划的每一个操作符选择实现算法并选择这些操作符的执行顺序得到的计划。原创 2023-08-01 11:07:11 · 172 阅读 · 0 评论 -
SQL 执行计划管理(SPM)
optimizer_use_sql_plan_baselines - 控制 SQL 计划基准的使用,启用后,优化器在 SQL 计划基准中寻找正在编译的 SQL 语句的计划,如果找到,优化器会计算各个计划的性能开销,然后选择开销最低的计划。** 注意这里每次重新计算 cost 的代价不大,因为执行计划是已知的,优化器不必遍历所有的可能,只需根据算法计算出已知计划的 cost 便可。SQL 计划管理由三部分组成:SQL 计划基准捕获、SQL计划基准选择、SQL 计划基准发展。批量加载执行计划,包含四种技术。原创 2023-07-31 15:33:52 · 493 阅读 · 0 评论 -
如何实现高效的动态鉴权
Spring Security 是 Spring 框架内高度可定制化的安全框架,也是 Spring 应用的标准安全框架,提供了包括认证和鉴权在内的两大部分。其高度集成于 Spring 框架,无需引入第三方扩展模块,可以避 免大量的数据接口适配问题,大幅度减少开发成本和时间。如下图所示,Spring Security 的认证鉴权过程实际上位于请求过滤器和拦截器中,在请求通过了所有的过滤器和拦截器之后才会进行 API 适配。换言之,定制 Spring Security 就是修改过滤链中的各种过滤器和拦截器。原创 2023-07-26 16:46:30 · 156 阅读 · 0 评论 -
数据库集群方案详解
数据库集群是由多个数据库服务器组成的集合,这些服务器协同工作以提供高性能、高可用性和可扩展性的数据库解决方案。它们共享数据和工作负载,并通过协同处理查询和事务来提供一致性和可靠性。1. 数据库集群技术提供能力多个数据库服务器共享数据和工作负载高可用性和容错性数据复制和同步负载均衡和性能扩展统一的管理和监控2. 数据库集群优势高可用性和容错性负载均衡和性能扩展数据扩展和容量管理大数据处理和分析3. 数据库集群分类(1)按架构类型分类主从复制对等复制分片(sharding)原创 2023-07-25 18:26:13 · 472 阅读 · 0 评论 -
数据库集群方案简介
本期大咖KaiwuDB 资深解决方案专家周幸骏周老师毕业于复旦大学数学系,在金融科技行业服务超过 20 年,有丰富的客户项目实施、解决方案设计方面的经验。曾参与多家大型国有商业银行的核心业务数据库系统生产环境的设计与运维。近 10 年来重点关注业务连续性解决方案设计与产品开发,参与设计并实施了“两地三中心”等多个重大项目,拥有 3 项相关专利。数据库集群是由多个数据库服务器组成的集合,这些服务器协同工作以提供高性能和可扩展性等数据库解决方案。原创 2023-07-14 09:47:29 · 216 阅读 · 0 评论 -
SUFS: 存储资源使用量预测服务
1. 存储资源使用量预测的意义在典型的 IT 服务或应用中,计算、网络、存储是支撑上层应用服务的三个基础,保证存储系统的可用性对服务和应用的稳定运行有重要意义。存储系统可用性的一个重要方面就是有足够的容量,可以满足写入、存储的需求,所以合理规划存储系统的空间资源就非常重要。为了规划存储系统资源,就需要对资源的使用量进行预测,在预测的基础上进行资源的规划、扩缩容等操作。由于目前很多存储是以云服务的形式提供的,对存储资源进行预测对于服务的提供商和使用者都很重要。原创 2023-07-10 17:53:06 · 336 阅读 · 0 评论 -
深入了解 KaiwuDB 负载行为数据采集
通过分析 SQL 语句的的访问方式、执行时间,并对比其预估计划和实际执行的差距,考虑该语句在当前应用负载中的权重,将存在潜在性能问题的重要查询标记为不健康 SQL 语句,以便未来对这些查询进行重新优化;除此之外,KaiwuDB 数据库内部开发实现基于负载业务的行为数据采集功能,为 KAP 提供更加全面的数据支持,为用户提供更为多元化的信息,方便用户监控 KaiwuDB 内部的业务负载处理情况,指导用户进行 SQL 调优等。行为数据采集的查询 SQL 类型语句在总业务中的占比,提供应用负载分类;原创 2023-06-29 10:21:31 · 544 阅读 · 0 评论 -
Go 语言中 Context 的作用和使用方法详解
父节点过期时,所有的子孙节点必须同时关闭。函数都接收一个 Context 类型的 parent,并返回一个 Context 类型的值,这样就层层创建除不同的 Context,子节点是从复制父节点得到,并且根据接收参数设定子节点的一些状态值,接着就可以将子节点传递给下层的 goroutine 了。上图是 Sink 类数据目标的伪代码,producers 是用来写文件的写入器,in 是用来接受上一个数据流的通道,ctx 是 Go 的上下文,producers 写文件数据也是一个单独的协程。原创 2023-06-27 09:39:44 · 910 阅读 · 0 评论 -
SUFS: 存储资源使用量预测服务
论文提出了一个增强的 LSTM 神经网络和自适应的模型集成算法,为不同的存储系统提供统一的存储资源使用量预测服务,该方法的准确率在多个真实生产环境的存储系统中得到了验证。用户在不同存储系统中的存储资源使用策略千差万别,常见的时间序列预测模型难以对资源使用量做出准确预测。存储系统是 IT 基础架构中不可或缺的组成部分,准确预测存储资源使用是提供稳定可靠的存储服务的有效关键手段。2. 若预测偏低,存储资源短缺会面临数据无法写入甚至丢失的风险,导致服务不可用。1. 若预测偏高,冗余的存储资源会造成不必要的开销;原创 2023-06-21 09:37:04 · 354 阅读 · 0 评论 -
TBB 开源库及并发 Hashmap 的使用
容器模块也包含 concurrent_hash_map,它是一种支持多线程并发使用的 Hashmap 容器,有着较好的并发操作性能。该容器保存具有唯一 Key 的键值对,并且支持并发插入、查找、擦除等功能。同时,该容器支持迭代器功能。使用并发 Hashmap 容器,可以在保证并发操作性能的同时,维护并发操作数据的安全。原创 2023-06-19 10:25:12 · 1030 阅读 · 0 评论 -
数据库的 Schema 变更实现
元数据变更是数据库管理中不可避免的工作项,减少元数据变更次数可降低数据库维护和管理成本,减轻对业务的影响。在数据库设计和开发阶段,精细设计元数据结构可有效避免设计不合理或不充分的情况;为降低维护难度和变更次数,元数据结构设计应当秉承简单、实用、符合业务需求的原则,避免过度设计;在设计元数据结构时,合并使用约束,包括主键、外键、唯一性约束、非空约束等可以保证数据的完整性和一致性。原创 2023-06-13 12:20:43 · 732 阅读 · 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 · 1341 阅读 · 0 评论 -
深度解读 KaiwuDB 的排序操作
如果需要排序的数据超出了阈值(WorkMemBytes,默认 64MB),会调用 spillToDisk 方法将 MemRowContainer 中的数据写入 DiskRowContainer 中,后者将 OrderBy 列的信息作为 Key 值写入 KV 存储引擎。将 AST 转换成一个树状结构的 Plan,称之为逻辑查询计划。逻辑计划节点和物理计划节点并不是一一对应关系,但是这个例子中,逻辑计划中的 Scan 和 Sort 分别对应物理计划中的 TableReader 算子和 Sorter 算子。原创 2023-06-13 10:13:54 · 784 阅读 · 0 评论 -
libpq SDK 发送 SQL 和解析结果
用户可以通过 PQresultStatus () 获取到结果状态,如果状态为 PGRES_COMMAND_OK,说明已经成功执行了命令,但是没有返回任何的值;如果获取到的结果对象状态良好,用户即可使用 PQntuples 获取列数,PQnfields 获取行数, PQfname 获取列名,PQgetvalue 获取某一行某一列的结果。PQExecParam 与 PQExec 很像,但提供了额外的功能:参数值可以与命令字符串本身分开指定,查询的结果也可以被指定为文本或者二进制。原创 2023-06-12 18:50:19 · 345 阅读 · 0 评论 -
执行器-Query 执行详解
它根据逻辑计划中不同执行算子的节点生成,在构建物理计划时,会采用分阶段 (stage) 的方式添加相应的 processor,实际上保存在 PhysicalPlan 结构体中的是处理器链路。1. 向执行引擎派发查询,通过识别 stmtBuff 的协议类型并进行分类,再对不同类型,调用不同的执行方法,如图 1 中所示,对于数据库执行的语句,一般都是 execStmt 类型;在 joinNode 中,算子主要是存储连接的结果,因此其下面的子算子才是真正执行的算子。原创 2023-06-12 16:16:50 · 1334 阅读 · 0 评论 -
一文走进 SQL 编译-语义解析
这些子任务实现几乎是纯粹的函数,唯一的缺陷是, TypeCheck 将 SQL 占位符($1、$2 等)的类型以一种对顺序敏感的方式,输出到通过递归传递的语义环境对象上。:此处的 normalize 有点不太准确,因为他并没有进行标准的 normalize,这里只是将除变量名以外的东西都放到比较符号的右侧,从而达到简化的目的。其代码流程介于 parser 和 memo 构建之间,将 parser 输出的 AST 中的对象进行语义解析,语义解析的输出作为 memo 构建的输入。原创 2023-06-12 15:27:48 · 1130 阅读 · 0 评论 -
数据库中的 Schema 变更实现
这样的做法虽然实现简单,无需考虑事务并发带来的影响;AI、DB 技术融合探索实践感兴趣的伙伴千万不要错过本期直播,扫描下方二维码,B站直播不迷路,4月11日(周二)19:30,我们不见不散↓ ↓ ↓。对 Schema 变更方案感兴趣的伙伴千万不要错过本期直播,扫描下方二维码,B 站直播不迷路,5月9日(周二)19:30,我们不见不散↓ ↓ ↓。该方法保证了数据在 Schema 变更过程中的可用性和一致性,并最大程度上减小了对系统性能的影响,在变更完成后依然保证数据的完整性。1. 背景及需求介绍。原创 2023-05-06 14:27:13 · 641 阅读 · 1 评论 -
深入浅出带你走进 RocksDB
AllocateAligned 从内存块的低地址开始分配,Allocate 从高地址开始分配。从内存管理架构图可以看出,RocksDB 维护了 CoreLocal 内存数组,每个线程从所在 CPU 对应的本地 Shard 上分配内存,若不足再去主内存 Arena 进行分配。Arena 负责实现 RocksDB 的内存分配,我们从中可以看到其针对不同大小的内存分配请求,采取不同的分配策略,从而减少内存碎片。如图所示,RocksDB 的内存管理器是支持并发的,接下来让我们一起从源码入手,看看具体如何实现的。原创 2023-04-12 17:17:01 · 662 阅读 · 0 评论 -
一种元数据同步的方法
基于复制的技术基础,回放模块启动后,触发和执行回放模块,在源端执行的元数据操作 SQL 语句,同步到目标端进行回放,从而达到元数据的同步。通过对复制过来的源端的回放表的查询,通过筛选查出回放表的未回放语句,查找对应 SQL 记录的回放状态,从而拿到需要回放的待回放语句。从回放表拿到的语句解析为待执行的字符串语句,这些语句就是待同步在目标端执行的语句,将其传入回放模块的下一阶段,执行回放语句。将获取的待回放语句传入执行回访模块,利用执行模块对获取到的语句进行执行,完成元数据在目标端的同步执行。原创 2023-03-29 14:12:07 · 380 阅读 · 0 评论 -
时序数据库的流计算支持
本文介绍了时序数据库的流计算支持,文章结构包括介绍时序数据及其特点、时序数据库基本架构、流计算介绍和时序数据库对流计算的支持原创 2023-03-16 11:00:31 · 316 阅读 · 0 评论 -
KaiwuDB 时序引擎数据存储内存对齐技术解读
本文对 KaiwuDB 时序引擎数据存储内存对齐技术进行解读,文章针对理论部分和应用部分对读者进行介绍。原创 2023-03-10 16:16:22 · 418 阅读 · 0 评论 -
数据库自治平台 KAP 监控告警架构及实例演示
KaiwuDB 高级研发工程师边旭霞老师,为大家介绍《数据库自治平台 KAP 监控告警架构及实例演示》原创 2023-03-02 09:39:20 · 199 阅读 · 0 评论 -
Operator-sdk 在 KaiwuDB 容器云中的使用
Operator-sdk 在 KaiwuDB 容器云中的使用原创 2023-03-01 09:42:39 · 398 阅读 · 0 评论 -
SQL 层功能改进 - lookupJoin 的优化
lookupJoin 的优化原创 2023-02-28 14:18:45 · 709 阅读 · 0 评论 -
学术贴 | FPGA 加速图数据库查询执行
本篇博客主要讲解发布于 Microprocessors and Microsystems 的文章《Semi-static Operator Graphs for Accelerated Query Execution on FPGAs》,介绍它所提出的算法与试验结果,并结合实际情况给出一些思考。原创 2023-02-22 10:39:22 · 404 阅读 · 0 评论 -
优化器-RBO 的规则转化
RBO(Rule-Based Optimization,基于规则的优化器)有着一套严格的使用规则,按照 RBO 去写 SQL 语句,无论数据表中的内容怎样,也不会影响到你的“执行计划”。换言之 RBO 对数据不“敏感”,它根据指定的优先顺序规则,对指定的表进行执行计划的选择。比如在规则中,索引的优先级大于全表扫描。RBO 是根据可用的访问路径以及访问路径等级来选择执行计划,在 RBO 中,SQL 的写法往往会影响执行计划。原创 2023-02-01 17:59:48 · 1412 阅读 · 0 评论 -
一文走进多核架构下的内存模
CPU 发展早期阶段,性能的提升主要来自于主频的提升和架构的优化,当这条优化途径出现瓶颈后,多核 CPU 开始流行起来。多核心同时执行任务极大地提高了系统整体性能,但也对硬件架构和软件编写提出了更大的挑战原创 2023-01-31 17:55:15 · 360 阅读 · 0 评论 -
告警与恢复告警原理及实现
通过告警规则及恢复告警规则,可以减少人力监控,也是自动化运维的一种手段。对于数字能源平台来说,一个采集点出现的问题,首先平台要第一时间知晓而不是等待用户反馈。通过告警规则与恢复告警规则,也大幅减少了运维人员去查看日志的时间。原创 2023-01-19 17:12:16 · 2309 阅读 · 0 评论