20181121. Aurora Architecture Night メモ
表題のイベントに参加してきました。 ハイパー殴り書きです。Auroraすげーくらいの感想しかなかった。
postgresql compatibility
- pg10 に対応
- RDS Snapshot -> Aurora Migration
- 様々なExtensionをサポート
- GIS
- pgceypto
- plpgsql
- pg_hint_plan
- postgres_fdw
- dblink -> 関数として実装されている
- Aurora -> Redshift
- Redshiftに計算、集計をオフロードするなど
- Aurora -> Redshift
- 相変わらず pg_bigm と textsearch_ja がない
Concurrency
remove log buffer
- WAL Buffer -> buffer がいっぱいになるとワーカーが待たされる
- これがオーバーヘッドになると判断したらしいとか
- ワーカーが直接ストレージにアクセスする
- Durability tracking
- トランザクション管理
- なんだかわからなかったけど、すごそう
- WAL Buffer -> buffer がいっぱいになるとワーカーが待たされる
Checkpoint
- CheckPointがない
- Bufferがないからストレージ直接書き込み
- CheckPointがない
Redoしない
- ?
Vacuum
- XID周回問題
- CloudWatchにメトリクスがある
- freeze map
- 9.6から
- VACUUMすべきタプルを管理
- Aurora には Filesystem がない
- ?
- Intelligent VACUUM Prefech
- VACUUMが86%速い
Scalability
- 各AZに2つずつ、系6つのデーターのコピーを保持
- master / repllica が同じストレージを参照している
- Write のパフォーマンスが一定
- クラッシュリカバリをストレージ側で行う
Auroraの新機能
Backtrack
- 全てのログレコードを保持
- LSN(Logical Sequence Number)が付与されている
- ストレージ側が見せるブロック(LSN?)をヘッドノードに伝えることで制御している
- 最大3日
- 専用の領域を必要とするのでストレージ課金対象
- 常に一貫性のある時間にBacktrackを行う
- Votingが確定していることかな
- 全てのログレコードを保持
Aurora Serverless
- 完全マネージドな感じ
- 設定とかできない
- 軽いロードのDB向け
- proxy endpoint -> Request Router -> NLB -> DB
- ダウンタイムなしの自動スケールアウト
- 0からスケール
- 使わなければインスタンスだけ削除するという設定が可能
- 超かっこいい
parallel query
- クエリをストレージノードの数千のCPUにプッシュダウン
- クエリを分解 -> 分解されたクエリにパラレルクエリコンテキストなるメタデータを付与
- ストレージの台数分並列化する
- 16並列まで?
Aurora Multi Master
- Single Region Multi Master
- Multi Region Multi Master
- ダウンタイム0
- アプリ側に対応が必要
- conflict
- 1つの条件でのみコンフリクト解消のプロセスが発動する
- COMMIT先勝ち
- パーティショニングすることがコンフリクトを軽減するために有効
- Global replication physical
- ちょっと何を言っているのか
- 1sec以下の遅延
- レプリケーション専用インフラが背後に自動で作成
Auroraのなかみ
- キャシュレイヤーの分離
- ヘッドノードにはいるが、DBプロセスにいない
カスタムエンドポイント
- ヘッドノードのまとまりをつくれる
- キャッシュの取り回しのために使うなど
Quoram
ストレージノードが10GBごとの論理ブロックに分割
- なぜ10GBなのかはわからなかった
- protection groupという単位
- Auroraはクォーラムセットとエポックを使用
- ノードの正常性が疑わしい状態になったらエポックが作成される
epoc1 abcdef epoc2 abcdef(?) abcdeg(new) epoc3 abcdef(NG) abcdeg(OK)
- Auroraはデータページを全て送信することでレプリケーションしているわけではない
- 差分のみを送っている