PalDB 介绍

简介: 开篇 PalDB在我的工作中被大面积使用,场景我就不描述了,这里我只想直白的说一句,这个系列的PalDB博文绝对是国内最详细的,如果有兴趣非常建议收藏了好好看看。

开篇

 PalDB在我的工作中被大面积使用,场景我就不描述了,这里我只想直白的说一句,这个系列的PalDB博文绝对是国内最详细的,如果有兴趣非常建议收藏了好好看看。
 整个系列的文章会讲清楚PalDB的存储结构,写过程,读过程这三个核心过程,然后会创新的写明我们这边大神是如何解决线程不安全问题。网上绝无仅有,感谢组内大神!!!

PalDB介绍

PalDB 是一个由 LinkedIn 开源并使用 Java 编写的一次写入键值存储数据库。当存储创建后所有的操作都是禁止的,它是只读的。这样做的目的是提升读操作的性能并降低内存占用。LinkedIn 的建议是使用它来存储 side data,他们对于 side data 的定义是“一个过程以完成其工作而需要的额外的只读数据。

 PalDB的性能还是非常客观的,具体测试数据参考官方资料如下图


img_90a3f8b2fd6b1533a3e7e9f6a73a9ce9.png
PalDB读取性能测试
img_634347c1045057d315f3aaef2e563df7.png
PalDB占用内存数据


PalDB用法介绍

//写数据
StoreWriter writer = PalDB.createWriter(new File("store.paldb"));
writer.put("foo", "bar");
writer.put(1213, new int[] {1, 2, 3});
writer.close();
//读数据
StoreReader reader = PalDB.createReader(new File("store.paldb"));
String val1 = reader.get("foo");
int[] val2 = reader.get(1213);
reader.close();


PalDB存储结构

 PalDB的文件存储结构很重要,后面分析数据的读写过程都需要参考下面这张图,可以很自豪的说全网最详细的PalDB的存储格式就是下图了。

 PalDB是采用文件直接存储数据的,所有的key/value数据都是存在文件当中,在文件内部数据存储主要分为三大块,数据之间通过位移进行关联:

  • 元数据:存储整个PalDB数据存储的元数据信息,通过位移和key数据&value数据进行关联。
  • key数据:存储key数据,通过位移与value数据进行关联
  • value数据:存储value数据
img_9bf47af41ad5d2f3a2311af834eb4e2f.png
PalDB存储结构
目录
相关文章
|
6月前
|
机器学习/深度学习 存储 自然语言处理
SeACo-Paraformer
【6月更文挑战第14天】
230 6
|
3月前
|
API Android开发 开发者
NavigableListDetailPaneScaffold
【9月更文挑战第12天】
33 5
|
4月前
|
XML Java 数据处理
深入了解 XPath
【8月更文挑战第22天】
75 0
|
7月前
|
SQL 分布式计算 数据库
ApacheHudi使用问题汇总(二)
ApacheHudi使用问题汇总(二)
120 0
|
7月前
|
缓存 Java API
深入理解JPA
深入理解JPA
209 0
|
机器学习/深度学习 人工智能 文字识别
超全干货分享:什么是RPA?
7月28日,阿里云RPA4.0版本重磅发布,为企业数字化转型提供高效、安全、可靠的服务。RPA是一款软件机器人,能够模拟人的行为完成软件的交互,能够解决跨系统、跨平台,重复有规律的工作流程。时至今日,阿里云RPA已被超过50万各行各业的用户采用,可以跟踪到的执行总次数已突破120亿次,用户使用RPA获得了3-10倍的效率提升
11241 0
超全干货分享:什么是RPA?
PAT有几个pat
字符串APPAPT中包含了两个单词“PAT”,其中第一个PAT是第2位§,第4位(A),第6位(T);第二个PAT是第3位§,第4位(A),第6位(T)。 现给定字符串,问一共可以形成多少个PAT?
134 0
|
Web App开发
XPathHelper使用
XPathHelper使用
163 0