lightning mdb 源代码分析(1)

本文深入分析lightning mdb(LMDB)的系统架构,包括使用mmap和Copy-On-Write(COW)技术,以及其ACI属性和MVCC控制。LMDB支持多线程、多进程,其数据结构如MDB_ENV、MDB_PAGE和MDB_TXN等在事务管理、B+Tree操作中起关键作用。LMDB通过只读mmap避免数据破坏,并采用元数据页和锁表实现并发控制。
摘要由CSDN通过智能技术生成

lighting mdb(lmdb) 是一个高性能mmap kv数据库,基本介绍和文档参见symas官网,本文将尝试分析其源代码结构以理解数据库设计的关键技术。

本系列文章将尝试从以下几个方面进行分析。

  1. 系统架构(本文)
  2. MMAP映射(系列2)
  3. B+Tree操作(系列3)
  4. 事务管理(系列4)
  5. MVCC控制(系列5)

等几个方面进行分析。

lmdb是为了改进OPENLADP工程的数据缓存后端数据库(bdb)的一系列设计问题,比如多重缓存设计、锁控制、空间膨胀的问题而研发的一款数据库。

其具备管理简单、开发简单等特点。管理简单是因为其设计中去掉了数据库级缓存,开发简单是兼容bdb开发接口,无需担心数据损坏、空间膨胀、死锁等

问题。

其系统基本架构为:

image

设计上使用了mmap和COW技术,因此整体架构比较简单,没有其他数据库的缓存管理、日志管理、外存管理等组件。

mmap文件映射是基础,lmdb通过只读文件映射(默认)避免了因为应用程序bug导致数据库被破坏的情形。其上的

一些基础结构比如Locktables,MVCC,COW等都是实现事务控制的基础,通过这些理论基础,lmdb实现了完整的

ACI属性,D通过mmap实现。最后,系统对外提供了关于B+Tree的操作方式,利用cursor游标进行。可以进行增删改查。

B+Tree的所有变动方式与其他的实现类似,不过lmdb的实现基础是append only B+Tree,后续系列将详细解释lmdb里面的

B+Tree实现方式。

主要的系统数据结构有:

1. MDB_ENV

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值