

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 選取 SaaS 應用程式的資料庫
<a name="db-selection"></a>

對於許多多租用戶 SaaS 應用程式，選取操作資料庫可以分割成關聯式和非關聯式資料庫之間的選擇，或兩者的組合。若要做出決定，請考慮這些高階應用程式資料需求和特性：
+ 應用程式的資料模型
+ 資料的存取模式
+ 資料庫延遲需求
+ 資料完整性和交易完整性要求 （原子性、一致性、隔離和耐久性，或 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 全球資料庫](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 部落格文章[使用 Amazon DynamoDB 分割合併多租戶 SaaS 資料](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 相容。下表顯示您在決定這兩個選項時應考慮的因素。


****  

| **DBMS 元件** | **Amazon RDS for PostgreSQL** | **Aurora PostgreSQL 相容** | 
| --- | --- | --- | 
| 可擴展性 | 複寫延遲分鐘數，最多 5 個僅供讀取複本 | 一分鐘內的複寫延遲 （使用全域資料庫通常少於 1 秒），最多 15 個僅供讀取複本 | 
| 損毀復原 | 檢查點間隔 5 分鐘 （預設），可能會降低資料庫效能 | 使用平行執行緒進行非同步復原，以快速復原 | 
| 容錯移轉 | 除了當機復原時間之外，還有 60-120 秒 | 通常大約 30 秒 （包括當機復原） | 
| 儲存 | 最大 IOPS 為 256，000 | IOPS 僅受到 Aurora 執行個體大小和容量的限制 | 
| 高可用性和災難復原 | 具有待命執行個體的兩個可用區域，跨區域容錯移轉以讀取複本或複製備份 | 預設有三個可用區域，使用 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 更強大的功能集。