LoginSignup
23
15

More than 5 years have passed since last update.

RocksDB と SSD の親和性調査のまとめ

Last updated at Posted at 2016-10-02
1 / 12

Outline

(1) RocksDB Overview
(2) LevelDB Overview
(3) LevelDB Architecture
(4) RocksDB Architecture と LevelDB Architecture の違い
(5) RocksDB Performance Measurement
(6) RocksDB とSSDの親和性
(7) コメント・所感


RocksDB Overview [1/2]

  • 2013年にFaceBookから提案されたNo-SQL形式 (key-value形式) データベース
  • backend データベースとして利用される
  • 分散型アーキテクチャ、fail-over は重視していない
  • LevelDBの派生
  • LevelDBはアクセスエントリサイズがRAMサイズよりも小さいときに、アクセス遅延が小さい。RockDBは、RAMより大きいエントリでもアクセス遅延が小さい
  • Contribution: メモリにのり切らない一次記憶、二次記憶のデータアクセス遅延を気にしないで高速アクセス可能なデータベースアーキテクチャ

RocksDB Overview Overview [2/2]

開発目標
1)マルチコアCPUを持つサーバーでの拡張性
2)高速なストレージの効果的利用
3)技術革新のための柔軟性
4)I/Oバウンドやインメモリ、ライトワンスなどの作業のサポート


LevelDB Architecture [1/2]

アクセス頻度を利用した階層的なデータストアアーキテクチャ
- Write
mentableとLog Fileにデータエントリ書き込み
- flush/write
memtableがあふれたら SST (Sorted String Table) 書き込み
- Read
memtableまたはSSTからエントリ読み込み(後述)

image


LevelDB Architecture Overview [2/2]

  • memtable
    on-memoryにもつSST

  • Log Files
    Write処理で最初にエントリが格納されるファイル
    閾値サイズ以上になると、SSTとして出力される

  • SST (Sorted String Table)
    keyでソートされたエントリを保存
    階層的に管理されている
    SSTがあるLevelで閾値サイズになると、次のLevelにSSTをマージする

image


Read 処理の補足(thanks to @tatsuya6502 さん)

  • memtableとSSTにデータ自体が入っているため、RocksDBは、これらのテーブル位置を検索し、エントリを読み出す
  • Read処理シーケンス
    1. bloom filterでエントリテーブル位置を探す
    2. 1でエントリが見つからなかった場合、降順のLevel別にパーティション検索する ※ パーティション検索とは - Level0意外のLevelでは、SSTが複数存在する。複数のSSTがある場合、RocksDBでは、ハッシュキーをベースにSSTをパーティションしている。これによって、キーの検索範囲が狭まり、高速なエントリ検索を実現している

RocksDB Architecture と LevelDB Architecture の違い

Pluggable: 部分的な欠損があっても、全体のパフォーマンスや運用に影響しない
(1) pluggable file format (コード変更無しで、データ圧縮方式の変更可)
(2) pluggable compaction (データ圧縮タイミングの柔軟性)
(3) plugable memtable (SSTの個別定義可能にする)
(4) allow different files on different storage (デバイス種別に依存しないファイル保存可能)


RocksDB Performance Measurement

公式サイトから評価リンク消失
- 参考サイト
http://lmdb.tech/bench/ondisk/


RocksDB とSSDの親和性

  1. Tunable between device wear-out and read latency
    デバイス固有に発生するWrite/Read/Space Amplificationを隠蔽するようなチューニング可能

  2. Pluggable
    部分的なデバイス欠損にも対応可能なアーキテクチャ

  3. Optimized for fast storage
    e.g., ロックフリーのRead, CPU負荷の最適化


コメント・所感

  • 一次記憶、二次記憶媒体のアクセス遅延を意識させないアーキテクチャ構成
  • 従来、SSD はRnd W/R性能が評価されてきたため、Rnd性能が求められるアプリがHDDの置き換えで使っているにすぎなかった
  • RocksDBは、SSDのRnd W/R性能に加えてSeq W/R性能の向上も全体パフォーマンス向上させる

  • SSDとの親和性を確かめるために、他のDBアーキテクチャとの比較もしたい


Reference

23
15
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
15