

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# SaaS アプリケーションのデータベースの選択
<a name="db-selection"></a>

多くのマルチテナント SaaS アプリケーションでは、運用データベースの選択をリレーショナルデータベースと非リレーショナルデータベース、またはこれら 2 つの組み合わせに絞り込むことができます。決定を行うには、以下の高レベルのアプリケーションデータ要件と特性を考慮してください。
+ アプリケーションのデータモデル
+ データのアクセスパターン
+ データベースのレイテンシー要件
+ データ整合性とトランザクション整合性の要件 (不可分性、整合性、分離性、耐久性、ACID)
+ リージョン間の可用性と復旧の要件

次の表は、アプリケーションデータの要件と特性を一覧表示し、 AWS データベースサービスのコンテキストでそれらについて説明します。Aurora PostgreSQL 互換および Amazon RDS for PostgreSQL (リレーショナル）、および Amazon DynamoDB (非リレーショナル）。このマトリックスは、リレーショナル運用データベースと非リレーショナル運用データベースのどちらを提供するかを決定しようとしているときに参照できます。


****  

| 
| 
| **データベース** | **SaaS アプリケーションデータの要件と特性** | 
| --- |--- |
| **データモデル** | **アクセスパターン** | **レイテンシー要件** | **データおよびトランザクションの整合性** | **リージョン間の可用性と復旧** | 
| --- |--- |--- |--- |--- |
| **リレーショナル** (Aurora PostgreSQL 互換および Amazon RDS for PostgreSQL)  | Relational or highly normalized. | Doesn’t have to be thoroughly planned beforehand. | Preferably higher latency tolerance; can achieve lower latencies by default with Aurora and by implementing read replicas, caching, and similar features. | High data and transactional integrity maintained by default. | In Amazon RDS, you can create a read replica for cross-Region scaling and failover. [Aurora はこのプロセスをほとんど自動化します](https://aws.amazon.com/blogs/database/aurora-postgresql-disaster-recovery-solutions-using-amazon-aurora-global-database/). For active-active configurations across multiple AWS リージョン, you can use [書き込み転送](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database-write-forwarding.html) in conjunction with [Aurora Global Database ](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database.html).  | 
| **非リレーショナル** (Amazon DynamoDB)  | Usually denormalized. These databases take advantage of patterns for modeling [many-to-manyリレーションシップ](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-adjacency-graphs.html), [大きな項目](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-use-s3-too.html), and [時系列データ](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-time-series.html). | All access patterns (queries) for data must be thoroughly understood before a data model is produced. | Very low latency with options such as Amazon DynamoDB Accelerator (DAX) able to improve performance even further. | Optional transactional integrity at the cost of performance. Data integrity concerns are shifted to the application. | Easy cross-Region recovery and active-active configuration with global tables. (ACID compliance is achievable only in a single AWS Region.) | 

一部のマルチテナント SaaS アプリケーションには、前の表に含まれていないデータベースによってより適切に処理される独自のデータモデルや特殊な状況がある場合があります。例えば、時系列データセット、高度に接続されたデータセット、一元化されたトランザクション台帳の維持には、異なるタイプのデータベースの使用が必要になる場合があります。すべての可能性を分析することは、このガイドの範囲外です。 AWS データベースサービスの包括的なリストと、データベースサービスがさまざまなユースケースを大まかに満たす方法については、*Amazon Web Services の概要ホワイトペーパーの*[「データベース](https://docs.aws.amazon.com/whitepapers/latest/aws-overview/database.html)」セクションを参照してください。

このガイドの残りの部分では、PostgreSQL をサポートする AWS リレーショナルデータベースサービス、Amazon RDS および Aurora PostgreSQL 互換に焦点を当てています。DynamoDB では、SaaS アプリケーションの最適化に別のアプローチが必要ですが、このガイドの対象外です。DynamoDB の詳細については、 AWS ブログ記事[「Partitioning Pooled Multi-Tenant SaaS Data with Amazon DynamoDB](https://aws.amazon.com/blogs/apn/partitioning-pooled-multi-tenant-saas-data-with-amazon-dynamodb/)」を参照してください。

## Amazon RDS と Aurora の選択
<a name="relational"></a>

ほとんどの場合、Amazon RDS for PostgreSQL よりも Aurora PostgreSQL 互換を使用することをお勧めします。次の表は、これら 2 つのオプションのいずれかを決定する際に考慮すべき要素を示しています。


****  

| **DBMS コンポーネント** | **Amazon RDS for PostgreSQL** | **Aurora PostgreSQL 互換** | 
| --- | --- | --- | 
| スケーラビリティ | レプリケーションラグは分、最大 5 リードレプリカ | レプリケーションが 1 分未満 (グローバルデータベースでは通常は 1 秒未満) に遅延し、最大 15 個のリードレプリカ | 
| クラッシュリカバリ | チェックポイントは 5 分間隔で (デフォルトで）、データベースのパフォーマンスが低下する可能性があります | 高速復旧のための並列スレッドによる非同期復旧 | 
| フェイルオーバー | クラッシュ復旧時間に加えて 60～120 秒 | 通常、約 30 秒 (クラッシュリカバリを含む） | 
| ストレージ | 最大 IOPS は 256,000 です | Aurora インスタンスのサイズと容量によってのみ制約される IOPS | 
| 高可用性とディザスタリカバリ | スタンバイインスタンスを持つ 2 つのアベイラビリティーゾーン、リードレプリカまたはコピーされたバックアップへのクロスリージョンフェイルオーバー | デフォルトで 3 つのアベイラビリティーゾーン、Aurora グローバルデータベースによるクロスリージョンフェイルオーバー、アクティブ/アクティブ設定 AWS リージョン の 間の[書き込み転送](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database-write-forwarding.html)  | 
| バックアップ | バックアップウィンドウ中、 はパフォーマンスに影響を与える可能性があります | 自動増分バックアップ、パフォーマンスへの影響なし | 
| データベースインスタンスクラス | [Amazon RDS インスタンスクラスのリスト](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html)を参照 | [Aurora インスタンスクラスのリスト](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.DBInstanceClass.html)を参照 | 

前の表で説明したすべてのカテゴリで、Aurora PostgreSQL 互換の方が通常は適しています。ただし、Amazon RDS for PostgreSQL は、Aurora のより堅牢な機能セットを犠牲にして、よりコスト効率の高いオプションを提供する可能性のあるインスタンスクラスの選択が多いため、小規模から中規模のワークロードには依然として意味があるかもしれません。