BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース LinkedIn、リードオンリーキーバリュー型ストアのPalDBをオープンソース化

LinkedIn、リードオンリーキーバリュー型ストアのPalDBをオープンソース化

原文(投稿日:2015/10/27)へのリンク

LinkedInhが組み込み可能なリードオンリー・キーバリュー型ストア、PalDBをオープンソース化した。PalDBはLevelDBよりも8倍高速で、HashSetよりも数倍消費メモリが小さいという。

PalDBはJavaで書かれたライトワンス・キーバリュー型ストアで、LinkedInによってオープンソース化された。ストアを作成した後、すべての操作はリードオンリーだ。目的は、リード操作の改善とより小さなメモリフットプリントにある。LinkedInが推奨している用途は、サイドデータ(side data)の格納だ。彼らはサイドデータのことを「目的を果たすためプロセスが必要としている追加のリードオンリーデータ」と定義している。「自然言語処理アルゴリズムが使うストップワードのリストは、サイドデータの一例です。」

PalDBは組み込み可能で、スキーマを使わずに、データをバイナリファイルに保持する。そして、API経由のランダムデータアクセスを提供する。

PalDBはリード操作に最適化されており、LinkedInによると、そのパフォーマンスはHashMapやHashSetのような他のインメモリデータ構造に匹敵しつつ、使用メモリを大幅に削減しているという。これがLinkedInがPalDBの設計時に求めていた、大きなメリットの一つだ。例えば、100MのキーHashSetには500MB以上が必要になるが、PalDBであれば約80MBだけで済む。また、35MのメンバーIDにはHashSetで1.8GBのRAMが必要になるが、PalDBでは290MBしか必要としない。PalDBはフットプリントをより小さくするため、Snappyを使ってデータを圧縮する。

スピードに関して、LinkedInが実施したテストによると、PalDBは毎秒2Mリード、HashSetの6倍高速で、LevelDBやRocksDBの8倍高速だという。(MacBook Pro 3.1 GHz及び10Mのキーインデックスを使用)。

PalDBはメモリアクセスに最適化されている。データがディスクに保持されていると、パフォーマンスは大幅に低下するだろう。データサイズに制限はないが、インデックスのサイズには2GBの制限がある。PalDBはスレッドセーフでないことも知っておくべき重要なことだ。

この記事に星をつける

おすすめ度
スタイル

BT