ForgeVision Engineer Blog

フォージビジョン エンジニア ブログ

【re:Invent 2024】Aurora の Deep Dive セッションを受講したら、DSQL まで学べた話

2024/12/10 更新
YouTube が公開されました。

youtu.be


こんにちは、AWS グループの尾谷です。

re:Invent 2 日目、非常に満喫させていただいております。

今日は、Aurora の Deep Dive セッションを受講しました。
Level 400 Dive Deep ということで、Aurora の内部構造まで解説される非常にマニアックなセッションでした。
更に、AWS の新 CEO である Matt Garman さんが当日に発表されていた DSQL まで学べたので、その内容をアウトプットします。

Amazon Aurora 10 周年に相応しい、DSQL のアーキテクチャを是非、一緒に学べれば幸いです。

セッション情報

セッション情報
DAT405: Deep dive into Amazon Aurora and its innovation

スピーカー Grant McAlister
Senior Principal Engineer

Grant さんは、データベースエンジニアとして 15 年以上の経験者で、データベース関連の業務に 20 年以上従事されているそうです。
また、RDS のローンチに貢献し、Dyanmodb と Redshift の初期の作業にも参加したということで、AWS データベース界隈のレジェンとお見受けしました。

そうした肩書きを拝見し、非常に期待しながら受講しました。
その結果、Aurora の裏側の仕組みや、ノードに Intel を選択した場合と、Graviton を選択した場合の比較などもあり、非常に参考になるセッションでした。

セッション概要
With an innovative architecture that decouples compute from storage and advanced features like Amazon Aurora Global Database and low-latency read replicas, Aurora reimagines what it means to be a relational database.

コンピューティングリソースとストレージを切り離す革新的なアーキテクチャと、グローバルデータベース低レイテンシーのリードレプリカのような先進的な機能を持つリレーショナルデータベース Aurora の仕様を再考します。
Aurora は、オープンソースの MySQL と PostgreSQL と完全な互換性を備えた、比類のないパフォーマンスと高可用性を提供する最新のデータベースサービスです。

このセッションでは、Aurora が提供する以下の最もエキサイティングな新機能に深く飛び込みます。

  • Aurora PostgreSQL Limitless Database
  • Aurora I/O Optimized
  • Aurora zero-ETL integration with Amazon Redshift
  • Aurora Serverless v2

さらに、PGVector 拡張の添加により、ベクターの埋め込みの保存と、生成 AI のベクター類似性検索のサポートがどのように可能かを学びます。

セッションで解説された項目

上記のセッション情報から、期待を持って参加しましたが、予想外に DSQL の仕様までしっかりお聞きすることができ、嬉しい収穫になりました。
以下が説明された内容です。(スライドのタイトルをざっくりと記載しています)

  • Amazon Aurora について
  • ストレージとレプリカの仕組み
  • ローカルの書き込みとフォワーディング
  • Aurora グローバルデータベースの仕組み
  • グローバルエンドポイント
  • ストレージノード
  • アップデート情報
  • パフォーマンス比較
  • Aurora Serverless の仕組み
  • Aurora Serverless のスケール時のパフォーマンス
  • Serverless データ API
  • ゼロダウンタイムパッチ (ZDP)
  • マイナーアップデート、パッチアップデート
  • Blue/Green デプロイメント
  • Zero ETL
  • Aurora I/O-Optimized
  • Optimized Reads
  • Aurora Limitless Database
  • 強い整合性
  • Aurora DSQL

Aurora DSL

本ブログでは、特に印象に残った DSQL 部分に焦点を絞ってアウトプットしたいと思います。

リリース時期に関して

現在は、パブリックプレビュー版で公開されています。
リクエストなく利用できます。

マネジメントコンソールでアクセスすると、東京リージョンではまだサポートされていないよ。
とメッセージが表示されました。
以下リージョンが対象のようです。

  • 米国東部 (バージニア北部)
  • 米国東部 (オハイオ)

バージニア北部の管理コンソールにアクセスすると、Amazon Aurora DSQL Serverless distributed SQL database が表示されました。

セッションでも、Grant さんがフィードバックが必要で、仕様が変わる可能性があると仰っていました。

互換性に関して

DSQL は、Postgres に完全に互換性のあるのではなく、SQL の結果が同じになるという意味だそうです。
マルチライター方式で、楽観的な並行制御にて、アクティブ/アクティブで書き込みします。
トランザクションがぶつからないように、DSQL ログストアに格納し、一貫した読み込みを行います。
真のマルチライターシステムなので、どこにでも書くことができます。

データの整合性

楽観的な並行性制御なので、送信されてきたコマンドは、最初のものが勝ち、もう 1 つがエラーになります。

各 AZ に保存されたブロックから、それぞれのノードがそれぞれのブロックに読み取りを行うと、キャッシュの一貫性がなく情報にズレが生じます。
ストレージを読み込むと一貫性がありますが、ストレージの読み込みにはかなり時間がかかることがあるため、Aurora 開発チームはプッシュダウンを構築して、読み方の仕組みを最適化したそうです。

マルチライターの双方のローカルにストレージを持っていて、複数 AZ のいずれかに書きこむことができるので、真の意味でマルチアクティブになっています。

Matt の Keynote で語られた「最適化」は、すべての書き込み、すべてのアップデートですべての往復旅行をしているわけではなく、コミット時間にのみ確認しています。
確かに、Matt さんの Keynote では、世界レベルで Amazon Time Sync Service が同期している話がありました。
同時に書きこむということは、どちらが先に書き込みしたかを正確に判定する必要があり、コミット時間は非常に重要になると感じました。

DSQL を利用すると、リージョン全体で RPO ゼロが必要なシステムを構築できます。

その他クォータなど

現在のプレビュー版では、10,000 行と 5 分という制限があり、今後、変更が行われる予定とのことでした。
(ここは利用する際に、クォーターを調べておきたいと感じました。)

最後にもフィードバックを求めると仰っていました。
帰国したら、試してみて、フィードバックに協力したいと思います。

まとめ

まだ、概念レベルでしか理解ができていませんが、AWS のグローバルインフラストラクチャと非常に高度な技術が生み出した DSQL に未来を感じたセッションでした。
最後までお読みくださり、ありがとうございました。