- 博客(30)
- 收藏
- 关注
原创 OpenGauss - gdb 内核调试
GDB 是由 GUN 软件系统社区提供的调试工具,同 GCC 配套组成了一套完整的开发环境。GDB调试器是用于调试C/C++的纯命令行的调试工具,有些晦涩难懂,但必须要搞清楚。
2024-10-29 11:45:15
819
1
原创 OpenGauss - 函数实现原理
其中 INTERNAL、SQL 类的函数,因为都可以通过 builtin 的方式整,因此也都常被统称为 builtin 函数。一个普通函数调用流程大致为:1、解析 SQL 语句,获取到函数名以及参数值与类型等信息。2、根据以上信息,在 pg_proc 中检索到这个函数的元数据,元数据中包含默认值、实现语言、底层函数、估算代价等所有信息。3、根据其实现语言,调用其具体底层接口模块。有一种特殊的函数——聚集函数,它是在普通函数的架构基础上做的功能变更与扩展,其架构和添加流程与普通函数有些差异。
2024-10-10 11:58:36
875
原创 OpenGauss -产品概念
OpenGauss 是一款支持SQL2003标准语法,支持主备部署的高可用关系型集中式数据库系统。说明: OpenGauss是单机系统,支持主备部署。由于集中式的特色,因此数据库系统中业务数据存储在单个物理节点上,数据访问任务被推送到服务节点执行,通过服务器的高并发模式,实现对数据处理的快速响应。同时通过日志复制可以把数据复制到备机,提供数据的高可靠和读扩展。
2024-10-09 20:25:09
1030
原创 系统架构设计师-2.计算机组成与结构-计算机硬件基础
指令的组成:一条指令由操作码和地址码两部分组成,操作码决定要完成的操作,地址码指参加运算的数据及其所在的单元地址。在计算机中,操作要求和操作数地址都由二进制数码表示,分别称作操作码和地址码,整条指令以二进制编码的形式存放在存储器中。
2024-09-23 11:42:29
1826
原创 软考高级-系统架构设计师-备考
备考是一场马拉松,而不是短跑。希望这个笔记能帮助到正在备考的朋友们,和我一样,在未来的时间里,忙里偷闲,为取得高级系统架构设计师认证而努力!让我们一起加油!
2024-09-22 21:50:25
1012
1
原创 【Netty2】 Netty ByteBuf 扩缩容过程分析
【Netty2】 Netty ByteBuf 扩缩容过程分析ByteBuf 的组成ByteBuf 是一个抽象类,继承自Object,实现了ReferenceCounted,Comparable。ReferenceCounted是用于ByteBuf的回收工作,从其名称就能看出,是引用计数法,refCnt是引用数值;其提供了方法retain(),计数+1;release()方法,计数减1,当最终引用计数是0时,资源将被释放。Comparable主要用作比较。初始化 ByteBuf 并进行读写源码 D
2023-06-30 20:30:01
221
原创 Netty 1. Netty ByteBuf是什么
Netty 提供了CompositeByteBuf类, 它可以将多个ByteBuf合并为一个逻辑上的ByteBuf, 避免了各个ByteBuf之间的拷贝。通过wrap操作, 我们可以将byte[]数组、ByteBuf、ByteBuffer等包装成一个 Netty的ByteBuf对象, 进而避免了拷贝操作。ByteBuf支持slice操作, 因此可以将ByteBuf分解为多个共享同一个存储区域的 ByteBuf, 避免了内存的拷贝。
2023-06-28 21:17:25
159
原创 [fntdbs2013] The Design and Implementation of Modern Column-Oriented Database Systems
● seek times 寻道次数● tranfer time 传输时间把这个物化的时机尽量的拖延到整个查询生命周期的后期。把从各个列中获取的数据重新组装为行的过程称之为 tuple construction,late materialization 的目的就是尽可能推迟 tuple construction 的时机。延迟物化意味着在查询执行的前一段时间内,查询执行的模型不是关系代数,而是基于 Column 的。
2023-06-12 21:13:53
138
原创 Paper Translation : Modern Column-Oriented Database Systems - Late Materialization & Join
首先解释一下什么是物化:为了能够把底层存储格式(面向Column的), 跟用户查询表达的意思(Row)对应上,在一个查询的生命周期的某个时间点,一定要把数据转换成Row的形式,这在Column-Store里面被称为物化(Materization)。图1数据压缩,确定一列数据的规律* 查询时可以时读的数据量更少,在IO密集型计算中获得更多的性能优势* 相同类型压缩效率更高* 可以针对不同类型使用不同的压缩算法。
2023-05-16 17:28:30
217
原创 记一次内存溢出问题的排查过程
最近3个月,数据库内核做了非常多的新功能特性的开发,目前在测试收尾阶段。在进行多表多列(表数量1000+, 总计列数量100W+)场景的性能测试时,发现存储引擎节点在启动时出现启动加载过程缓慢和内存溢出导致启动失败的现象。此处记录的为内存溢出的排查过程。
2023-05-08 18:26:52
316
原创 What Does Tuple (Database) Mean?
在大数据领域的各种文献和Paper中,经常会提到tuple这个词。通过这篇文章我们来理解下。
2023-05-08 16:49:07
157
原创 Paper Translation : Modern Column-Oriented Database Systems - Compression
The Design and Implementation of ModernColumn-Oriented Database Systems.In this article, we survey recent research on column-oriented database systems, or column-stores, where each attribute of a table is stored in a separate file or region on storage. S
2023-04-24 21:14:30
143
原创 LevelDB 1. 基础数据结构
当需要在leveldb查找对象的时候,查找顺序是从第0层到第n层遍历查找,找到为止(最新的修改或者删除的数据会优先被找到,所以不会出现一个键有多个值的情况)。varint是一种紧凑的表示数字的方法,它用一个或多个字节来表示一个数字,值越小的数字使用越少的字节数。varint中的每个字节的最高位(bit)有特殊含义,如果该位为1,表示后续的字节也是这个数字的一部分,如果该位为0,则结束。slice的数据是外部管理的,因此slice的使用者需要保证生命周期内外部数组是有效的。,a的长度是5而不是3。
2023-04-15 14:30:02
116
原创 多年前的我,一如既往
闲暇时间打算用Rust撸一个LevelDB, 从0–1 打造一个kv数据库。至于以后的演进,暂时没想。最近几年一直在数据库领域学习和琢磨。一年来也逐渐成为了Rust的爱好者。不知不觉又晃三年,三年来经历良多。
2023-04-15 14:27:49
88
原创 Rust 常用 trait 实现
实现了 From trait 后会为你的类型提供 from()、into()、try_from() 和 try_into() 方法,使用 try_from() 和try_into() 方法始终是正确的,使用 into() 和 try_into()方法时要写上类型注解,否则 Rust 不知道你想转换成什么类型。可以直接使用 #[derive(PartialEq)] 派生宏交由编译器实现,对于 struct,Rust 会逐字段比较,对于 enum,会对 enum 中的数据进行比较。Eq,原因就是 NaN!
2022-09-28 14:41:34
1019
原创 1.1 算法篇-切面条
根据定理1,N|n=1 = 2^1+1 = 3,N|n=2 = 2^2+1 = 5,…1、不对折(对折零次),从中间切一刀,得到 2 根面条, 2 = 1 + 2。又有将一根面条对折一次,中间切一刀,会变成三根面条,对于本题,可以有。2、对折一次,从中间切一刀,得到 3 根面条, 3 = 1 + 2。3、对折两次,从中间切一刀,得到 5 根面条, 5 = 1 + 2。4、对折三次,从中间切一刀,得到 9 根面条, 9 = 1 + 2。一根面条,中间切一刀,会变成两根面条,所以对于本题,可以有。
2022-08-22 10:23:37
648
原创 Databend 设计概述 | 白皮书
Databend 是一个开源的、完全面向云架构的新式数仓,它提供快速的弹性扩展能力,并结合云的弹性、简单性和低成本,使 Data Cloud 构建变得更加容易。Databend 把数据存储在像 AWS S3 ,Azure Blob 这些云上的存储系统,可以使不同的计算节点挂载同一份数据,从而做到较高的弹性,实现对资源的精细化控制。Databend 受 ClickHouse 启发,计算模型基于 apache-arrow,开发语言 Rust,
2022-08-19 16:03:46
467
翻译 StarRocks New DLA FrameWork
In StarRocks we have implemented1. a full vectorization engine2. a new CBO optimizer3. new pipeline based scheduling execution engine> 在 StarRocks 我们已经实现了> 1.全矢量化引擎> 2.新的CBO优化器> 3.新的基于管道的调度执行引擎......
2022-08-15 19:39:57
121
原创 [Issue Fixed]-Ubuntu20.10 执行apt-get update报错:404 Not Found [IP: xxx]
每一个Ubuntu发布版本都有它的结束时间,通常,Ubuntu发布版本支持18个月,而LTS (Long Term Support)(长期支持)版本分别支持3年(服务器版)和5年(桌面版)。对于那些使用旧版本的Ubuntu的用户,Canonical会维护 old-releases.ubuntu.com ,这是一个过期库的归档。因此,当Canonical支持的Ubuntu过期后,你必须把源切换到 old-releases.ubuntu.com, 或者 进行升级。...
2022-08-11 15:18:03
1468
翻译 Firebolt whitepaper - 2. Firebolt cloud data warehouse
The Firebolt cloud data warehouse was architected to deliver the speed and efficiency at scale needed for ad hoc, interactive operational and customer-facing analytics. Like some of its predecessors, it is built on a decoupled storage and compute architect
2022-08-10 20:10:17
186
翻译 Firebolt whitepaper - 1. Requirements for the modern cloud data warehouse
Today’s cloud data warehouse has to support more than traditional reporting and dashboards, and the analyst teams behind them.
2022-08-10 19:57:33
137
转载 程序员, 不要过度封装
过度封装是程序员最容易犯的错, 因为是否过度并没有固定的数值标准, 只能是有经验的程序员基于科学的判断. 过度封装的危害十分严重, 所以必须重视, 并且极力避免.首先, 什么是"过度封装"? 我们知道, 计算机科学领域最称为经典也是最强大的思想便是递归, 分而治之. 但是, 递归本身最重要的因素是: 结束条件. 一生二, 二生三, 三生万物, 总要有终止的条件吧? 不然一辆车不停地急驰, 你怎
2016-07-01 20:18:53
2899
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人