leveldb资料整理

 

转自:http://hideto.iteye.com/blog/1328921

最近一段时间在学习leveldb的源码,找到了一些相关的资源,用于后续查考和学习使用。

leveldb介绍 
http://code.google.com/p/leveldb/ 
http://en.wikipedia.org/wiki/LevelDB 
http://highscalability.com/blog/2011/8/10/leveldb-fast-and-lightweight-keyvalue-database-from-the-auth.html 
http://news.ycombinator.com/item?id=2526032 
http://basho.com/blog/technical/2011/07/01/Leveling-the-Field/ 
http://blog.yufeng.info/archives/1327 
http://www.slideshare.net/sunzhidong/google-leveldb-study-discuss 

leveldb官方文档 
http://leveldb.googlecode.com/svn/trunk/doc/index.html 
http://leveldb.googlecode.com/svn/trunk/doc/benchmark.html 
http://leveldb.googlecode.com/svn/trunk/doc/impl.html 
http://leveldb.googlecode.com/svn/trunk/doc/table_format.txt 
http://leveldb.googlecode.com/svn/trunk/doc/log_format.txt 

leveldb内部实现和源码解析 
http://blog.xiaoheshang.info/?cat=26 
http://rdc.taobao.com/blog/cs/?p=1378 
http://www.cnblogs.com/haippy/archive/2011/12/04/2276064.html 

bigtable/mapreduce/gfs/lsm-tree/skiplist论文 
http://blademaster.ixiezi.com/2010/03/27/bigtable:一个分布式的结构化数据存储系统中文版/ 
http://blademaster.ixiezi.com/2010/03/27/google-mapreduce中文版/ 
http://blademaster.ixiezi.com/2010/03/27/the-google-file-system中文版/ 
http://staff.ustc.edu.cn/~jpq/paper/flash/1996-The%20Log-Structured%20Merge-Tree%20%28LSM-Tree%29.pdf 
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.15.9072&rep=rep1&type=pdf 

Tair ldb 
http://rdc.taobao.com/blog/cs/?p=1394 
http://code.taobao.org/p/tair/wiki/index/ 
http://code.taobao.org/p/tair/src/branches/ldb/src/storage/ldb/ 

相关资料 
http://www.quora.com/What-is-an-SSTable-in-Googles-internal-infrastructure 
http://www.ningoo.net/html/tag/dynamo 
http://wiki.apache.org/cassandra/MemtableSSTable 
http://wiki.apache.org/cassandra/ArchitectureSSTable 
http://en.wikipedia.org/wiki/Queuing_theory 
http://rdc.taobao.com/team/jm/archives/1344 

Notes 
leveldb的Write/Delete: 
DB::Put/Delete(DB::Open时*dbptr = impl) => DBImpl::Write => (1) 写log: log_->AddRecord (2) 写memtable: WriteBatchInternal::InsertInto(updates, mem_) 

leveldb的Get: 
DBImpl::Get => (1) 查memtable: mem->Get (2) 查immutable memtable: imm->Get (3) 查文件 versions_->current() => current->Get => Version::Get 

leveldb的Compaction: 
leveldb在Open/Get/Write时都有可能做Compaction: DB::Open/DBImpl::Get/DBImpl::Write(DBImpl::MakeRoomForWrite) =>DBImpl::MaybeScheduleCompaction => env_->Schedule(&DBImpl::BGWork, this) => (1) 启后台线程 PosixEnv::Schedule (2) DBImpl::BGWork => DBImpl::BackgroundCall => DBImpl::BackgroundCompaction 

leveldb的多线程写: 
DBImpl::Write的瓶颈在AcquireLoggingResponsibility,多线程写同一个db时互相竞争logger_,性能反而没有单写线程快. 所以为了scale,对leveldb做sharding,将key做hash后分到多个db,这样多线程读写不会相互竞争,经测试 num_threads : num_dbs为1:1时性能最好,充分利用多核 

