K/V数据库 LevelDB

openkk 13年前
     <p>Leveldb是一个google实现的非常高效的kv数据库,目前的版本1.2能够支持billion级别的数据量了。 在这个数量级别下还有着非常高的性能,主要归功于它的良好的设计。特别是LSM算法。</p>    <h3>关键特性<br /> </h3>    <ul>     <li>Keys and values are arbitrary byte arrays. </li>     <li>Data is stored sorted by key. </li>     <li>Callers can provide a custom comparison function to override the sort order. </li>     <li>The basic operations are <tt>Put(key,value)</tt>, <tt>Get(key)</tt>, <tt>Delete(key)</tt>. </li>     <li>Multiple changes can be made in one atomic batch. </li>     <li>Users can create a transient snapshot to get a consistent view of data. </li>     <li>Forward and backward iteration is supported over the data. </li>     <li>Data is automatically compressed using the <a href="/misc/goto?guid=4959223617307691158" rel="nofollow">Snappy compression library</a>. </li>     <li>External activity (file system operations etc.) is relayed through a virtual interface so users can customize the operating system interactions. </li>     <li><a href="/misc/goto?guid=4959223617401491869" rel="nofollow">Detailed documentation</a> about how to use the library is included with the source code. </li>    </ul>    <p></p>    <p>LevelDB 是单进程的服务,性能非常之高,在一台4个Q6600的CPU机器上,每秒钟写数据超过40w,而随机读的性能每秒钟超过10w。</p>    <p>示例代码:</p>    <pre class="brush:cpp; toolbar: true; auto-links: false;">#include  #include "leveldb/include/db.h"  leveldb::DB* db; leveldb::Options options; options.create_if_missing = true; leveldb::Status status = leveldb::DB::Open(options, "/tmp/testdb", &db); assert(status.ok());  std::string value; leveldb::Status s = db->Get(leveldb::ReadOptions(), key1, &value); if (s.ok()) s = db->Put(leveldb::WriteOptions(), key2, value); if (s.ok()) s = db->Delete(leveldb::WriteOptions(), key1);</pre>    <p></p>    <p><strong>项目主页:</strong><a href="http://www.open-open.com/lib/view/home/1322708170155" target="_blank">http://www.open-open.com/lib/view/home/1322708170155</a></p>