一、简介
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是一种以写入性能见长的存储引擎,它采用了典型的LSM树(Log Structured-Merge Tree)的数据结构来实现,这是为了优化写入性能而特别设计的数据结构。LSM树放弃了部分读取性能来换取更快的写入能力,尤其适用...
在本文中,我们将深入探讨如何在Windows Presentation Foundation (WPF)环境中使用C#语言操作LevelDB数据库,并结合JSON处理技术来存储和展示数据。LevelDB是一个由Google开发的轻量级、高性能的键值对存储系统,...
【leveldb源码工程Windows版】是一个专为在Windows操作系统上编译和运行的开源键值存储系统 leveldb 的源代码包。leveldb由Google开发,它提供了一个高效的、可嵌入式的数据存储解决方案,适用于各种应用场景,如...
标题"leveldb-windows-python3.6编译版"指的是这是一个针对Windows操作系统、Python 3.6版本编译的LevelDB数据库的接口库。LevelDB是Google开发的一个轻量级、高性能的键值对存储系统,适用于嵌入式应用或作为其他...
自己编译的leveldb.so文件。 这是一个适用于arm32架构的php模块, leveldb数据库懂得都懂 下载文件中含一个压缩包(这是源码,同样含有编译样例) 一个 leveldb.so文件 这是我编译的自己用的leveldb模块,试过了...
标题中的“mnist-leveldb.7z”是一个压缩包文件,用于深度学习环境,特别是Caffe框架,其中包含了MNIST数据集的LevelDB格式版本。MNIST数据集是机器学习领域非常经典的手写数字识别数据集,常用于训练和验证图像分类...
在Windows环境下,使用Visual Studio 2013编译开源的LevelDB库并生成`leveldb.lib`静态库文件,是一项常见的任务。LevelDB是一个轻量级的键值存储库,由Google开发,用于存储小到中等大小的数据集。它的设计目标是...
《leveldb-1.18 源码及 leveldb实现解析》这份资料主要涵盖了Google开源的键值存储系统leveldb的源码分析和实现原理。leveldb作为一个高效、轻量级的数据库引擎,广泛应用于各种场景,如嵌入式系统、日志存储、缓存...
leveldb是一款高效、轻量级的键值存储库,由Google开发并开源,主要用于实现高性能的数据持久化。它的设计目标是提供一个简单且可扩展的接口,支持快速的读写操作,尤其适用于嵌入式系统和大规模分布式环境。本文将...
《LevelDB在Windows环境下使用与理解》 LevelDB是由Google开发的一个开源的、轻量级的键值存储库,主要用于嵌入式应用和系统。它提供了简单但高效的接口,适用于需要快速读写大量数据的场景。本文将深入探讨在...
leveldb是Google公司推出的高性能持久化键值存储库,它广泛应用于各种需要快速、可扩展的存储解决方案的系统中。leveldb采用了LSM树(Log-Structured Merge-Tree)模型来优化写入性能,同时在读取操作上采取了多种...
leveldb是一个由Google工程师Jeff Dean和Sanjay Ghemawat发起的开源项目,它是C++实现的,可以处理十亿级别的Key-Value型数据持久性存储。Jeff Dean和Sanjay Ghemawat是Google重量级的工程师,也是Google大规模...
LevelDB.Net.x64 是一个专为64位操作系统设计的C#封装库,它使得开发者可以方便地在.NET环境中利用Google的LevelDB键值存储系统。LevelDB是一款高效的、轻量级的开源数据库,由Google开发,主要用于本地数据持久化...
《Python3.6环境下使用LevelDB模块:leveldb.pyd》 在Python编程中,有时我们需要使用到高效的数据存储和检索系统,这时LevelDB便是一个不错的选择。LevelDB是Google开发的一个轻量级、高性能的键值对存储系统,...
《深入理解LevelDB:C++键值对存储数据库的编译与应用》 LevelDB,由Google开源的一款轻量级、高性能的键值对存储数据库,以其简洁的API、高效的数据结构和出色的性能赢得了广大开发者青睐。在Windows环境下,我们...
LevelDB是一款轻量级、高性能、单机版的键值对持久化存储库,由Google开发并开源。这个“leveldb-0.6.jar”文件是LevelDB的一个Java实现,版本为0.6,适合在Java环境中使用。它包含了数据库操作的核心类和其他必要的...
**LevelDB概述** LevelDB是由Google开发的一个轻量级、高性能、单进程的键值对存储系统,主要用于存储和检索大量的键值对数据。它基于Log-Structured Merge Tree(LSMT)的数据结构,保证了数据的一致性和持久性。...
在本文中,我们将深入探讨如何在C#的WPF(Windows Presentation Foundation)环境中利用现有类库读取LevelDB数据库,并解析存储的JSON字符串以便在界面上显示。LevelDB是由Google开发的一个轻量级、高性能的键值对...