LevelDB简述

转自:http://www.cnblogs.com/melons/p/5791855.html

既然开始了,哪有停下的道理,先了解一下Levedb的关荣历史、完美现在和光辉的未来:

Leveldb:

1.Leveldb是一个google实现的非常高效的kv数据库,目前能够支持billion级别的数据量了。 

在这个数量级别下还有着非常高的性能,主要归功于它的良好的设计,特别是LMS算法。

2.LevelDB 是单进程的服务,性能非常之高,在一台4核Q6600的CPU机器上,

每秒钟写数据超过40w,而随机读的性能每秒钟超过10w。

3.LevelDB 只是一个 C/C++ 编程语言的库(有没有超级感动,哈)

4.Leveldb只是一个语言库,不包含网络服务封装, 所以无法像一般意义的存储服务器(如 MySQL)那样, 用客户端来连接它.

LevelDB 自己也声明, 使用者应该封装自己的网络服务器(这得等我学网络啦)

5.LevelDB具有很高的随机写,顺序读/写性能,但是随机读的性能很一般,

也就是说LevelDB很适合应用在查询较少,而写很多的场景。

LevelDB应用了LSM (不懂吧,点这里)策略,lsm_tree(不懂吧,点这里)对索引变更进行延迟及批量处理,

并通过一种类似于归并排序的方式高效地将更新迁移到磁盘,降低索引插入开销。

6.key和value都是任意长度的字节数组;
7.entry(即一条K-V记录)默认是按照key的字典顺序存储的,当然开发者也可以重载这个排序函数;
8.提供的基本操作接口:Put()、Delete()、Get()、Batch();
9.支持批量操作以原子操作进行;
10.可以创建数据全景的snapshot(快照),并允许在快照中查找数据;
11.可以通过前向(或后向)迭代器遍历数据(迭代器会隐含的创建一个snapshot);
12.自动使用Snappy压缩数据;
13.可移植性;

以下是百度来的资料加一整理:如果了解,可以略过:

Jeff Dean其人:http://research.google.com/people/jeff/index.html

   Google大规模分布式平台Bigtable和MapReduce主要设计和实现者。

Sanjay Ghemawat其人:http://research.google.com/people/sanjay/index.html

   Google大规模分布式平台GFS,Bigtable和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的写操作要大大快于读操作,而顺序读写操作则大大快于随机读写操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/509718.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HBase原理 – snapshot 快照

目录 snapshot(快照)基础原理 snapshot能实现什么功能? hbase snapshot用法大全 hbase snapshot分布式架构-两阶段提交 snapshot核心实现 clone_snapshot如何实现呢? 其他需要注意的 参考文献 更多信息可参考《…

linux如何自动化部署脚本实现免密登录并访问资源

任务把weijie主机jdk文件安装到weijie1中。 首先再各台主机中安装必要的命令: expect、wget、httpd、ssh 执行命令 如:expect提示命令不存在,则分别安装命令 yum install expect yum install wget yum install httpd yum install ssh 开…

比赛2016年暑假集训盲打首秀赛结果

4 53 2015计算机科学与技术1班 15111205046 鞠明杭 149 Fishing For Jasmine 75.50KPM 99.34% 149 2016-06-25 19:23:04 不及格,加强训练!

时序数据库技术体系 – InfluxDB TSM存储引擎之数据读取

任何一个数据库系统内核关注的重点无非:数据在内存中如何存储、在文件中如何存储、索引结构如何存储、数据写入流程以及数据读取流程。关于InfluxDB存储内核,笔者在之前的文章中已经比较全面的介绍了数据的文件存储格式、倒排索引存储实现以及数据写入流…

java多线程之生产者和消费者问题

线程通信:不同的线程执行不同的任务,如果这些任务有某种关系,线程之间必须能够通信,协调完成工作. 经典的生产者和消费者案例(Producer/Consumer):分析案例:1):生产者和消费者应该操作共享的资源(实现方式来做).2):使用一个或多个线程来表示生产者(Producer).3):使用一个或多个…

数据结构上机测试1:顺序表的应用

题目描述 在长度为n&#xff08;n<1000)的顺序表中可能存在着一些值相同的“多余”数据元素&#xff08;类型为整型&#xff09;&#xff0c;编写一个程序将“多余”的数据元素从顺序表中删除&#xff0c;使该表由一个“非纯表”&#xff08;值相同的元素在表中可能有多个&a…

学习方法

在看书籍或者网上看技术知识的时候&#xff0c;要学会以点带面&#xff0c;以一点知识联想到与其相关的知识&#xff0c;再有相关的知识引申到其他相关的知识&#xff0c;这样的话看一本书或者一个技术点的时候就能学到更多的新知识&#xff0c;而且还能够回想起以前学过的知识…

时序数据库技术体系 – InfluxDB TSM存储引擎之数据写入

