Each language version is independently generated for its own context, not a direct translation.
🏠 背景:なぜ新しいシステムが必要なの?
現代のインターネットサービス(EC サイトや SNS など)は、膨大なデータを扱っています。このデータを安全に保存するために、多くのシステムは**「Raft(ラフト)」という「合意形成のルール」と、「LSM ツリー」**という「データの整理術」を組み合わせて使っています。
しかし、ここには**「無駄な作業」**が潜んでいました。
📦 従来の仕組みの「無駄な動き」
Imagine 想像してみてください。あなたがスーパーマーケットで「牛乳(データ)」を棚に並べる作業をしているとします。
- ルールブックへの記録(Raft ログ): 「誰がいつ牛乳を置いたか」を、全店員が共有するルールブックに書き込みます。
- 作業メモ(WAL): 作業中のメモ帳に「牛乳を置いた」と書き込みます。
- 棚への配置(SSTable): 実際の牛乳を棚に並べます。
問題点: 牛乳(データ)そのものが3 回も書き込まれるのです!
- ルールブックに「牛乳」と書く。
- メモ帳に「牛乳」と書く。
- 棚に「牛乳」を置く。
さらに、棚が混んできたら、整理のために**「棚の入れ替え(コンパクション)」**という重労働が発生し、牛乳を何度も持ち運ばなければなりません。
これが、データの書き込みが重く、遅くなる原因でした。
🚀 Nezha(哪吒)の解決策:「中身」と「住所」を分ける!
Nezha は、この無駄を劇的に減らすために、「中身(値)」と「住所(キー)」を分けるという大胆なアイデアを採用しました。
🏷️ 1. 「中身」と「住所」の分離(Key-Value Separation)
Nezha は、ルールブック(Raft)に**「牛乳そのもの」を全部書き込むのではなく、「牛乳の保管場所(住所)」だけ**を書き込むようにしました。
- 従来のやり方: ルールブックに「牛乳 1 リットル」を 3 回コピーして書く。
- Nezha のやり方:
- 牛乳(データ)を1 回だけ、専用の倉庫(ValueLog)に置きます。
- ルールブックには「倉庫の A 列 3 段」という**「住所」**だけを書きます。
メリット:
- 書き込みが爆速: 重い牛乳を 3 回コピーする代わりに、軽い「住所」だけをコピーすれば OK です。
- 整理が楽: 棚の入れ替え(コンパクション)をするときも、重い牛乳を運ぶ必要がなく、軽い「住所」だけを書き換えれば済みます。
結果: 書き込み速度が約 4.6 倍に向上しました!
🧹 2. 掃除屋(GC)の新しい働き方
「住所」だけを書き込むと、古い住所がルールブックに散らばってしまいます。これを整理する「掃除(Garbage Collection: GC)」が必要ですが、ここで新しい問題が生まれます。
- 問題: 掃除中に新しい注文が入ると、データがバラバラになってしまい、読み取りが遅くなったり、システムが止まったりする恐れがあります。
Nezha は、この掃除を**「3 つのフェーズ(段階)」**に分けて行うことで、掃除中でもお店を止めずに営業できるようにしました。
- 掃除前(Pre-GC): 普通の営業。
- 掃除中(During-GC):
- 新しい注文は**「仮のカウンター(New Storage)」**で受け付けます。
- 古いデータは**「古い倉庫(Active Storage)」**に残したまま、裏側で整理作業をします。
- 顧客は、どちらのカウンターからでも最新の牛乳がもらえるように、システムが自動で探します。
- 掃除後(Post-GC): 整理された新しい倉庫(Sorted ValueLog)にデータが整然と並び、検索が爆速になります。
メリット:
- 読み取り速度も落ちません。むしろ、整理された棚のおかげで、「特定の牛乳を探す(Get)」や「牛乳からビールまで探す(Scan)」のが約 1.2 倍〜1.7 倍速くなりました。
🌟 まとめ:Nezha がすごい理由
Nezha は、**「Raft(合意形成)」と「データ保存」という 2 つの異なる世界を、まるで「注文」と「配送」**を一体化させるように深く結びつけました。
- 従来のシステム: 「重い荷物を何度も運んで、何度も記録する」→ 遅い。
- Nezha のシステム: 「重い荷物は 1 回だけ運び、記録するのは『住所』だけ。掃除中でも営業を止めない」→ 超高速で、安全。
実験結果:
- データの書き込み(Put): 460% 向上(約 4.6 倍)
- データの読み込み(Get): 12.5% 向上
- 範囲検索(Scan): 72.6% 向上
まるで、**「重い荷物を運ぶトラックを減らし、代わりにナビゲーター(住所)だけを素早く配る」**ようなシステムです。これにより、クラウドやビッグデータ処理の未来が、より速く、安く、効率的になることが期待されています。