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

LevelDB

阅读更多

一、简介

        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对使用者来说就是这么简单,不要怀疑,使用过程中要注意使用场景 不要随意乱用 就好

分享到:
评论

相关推荐

    LevelDB手册(LevelDB Handbook).pdf

    LevelDB是一种以写入性能见长的存储引擎,它采用了典型的LSM树(Log Structured-Merge Tree)的数据结构来实现,这是为了优化写入性能而特别设计的数据结构。LSM树放弃了部分读取性能来换取更快的写入能力,尤其适用...

    C#操作LevelDB数据

    在本文中,我们将深入探讨如何在Windows Presentation Foundation (WPF)环境中使用C#语言操作LevelDB数据库,并结合JSON处理技术来存储和展示数据。LevelDB是一个由Google开发的轻量级、高性能的键值对存储系统,...

    leveldb源码工程Windows版

    【leveldb源码工程Windows版】是一个专为在Windows操作系统上编译和运行的开源键值存储系统 leveldb 的源代码包。leveldb由Google开发,它提供了一个高效的、可嵌入式的数据存储解决方案,适用于各种应用场景,如...

    leveldb-windows-python3.6编译版

    标题"leveldb-windows-python3.6编译版"指的是这是一个针对Windows操作系统、Python 3.6版本编译的LevelDB数据库的接口库。LevelDB是Google开发的一个轻量级、高性能的键值对存储系统,适用于嵌入式应用或作为其他...

    ARM32 架构的 php_leveldb数据库

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

    mnist-leveldb.7z

    标题中的“mnist-leveldb.7z”是一个压缩包文件,用于深度学习环境,特别是Caffe框架,其中包含了MNIST数据集的LevelDB格式版本。MNIST数据集是机器学习领域非常经典的手写数字识别数据集,常用于训练和验证图像分类...

    windows上编译leveldb生成的leveldb.lib

    在Windows环境下,使用Visual Studio 2013编译开源的LevelDB库并生成`leveldb.lib`静态库文件,是一项常见的任务。LevelDB是一个轻量级的键值存储库,由Google开发,用于存储小到中等大小的数据集。它的设计目标是...

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

    《leveldb-1.18 源码及 leveldb实现解析》这份资料主要涵盖了Google开源的键值存储系统leveldb的源码分析和实现原理。leveldb作为一个高效、轻量级的数据库引擎,广泛应用于各种场景,如嵌入式系统、日志存储、缓存...

    leveldb,leveldb到java的端口.zip

    leveldb是一款高效、轻量级的键值存储库,由Google开发并开源,主要用于实现高性能的数据持久化。它的设计目标是提供一个简单且可扩展的接口,支持快速的读写操作,尤其适用于嵌入式系统和大规模分布式环境。本文将...

    leveldb.zip

    《LevelDB在Windows环境下使用与理解》 LevelDB是由Google开发的一个开源的、轻量级的键值存储库,主要用于嵌入式应用和系统。它提供了简单但高效的接口,适用于需要快速读写大量数据的场景。本文将深入探讨在...

    leveldb实现解析.pdf

    leveldb是Google公司推出的高性能持久化键值存储库,它广泛应用于各种需要快速、可扩展的存储解决方案的系统中。leveldb采用了LSM树(Log-Structured Merge-Tree)模型来优化写入性能,同时在读取操作上采取了多种...

    levelDB 日知录 by 格朗科技

    leveldb是一个由Google工程师Jeff Dean和Sanjay Ghemawat发起的开源项目,它是C++实现的,可以处理十亿级别的Key-Value型数据持久性存储。Jeff Dean和Sanjay Ghemawat是Google重量级的工程师,也是Google大规模...

    LevelDB.Net.x64

    LevelDB.Net.x64 是一个专为64位操作系统设计的C#封装库,它使得开发者可以方便地在.NET环境中利用Google的LevelDB键值存储系统。LevelDB是一款高效的、轻量级的开源数据库,由Google开发,主要用于本地数据持久化...

    leveldb.pyd python3.6

    《Python3.6环境下使用LevelDB模块:leveldb.pyd》 在Python编程中,有时我们需要使用到高效的数据存储和检索系统,这时LevelDB便是一个不错的选择。LevelDB是Google开发的一个轻量级、高性能的键值对存储系统,...

    leveldb-master.rar

    《深入理解LevelDB:C++键值对存储数据库的编译与应用》 LevelDB,由Google开源的一款轻量级、高性能的键值对存储数据库,以其简洁的API、高效的数据结构和出色的性能赢得了广大开发者青睐。在Windows环境下,我们...

    leveldb-0.6.jar

    LevelDB是一款轻量级、高性能、单机版的键值对持久化存储库,由Google开发并开源。这个“leveldb-0.6.jar”文件是LevelDB的一个Java实现,版本为0.6,适合在Java环境中使用。它包含了数据库操作的核心类和其他必要的...

    leveldb-1.15.0修正版

    **LevelDB概述** LevelDB是由Google开发的一个轻量级、高性能、单进程的键值对存储系统,主要用于存储和检索大量的键值对数据。它基于Log-Structured Merge Tree(LSMT)的数据结构,保证了数据的一致性和持久性。...

    C#读取LevelDB数据

    在本文中,我们将深入探讨如何在C#的WPF(Windows Presentation Foundation)环境中利用现有类库读取LevelDB数据库,并解析存储的JSON字符串以便在界面上显示。LevelDB是由Google开发的一个轻量级、高性能的键值对...

Global site tag (gtag.js) - Google Analytics