zoukankan      html  css  js  c++  java
  • LevelDb系列之简介

    LevelDb系列之简介

     

     

      说起LevelDb也许您不清楚,但是如果作为IT工程师,不知道下面两位大神级别的工程师,那您的领导估计会Hold不住了:Jeff Dean和Sanjay Ghemawat这两位是Google公司重量级的工程师,为数甚少的Google Fellow之二。

      Jeff Dean其人:http://research.google.com/people/jeff/index.htmlGoogle大规模分布式平台Bigtable和MapReduce主要设计和实现者。

      Sanjay Ghemawat其人:http://research.google.com/people/sanjay/index.htmlGoogle大规模分布式平台GFSBigtable和MapReduce主要设计和实现工程师。

      LevelDb就是这两位大神级别的工程师发起的开源项目,简而言之,LevelDb是能够处理十亿级别规模Key-Value型数据持久性存储的C++ 程序库。正像上面介绍的,这二位是Bigtable的设计和实现者,如果了解Bigtable的话,应该知道在这个影响深远的分布式存储系统中有两个核心的部分:Master Server和Tablet Server其中Master Server做一些管理数据的存储以及分布式调度工作,实际的分布式数据存储以及读写操作是由Tablet Server完成的,而LevelDb则可以理解为一个简化版的Tablet Server

      LevelDb有如下一些特点:

        首先,LevelDb是一个持久化存储的KV系统,和Redis这种内存型的KV系统不同,LevelDb不会像Redis一样狂吃内存,而是将大部分数据存储到磁盘上。

        其次,LevleDb在存储数据时,是根据记录的key值有序存储的,就是说相邻的key值在存储文件中是依次顺序存储的,而应用可以自定义key大小比较函数,LevleDb会按照用户定义的比较函数依序存储这些记录。

        再次,像大多数KV系统一样,LevelDb的操作接口很简单,基本操作包括写记录,读记录以及删除记录。也支持针对多条操作的原子批量操作。

        另外,LevelDb支持数据快照(snapshot功能,使得读取操作不受写操作影响,可以在读操作过程中始终看到一致的数据。

      除此外,LevelDb还支持数据压缩等操作,这对于减小存储空间以及增快IO效率都有直接的帮助。

      LevelDb性能非常突出,官方网站报道其随机写性能达到40万条记录每秒,而随机读性能达到6万条记录每秒。总体来说,LevelDb的写操作要大大快于读操作,而顺序读写操作则大大快于随机读写操作。至于为何是这样,看了我们后续推出的LevelDb日知录,估计您会了解其内在原因。

    LevelDB的使用请参考上一篇博文:LevelDB:一个快速轻量级的key-value存储库

    下一篇介绍LevelDB系列之整体架构

     
     
     
    标签: LevelDB
  • 相关阅读:
    pdf文件的导入导出
    扩展方法用法整理
    c#批量插入数据库Demo
    Linq表达式和Lambda表达式用法对比
    Lambda表达式的诞生过程
    LeetCode77. Combinations(剑指offer38-2)
    LeetCode47.Permutations II(剑指offer38-1)
    LeetCode567. Permutation in String
    LeetCode46. Permutations
    图解HTTP-1.web和网络基础
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3393488.html
Copyright © 2011-2022 走看看