数据库实现
文章平均质量分 79
介绍数据库实现原理
Victor Fung
主要涉及分布式中间件、分布式存储、数据库、linux内核、编译器。。。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
mysql源码剖析–LEX结构分析
mysql源码剖析–LEX结构分析引言 引言原创 2021-10-21 16:23:02 · 1857 阅读 · 2 评论 -
mysql源码剖析–调试环境搭建
mysql源码剖析–源码调试环境搭建引言1 工程搭建1.1 必需工具安装1.2 源码工程搭建2 调试设置 引言 mysql的源码支持多种平台,特别是在linux平台更是默认的关系数据库,其地位相当于windows的SQL Server。 本文的调试环境搭建建议选择在windows平台,理由如下: 我们搭建mysql源码调试环境,其目的是为了更好地理解mysql设计,而不是去研究linux或windows系统环境; windows平台的visual studio工具的高度集成和图形化,对于我们调试、跟踪其源原创 2021-05-15 17:10:51 · 593 阅读 · 1 评论 -
mysql源码剖析–词法解析过程
mysql源码剖析–词法解析过程引言 引言原创 2021-06-02 20:08:05 · 716 阅读 · 0 评论 -
mysql源码剖析–通信协议分析
mysql源码剖析–通信协议分析引言1 协议简介1.1 server->client握手协议1.2 client->server认证协议 引言 我们使用驱动连接mysql服务器,其协议通常以TCP/IP为主;此外,mysql还支持命名管道等方式交付。无论底层通道是什么,mysql都在其上建立了统一的应用协议。 以TCP/IP为例,整个mysql客户与服务器交付过程如下: 1 协议简介 mysql对所有的消息采用一个通用的模式进行包装,即: 其中3字节的数据长度,1字节的包序号。每次请求或响应原创 2021-05-26 20:21:55 · 1247 阅读 · 2 评论 -
leveldb源码剖析2.4–核心设计之数据迭代器
leveldb源码剖析08–核心设计之数据迭代器引言1 迭代器分类 引言 在leveldb中,迭代子模式被广泛用及、几乎贯穿于整个代码之中。 1 迭代器分类原创 2021-01-31 22:47:27 · 533 阅读 · 0 评论 -
leveldb源码剖析2.3–核心设计之文件缓存
leveldb源码剖析07–核心设计之文件缓存引言1 设计原理1.1 核心思想1.2 数据结构2 源码解读2.1 核心代码2.2 可优化项 引言 在leveldb中对文件数据缓存分为TableCache和Options中的block_cache,两个缓存的实现都是基于ShardedLRUCache类。 1 设计原理 1.1 核心思想 LRUCache主要缓存KV数据,其核心思想如下: 首先,将Key通过哈希算法散列。然后通过哈希链表存储数据;为了解决多线程并发互斥加锁,所以分为16个隔离的桶去实现哈希链表原创 2021-01-31 22:47:15 · 525 阅读 · 0 评论 -
leveldb源码剖析2.2–核心设计之mem缓存
leveldb源码剖析06–核心设计之mem缓存引言1 跳表原理1.1 数据结构1.2 数据查询1.3 插入节点1.4 删除节点2 源码解读 引言 无论是MemTable、还是immutable MemTable,在leveldb源码实现中都是MemTable类型。其核心数据结构是跳表。 1 跳表原理 1.1 数据结构 跳表主要是优化传统有序链表的操作时间复杂度,借鉴于二分查找算法。其结构如下图: 图中是一个最大高度为3的跳表。表头有3个指针域,数据节点为1到3个指针域。所有的指针域指向后续节点的基地址,原创 2021-01-31 22:47:03 · 277 阅读 · 0 评论 -
leveldb源码剖析2.1–核心设计之内存池实现
leveldb源码剖析05–核心设计之内存池实现引言1 数据结构2 源码解读2.1 源码解读2.2 发现问题 引言 为了更加合理地使用内存,在leveldb中实现了自定义的内存池。 1 数据结构 leveldb的内存池实现类为Arena,其核心数据域如下: 首先,用一个vector类型的blocks_存储分配的一块块内存;用alloc_ptr_指向最新申请的内存中未使用内存的首地址;用alloc_bytes_remaining_表示最新申请的内存中未使用内存的字节大小;特别地,memory_usage_统原创 2021-01-31 22:46:53 · 453 阅读 · 0 评论 -
leveldb源码剖析1.4–基础概述之存储格式
leveldb源码剖析04–基础概述之存储格式引言1 log文件1.1 WriteBatch 引言 前面讲了leveldb的关键文件,现在主要介绍各类关键文件的数据格式,这对我们阅读和理解leveldb源码是很有必要的。 1 log文件 1.1 WriteBatch leveldb将Put/Delete/Write封装成WriteBatch对象,然后将WriteBatch序列化后写入log文件。其中WriteBatch序列化后的格式如下: Sequeue:所有的写入数据操作都是严格排序的。该字段为第一个原创 2021-01-31 22:43:16 · 990 阅读 · 0 评论 -
leveldb源码剖析1.3–基础概述之文件分类
leveldb源码剖析03–基础概述之文件系统引言1 核心文件2 其他文件 引言 之前介绍了关于leveldb的源码搭建和整体架构,这篇主要是了解leveldb主要的文件系统和它们的存储内容及功能目标。 1 核心文件 log文件 log文件是持久化写入到MemTable中的数据,每个MemTable对应生成一个log文件。即在MemTable转为immutable MemTable的时候,就会新生成一个log文件持久化后续新写入的数据。此外,打开数据库时,会生成第一个MemTable缓存和对应的log文件原创 2021-01-31 22:42:44 · 423 阅读 · 1 评论 -
leveldb源码剖析1.2–基础概述之整体架构
leveldb源码剖析02–基础概述之整体架构引言1 整体架构2 设计术语 引言 leveldb采用LSM树(Log Structured-Merge Tree)实现,通过放弃部分读性能换取写性能的提升。将传统的随机写文件,转换为顺序追加写文件。 1 整体架构 整个leveldb核心架构如下: 共分为上下两层:上层为内存架构、下层为文件系统架构。 当进行数据写入的时候:首先,将数据追加写入的日志文件;然后,添加到MemTable缓存中;当MemTable超过一定阈值,就会转为immutable MemTa原创 2021-01-31 22:42:19 · 669 阅读 · 1 评论 -
leveldb源码剖析1.1–基础概述之源码搭建
leveldb源码剖析01–基础概述之源码搭建引言1 源码下载2 环境配置3 源码简介 引言 leveldb是一个开源的单机KV存储库,其作者是谷歌工程师Jeff Dean和Sanjay Ghemawat。很多开源LSM存储引擎都基于或使用leveldb,例如rocksdb。 1 源码下载 源码下载地址: https://github.com/google/leveldb 2 环境配置 3 源码简介 关键源码目录介绍: db 数据库功能核心实现模块; include 对外API头文件模块; port原创 2021-01-31 22:41:54 · 372 阅读 · 0 评论
分享