LevelDB (1)概述
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)概述相关推荐
- leveldb源码分析:数据插入续(跳表)
leveldb数据的插入-跳表 本文主要是接着上一篇文章,继续深入探索Write函数调用插入之后的流程. status = WriteBatchInternal::InsertInto(updates ...
- leveldb源码分析:数据插入与删除(Put与Delete)
leveldb数据的插入与获取 leveldb提供的数据的交互接口如下: // Set the database entry for "key" to "value&qu ...
- leveldb源码分析:Open启动流程
leveldb概述 Leveldb 是一个持久化的KV存储系统,主要将大部分数据存储在磁盘上,在存储数据的过程中,根据记录的key值有序存储,当然使用者也可以自定义Key大小比较函数,一个leveld ...
- leveldb代码阅读笔记(一)
leveldb代码阅读笔记 above all leveldb是一个单机的键值存储的内存数据库,其内部使用了 LSM tree 作为底层存储结构,支持多版本数据控制,代码设计巧妙且简洁高效,十分值得作 ...
- Fabric 1.0源代码分析(23)LevelDB(KV数据库)
# Fabric 1.0源代码笔记 之 LevelDB(KV数据库) ## 1.LevelDB概述 LevelDB是Google开源的持久化KV单机数据库,具有很高的随机写,顺序读/写性能,但是随机读 ...
- HBase、Cassandra、LevelDB、RocksDB底层数据结构是什么?
大家好,我是球哥.没啥球用的球,目前在965互联网公司做架构.今天分享开源数据框架中最最常用的底层数据结构. 一.概述 当前已被广泛运用在一些开源的数据产品中,如:HBase.Cassandra.Le ...
- 2万字长文,数据库系统设计概述
数据库系统设计概述 世界上只有两种开发人员,一种使用数据库系统的,一种开发数据库系统的. 数据是系统最重要的信息.大部分系统都是对数据的管理.应用系统通过数据模型来构建现实世界,通过算法操作对象或数据 ...
- 浅析 Bigtable 和 LevelDB 的实现
在 2006 年的 OSDI 上,Google 发布了名为 Bigtable: A Distributed Storage System for Structured Data 的论文,其中描述了一个 ...
- MQ 系列之 ActiveMQ 搭建 Zookeeper + Replicated LevelDB 集群
1.1 简介 1.1.1 概述 从 ActiveMQ 5.9 开始,ActiveMQ 的集群实现方式取消了传统的 Masster-Slave 方式.,增加了基于 Zookeeper + Level ...
最新文章
- Oracle错误代码:ORA-28002导致密码消失
- string常用操作
- Lyft Level 5 Challenge 2018 - Elimination Round翻车记
- MVC(Java , C# ,php)
- 第 17 章 命令模式
- java上传文件-大文件以二进制保存到数据库
- 16.定位模板,布局和样式
- Can Place Flowers
- workbench应力应变曲线_ANSYS WORKBENCH后处理中各种应力结果的详细说明
- 方差标准差,均方误差均方根误差,平均绝对误差
- 咋让计算机名字改为办公用计算机,让电脑变成历史:三星DeX将三星S8变成“办公电脑”...
- html网上日记本设计,个人博客的设计_网上日记本的开发ASP334
- 一文读懂Auth0与Azure AD的区别
- 聊一聊 Web 框架的新趋势
- 如何將excel內容导出XML
- python chicken()
- 在Maven中出现Could not find artifact ...:pom:0.0.1-SNAPSHOT and ‘parent.relativePath‘的错误怎么解决?
- border.css
- 美国自由女神像是法国赠送的【科普】
- 【C语言】通讯录(文件版)
热门文章
- SpringBoot非官方教程 | 第二篇:Spring Boot配置文件详解
- 多线程:happens-before 先行发生原则
- 【Scratch】青少年蓝桥杯_每日一题_7.09_加减大师
- 【Scratch】青少年蓝桥杯_每日一题_1.9_小猫旅行
- 标签的属性和样式属性有什么区别
- 专家解读 | 数据中心,从“电老虎”走向“数字经济发动机”
- 在数据中心中使用光缆颜色代码的重要性
- Py之minepy:minepy的简介、安装、使用方法之详细攻略
- 成功解决pml.Simple derived_col_names[int(obj[‘split_feature‘])],\ IndexError: list index out of range
- TF之RNN:TF的RNN中的常用的两种定义scope的方式get_variable和Variable