

# Aurora DSQL と PostgreSQL
<a name="working-with"></a>

Aurora DSQL は、トランザクションワークロード用に設計された PostgreSQL 互換の分散リレーショナルデータベースです。Aurora DSQL は、パーサ、プランナー、オプティマイザー、型システムなどの主要な PostgreSQL コンポーネントを使用します。

Aurora DSQL 設計により、サポートされているすべての PostgreSQL 構文によって互換性のある動作が提供されるため、同一のクエリ結果が得られます。例えば、Aurora DSQL は PostgreSQL と同様の型変換、算術演算、数値の精度とスケールを提供します。偏差は文書化されます。

Aurora DSQL では、オプティミスティック同時実行制御や分散スキーマ管理などの高度な機能も導入されています。これらの機能により、PostgreSQL の使い慣れたツールを使用しながら、最新のクラウドネイティブな分散アプリケーションのパフォーマンスとスケーラビリティを活用できます。

## PostgreSQL の互換性に関するハイライト
<a name="dsql-pg-overview-compat"></a>

Aurora DSQL は現在 PostgreSQL バージョン 16 に基づいています。主なハイライトは次のとおりです。

**ワイヤプロトコル**  
Aurora DSQL は、標準の PostgreSQL v3 ワイヤプロトコルを使用します。これにより、標準の PostgreSQL クライアント、ドライバー、ツールとの統合が可能になります。例えば、Aurora DSQL は `psql`、`pgjdbc`、および `psycopg` と互換性があります。

**SQL 構文**  
Aurora DSQL は、トランザクションワークロードで一般的に使用される標準 PostgreSQL の式と関数を幅広くサポートしています。サポートされている SQL 式は、以下を含む PostgreSQL と同じ結果を生成します。  
+ null の処理
+ ソート順の動作
+ 数値オペレーションのスケールと精度
+ 文字列オペレーションの同等性
詳細については、「[Aurora DSQL での SQL 機能の互換性](working-with-postgresql-compatibility.md)」を参照してください。

**トランザクション管理**  
Aurora DSQL は、ACID トランザクションや PostgreSQL Repeatable Read に相当する分離レベルなど、PostgreSQL の主な特性を保持します。詳細については、「[Aurora DSQL での同時実行制御](working-with-concurrency-control.md)」を参照してください。

## 分散アーキテクチャのメリット
<a name="dsql-pg-overview-arch"></a>

Aurora DSQL の分散型で共有なしの設計により、従来の単一ノードデータベースを超えるパフォーマンスとスケーラビリティのメリットが得られます。主な機能は次のとおりです。

**オプティミスティック同時実行制御 (OCC)**  
Aurora DSQL は、オプティミスティック同時実行制御モデルを使用します。このロックフリーアプローチにより、トランザクションが互いにブロックされるのを防ぎ、デッドロックを排除し、高スループットの並列実行を可能にします。これらの機能により、Aurora DSQL は大規模で一貫したパフォーマンスを必要とするアプリケーションに特に役立ちます。その他の例については、「[Aurora DSQL での同時実行制御](working-with-concurrency-control.md)」を参照してください。

**非同期 DDL オペレーション**  
Aurora DSQL は DDL オペレーションを非同期的に実行します。これにより、スキーマの変更中に中断のない読み取りと書き込みが可能になります。分散アーキテクチャにより、Aurora DSQL は次のアクションを実行できます。  
+ DDL オペレーションをバックグラウンドタスクとして実行し、中断を最小限に抑えます。
+ カタログの変更を強力な整合性のある分散トランザクションとして調整します。これにより、障害時や同時操作時でも、すべてのノードでアトミックな可視性が確保されます。
+ コンピューティングレイヤーとストレージレイヤーが分離された複数のアベイラビリティーゾーン間で、完全に分散されたリーダーレスな方法で運用します。
PostgreSQL で EXPLAIN コマンドを使用する方法の詳細については、「[Aurora DSQL での DDL および分散トランザクション](working-with-ddl.md)」を参照してください。