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).它是一個單機內存數據庫,支持多線程和基於日誌結構合併樹的持久性.


分享到:


相關文章: