【セッションレポート】Amazon Aurora DSQL アーキテクチャー詳細 #AWS Summit Japan 2025

AWS

2025.7.4

Topics

はじめに

こんにちは。Cold-Airflow です。
本記事は、AWS Summit Japan 2025 のセッション「Amazon Aurora DSQL アーキテクチャー詳細」のレポート記事です。

データベースを触っている方や、新しく登場した Aurora DSQL に興味がある方はご覧いただくと、とても勉強になるセッションだと思います。

ちなみに、本セッションは AWS Summit Japan サイトからユーザー登録いただくことでアーカイブ視聴が可能なセッションとなっておりますので、気になった方はぜひ見てみてください。
AWS Summit Japan 2025
ユーザー登録はこちらから

※本情報は、2025 年 6 月 30 日時点での情報となります。

セッション概要

タイトル

Amazon Aurora DSQL アーキテクチャー詳細(AWS-43)

スピーカー

新久保 浩二 様
アマゾン ウェブ サービス ジャパン合同会社 データ事業本部スペシャリストソリューション本部 シニア PostgreSQL スペシャリストソリューションアーキテクト

概要

Amazon Aurora DSQL アーキテクチャー詳細
Amazon Aurora DSQL は、何十年にもわたる Amazon の革新と優れた運用性を生かした、新しいサーバーレスの分散型 SQL データベースです。
新しいアプリケーションや高い耐障害性を必要とするアプリケーションにとって Aurora DSQL が理想的な選択肢となっている設計と主要な革新的テクノロジーについて詳しく説明します。
Aurora DSQL のアクティブ – アクティブアーキテクチャーが、シングルリージョンとマルチリージョンのレジリエンシーと事実上無制限のスケーリングを実現する方法を学んでいただけます。

レポート

本セッションは、Aurora DSQL のアーキテクチャーが実際にどう動作するのかが、例を用いて詳しく解説されていました。
各コンポーネントまで踏み込んだ技術的な話になっているので、非常に面白いセッションでした。

また、本セッションはかなり内部の詳しい話まで説明されているため、セッションレベルも高く設定されています。
そのため、本レポートでは、個人的に面白いと思ったポイントを 3 つに絞ってご紹介します。

  1. DSQL の各コンポーネントのスケール動作
  2. 読み取りの分離(Isolation) マルチバージョニング
  3. マルチリージョン構成でのフェイルオーバー動作

なお、用語がわからない方に向けて、適宜用語の説明を付け加えています。

Amazon Aurora DSQL とは何か?

はじめに、Aurora DSQL についての説明を簡単にまとめます。

  • トランザクション処理に最適化された SQL データベース
    • 通常の RDB と同じように使える
    • BI のバックエンドといった重い SQL を処理するために最適化されているわけではない
  • 拡張性に優れている
    • 複数のマイクロサービスで分けている
    • それによって柔軟にスケールすることができている
  • サーバーレス
    • ユーザーから見えるのはエンドポイントだけ
    • インスタンス管理の煩わしさがない
  • アクティブ-アクティブ マルチリージョン
    • シングルリージョン(マルチ AZ)でも使える
    • アクティブ-アクティブは読み込み書き込みが独立して実行できる
    • アクティブ-アクティブでも強い一貫性がある
    • レプリカのラグがなく完全同期されている
  • PostgreSQL との互換性
  • AWS の経験をもとに構築
    • 今までのテクノロジーを元として Aurora DSQL が新しくできている

なお、Aurora DSQL は少し前に GA されています。
Amazon Aurora DSQL の一般提供開始 | Amazon Web Services ブログ

Aurora DSQL の各コンポーネントのスケールについて

Aurora DSQL は、大きく 5 つのコンポーネントで構成されています。

  1. トランザクションとセッションルーター
  2. Query processor (PostgreSQL 由来)
  3. Adjudicator (トランザクション競合の裁定)
    1. 書き込みが発生した際に使う
    2. 競合が無いければコミットされる
  4. Journal (トランザクションログ)
  5. Storage (MVCC や処理のオフロード)

コンポーネントについてかなり詳しく解説されていましたが、特に面白いなと思ったのが「Query processor」です。

「トランザクションとセッションルーター」で接続を受けたあとに、トランザクションが開始された場合は「Query processor」がアサインされます。

通常の RDB であれば、最大接続数は一つの筐体のリソースに依存しています。
ただし、Aurora DSQL は「Query processor」が裏に数万~数十万スタンバイしているので、必要に応じてスケールできるため、大量のセッションを行いたい場合でも問題ないようです。

