facebook Rocksdb入门详解

facebook Rocksdb入门详解

1.介绍

可嵌入、持久、快速的key-value 存储。

1).Keys and values are arbitrary byte arrays,The keys are ordered within the key value store according to a user-specified comparator function.

2)A rocksdb database has a name which corresponds to a file system directory. All of the contents of database are stored in this directory.

3)It supports both point lookups and range scans, and provides different types of ACID guarantees.

高性能:RocksDB使用一套日志结构的数据库引擎,为了更好的性能,这套引擎是用C++编写的。 Key和value是任意大小的字节流。

为快速存储而优化:RocksDB为快速而又低延迟的存储设备(例如闪存或者高速硬盘)而特殊优化处理。 RocksDB将最大限度的发挥闪存和RAM的高度率读写性能。

可适配性:RocksDB适合于多种不同工作量类型。从像MyRocks这样的数据存储引擎,到应用数据缓存,甚至是一些嵌入式工作量,RocksDB都可以从容面对这些不同的数据工作量需求。

基础和高级的数据库操作:RocksDB提供了一些基础的操作,例如打开和关闭数据库。对于合并和压缩过滤等高级操作,也提供了读写支持。

2.安装

rocksDB 安装有多种方式。由于官方没有提供对应平台的二进制库,所以需要自己编译使用。

rocksDB 的安装很简单,但是需要转变一下对于rocksDB 的看法。它不是一个重量级别的数据库,是一个嵌入式的key-value 存储。这意味着你只要在你的Maven项目中添加 rocksDB的依赖,就可以在开发环境中使用RocksDB。

maven 模式安装:

新建maven 项目,修改pom.xml 依赖里面添加

<dependency>

<groupid>org.rocksdb/<groupid>

<artifactid>rocksdbjni/<artifactid>

<version>5.8.6/<version>

安装完成。rocksdb对应的是操作系统的目录,通过java api 创建,更新,操作数据库内容即可。

3.api使用 简单例子:

指定目录创建数据库实例,进行操作即可。

package com.kyrie.rocksdb;
import org.rocksdb.Options;
import org.rocksdb.RocksDB;
import org.rocksdb.RocksIterator;
public class Test {
static{
RocksDB.loadLibrary();
}
static RocksDB rocksDB;
//
static final String path = "D:\\\\github\\\\easyJava\\\\rocksdb\\\\test";
public static void main(String[] args) throws Exception {
Options options = new Options(); //数据库设置

options.setCreateIfMissing(true);
rocksDB = RocksDB.open(options, path);
byte[] key = "Hello".getBytes();
byte[] value = "World".getBytes();
byte[] key2 = "Hello2".getBytes();
byte[] value2 = "World2".getBytes();
//保存数据
rocksDB.put(key,value);
rocksDB.put(key2,value2);
//读取数据
byte[] getValue = rocksDB.get(key);
System.out.println(new String(getValue));
//遍历所有key-value
RocksIterator iter = rocksDB.newIterator();
for(iter.seekToFirst(); iter.isValid(); iter.next()) {
System.out.println("iter key:" + new String(iter.key()) + ", iter value:" + new String(iter.value()));
}
}
}

4.rocksdb与redis

Redis是一个远程内存数据存储(类似于memcached).它是一个服务器.单个Redis实例非常高效,但完全不可扩展(关于CPU). Redis集群是可扩展的(关于CPU).

RocksDB是一个嵌入式键/值存储(类似于BerkeleyDB或更准确的LevelDB).它是一个单机内存数据库,支持多线程和基于日志结构合并树的持久性.


分享到:


相關文章: