# H-Store
## 概要
H-Store は、OLTP ワークロードに特化した実験的データベース管理システムである。[[Michael Stonebraker]]、[[Samuel Madden]]、[[Daniel J. Abadi]] らが [[MIT]]・[[Brown University]]・[[Carnegie Mellon University]]・[[Yale University]] の 4 大学共同で開発した。2007 年の VLDB 論文([[@2007__VLDB__The End of an Architectural Era (It's Time for a Complete Rewrite)]])で設計が発表された。
## 設計原則
H-Store は従来の RDBMS から以下の 4 つのコンポーネントを除去することで、1〜2 桁のスループット向上を実現する。
1. **バッファプール管理の除去**: すべてのデータを主記憶に常駐させ、ディスク指向のページ管理を廃止する
2. **ロックマネージャの除去**: パーティション単位の単一スレッド逐次実行により、明示的なロック取得・解放を不要にする
3. **WAL の除去**: Undo ログを廃止し、Redo ログはコマンドロギング(トランザクション呼び出しの記録のみ)に置き換える
4. **ラッチ制御の除去**: 単一スレッド実行により共有データ構造への排他制御が不要になる
## アーキテクチャ
- **シェアードナッシング構成**: データベースを複数のサイト(物理ノード)に水平分割する
- **主記憶常駐**: パーティション内のすべてのデータを主記憶上に配置する
- **パーティション専有**: 各パーティションは 1 つの CPU コアに排他的に割り当てられる
- **ストアドプロシージャ**: すべてのトランザクションは事前定義・事前コンパイルされたストアドプロシージャとして実行する
- **K-safety**: 各パーティションの K 個のレプリカを保持し、高可用性を確保する
## 性能
TPC-C ベンチマークにおいて商用 RDBMS の約 82 倍のスループットを達成した。
## 後継
2009 年に VoltDB 社が設立され、H-Store の設計を商用化した。VoltDB は H-Store の設計原則を継承しつつ、運用機能(監視・ローリングアップグレード等)を追加している。H-Store 自体の最終リリースは 2016 年であり、BSD / GPL ライセンスで公開されている。
## NewSQL の先駆
H-Store は **NewSQL** カテゴリの先駆的システムとして位置づけられる。NoSQL のスケーラビリティと高可用性を、ACID トランザクションの整合性保証を犠牲にすることなく実現するアプローチを最初に示した。
## 関連
- [[@2007__VLDB__The End of an Architectural Era (It's Time for a Complete Rewrite)]] — H-Store の設計論文
- [[@2005__ICDE__One Size Fits All - An Idea Whose Time Has Come and Gone]] — H-Store の思想的基盤
- [[専用データベースシステム]] — H-Store が具体化した概念
- [[Michael Stonebraker]]・[[Samuel Madden]]・[[Daniel J. Abadi]]・[[Stavros Harizopoulos]]・[[Pat Helland]] — 主要設計者・共著者
## 出典
- [[@2007__VLDB__The End of an Architectural Era (It's Time for a Complete Rewrite)]](本 wiki での初出)