Database
既存のDBの問題点
今の形に落ち着いたときの設計思想
制約条件(1970年)
メモリ 100万円/MB
HDD 0.1万円/MB <- これを頑張って使うぞ!
ランダムアクセスは遅い
シーケンシャルアクセスは早い
電源が落ちてもデータは消えない
メモリをバッファプール(キャッシュ)として使っていた
もしメモリが溢れたらdiskに書き戻さなければいねない。しかし、不完全なトランザクションの場合、途中で電源が切れたら半端に実行されたデータが残り不整合が起きる。
トランザクション進行中(一貫性なし)にメモリをdiskに書き戻したい
有限のメモリで
メモリに乗り切らないトランザクションも解決できる
しくみ
ログとバッファプールとリカバリは密結合という思想
バッファプールにデータを書いて、そのデータがディスクにログとして書き出される必要がある
ページがキャッシュとしてスワップアウトされるより先に(ページの?)ログがディスクに着弾する
Write ahead logging
ログの方がページの書き戻しより先にくる
このときトランザクションが終わってない一貫性のないデータかもしれないので、トランザクション終わってない印をつけておく