`
hideto
  • 浏览: 2682222 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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的写性能
分享到:
评论
1 楼 boyhailong 2013-03-04  
收集的比较全面

相关推荐

    LevelDB手册(LevelDB Handbook).pdf

    LevelDB是一种以写入性能见长的存储引擎,它采用了典型的LSM树(Log Structured-Merge Tree)的数据结构来实现,这是为了优化写入性能而特别设计的数据结构。LSM树放弃了部分读取性能来换取更快的写入能力,尤其适用...

    C#操作LevelDB数据

    在本文中,我们将深入探讨如何在Windows Presentation Foundation (WPF)环境中使用C#语言操作LevelDB数据库,并结合JSON处理技术来存储和展示数据。LevelDB是一个由Google开发的轻量级、高性能的键值对存储系统,...

    leveldb-1.18 源码及 leveldb实现解析.PDF

    《leveldb-1.18 源码及 leveldb实现解析》这份资料主要涵盖了Google开源的键值存储系统leveldb的源码分析和实现原理。leveldb作为一个高效、轻量级的数据库引擎,广泛应用于各种场景,如嵌入式系统、日志存储、缓存...

    leveldb源码工程Windows版

    【leveldb源码工程Windows版】是一个专为在Windows操作系统上编译和运行的开源键值存储系统 leveldb 的源代码包。leveldb由Google开发,它提供了一个高效的、可嵌入式的数据存储解决方案,适用于各种应用场景,如...

    leveldb-windows-python3.6编译版

    标题"leveldb-windows-python3.6编译版"指的是这是一个针对Windows操作系统、Python 3.6版本编译的LevelDB数据库的接口库。LevelDB是Google开发的一个轻量级、高性能的键值对存储系统,适用于嵌入式应用或作为其他...

    leveldb.zip

    《LevelDB在Windows环境下使用与理解》 LevelDB是由Google开发的一个开源的、轻量级的键值存储库,主要用于嵌入式应用和系统。它提供了简单但高效的接口,适用于需要快速读写大量数据的场景。本文将深入探讨在...

    leveldb,leveldb到java的端口.zip

    leveldb是一款高效、轻量级的键值存储库,由Google开发并开源,主要用于实现高性能的数据持久化。它的设计目标是提供一个简单且可扩展的接口,支持快速的读写操作,尤其适用于嵌入式系统和大规模分布式环境。本文将...

    Leveldb lmdb性能对比

    Leveldb lmdb性能对比Leveldb lmdb性能对比Leveldb lmdb性能对比Leveldb lmdb性能对比Leveldb lmdb性能对比Leveldb lmdb性能对比Leveldb lmdb性能对比Leveldb lmdb性能对比Leveldb lmdb性能对比Leveldb lmdb性能对比...

    windows上编译leveldb生成的leveldb.lib

    在Windows环境下,使用Visual Studio 2013编译开源的LevelDB库并生成`leveldb.lib`静态库文件,是一项常见的任务。LevelDB是一个轻量级的键值存储库,由Google开发,用于存储小到中等大小的数据集。它的设计目标是...

    leveldb测试程序

    linux下c++实现leveldb的添加数据,查询数据,对于学习理解leveldb很有帮助

    ARM32 架构的 php_leveldb数据库

    自己编译的leveldb.so文件。 这是一个适用于arm32架构的php模块, leveldb数据库懂得都懂 下载文件中含一个压缩包(这是源码,同样含有编译样例) 一个 leveldb.so文件 这是我编译的自己用的leveldb模块,试过了...

    levelDB 日知录 by 格朗科技

    leveldb是一个由Google工程师Jeff Dean和Sanjay Ghemawat发起的开源项目,它是C++实现的,可以处理十亿级别的Key-Value型数据持久性存储。Jeff Dean和Sanjay Ghemawat是Google重量级的工程师,也是Google大规模...

    mnist-leveldb.7z

    标题中的“mnist-leveldb.7z”是一个压缩包文件,用于深度学习环境,特别是Caffe框架,其中包含了MNIST数据集的LevelDB格式版本。MNIST数据集是机器学习领域非常经典的手写数字识别数据集,常用于训练和验证图像分类...

    leveldb源码

    **LevelDB概述** LevelDB是由Google开发的一个轻量级、高性能、单进程的键值对存储系统,主要用于存储和检索大量的键值数据。它被设计为一个简单的接口,支持快速的读写操作,并且在磁盘上的数据组织上进行了优化,...

    leveldb-master.rar

    《深入理解LevelDB:C++键值对存储数据库的编译与应用》 LevelDB,由Google开源的一款轻量级、高性能的键值对存储数据库,以其简洁的API、高效的数据结构和出色的性能赢得了广大开发者青睐。在Windows环境下,我们...

    levelDB源码

    LevelDB是一款由Google开发的轻量级、高性能的键值对存储系统,它是一个开源项目,主要用于嵌入式环境和简单数据库应用。这个压缩包包含了LevelDB的两个不同版本:1.15.0和1.4.0,分别代表了LevelDB在不同时间点的...

    leveldb-1.15.0修正版

    **LevelDB概述** LevelDB是由Google开发的一个轻量级、高性能、单进程的键值对存储系统,主要用于存储和检索大量的键值对数据。它基于Log-Structured Merge Tree(LSMT)的数据结构,保证了数据的一致性和持久性。...

    leveldb 源码

    **LevelDB源码分析** LevelDB是由Google开源的一款轻量级、高性能的键值对存储系统,它被设计用于在本地文件系统上高效地存储和检索大量数据。这个数据库引擎支持简单的键值对操作,适合用作日志、缓存或者作为其他...

    LevelDB.Net.x64

    LevelDB.Net.x64 是一个专为64位操作系统设计的C#封装库,它使得开发者可以方便地在.NET环境中利用Google的LevelDB键值存储系统。LevelDB是一款高效的、轻量级的开源数据库,由Google开发,主要用于本地数据持久化...

    leveldb.pyd python3.6

    《Python3.6环境下使用LevelDB模块:leveldb.pyd》 在Python编程中,有时我们需要使用到高效的数据存储和检索系统,这时LevelDB便是一个不错的选择。LevelDB是Google开发的一个轻量级、高性能的键值对存储系统,...

Global site tag (gtag.js) - Google Analytics