Java RocksDB安装与应用

  

rocksDB是一个可嵌入的,持久性的键值存储。

  

以下介绍来自rocksDB中文官网,

  https://rocksdb.org.cn/

  

它有以下四个特点

  

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

  

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

  

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

  

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

  

  

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

  

rocksDB的安装很简单,但是需要转变一下对于rocksDB的看法。它不是一个重量级别的数据库,是一个嵌入式的键值存储。这意味着你只要在你的Maven项目中添加rocksDB的依赖,就可以在开发环境中自我尝试了。如果你没有理解这点,你就可能会走入下面这两种不推荐的安装方式。

  

<强>方式,一,,,去查看rocksDB的官网发现要写一个c++程序(不推荐)

        # include & lt; assert>   # include“rocksdb/db.h”   rocksdb: DB *数据库;   rocksdb:选项选项;   选项。create_if_missing=true;   rocksdb:状态状态=rocksdb: DB:: Open(选项,“/tmp/testdb”,和DB);   断言(status.ok ());      

  

创建一个数据库? ? ? ?怎么和之前用的mysql或者mongo不一样,为啥没有一个开始。sh或者开始。蝙蝠之类的脚本。难道要我写,写完了编译发现还不知道怎么和rocksDB库进行关联,怎么办,我c++都忘完了。

  

<强>方式二,使用pyrocksDB(不推荐)

  http://pyrocksdb.readthedocs.io/en/latest/installation.html

  

详细的安装文档见pyrocksDB的官网安装文档。

  

以上两种方式对于熟悉c++或者python的开发者来说都比较友好,但对于java开发者来说不是太友好。

  

接下来就介绍第三种方式。

  

<强>方式三使用maven(推荐)

  

新建maven项目,修改砰的一声。xml依赖里面添加

        & lt; dependency>   & lt; groupId> org.rocksdb   & lt; artifactId> rocksdbjni   & lt; version> 5.8.6   & lt;/dependency>      

可以选择你喜欢的版本。

  

然后更高maven的语言级别,我这里全局设置为

1.8了         & lt; profiles>   & lt; profile>   & lt; id> jdk18   & lt; activation>   & lt; activeByDefault> true   & lt; jdk> 1.8 & lt;/jdk>   & lt;/activation>   & lt; properties>   & lt; maven.compiler.source> 1.8 & lt;/maven.compiler.source>   & lt; maven.compiler.target> 1.8 & lt;/maven.compiler.target>   & lt; maven.compiler.compilerVersion> 1.8 & lt;/maven.compiler.compilerVersion>   & lt;/properties>   & lt;/profile>   & lt;/profiles>      

到这里,环境就装好了,是不是又回到了熟悉的java世界。

  

然后复制源码包下的一个类,在IDE中修改一下运行配置,加一个程序运行中数据库存储路径,就可以运行测试了。我会在文章最后给出这个类。

  

癑ava

  

运行控制台会有日志输出,同时也文件中也会出现一下新的文件。

  

癑ava

  

癑ava

  

后面会更新更多关于rockDB开发API的介绍,以及在生产中的应用,希望大家关注。

     //版权(c) 2011年至今,Facebook公司保留所有权利。//这个源代码是GPLv2(发现的//复制文件的根目录)和Apache 2.0许可协议//(在许可证。Apache文件根目录)。      进口org.rocksdb。*;   进口org.rocksdb.util.SizeUnit;   进口java.util.ArrayList;   进口java.util.Arrays;   进口并不知道;   进口java.util.Map;   公开课RocksDBSample {   静态{   RocksDB.loadLibrary ();   }   最后公共静态void main (String [] args) {   如果(arg游戏。长度& lt;1){   system . out。println(“用法:RocksDBSample db_path”);   system . exit (1);   }   最终字符串db_path=args [0];   最终字符串db_path_not_found=db_path +“_not_found”;   System.out.println (“RocksDBSample”);   试(最终选择选项=new选项();   最后过滤bloomFilter=new bloomFilter (10);   最后ReadOptions ReadOptions=new ReadOptions ()   .setFillCache(假);   最终统计数据=new统计();   最后RateLimiter RateLimiter=new RateLimiter (10000000、10000、10)) {   (最后RocksDB db=RocksDB试试。打开(选项,db_path_not_found)) {   断言(假);   }捕捉(最终RocksDBException e) {   system . out。格式(“被预期的例外——% s \ n”, e);   }   尝试{   options.setCreateIfMissing(真正的)   .setStatistics(统计)   .setWriteBufferSize (8 * SizeUnit.KB)   .setMaxWriteBufferNumber (3)   .setMaxBackgroundCompactions (10)   .setCompressionType (CompressionType.SNAPPY_COMPRESSION)   .setCompactionStyle (CompactionStyle.UNIVERSAL);   }捕捉(最终IllegalArgumentException e) {   断言(假);   }   断言(options.createIfMissing ()==true);   断言(options.writeBufferSize ()==8 * SizeUnit.KB);   断言(options.maxWriteBufferNumber ()==3);   断言(options.maxBackgroundCompactions ()==10);   断言(options.compressionType ()==CompressionType.SNAPPY_COMPRESSION);   断言(options.compactionStyle ()==CompactionStyle.UNIVERSAL);   断言(options.memTableFactoryName () .equals (SkipListFactory "));   options.setMemTableConfig (   新的HashSkipListMemTableConfig ()   .setHeight (4)   .setBranchingFactor (4)   .setBucketCount (2000000));   断言(options.memTableFactoryName () .equals (HashSkipListRepFactory "));   options.setMemTableConfig (   新的HashLinkedListMemTableConfig ()   .setBucketCount (100000));   断言(options.memTableFactoryName () .equals (HashLinkedListRepFactory "));   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

Java RocksDB安装与应用