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存储结构
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值