写点什么

LinkedIn 开源 PalDB,一个只读的键值存储数据库

  • 2015 年 10 月 29 日
  • 本文字数:777 字

    阅读完需:约 3 分钟

LinkedIn 开源了 PalDB,一个可嵌入的键值对存储数据库,比 LevelDB 快 8 倍,并且内存占用比 hashset 少数个量级。

PalDB 是一个由 LinkedIn 开源并使用 Java 编写的一次写入键值存储数据库。当存储创建后所有的操作都是禁止的,它是只读的。这样做的目的是提升读操作的性能并降低内存占用。LinkedIn 的建议是使用它来存储 _side data_,他们对于 side data 的定义是“一个过程以完成其工作而需要的额外的只读数据。例如,被自然语言处理算法所使用的一系列已经停止使用的词汇就是 side data”。

PalDB 是可嵌入的,它不使用模式并将数据保存在二进制文件之中。它提供了随机数据访问的 API

据 LinkedIn 所说,它优化了读操作,性能可与类似于 HashMap 和 HashSet 这样的常驻内存的数据结构一较高下,同时需要的内存显著减少,这些特性是公司在设计它时苦苦追求的。例如,一个含有 100M 键的 hashset 需要超过 500MB 的内存而 PalDB 只需要大约 80MB。或者,35M 个用户 ID 使用 hashset 存储需要 1.8GB 的内存而 PalDB 只需要 290MB。在 PalDB 中使用 Snappy 来压缩数据的话将会使用更少的内存。

在速度方面,LinkedIn 的性能测试显示 PalDB 拥有 2M 读 / 秒的性能,或者说比 HashSet 快 6 倍,比 LevelDB 或 RocksDB 快 8 倍,这个测试环境是 MacBook Pro 3.1 GHz 和一个 10M- 键索引。

PalDB 优化了存储访问。将数据存储在磁盘上将会导致相当差的表现。尽管没有限制数据的大小,索引的大小限制为 2GB。此外,重要的是要知道 PalDB 不是线程安全的。

查看英文原文: LinkedIn Open Sources PalDB, a Read-only Key-value Store


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015 年 10 月 29 日 19:007930
用户头像

发布了 32 篇内容, 共 16.7 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

说说个人影响力

张老蔫

28天写作

为什么MySQL字符串不加引号索引失效?《死磕MySQL系列 十一》

咔咔

MySQL 索引失效

浅谈MySQL中的游标

麦洛

MySQL 游标

Spring 扩展之深入分析 PropertyPlaceholderConfigurer

chenssy

死磕 Java 死磕 Spring

Spring 扩展之自定义类型转换器

chenssy

死磕 Java 死磕 Spring

字典树之旅01.开篇

极客志

自然语言处理 数据结构 算法 nlp 字典树

什么?还在用delete删除数据《死磕MySQL系列 九》

咔咔

MySQL delete

Spring 扩展之深入分析 BeanPostProcessor

chenssy

死磕 Java 死磕 Spring

Spring 扩展之深入分析 InitializingBean 和 init-method

chenssy

死磕 Java 死磕 Spring

毕业设计

毛先生

年后跑路第一战,从Java泛型学起!

麦洛

Java Java泛型

TypeScript 之 Class(上)

冴羽

JavaScript typescript 翻译 大前端

Spring扩展之 深入分析 Aware 接口

chenssy

死磕 Java 死磕 Spring

手把手教你实现网页端社交应用中的@人功能:技术原理、代码示例等

JackJiang

即时通讯 IM web socket

MySQL统计总数就用count(*),别花里胡哨的《死磕MySQL系列 十》

咔咔

MySQL conut

打开order by的大门,一探究竟《死磕MySQL系列 十二》

咔咔

order by MySQL高级

Spring 扩展之深入分析 BeanFactoryPostProcessor

chenssy

死磕 Java 死磕 Spring

38 K8S之CNI插件与选型

穿过生命散发芬芳

k8s 28天写作 12月日更

低代码实现探索(七)赋能产品架构如何做定制化

零道云-混合式低代码平台

字符串可以这样加索引,你知吗?《死磕MySQL系列 七》

咔咔

MySQL 字符串 加索引

Spring 扩展之深入分析 PropertyOverrideConfigurer

chenssy

死磕 Java 死磕 Spring

在K8s里部署Eureka集群

xiaoboey

Kubernetes Spring Cloud Eureka Gateway 服务发现

毕业总结

毛先生

架构实战营 第4期 模块一作业

架构实战营 模块一 「架构实战营」

面试官synchronized连环问,学会Monitor之后轻松拿下

李子捌

Java、 28天写作 12月日更

大湾区的“科创土壤学”

脑极体

无法复现的“慢”SQL《死磕MySQL系列 八》

咔咔

MySQL 慢SQL

10 款你不知道的 Linux 环境下的替代工具!

JackTian

GitHub Linux 程序员 运维 命令行终端

Spring 扩展之之 PropertyPlaceholderConfigurer 的应用

chenssy

死磕 Java 死磕 Spring

Spring 扩展之深入分析 Bean 的类型转换体系

chenssy

死磕 Java 死磕 Spring

架构训练营作业一

supermenG

架构师训练营 4 期

LinkedIn开源PalDB,一个只读的键值存储数据库_数据库_Abel Avram_InfoQ精选文章