leveldb的性能调优: 

通过sharding/batch writes/increase block_size(size per data block, default 4KB)/increase block_cache(LRUCache, default 8MB)/increase write_buffer_size(memtable size, default 4MB)来提高性能,经过测试,单机24-core采用16 threads/16 shards/1000 batch_sizes/block_size 8K/write_buffer_size 32MB能达到70w+ ops/sec的写性能

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

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

相关文章

C语言 ,嵌入式 ,数据结构 面试题目(2)

100 struct name1{ char str;short x;int num; } struct name2{char str;int num;short x; } sizeof(struct name1)8,sizeof(struct name2)12101读文件file1.txt的内容(例如): 12 34 56 输出到file2.txt: 56 34 12 (…

hdu - 3415 Max Sum of Max-K-sub-sequence

题意&#xff1a;求一个环中最大区间和&#xff0c;区间长度 < n。 用单调队列优化Dp&#xff0c;核心内容是dp[i] max(sum[j]) - sum[i-1]。 这题最后的输出有很多要求&#xff0c;如果有多个解&#xff0c;输出起始位置最小的&#xff1b;如果还有多个解&#xff0c;输出…

XNA中的Render State管理

XNA中的Render State管理 仅供个人学习使用&#xff0c;请勿转载&#xff0c;勿用于任何商业用途。 The Problem&#xff1a; XNA中一个设计的非常不好的地方&#xff0c;就是把各种render state定义为RenderState类的成员&#xff0c;而不是枚举。在DX/MDX中&#xff0c…

11 装饰器

装饰器介绍与简单实现 1. 什么是装饰器 器:指的是具备某一功能的工具 装饰:指的是为被装饰器对象添加新功能 装饰器就是用来为被装饰器对象添加新功能的工具 注意:装饰器本身可以是任意可调用对象,被装饰器的对象也可以是任意可调用对象2. 为何要用装饰器 开放封…

C语言 ,嵌入式 ,数据结构 面试题目(3)

182 链表题&#xff1a;一个链表的结点结构 struct Node { int data ; Node *next ; }; typedef struct Node Node ; (1)已知链表的头结点head,写一个函数把这个链表逆序 ( Intel)Node * ReverseList(Node *head) //链表逆序 { if ( head NULL || head->next NULL ) retur…

C++11 新特性 —— 关键字noexcept

转载;https://www.cnblogs.com/sword03/p/10020344.html 1 关键字noexcept 从C11开始&#xff0c;我们能看到很多代码当中都有关键字noexcept。比如下面就是std::initializer_list的默认构造函数&#xff0c;其中使用了noexcept。 constexpr initializer_list() noexcept: _M…

统一项目管理平台(UMPlatForm.NET)-4.7 组织机构管理模块

统一项目管理平台&#xff08;UMPlatForm.NET&#xff09; 4.7 组织机构管理模块 统一项目管理平台&#xff08;UMPlatForm.NET&#xff09;,基于.NET的快速开发、整合框架。 4.7 组织机构管理模块 组织机构管理模块提供直观方便的组织机构管理&#xff0c;以树型结构显示单位和…

开源GIS系统关系图

转载于:https://www.cnblogs.com/penglink/archive/2009/06/26/1511373.html

c++常用知识点,易错点,面试常问点

1.谈谈你对C内存分配的理解1.1 还是的先看看C对内存分为哪几个区&#xff1f;1、栈区&#xff08;stack&#xff09;— 由编译器自动分配释放 &#xff0c;存放函数的参数值&#xff0c;局部变量的值等。其操作方式类似于数据结构中的栈。想知道为什么效率高吗&#xff1f;因为…

g++编译时的常用选项说明

最近在做一个新的项目&#xff0c;所有的代码都是新写的没有参考的部分&#xff0c;因此遇到了一些问题&#xff0c;主要是在编译方面的问题&#xff0c;算是对这2周时间的总结&#xff1a; g编译时使用了 -O3级别&#xff0c;参数如下&#xff1a; (1)、-g -O3 -DNDEBUG -fn…

详解mybatis映射配置文件

一 mybatis 映射文件结构 mybatis映射配置文件存在如下顶级元素&#xff0c;且这些元素按照如下顺序被定义。 cache – 给定命名空间的缓存配置。cache-ref – 其他命名空间缓存配置的引用。 resultMap – 是最复杂也是最强大的元素&#xff0c;用来描述如何从数据库结果集中…

利用ACS来实现AAA服务

ACS简介思科安全访问控制服务器&#xff08;Cisco Secure Access Control Sever&#xff09;是一个高度可扩展、高性能的访问控制服务器&#xff0c;提供了全面的身份识别网络解决方案&#xff0c;是思科基于身份的网络服务(IBNS)架构的重要组件。Cisco Secure ACS通过在一个集…

Nginx常用命令有哪些?

最近在集群数据库之前部署了Ngnix来实现负载均衡和解决高并发情况下服务器压力过重的问题。 常用的命令有如下&#xff1a; nginx -t : 验证配置文件 nginx -s stop : 快速停止(不管有没有正在处理的请求&#xff0c;强制退出) nginx -s quit : 正常停止(处理完已经接收的请…

C/C++二维数组名和二级指针的联系与区别

1. 指针 1.1 一个指针包含两方面&#xff1a;a) 地址值&#xff1b;b) 所指向的数据类型。 1.2 解引用操作符&#xff08;dereference operator&#xff09;会根据指针当前的地址值&#xff0c;以及所指向的数据类型&#xff0c;访问一块连续的内存空间&#xff08;大小由指针所…

BN层

论文名字&#xff1a;Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift 论文地址&#xff1a;https://arxiv.org/abs/1502.03167 BN被广泛应用于深度学习的各个地方&#xff0c;由于在实习过程中需要修改网络&#xff0c;修改的…

POJ 3613

1 //共T条路&#xff0c;求从S到E经过N条路径的最短路径 2 #include <iostream>3 #include <fstream>4 #include <string.h>5 #include <algorithm>6 using namespace std;7 8 #define CIR(n, m) for (int i0; i<n; i) for (int j0; j<m; j)9 co…

C语言中字符型和字符串型的对比

C语言中字符型和字符串型的对比字符型&#xff1a;C语言中字符用单引号括起来&#xff0c;存储方式以ASCII编码二进制形式存储&#xff0c;占用一个字节如&#xff1a;a,b,c,A等注意&#xff1a;在C语言中将字符型看成特别短的整形&#xff0c;unsigned int 的长度刚好是0-256的…

深入浅出 Javascript API(二)--地图显示与基本操作 转

深入浅出 Javascript API&#xff08;二&#xff09;--地图显示与基本操作 地图显示与基本操作&#xff08;放大、缩小、移动、坐标显示&#xff09;是JavascriptAPI的基本功能&#xff0c;也是一个WebGIS应用的基本内容&#xff0c;Javascript提供了非常便捷的开发方法&#x…

「PKUSC2018」神仙的游戏 - 题解

「PKUSC2018」神仙的游戏 题意&#xff1a;给出一个01?串&#xff0c;其中?可以代替成为0或1&#xff0c;令 $ F(i) $ 表示是否存在长度为 $ i $ 的border&#xff0c;求 $ (F(1) \times 1 \times 1) \bigoplus (F(2) \times 2 \times 2) \bigoplus (F(3) \times 3 \times 3)…

常用哈希函数的比较及其实现

基本概念 所谓完美哈希函数。就是指没有冲突的哈希函数。即对随意的 key1 ! key2 有h(key1) ! h(key2)。 设定义域为X&#xff0c;值域为Y, n|X|,m|Y|。那么肯定有m>n,假设对于不同的key1,key2属于X,有h(key1)!h(key2)&#xff0c;那么称h为完美哈希函数&#xff0c;当mn时&…