Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LSMツリー

Avatar for 北村 北村
September 01, 2025
17

 LSMツリー

Avatar for 北村

北村

September 01, 2025
Tweet

Transcript

  1. 自己紹介 • 出身 ◦ 大阪府枚方市 ◦ 3年前から札幌住み • 業務 ◦

    SIer ◦ デバイスドライバ関係 • 趣味 ◦ テニス、フットサルやってます ◦ お笑いが好きです
  2. 話すこと • LSM-Tree について ◦ LSM-Treeとは ◦ 全体像 ◦ Get

    (Read) ◦ Put (Write) ◦ Delete ◦ Compaction • デモ(時間あれば)
  3. 全体像 • MemTable ◦ データ読み書き用のメモリバッファ ◦ データが溜まったら ファイル(SSTable)に書き込む • SSTable(Sorted

    String Table) ◦ キーでソートされたファイル ◦ MemTableの内容をキーで並び変えて、 作成されるファイル • WAL(Write Ahead Log) ◦ DBに対する変更ログ ◦ 障害復旧などで使用する サーバ ストレージ メモリ WAL SSTable MemTable SSTable
  4. Get (Read) 処理 サーバ ストレージ メモリ WAL SSTable MemTable SSTable

    クライアント get “key1” ①メモリにあれば、メ モリから返す ②メモリになければ、 ファイル(SSTable) を読んで返す
  5. Put (Write) 処理 サーバ ストレージ メモリ WAL SSTable MemTable SSTable

    クライアント put “key1” “value1” ②メモリにデータを格 納 ③メモリが一定のサイズを超えた ら、新しくSSTableを作成する(この 動作をFlushと呼ぶ) ①WALに更新情報を 書き込む
  6. Delete 処理 サーバ ストレージ メモリ WAL SSTable MemTable SSTable クライアント

    delete “key1” ②削除フラグを立てたデー タを格納(※) ③メモリが一定のサイズを超えた ら、新しくファイルを作成する (Flush) ①WALに更新情報を 書き込む ※やっている事は Put と変わらない  =データ削除のたびにファイルを書き換える必要がない ③メモリが一定のサイズを超えた ら、新しくSSTableを作成する(この 動作をFlushと呼ぶ)
  7. Compaction 処理 サーバ ストレージ メモリ WAL SSTable MemTable 複数の SSTable

    から一つの新しい SSTable を作成する(Compaction) この時に古いデータを削除する。 サーバ ストレージ メモリ WAL SSTable1 MemTable key1 : value1 SSTable2 key1 : value2 key1 : value2 ※SSTable2は、SSTable1より新しいとする Compatcion前 Compatcion後