GaussDB
Spanner や CockroachDB, TiDB といったデータベースは shared-nothing アーキテクチャ(データを物理的に異なるパーティションに分けて異なるシャードに配置する)を採用しているが、GaussDB は shared-storage アーキテクチャ(ページを異なる writer に論理的に分割し、衝突検知やキャッシュコヒーレンスを利用する)を採用する。 GaussDB は3つのレイヤー(compute, memory, storage)に分けられている。レイヤー間は RDMA で通信できる。 Compute ノード:ページの一部を持つ。SQL の最適化やjikkou ,トランザクション管理やリカバリを行う。トランザクションに関連するページを持っていない場合は、そのオーナーシップを memory )(レイヤー取得してから処理を行う。
Memory ノード:ページのオーナーシップの管理や、バッファー管理、ロックの管理を行う。Memory レイヤーはステートレスであり、compute ノードの状態から復元できる。
Storage ノード:ページやログの保存、障害からの復旧を担当する。block-based な共通のファイルシステムを用いている。
性質
弾力性:compute(計算資源) と memory(ページ数)を別々にスケールアップできる。
耐障害性:
compute ノードがダウンしたら、memory チェックポイントを用いて復旧する。
memory ノードがダウンしたら、storage チェックポイントを用いて復旧する。
参考
Guoliang Li, Wengang Tian, Jinyu Zhang, Ronen Grosman, Zongchao Liu, and Sihao Li. GaussDB: A Cloud-Native Multi-Primary Database with Compute-Memory-Storage Disaggregation. PVLDB, 17(12): 3786 - 3798, 2024. doi:10.14778/3685800.3685806 (PDF)