このスケール動作は、他のコンポーネントでも同様のようです。
そのため、コンポーネントを分けることによりスケールしやすい構成になっているようです。

読み取りの分離(Isolation) マルチバージョニング

RDB は、トランザクション ID といった一意の値を用いて、トランザクションの前後の値かを判別します。

しかし、Aurora DSQL は筐体が異なる可能性もあるので、ローカルのトランザクション ID を用いると正誤判別ができません。
そのため、Aurora DSQL では時計を使うことにしたようです。

単純な時計を使っても時刻のズレが大きいため、EC2 の Amazon Time Sync Service という正確でグローバルに使える時計を使って評価を行っています。

NTP で配信される時刻同期サービスで、各リージョンで冗長化している衛星接続の原子時計を使って高精度な時刻参照を提供します。
Amazon Time Sync Service で時間を維持する | Amazon Web Services ブログ

ちなみに、最近のアップデートにより、ナノ秒精度のハードウェアパケットタイムスタンプをサポートするようになったようです。
Amazon Time Sync Service がナノ秒ハードウェアパケットタイムスタンプをサポート – AWS

実際に読み取りのリクエストが発生した場合の挙動は以下の通りです。

  1. 「Query processor」でトランザクションが開始した場合にグローバルの時間を取得
  2. 取得した時間に合ったデータを「Storage」にリクエスト
  3. 「Storage」が時間とバージョンが適切なデータを返す

この仕組みは一般に「MVCC(多版型同時実行制御)」と言われています。

「更新可能なオブジェクトを不変な版(version)の系列と見なす」
増永教授の DB 特論 ⑧「MVCC」

Aurora DSQL では、Storage がこの MVCC を担保しているようです。

トランザクションの話は以下のブログにより詳しく解説されています。
Amazon Aurora DSQL の同時実行制御 | Amazon Web Services ブログ

マルチリージョン構成でのフェイルオーバー動作

Aurora DSQL は、アクティブ-アクティブのマルチリージョン構成が可能です。

基本的には、マルチリージョンでどちらかのリージョンが障害になると、フェイルオーバーの作業が必要になります。
しかし、Aurora DSQL であれば、データベースレイヤーでユーザーが切り替えるという作業が不要になります。

ただし、Aurora DSQL はリージョンごとにエンドポイントが提供されるため、アプリレイヤーでのエンドポイント切り替えは必要になるので注意が必要です。

Aurora DSQL アクティブ-アクティブ マルチリージョン構成

出典:Amazon Aurora DSQL アーキテクチャー詳細

この際、リージョン B はウィットネスリージョンと表現されます。

第 3 のリージョンがウィットネスリージョンとして機能します。ウィットネスリージョンは、リンクされたクラスターに書き込まれたデータを受け取りますが、クラスターや関連エンドポイントは持ちません。
暗号化されたトランザクションログの限定的なウィンドウを保存し、Aurora DSQL がマルチリージョンの耐久性と可用性を提供するために使用されます。
Amazon Aurora DSQL の紹介 | Amazon Web Services ブログ

ユーザー側は意識しないですが、内部的には一部はフェイルオーバーしているようです。

Aurora DSQL リージョンCで障害が発生した場合の構成

出典:Amazon Aurora DSQL アーキテクチャー詳細

まとめ

とても面白いセッションで勉強になりました。

OLTP のデータベースが持つ苦手な部分を、解決した新しいデータベースサービスが Aurora DSQL です。
書き込みをよりスケールさせたいアプリケーションでは、Aurora DSQL を採用してみても良いかもしれません。

ただし、現状だと一部機能で制限があったり MVCC 特有の処理が必要なため、導入する際は慎重に検討が必要だと思います。

Aurora DSQL での SQL 機能の互換性 – Amazon Aurora DSQL
Amazon Aurora DSQL の使用に関する考慮事項 – Amazon Aurora DSQL

なお、本セッションのベースは、re:Invent 2024 のセッション内容ですが、割愛されている内容や簡素化されている内容もあるので以下も合わせて見るとより詳しく理解することができます。
AWS re:Invent 2024 – Deep dive into Amazon Aurora DSQL and its architecture (DAT427-NEW) – YouTube

参考

Amazon Aurora DSQL の紹介 | Amazon Web Services ブログ
ACID データベースと BASE データベース – データベースの違い – AWS

テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!

Cold-Airflow

2021年新卒入社。インフラエンジニアです。RDBが三度の飯より好きです。 主にデータベースやAWSのサーバレスについて書く予定です。あと寒いのは苦手です。

Recommends

こちらもおすすめ

Special Topics

注目記事はこちら