1. LevelDB

非常高效的kv数据库,能够支持billion级别的数据量了。 在这个数量级别下还有着非常高的性能,主要归功于它的良好的设计。特别是LSM算法。

LevelDB 是单进程的服务,性能非常之高,在一台4个Q6600的CPU机器上,每秒钟写数据超过40w,而随机读的性能每秒钟超过10w。此处随机读是完全命中内存的速度,如果是不命中,速度大大下降。

eg.

#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);

eg2.

#include "leveldb/db.h"
#include <iostream>using namespace std;int main(){leveldb::DB *db;leveldb::Options options;options.create_if_missing = true;// 開啟數據庫leveldb::DB::Open(options, "/tmp/testdb", &db);// 鍵 = MyKey29,值 = "Hello World!"string key = "MyKey29", value = "Hello World!", result;// 儲存 鍵/值對db->Put(leveldb::WriteOptions(), key, value);// 查詢 MyKey29 鍵的值db->Get(leveldb::ReadOptions(), key, &result);// 輸出值到屏幕cout << "result = " << result << endl;// 關閉數據庫delete db;return 0;
}

LevelDB (1)概述相关推荐

  1. leveldb源码分析:数据插入续(跳表)

    leveldb数据的插入-跳表 本文主要是接着上一篇文章,继续深入探索Write函数调用插入之后的流程. status = WriteBatchInternal::InsertInto(updates ...

  2. leveldb源码分析:数据插入与删除(Put与Delete)

    leveldb数据的插入与获取 leveldb提供的数据的交互接口如下: // Set the database entry for "key" to "value&qu ...

  3. leveldb源码分析:Open启动流程

    leveldb概述 Leveldb 是一个持久化的KV存储系统,主要将大部分数据存储在磁盘上,在存储数据的过程中,根据记录的key值有序存储,当然使用者也可以自定义Key大小比较函数,一个leveld ...

  4. leveldb代码阅读笔记(一)

    leveldb代码阅读笔记 above all leveldb是一个单机的键值存储的内存数据库,其内部使用了 LSM tree 作为底层存储结构,支持多版本数据控制,代码设计巧妙且简洁高效,十分值得作 ...

  5. Fabric 1.0源代码分析(23)LevelDB(KV数据库)

    # Fabric 1.0源代码笔记 之 LevelDB(KV数据库) ## 1.LevelDB概述 LevelDB是Google开源的持久化KV单机数据库,具有很高的随机写,顺序读/写性能,但是随机读 ...

  6. HBase、Cassandra、LevelDB、RocksDB底层数据结构是什么?

    大家好,我是球哥.没啥球用的球,目前在965互联网公司做架构.今天分享开源数据框架中最最常用的底层数据结构. 一.概述 当前已被广泛运用在一些开源的数据产品中,如:HBase.Cassandra.Le ...

  7. 2万字长文,数据库系统设计概述

    数据库系统设计概述 世界上只有两种开发人员,一种使用数据库系统的,一种开发数据库系统的. 数据是系统最重要的信息.大部分系统都是对数据的管理.应用系统通过数据模型来构建现实世界,通过算法操作对象或数据 ...

  8. 浅析 Bigtable 和 LevelDB 的实现

    在 2006 年的 OSDI 上,Google 发布了名为 Bigtable: A Distributed Storage System for Structured Data 的论文,其中描述了一个 ...

  9. MQ 系列之 ActiveMQ 搭建 Zookeeper + Replicated LevelDB 集群

    1.1 简介 1.1.1 概述   从 ActiveMQ 5.9 开始,ActiveMQ 的集群实现方式取消了传统的 Masster-Slave 方式.,增加了基于 Zookeeper + Level ...

最新文章

  1. Oracle错误代码:ORA-28002导致密码消失
  2. string常用操作
  3. Lyft Level 5 Challenge 2018 - Elimination Round翻车记
  4. MVC(Java , C# ,php)
  5. 第 17 章 命令模式
  6. java上传文件-大文件以二进制保存到数据库
  7. 16.定位模板,布局和样式
  8. Can Place Flowers
  9. workbench应力应变曲线_ANSYS WORKBENCH后处理中各种应力结果的详细说明
  10. 方差标准差,均方误差均方根误差,平均绝对误差
  11. 咋让计算机名字改为办公用计算机,让电脑变成历史:三星DeX将三星S8变成“办公电脑”...
  12. html网上日记本设计,个人博客的设计_网上日记本的开发ASP334
  13. 一文读懂Auth0与Azure AD的区别
  14. 聊一聊 Web 框架的新趋势
  15. 如何將excel內容导出XML
  16. python chicken()
  17. 在Maven中出现Could not find artifact ...:pom:0.0.1-SNAPSHOT and ‘parent.relativePath‘的错误怎么解决?
  18. border.css
  19. 美国自由女神像是法国赠送的【科普】
  20. 【C语言】通讯录(文件版)

热门文章

  1. SpringBoot非官方教程 | 第二篇:Spring Boot配置文件详解
  2. 多线程:happens-before 先行发生原则
  3. 【Scratch】青少年蓝桥杯_每日一题_7.09_加减大师
  4. 【Scratch】青少年蓝桥杯_每日一题_1.9_小猫旅行
  5. 标签的属性和样式属性有什么区别
  6. 专家解读 | 数据中心,从“电老虎”走向“数字经济发动机”
  7. 在数据中心中使用光缆颜色代码的重要性
  8. Py之minepy:minepy的简介、安装、使用方法之详细攻略
  9. 成功解决pml.Simple derived_col_names[int(obj[‘split_feature‘])],\ IndexError: list index out of range
  10. TF之RNN:TF的RNN中的常用的两种定义scope的方式get_variable和Variable