`
hpgary
  • 浏览: 78892 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论
阅读更多

一、简介

        LevelDB是Google开源的持久化KV单机数据库,具有很高的随机写,顺序读/写性能,但是随机读的性能很一般,也就是说,LevelDB很适合应用在查询较少,而写很多的场景。LevelDB应用了LSM (Log Structured Merge) 策略,lsm_tree对索引变更进行延迟及批量处理,并通过一种类似于归并排序的方式高效地将更新迁移到磁盘,降低索引插入开销,本文只介绍Java的使用方式。

优点:

1、key和value都是任意长度的字节数组;
2、entry(即一条K-V记录)默认是按照key的字典顺序存储的,当然开发者也可以重载这个排序函数;
3、提供的基本操作接口:Put()、Delete()、Get()、Batch();
4、支持批量操作以原子操作进行;
5、可以创建数据全景的snapshot(快照),并允许在快照中查找数据;
6、可以通过前向(或后向)迭代器遍历数据(迭代器会隐含的创建一个snapshot);
7、自动使用Snappy压缩数据;
8、可移植性;

缺点:

1、非关系型数据模型(NoSQL),不支持sql语句,也不支持索引;
2、一次只允许一个进程访问一个特定的数据库;
3、没有内置的C/S架构,但开发者可以使用LevelDB库自己封装一个server;

 

到这里应该基本了解LevelDB是什么了,现在就开始操练起来。

二、Java使用leveldb

1、导入leveldb相关jar包

<dependency>
  <groupId>org.iq80.leveldb</groupId>
  <artifactId>leveldb</artifactId>
  <version>0.10</version>
</dependency>

 2、创建获取db对象

到相关jar包
import static org.iq80.leveldb.impl.Iq80DBFactory.factory;
import java.io.File;
import java.nio.charset.Charset;
import java.util.stream.IntStream;
import org.iq80.leveldb.DB;
import org.iq80.leveldb.Options;

Options options = new Options();
options.createIfMissing(true);
final DB db = factory.open(new File("leveldb"), options); //这里db一个目录同时只能一个实例存在
如果存在多个实例,同时操作一个目录,会报错文件被其他线程占用

 3、api操作读取写入

/*这是简单序列话函数,如果是对象,需要自己写序列化函数*/
public static String toObj(byte[] b) {
		return new String(b);
}

public static byte[] bytes(String obj) {
   if (null == obj) {
      return new byte[0];
   }
   return obj.toString().getBytes(Charset.forName("UTF-8"));
}
/**这里是读写相关代码*/
IntStream.range(1, 10).forEach((i)->{
   new Thread(()->{
	  for(int x=0;x<10;x++){
		 if(x%2==0){
			System.out.println(new String(db.get(bytes("abc5"))));
		}else{
			db.put(bytes("abc" + x), bytes("aabb" + x));
		}
	}
   }).start() ;
});

 leveldb对使用者来说就是这么简单,不要怀疑,使用过程中要注意使用场景 不要随意乱用 就好

分享到:
评论

相关推荐

    ARM32 架构的 php_leveldb数据库

    自己编译的leveldb.so文件。 这是一个适用于arm32架构的php模块, leveldb数据库懂得都懂 下载文件中含一个压缩包(这是源码,同样含有编译样例) 一个 leveldb.so文件 这是我编译的自己用的leveldb模块,试过了...

    LevelDB手册(LevelDB Handbook).pdf

    leveldb是一个写性能十分优秀的存储引擎,是典型的LSM树(Log Structured-Merge Tree)实现。LSM树的核心思想就是放弃部分读的性能,换取最大的写入能力。

    C#操作LevelDB数据

    WPF下使用现有类库操作LevelDB数据库,且解析JSON字符串并显示;test_db目录为测试使用的LevelDB数据库,数据为JSON字符串。

    leveldb源码工程Windows版

    leveldb源码工程Windows版,使用vs2010编译通过。有问题可以参考根目录下的Windows文件(使用notepad打开)

    leveldb 源码解释 阅读情况

    leveldb源码分析 比较全面讲解leveldb leveldb 是 Google 开源的持久化 KV 单机存储引擎,开源页面 http://code.google.com/p/leveldb/。 针对存储面对的普遍随机 IO 问题,leveldb 采用了 merge-dump 的方式,将...

    mnist-leveldb.7z

    mnist-leveldb.7z 深度学习caffe mnist 数据集在windows上可以使用

    Node.Patterns.Databases.Volume.I.LevelDB.Redis.and.CouchDB

    Title: Node Patterns – Databases: Volume I – LevelDB, Redis and CouchDB Author: Pedro Teixeira Length: 149 pages Edition: 1 Language: English Publication Date: 2015-04-08 ISBN-10: B00VV93SV2 Node....

    Python版的LevelDBcpy-leveldb.zip

    cpy-leveldb是在leveldb(google开源的高性能key-value数据库)的 C API 基础上开发的 python 绑定,目前支持leveldb 的 Put, Get, Delete, Write操作,以及 WriteBatch 的原子更新操作,WriteBatch 还可以通过将多...

    Leveldb lmdb性能对比

    Leveldb lmdb性能对比Leveldb lmdb性能对比Leveldb lmdb性能对比Leveldb lmdb性能对比Leveldb lmdb性能对比Leveldb lmdb性能对比Leveldb lmdb性能对比Leveldb lmdb性能对比Leveldb lmdb性能对比Leveldb lmdb性能对比...

    leveldb-1.18 源码及 leveldb实现解析.PDF

    免积分,最新的 leveldb-1.18 源码及leveldb实现解析

    leveldb_leveldbdb_bench_leveldb_

    LevelDB is a fast key-value storage library written at Google that provides an ordered mapping from string keys to string values.

    windows下可编译的leveldb源码

    windows下可编译的leveldb源码,主要用boost库替代linux下移植代码。 修改源码部分: 1.db\c.cc文件中头文件unistd.h 2.port\port.h文件中注明使用的是windows系统 3.无法打开包括文件:“sys/mman.h”: No such ...

    leveldb测试程序

    linux下c++实现leveldb的添加数据,查询数据,对于学习理解leveldb很有帮助

    leveldb,leveldb到java的端口.zip

    这是leveldb在

    leveldb-1.5.0.tar.gz

    Leveldb是一个google实现的非常高效的kv数据库,版本1.2已能支持billion级别的数据量了。 在这个数量级别下还有着非常高的性能,主要归功于它的良好的设计。特别是LSM算法。 那么数据库最怕的的随机IO他是如何解决...

    Python库 | leveldb-0.20.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:leveldb-0.20.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    python-leveldb 32位 windows

    python-leveldb库, python2.6 32位 for windows

    leveldb.zip

    build-&gt;debug-&gt;lib build-&gt;release-&gt;lib lib路径 leveldb --&gt;vs2015 版本

    C#读取LevelDB数据

    WPF下使用现有类库读取LevelDB数据库,且解析JSON字符串并显示 test_db 测试使用的LevelDB数据库 数据为JSON字符串

    leveldb实现解析.pdf

    Leveldb是一个google实现的非常高效的kv数据库,资源为leveldb实现分析 pdf版本,内容清晰,简介,详实。

Global site tag (gtag.js) - Google Analytics