初识:LevelDB

上篇文章缘起:BigTable可以说是已经把论文Bigtable: A Distributed Storage System for Structured Data中的内容掰扯的明明白白,如果哪位小伙伴感觉还有不理解的点,可以点连接进去再反复琢磨几遍,说不定就顿悟了呢~

之所以先花时间把BigTable掰扯了一篇,就是为了引出今天的主人公,LevelDB,接下来呢,我会一点点分享自己阅读LevelDB源码遇到的问题和学习到的一些技术,希望大家多多关注,如有问题,也请大家多多留言,一起学习,一起Happy~

LevelDB是个啥?

LevelDB是对BigTable中KV存储分片Tablet的高度复刻,是由Jeff DeanSanjay Ghemawat,这两位大牛也是BigTable论文的作者,尽管我们不能对BigTable的底层实现一探究竟,不过,开源的LevelDB还是可以让我们对其管中窥豹呢~

简而言之,LevelDB就是一个由Google开源的高效的单机Key/Value存储系统,该存储系统提供了Key到Value的有序映射。

LevelDB有啥特点

  • LevelDB中Key/Value可以是任意长度的字节数组
  • LevelDB中的数据是按Key有序存储的,也就是说,范围查询效率会很高
  • LevelDB支持用户提供自定义Key排序规则
  • 与其他KV存储系统类似,提供Put(key, value)Get(key)Delete(key)这些基本操作
  • LevelDB支持在一个原子批量操作中对同一个Key执行多次修改操作
  • LevelDB通过瞬时快照(Transient Snapshot)为用户提供一致的数据视图
  • LevelDB支持数据的前向/后向迭代遍历
  • LevelDB底层使用Snappy压缩算法自动对数据进行压缩
  • LevelDB将外部活动(例如,文件系统操作)抽象为虚拟接口,为用户自定义这些操作系统交互方式提供了便利,也就是说,用户可以自定义底层到底是与Linux系统交互,还是与Windows系统交互,甚至于HDFS/GFS等分布式文件系统~

LevelDB有哪些限制

  • LevelDB不是SQL数据库,不存在关系数据模型,也不支持SQL查询,同样不支持索引
  • 给定LevelDB数据库,同一时刻,该数据库只能由单进程(可能是多线程)访问
  • LevelDB库本身不是基于C/S(Client/Server)模型的,也就是说,如果你想要像MySQL等各种其他数据库那样,通过客户端连接远程服务器的方式访问LevelDB的话,那么,你需要自己将LevelDB包装成服务端,然后再实现相应的客户端才可以

这部分呢,先简单介绍了LevelDB的特性以及使用限制,其实呢,也从侧面给出了LevelDB的使用场景,比较适合单机KV存储。

LevelDB快速上手

ε=(´ο`*)))唉、其实呢,我现在的主语言是Java,并不是C/C++,太久不用C/C++了,如果有啥错误,各位看官多多提点~

Windows下LevelDB从入门到放弃

Windows下编译LevelDB太恶心了,TM有毒,放弃了、我只是想编译调试下而已,各种拦路虎,算了,爱谁谁,真心感觉Windows下除了他自家的全家桶外,别的都不好用,就TM有毒,真是服气了,不搞了,想在Windows下用LevelDB的,自己掂量着办~

Linux下LevelDB快乐地玩耍

LevelDB编译安装

相比于Windows下LevelDB的编译,Linux环境下简直不要太友好,唯一的缺点就是,用Idea用习惯了,调试有点不太在行~

[root@cos leveldb-1.22]# mkdir -p build && cd build
# 注意:为了调试时可以进入LevelDB库源码,这里最好编译成Debug版本
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值