Shirakami: A Hybrid Concurrency Control Protocol for Tsurugi Relational Database System

本論文は、短期トランザクションと長期トランザクションを同時に効率的に処理するために、Tsurugi 関係データベースシステム向けにマルチバージョンビュー直列化と Silo 方式を統合したハイブリッド並行制御プロトコル「Shirakami」を提案し、PostgreSQL よりも大幅に低い遅延と高いスループットを実現したことを示しています。

Takayuki Tanabe, Shinichi Umegane, Suguru Arakawa, Ryoji Kurosawa, Takashi Hoshino, Hideyuki Kawashima, Masahiro Tanaka, Takashi Kambayashi

公開日 2026-03-19
📖 1 分で読めます☕ さくっと読める

Each language version is independently generated for its own context, not a direct translation.

1. 問題:混雑するスーパーマーケットの悲劇

現代のスーパーマーケット(データベース)では、2 種類の客が同時にやってきます。

  1. 短時間の客(ショート取引)
    • 「牛乳とパンだけ買いたい!」という客。
    • すぐにレジを通り、サッと帰ります。
    • 例:スマホの通話料を計算する、在庫を 1 個増やす。
  2. 長時間の客(ロング取引)
    • 「全商品の原価を計算して、来月の仕入れ計画を立てる!」という客。
    • 店内をくまなく回り、棚をすべてチェックし、計算して、結果を書き換えます。
    • 例:工場の部品構成(BOM)の再計算、電話会社の請求書一括作成。

【従来のルール(既存のデータベース)
これまでのルールでは、この 2 種類の客が混ざると大混乱が起きました。

  • 長時間の客が棚(データ)を調べている最中に、短時間の客が「あ、ここ空いてる!」と思って同じ棚に手を伸ばすと、「衝突(コンフリクト)が起きます。
  • 従来のルールは「衝突したら、長い作業をしている客を強制的に中断(Abort)して、最初からやり直させます」という厳しいルールでした。
  • 結果: 長時間の客は「また中断させられた!」と怒って、何百回もやり直しをさせられ、いつまで経っても計算が終わらない。スーパーのレジは渋滞し、店全体が止まってしまうのです。

2. 解決策:新しいルール「シラカミ」の登場

この論文の著者たちは、「シラカミ」という新しいルール(プロトコル)を考え出しました。これは、「短時間の客」と「長時間の客」が、お互いに邪魔をせずに共存できる魔法のシステムです。

シラカミは、2 つの異なるルールを上手に組み合わせた**「ハイブリッド型」**です。

① シラカミ・LTX(長時間の客専用ルール)

  • 仕組み: 「書き込みの予告(Write Preservation)」という手紙を、作業を始める前に店長(システム)に提出させます。「私は今から A 棚から Z 棚まで全部チェックして書き換えますよ」と宣言します。
  • 効果: 短時間の客が「A 棚を使おう」とした瞬間、店長が「あ、LTX さんが今から使う予定ですよ」と教えてくれます。短時間の客は「じゃあ、別の棚で待ちましょう」と判断し、LTX さんの作業を邪魔しないように自ら退散(または待機)します。
  • メリット: 長時間の客は「中断させられる」ことがなくなり、スムーズに作業を完了できます。

② シラカミ・OCC(短時間の客専用ルール)

  • 仕組み: 従来の「楽観的ロック(OCC)」という、素早く動くためのルールを少し改良しました。
  • 効果: 短時間の客は、LTX さんの「書き込み予告」を常にチェックしながら動きます。もし衝突しそうなら、すぐに「ごめん、やり直します」と判断して、他の客を待たせずに素早く処理を完了します。
  • メリット: 短時間の客のスピードは落ちません。

③ 「順序の転送(Order Forwarding)」という魔法

これがシラカミの最大の特徴です。

  • 状況: 仮に、長時間の客(A)と短時間の客(B)が、同じ棚で衝突してしまったとします。
  • 従来のルール: 「B が先に動いたから、A は中断!」となります。
  • シラカミのルール: 「A は重要な作業だから優先する。でも、B も中断させたくない。だから、B の作業順序を『A の後』にずらして(転送して)、A が終わってから B が処理するようにします」
  • 結果: どちらも中断されず、**「A が先に終わって、その後に B が終わる」**という順序で、どちらも無事に完了します。まるで、渋滞している道路で、大型トラック(長時間客)が先に行き、その後に小型車(短時間客)が追いかけるように、順番を柔軟に調整しているのです。

3. 実証実験:どれくらい速くなった?

著者たちは、このシラカミを実際のデータベースシステム「ツルギ(Tsurugi)」に組み込んでテストしました。

  • 電話の請求計算(長時間作業)
    • 従来のデータベース(PostgreSQL)に比べて、19.7 倍も速く終わりました。
    • 従来のシステムでは、長時間の計算が終わる前に時間切れ(タイムアウト)して失敗していましたが、シラカミならサクサク終わります。
  • 部品の原価計算(長時間作業)
    • 従来のシステムに比べて、5.6 倍も速く終わりました。
  • 混合状態での性能
    • 短時間の客が大量にいる状況でも、長時間の客が680 倍もの効率で処理を進めることができました。

4. まとめ:なぜこれがすごいのか?

これまでのデータベースは、「短時間の客(普通の買い物)」と「長時間の客(大規模な計算)」を同時に処理するのが苦手でした。どちらかを犠牲にしないと、システムが止まってしまっていたのです。

シラカミ(Shirakami)は、「書き込みの予告」で衝突を避け、「順序の転送」で優先順位を柔軟に調整することで、「短時間の客も、長時間の客も、どちらも幸せに(高速に)を実現しました。

これは、スーパーマーケットの混雑を解消し、レジ待ちをなくすだけでなく、大規模な在庫整理も同時にスムーズに行えるようになる、未来のデータベースのあり方を示す素晴らしい研究です。


一言で言うと
「混雑するスーパーで、大規模な在庫整理をしている人(長時間取引)と、ちょっと買い物をしに来た人(短時間取引)が、お互いに邪魔し合わずに、スムーズに済ませられるようにした**新しい『店長ルール』**です。」