之前两篇文章笔者分别从TSM File文件存储格式、倒排索引文件存储格式这两个方面对InfluxDB最基础、最底层也最核心的存储模块进行了介绍&#xff0c;接下来笔者会再用两篇文章在存储文件的基础上分别介绍InfluxDB是如何处理用户的写入&#xff08;删除&#xff09;请求和读取请…

zookeeper结构和命令详解

1.1. zookeeper特性1、Zookeeper&#xff1a;一个leader&#xff0c;多个follower组成的集群 2、全局数据一致&#xff1a;每个server保存一份相同的数据副本&#xff0c;client无论连接到哪个server&#xff0c;数据都是一致的 3、分布式读写&#xff0c;更新请求转发&#xf…

时序数据库技术体系 – InfluxDB 多维查询之倒排索引

在时序数据库概述一文中&#xff0c;笔者提到时序数据库的基础技术栈主要包括高吞吐写入实现、数据分级存储&#xff5c;TTL、数据高压缩率、多维度查询能力以及高效聚合能力等&#xff0c;上文《时序数据库技术体系 – InfluxDB存储引擎TSM》基于InfluxDB存储引擎TSM介绍了时序…

顺序表应用1:多余元素删除之移位算法

题目描述 一个长度不超过10000数据的顺序表&#xff0c;可能存在着一些值相同的“多余”数据元素&#xff08;类型为整型&#xff09;&#xff0c;编写一个程序将“多余”的数据元素从顺序表中删除&#xff0c;使该表由一个“非纯表”&#xff08;值相同的元素在表中可能有多个…

《暗时间》-----摘记

http://blog.sina.com.cn/s/blog_6af5df430101ab83.html -------整理 最近花了3天左右的下班时间和上班之前的时间把刘未鹏先生关于学习方法的相关博客看了一遍&#xff0c;觉得讲得很有道理&#xff0c;下面把觉得我感受很深的地方摘录下来了。 特别说明&#xff1a;本文是我对…

Hbase 协处理器 RegionObserver

参考链接1&#xff1a;https://www.cnblogs.com/ios123/p/6370724.html 参考链接2&#xff1a;http://www.zhyea.com/2017/04/13/using-hbase-coprocessor.html RegionObserver 注&#xff1a;每次更新协处理器方法&#xff0c;最好加上版本更新&#xff0c;否则可能会出现更…

搭建zookeeper集群环境详解

第一步:上传zookeeper.jar.gz文件至一台虚拟机&#xff0c;并解压至 /root/apps 目录下&#xff08;如没有该目录则手动创建&#xff09; 第二步&#xff1a;进入在/root/apps/zookeeper目录下 &#xff0c;删除不必要文件 rm -rf .txt .xml docs dist-maven src 第三步: 进入…

顺序表应用2:多余元素删除之建表算法

题目描述 一个长度不超过10000数据的顺序表&#xff0c;可能存在着一些值相同的“多余”数据元素&#xff08;类型为整型&#xff09;&#xff0c;编写一个程序将“多余”的数据元素从顺序表中删除&#xff0c;使该表由一个“非纯表”&#xff08;值相同的元素在表中可能有多个…

OSG框架分析

本文参考<<osg最长一帧>>, <<OpenSceneGraph三维渲染引擎编程指南>>, <<OpenSceneGraph三维渲染引擎设计与实践>> 整理而来, 感谢大牛们的精彩著作. 相比Ogre来说, Ogre代码很规范, 只是入门资料较少,如果能在学习之前能总体上对架构有个…

自动化部署脚本开启所有zookpeer等服务

1.为了方便ssh连接&#xff0c;最好把所有的主机之间实现免密登录 ssh-keygen sh-copy-id 主机名 2.在根目录下新建bin文件夹&#xff0c;并创建部署的脚本start.sh #!/bin/bash for i in 1 2 3 dossh weijie$i "source /etc/profile; /root/apps/zookeeper-3.4.5/bin…

顺序表应用3:元素位置互换之移位算法

题目描述 一个长度为len(1<len<1000000)的顺序表&#xff0c;数据元素的类型为整型&#xff0c;将该表分成两半&#xff0c;前一半有m个元素&#xff0c;后一半有len-m个元素&#xff08;1<m<len)&#xff0c;借助元素移位的方式&#xff0c;设计一个空间复杂度为O…

Hbase 协处理器之将数据保存到es (二级索引)

利用Hbase Coprocessor 实现将插入hbase中的数据保存至ElasticSearch中&#xff0c;实现二级索引目的 版本&#xff1a; Hbase&#xff1a; 2.1 ES&#xff1a;6.3.0 一、Coprocessor代码开发 协处理器类 package wiki.hadoop.coprocessor;import org.apache.hadoop.hbas…

Delta3d框架学习--程序启动过程详解

一个Delta3d程序启动过程详解 一、初始化一个dtGame::GameApplication的实例&#xff0c;dtGame::GameApplication* app new dtGame::GameApplication(); 设置游戏库的名称&#xff0c;SetGameLibraryName("libname")&#xff1b; 调用app->Config("conf…