LMDB(Lighting Memory-Mapped Database Manager)闪电内存映射数据管理器,是一个基于btree的数据库管理库,整个数据库在内存映射中公开,所有数据获取都直接从映射的内存返回数据,因此在数据获取期间不会出现malloc或memcpy。它本身不需要页面缓存层,而且它的性能和内存效率都非常高。它也是完全事务性的,具有完整的ACID语义,当内存映射为只读时,不能通过从应用程序代码中编写游离指针来破坏数据库完整性。

该库完全支持线程感知,并支持来自多个进程和线程的并发读、写访问。数据页使用复制即写策略,因此不会覆盖任何活动的数据页,这也提供了对损坏的抵抗力,并消除了系统崩溃后任何特殊恢复过程的需要。写被完全序列化,一次只能有一个写事务是活动的,这就保证了写事务不会死锁。数据库结构是多版本的,因此读取器运行时没有锁;因此读取器运行时没有锁,作家不能阻止读者,读者也不会阻止作家。

与其他使用写前事务日志或仅追加数据写的著名数据库机制不同,LMDB在操作期间不需要维护。写前日志记录器和仅追加的数据库都需要定期检查点和或压缩他们的日志或数据库文件,否则他们会无限制的增长。LMDB跟踪数据库中的空闲页面,并将他们用于新的写操作,因此在正常使用中,数据库大小不会无限制的增长。

内存映射可以用作只读或读写映射。默认情况下它是只读的,因为这提供了对损坏的完全免疫力。使用读写模式提供了更高的写性能,但也增加了应用程序通过指向静默破坏数据库的指针进行写操作的可能性。

LMDB是一款开源的高效快速的内存映射数据库,C语言编写,基于B+树索引,支持MVCC事务处理。它不是一个需要独立运行的数据库管理进程,只要在需要访问LMDB数据库的代码里引用LMDB库,给出数据库所在目录,就能方便的实现读写LMDB数据库。

安装

pip3 install lmdb --user


参考资料
Py之lmdb:lmdb的简介、安装、使用方法之详细攻略

LMDB:闪电内存映射数据库管理器相关推荐

  1. Python使用LMDB(闪电内存映射数据库)

    LMDB,全称Lightning Memory-Mapped Database.直译过来就是,闪电内存映射数据库. 先不要被它的名字唬住了,其实就是一个存储和快速读取大量键值对的工具.先思考一个问题, ...

  2. jvm 堆外内存_NIO效率高的原理之零拷贝与直接内存映射

    更多内容,欢迎关注微信公众号:全菜工程师小辉~ 前言 在笔者上一篇博客,详解了NIO,并总结NIO相比BIO的效率要高的三个原因,彻底搞懂NIO效率高的原理. 这篇博客将针对第三个原因,进行更详细的讲 ...

  3. 码农技术炒股之路——数据库管理器、正则表达式管理器

    我选用的数据库是Mysql.选用它是因为其可以满足我的需求,而且资料多.因为作为第三方工具,难免有一些配置问题.所以本文也会讲解一些和Mysql配置及开发相关的问题.(转载请指明出于breaksoft ...

  4. Java基础:JavaNIO 之 内存映射文件原理

    1. 前言 最近研究Java中内存映射I/O.Java类库中的NIO中的内存映射文件MappedByteBuffer,相对于Java I/O是一个新的功能.特把适合用于处理大文件,在对大文件处理的时候 ...

  5. 《windows核心编程》 17章 内存映射文件

    内存映射文件主要用于以下三种情况: 系统使用内存映射文件载入并运行exe和dll,这大量节省了页交换文件的空间以及应用程序的启动时间 开发人员可以使用内存映射文件来访问磁盘上的数据文件.这使得我们可以 ...

  6. C#内存映射文件学习总结

    C#内存映射文件学习 http://www.cnblogs.com/flyant/p/4443187.html 内存映射文件是由一个文件到进程地址空间的映射. C#提供了允许应用程序把文件映射到一个进 ...

  7. system文件_大文件拷贝,试试NIO的内存映射

    最近项目里有个需求需要实现文件拷贝,在java中文件拷贝流的读写,很容易就想到IO中的InputStream和OutputStream之类的,但是上网查了一下文件拷贝也是有很多种方法的,除了IO,还有 ...

  8. nio java 内核拷贝_大文件拷贝,试试NIO的内存映射

    最近项目里有个需求需要实现文件拷贝,在java中文件拷贝流的读写,很容易就想到IO中的InputStream和OutputStream之类的,但是上网查了一下文件拷贝也是有很多种方法的,除了IO,还有 ...

  9. 内存映射(mmap系统调用)

    映射虚拟内存-->物理内存/Swap/文件 文件映射到内存,内存访问取代IO访问 可以映射同一个文件以(进程)共享内存 Linux进程虚拟地址空间---(分成)-->虚拟内存区 虚拟内存区 ...

  10. 内存映射MMAP和DMA【转】

    转自:http://blog.csdn.net/zhoudengqing/article/details/41654293 版权声明:本文为博主原创文章,未经博主允许不得转载. 这一章介绍Linux内 ...

最新文章

  1. 解析equals(Object obj)和compareTo(T obj)
  2. Mysql事务结合spring管理
  3. 来自十年互联网人的大厂等级晋升攻略
  4. pe usb驱动导入工具_如何使用微PE系统重装系统?
  5. js实现类名的添加与移除
  6. QuickPart应用系列
  7. VSCODE修改文字编码格式为GB2312和TAB键为2个空格(MDK5和VSCODE联合开发STM32程序)
  8. Android中软键盘弹出时关于布局的问题
  9. iPhone 12性能首曝:6GB内存、A14“挤牙膏”
  10. 气势汹涌,天津设立千亿级AI基金;刘强东否认会因AI开除一半员工
  11. Python基础知识笔记(二)
  12. hdu 3996 Gold Mine ( 最大权闭合图 )
  13. Docker安装迅雷下载工具实现远程下载
  14. 外部IC寄存器的位定义
  15. maya2020卸载不干净安装不了_Maya2020安装失败怎么办?2018却可以安装?
  16. doom3 源代码基本情况
  17. 缓解精神内耗的“马原疗法”
  18. 蓝牙耳机能否用于台式计算机,为什么台式机不能连接蓝牙耳机?只要它就可以实现!-蓝牙耳机怎么连接电脑...
  19. 紫外线杀菌器:紫外线杀菌的原理分析
  20. 最强大脑魔方墙模拟程序(工具)

热门文章

  1. SQLMAP注入拖库过程 1
  2. filezilla里怎么解决中文乱码问题
  3. CS188-Project 4
  4. 局域网计算机名和ip扫描工具,局域网IP扫描器(Advanced IP Scanner)
  5. mediatek无线usb网卡驱动 linux,Ralink雷凌USB无线网卡驱动5.1.7.0版 Ralink雷凌USB无线网卡驱动5.1.7.0版 无线网卡驱动 雷凌...
  6. android开发入门教程
  7. 电脑常见故障排查思路
  8. 【VHDL语言学习笔记(七)】 分频器
  9. 在计算机领域黑箱,探究黑箱的认知革命
  10. wps怎么做时间线_wps中的word文档如何制作时间轴