登录
首页精彩阅读levelDB的简单使用_数据分析_大数据
levelDB的简单使用_数据分析_大数据
2014-09-20
收藏

levelDB的简单使用_数据分析_大数据

一、简介
        LevelDB是google开源的一个key-value存储引擎库,从版本1.2开始就能够支持billion级别的数据量了。LevelDB是单进程的服务,性能非常之高,在一台4个Q6600的CPU机器上,每秒钟写数据超过40w,而随机读的性能每秒钟超过10w。LevelDB采用日志式的写方式来提高写性能,但是牺牲了部分读性能。为了弥补牺牲了的读性能,一些人提议使用SSD作为存储介质。

二、编译
        LevelDB是一个C++库,而非Server,编译需要g++的支持,这里以1.4为例说明之。
        源码可以直接从这里下载,也可以用git clone源码:
        #git clone 
         如果上面操作都无法获取源码,也可以点击这里下载源码。
        #cd leveldb && make all
         此时在,当前目录(levedb)下会产生libleveldb.a和libleveldb.so,这样就可以使用了。

三、实例
        一个LevelDB数据库需要有一个对应的文件系统目录名字,该数据库的所有内容都存储在这个目录下。
        LevelDB的使用很简单,一般分三步走:
        (1)打开一个数据库实例。
        (2)对这个数据库实例进行插入,修改和查询操作。
        (3)最后在使用完成之后,关闭该数据库。
        #cd ../ && mkdir test && cd test && vi main.cpp
        具体实例如下:       
         #include
         #include
         #include
         #include

         int main(int argc, char** argv)
         {
             leveldb::DB* db;
             leveldb::Options options;
             // 如果打开已存在数据库的时候,需要抛出错误,将以下代码插在leveldb::DB::Open方法前面
            options.create_if_missing = true;
             // 打开一个数据库实例
            leveldb::Status status = leveldb::DB::Open(options, "/tmp/testdb", &db);
             assert(status.ok());
             // LevelDB提供了Put、Get和Delete三个方法对数据库进行添加、查询和删除
            std::string key = "key";
             std::string value = "value";
             // 添加key=value
             status = db->Put(leveldb::WriteOptions(), key, value);
             assert(status.ok());
             // 根据key查询value
             status = db->Get(leveldb::ReadOptions(), key, &value);
             assert(status.ok());
             std::cout<              // 修改操作(原生没有提供)由添加和删除合起来实现
            std::string key2 = "key2";
             // 添加key2=value              
             status = db->Put(leveldb::WriteOptions(),key2,value);
             assert(status.ok());
             // 删除key
             status = db->Delete(leveldb::WriteOptions(), key);
             // 查询key2
             assert(status.ok());
             status = db->Get(leveldb::ReadOptions(), key2, &value);
             assert(status.ok());
             std::cout<              // 查询key
             status = db->Get(leveldb::ReadOptions(), key, &value);
             if (!status.ok())
             {
                std::cerr<              }   
             else
             {
                 std::cout<             }
            // 在对数据库进行了一系列的操作之后,需要对数据库进行关闭,该操作比较简单即删除该对象即可 
             delete db;
             return 0;
         }
        #g++ -o main main.cpp ../leveldb/libleveldb.a -lpthread -I../leveldb/include
        实例编译完成后,如下来执行即可看到结果:
        #./main
         value
         key2==value
         key: NotFound:

数据分析咨询请扫描二维码

客服在线
立即咨询