自分の機嫌を取ることをサボらずに
この記事は自分用の備忘録です。
サーバーの増強には2つの考え方がある。
「スケールアップ」と「スケールアウト」だ。
スケールアップとは
- PC自体を賢くするやつ 垂直的
- CPUコア数の増強
- メモリの増設
- GPUの追加
- AWSとかだとインスタンスのタイプを変更したり等で拡張する
- PCが1台だとすると、スケールアップの作業中にダウンタイムが発生してしまうので、頻繁に切り替えるのはよくない
スケールアウトとは
- PCを増やして賢くするやつ 水平的
- 増やせば増やすほど全体として高性能になる
- PCがたくさんあるので、スケールアウトの作業中にダウンタイムが発生しないから安心
データベースの設計者視点で考えること
- スケールアウトしすぎるとACID特性の維持が困難になる
- 異なるノード間で処理が行われるため
- スケールアウトされた分散システムでは、分散トランザクションの同期オーバーヘッドが大きくなりパフォーマンスも落ちる
- ACID特性の保証を諦めて「最終的な一貫性」を重視するなどで対応するらしい
感想
- スケールアップ/スケールアウトについてはなんとなく知っていたが、ACID特性との関連については考えたことはなかったので良い学びになった
参考