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

  • Abel Avram
  • 百占辉

2015 年 10 月 29 日

话题:数据库语言 & 开发架构AI

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 读者交流群)。

数据库语言 & 开发架构AI