

# PERF 4  您如何選擇資料庫解決方案？
<a name="w2aac19c11b5c11"></a>

 系統的最佳資料庫解決方案可能會依可用性、一致性、分割容錯度、延遲、耐用性、可擴展性及查詢能力的需求而有所不同。許多系統針對不同子系統使用不同資料庫解決方案，並啟用不同功能以提升效能。為系統選錯資料庫解決方案和功能，可能使效能達成效率降低。 

**Topics**
+ [PERF04-BP01 了解資料特性](perf_right_database_solution_understand_char.md)
+ [PERF04-BP02 評估可用選項](perf_right_database_solution_evaluate_options.md)
+ [PERF04-BP03 收集並記錄資料庫效能指標](perf_right_database_solution_collect_metrics.md)
+ [PERF04-BP04 根據存取模式選擇資料儲存](perf_right_database_solution_access_patterns.md)
+ [PERF04-BP05 根據存取模式和指標優化資料儲存](perf_right_database_solution_optimize_metrics.md)

# PERF04-BP01 了解資料特性
<a name="perf_right_database_solution_understand_char"></a>

 選擇您的資料管理解決方案，以最佳方式符合工作負載資料集的特性、存取模式和要求。在選取和實作資料管理解決方案時，您必須確保查詢、擴展和儲存特性支援工作負載資料要求。了解各種資料庫選項如何符合您的資料模型，以及哪些組態選項最適合您的使用案例。  

 AWS 提供眾多資料庫引擎，包括關聯式、鍵值、文件、記憶體內、圖形、時間序列和總帳資料庫。每個資料管理解決方案都有選項和組態，可供您支援使用案例和資料模型。您的工作負載能夠根據資料特性使用數個不同的資料庫解決方案。藉由選取特定問題的最佳資料庫解決方案，您可以擺脫整合型資料庫，這些資料庫採用一體適用的方法，但此方法有限制性，並專注於管理資料以符合客戶的需求。 

 **預期成果：** 工作負載資料特性會加以記錄，並提供足夠的詳細資訊，以利於選取和設定支援的資料庫解決方案，而且這些特性可讓您洞悉潛在的替代方案。 

 **常用的反模式：** 
+  未考慮將大型資料集分割成具有類似特性之較小資料集合的方法，這會導致錯失使用更多專用資料庫，更好地符合資料和成長特性的機會。 
+  未預先識別資料存取模式，這會導致稍後進行昂貴且複雜的修改。 
+  使用不會視需要快速擴展的資料儲存策略來限制成長 
+  為所有工作負載選擇一個資料庫類型和廠商。 
+  堅持使用某個資料庫解決方案，因為對某種特定類型的資料庫解決方案具有內部經驗和知識。 
+  保留資料庫解決方案，因為它在內部部署環境中運作良好。 

 **建立此最佳實務的優勢：** 熟悉所有 AWS 資料庫解決方案，以便您可以判斷適合各種工作負載的正確資料庫解決方案。為工作負載選取適當的資料庫解決方案之後，您可以快速試驗每個資料庫產品，以判斷它們是否能繼續滿足您的工作負載需求。 

 **若未建立此最佳實務，暴露的風險等級：** 高 
+  可能未識別潛在的節省成本。 
+  可能無法將資料保護到所需的等級。 
+  資料存取和儲存效能可能不是最佳的。 

## 實作指引
<a name="implementation-guidance"></a>

 定義工作負載的資料特性和存取模式。檢閱所有可用的資料庫解決方案來識別哪個解決方案支援您的資料要求。在特定工作負載內，可能選取多個資料庫。評估每個服務或服務群組，並個別存取它們。如果針對部分或全部資料識別了潛在的替代資料管理解決方案，請嘗試可能解開成本、安全性、效能和可靠性優勢的替代實作。如果採用新的資料管理方式，請更新現有文件。 


|  **類型**  |  **AWS 服務**  |  **重要特性**  |  **常見的使用案例**  | 
| --- | --- | --- | --- | 
|  關聯式  |  Amazon RDS、Amazon Aurora  |  參考完整性、ACID 交易、寫入時的結構描述  |  ERP、CRM、商務現成軟體  | 
|  鍵值  |  Amazon DynamoDB  |  高輸送量、低延遲、近乎無限可擴展性  |  購物車 (商務)、產品型錄、聊天應用程式  | 
|  文件  |  Amazon DocumentDB  |  儲存 JSON 文件並查詢任何屬性  |  內容管理 (CMS)、客戶設定檔、行動應用程式  | 
|  記憶體內  |  Amazon ElastiCache、Amazon MemoryDB  |  微秒延遲  |  快取、遊戲排行榜  | 
|  圖形  |  Amazon Neptune  |  高度關聯式資料，其中資料之間的關係有意義  |  社交網路、個人化引擎、詐騙偵測  | 
|  時間序列  |  Amazon Timestream  |  其中主要維度為時間的資料  |  DevOps、IoT、監控  | 
|  寬欄  |  Amazon Keyspaces  |  Cassandra 工作負載。  |  產業設備維護、路由優化  | 
|  總帳  |  Amazon QLDB  |  不可變且可加密驗證的變更總帳  |  記錄、醫療保健、供應鏈、金融機構的系統  | 

 **實作步驟** 

1.  如何建構資料？(例如，非結構化、鍵值、半結構化、關聯式) 

   1.  如果資料是非結構化，請考慮物件存放區，例如 [Amazon S3](https://aws.amazon.com/products/storage/data-lake-storage/) 或 NoSQL 資料庫，例如 [Amazon DocumentDB。](https://aws.amazon.com/documentdb/) 

   1.  若為鍵值資料，請考慮 [DynamoDB](https://aws.amazon.com/documentdb/)， [ElastiCache for Redis](https://aws.amazon.com/elasticache/redis/) 或 [MemoryDB。](https://aws.amazon.com/memorydb/) 

   1.  如果資料具有關聯式結構，需要哪個層級的參考完整性。 

      1.  針對外部索引鍵限制，關聯式資料庫 (例如 [Amazon RDS](https://aws.amazon.com/rds/) 和 [Aurora](https://aws.amazon.com/rds/aurora/) ) 可以提供此層級的完整性。 

      1.  通常，在 NoSQL 資料模型內，您會將資料去正規化為單一文件或文件集合，以便可在單一請求中擷取，而不是跨文件或資料表聯結。  

1.  需要 ACID (單元性、一致性、隔離行為、持續性) 合規嗎？ 

   1.  如果需要與關聯式資料庫相關聯的 ACID 屬性，請考慮關聯式資料庫，例如 [Amazon RDS](https://aws.amazon.com/rds/) 和 [Aurora。](https://aws.amazon.com/rds/aurora/) 

1.  需要哪個一致性模式？ 

   1.  如果您的應用程式可以容忍最終一致性，請考慮 NoSQL 實作。檢閱其他特性以協助選擇哪個 [NoSQL 資料庫](https://aws.amazon.com/nosql/) 最適用。 

   1.  如果需要高度一致性，您可以使用高度一致性讀取，搭配 [DynamoDB](https://aws.amazon.com/documentdb/) 或關聯式資料庫，例如 [Amazon RDS](https://aws.amazon.com/rds/)。 

1.  必須支援哪些查詢和結果格式？(例如，SQL、CSV、Parque、Avro、JSON 等) 

1.  存在哪些資料類型、欄位大小和整體數量？(例如，文字、數字、空間、已計算的時間序列、二進位或 Blob 文件) 

1.  儲存要求如何隨時間變更？ 這如何影響可擴展性？ 

   1.  無伺服器資料庫，例如 [DynamoDB](https://aws.amazon.com/documentdb/) 和 [Amazon Quantum Ledger Database](https://aws.amazon.com/qldb/) ，將自動擴增至近乎無限的儲存。 

   1.  關聯式資料庫在佈建的儲存上具有上限，一旦達到這些限制，通常必須透過碎片化這類機制進行水平分割。 

1.  讀取查詢與寫入查詢的比例是多少？ 快取可能改善效能嗎？ 

   1.  包含大量讀取作業的工作負載可以從快取層中受益，這可以是 [ElastiCache](https://aws.amazon.com/elasticache/) 或 [DAX](https://aws.amazon.com/dynamodb/dax/) 如果資料庫是 DynamoDB。 

   1.  讀取也可以卸載至具有關聯式資料庫的讀取複本，例如 [Amazon RDS](https://aws.amazon.com/rds/)。 

1.  儲存和修改 (OLTP - 線上交易處理) 或擷取和報告 (OLAP - 線上分析處理) 是否具有更高的優先順序？ 

   1.  如需高輸送量交易處理，請考慮 NoSQL 資料庫，例如 DynamoDB 或 Amazon DocumentDB。 

   1.  如需分析查詢，請考慮單欄式資料庫，例如 [Amazon Redshift](https://aws.amazon.com/redshift/) 或將資料匯出至 Amazon S3 並執行分析，方法為使用 [Athena](https://aws.amazon.com/athena/) 或 [QuickSight。](https://aws.amazon.com/quicksight/) 

1.  此資料的敏感程度，以及其需要哪個等級的保護和加密？ 

   1.  所有 Amazon RDS 和 Aurora 都支援使用 AWS KMS 進行靜態資料加密。Microsoft SQL Server 和 Oracle 也會在使用 Amazon RDS 時支援原生透明資料加密 (TDE)。 

   1.  針對 DynamoDB，您可以使用更精細的存取控制，搭配 [IAM](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-overview.html) 控制誰可以存取金鑰等級的哪些資料。 

1.  資料需要哪個等級的耐久性？ 

   1.  Aurora 會自動跨區域內的三個可用區域複寫您的資料，這表示您的資料可以耐久，因而資料遺失的機會降低。 

   1.  DynamoDB 會自動跨多個可用區域進行複寫，這會提供高可用性和資料耐久性。 

   1.  Amazon S3 提供 99.999999999% 耐久性。許多資料庫服務 (例如 Amazon RDS 和 DynamoDB) 支援將資料匯出至 Amazon S3，進行長期保留和封存。 

1.  復原時間目標 (RTO) [或復原點目標 (RPO)](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/plan-for-disaster-recovery-dr.html) 要求是否影響解決方案？ 

   1.  Amazon RDS、Aurora、DynamoDB、Amazon DocumentDB 和 Neptune 全都支援時間點復原，以及隨需備份和還原。  

   1.  針對高可用性要求，可以全域複寫 DynamoDB 資料格，方法為使用 [全域資料表](https://aws.amazon.com/dynamodb/global-tables/) 功能，而且可以使用全域資料庫功能。跨多個區域複寫 Aurora 叢集。此外，還可以使用跨區域複寫，跨 AWS 區域 複寫 S3 儲存貯體。  

1.  是否希望擺脫商務資料庫引擎/授權成本？ 

   1.  考慮開放原始碼引擎，例如 Amazon RDS 或 Aurora 上的 PostgreSQL 和 MySQL 

   1.  利用 [AWS DMS](https://aws.amazon.com/dms/) 和 [AWS SCT](https://aws.amazon.com/dms/schema-conversion-tool/) 從商務資料庫引擎遷移至開放原始碼 

1.  對資料庫的操作期望是什麼？ 移至受管服務是否為主要問題？ 

   1.  利用 Amazon RDS 而非 Amazon EC2 和 DynamoDB，或利用 Amazon DocumentDB 而非自行託管 NoSQL 資料庫，可以降低營運負擔。 

1.  目前如何存取資料庫？ 它是否只是應用程式存取，或是否有商業智能 (BI) 使用者和其他連網的現成應用程式？ 

   1.  如果您依賴外部工具，則可能必須維護與其所支援資料庫的相容性。Amazon RDS 完全與其支援的不同引擎版本相容，包括 Microsoft SQL Server、Oracle、MySQL 和 PostgreSQL。 

1.  下列是潛在資料管理服務的清單，以及最能在哪裡使用這些服務： 

   1.  關聯式資料庫會使用預先定義的結構描述和它們之間的關係來儲存資料。這些資料庫旨在支援 ACID (單元性、一致性、隔離行為、持續性) 交易，並維護參考完整性和強大的資料一致性。許多傳統應用程式、企業資源規劃 (ERP)、客戶關係管理 (CRM) 和電子商務都使用關聯式資料庫來儲存資料。您可以在 Amazon EC2 上執行許多資料庫引擎，或選擇其中一種 AWS 受管  [資料庫服務](https://aws.amazon.com/products/databases/)： [Amazon Aurora](https://aws.amazon.com/rds/aurora)、 [Amazon RDS](https://aws.amazon.com/rds)和 [Amazon Redshift](https://aws.amazon.com/redshift)。 

   1.  鍵值資料庫已針對常見的存取模式進行優化，通常用於儲存和擷取大量資料。即使有極大量的並行請求，這些資料庫也能提供快速回應。高流量 Web 應用程式、電子商務系統和遊戲應用程式是鍵值資料庫的典型使用案例。在 AWS 中，您可以利用 [Amazon DynamoDB](https://aws.amazon.com/dynamodb/)，這是一個全受管、多區域、多主機、耐用的資料庫，針對網際網路規模的應用程式提供內建安全性、備份和還原以及記憶體內快取。 

   1.  記憶體內資料庫適用於需要即時存取資料、最低延遲和最高輸送量的應用程式。透過將資料直接儲存在記憶體中，這些資料庫可為應用程式提供微秒延遲，因為毫秒延遲不足以因應其需求。您可以將記憶體內資料庫用於應用程式快取、工作階段管理、遊戲排行榜和地理空間應用程式。 [Amazon ElastiCache](https://aws.amazon.com/elasticache/) 是全受管的記憶體內資料存放區，與 [Redis](https://aws.amazon.com/elasticache/redis/) 或 [Memcached](https://aws.amazon.com/elasticache/memcached)。若應用程式也需要更高的耐久性要求， [Amazon MemoryDB for Redis](https://aws.amazon.com/memorydb/) 會將其結合為耐久的記憶體內資料庫服務，以取得超快效能。 

   1.  文件資料庫旨在將半結構化資料儲存為 JSON 類文件。這些資料庫可協助開發人員快速建置和更新應用程式，例如內容管理、目錄和使用者設定檔。 [Amazon DocumentDB](https://aws.amazon.com/documentdb/) 是快速、可擴展、高度可用且全受管的文件資料庫服務，可支援 MongoDB 工作負載。 

   1.  寬欄存放區是一種 NoSQL 資料庫類型。它使用表格、列和欄，但與關聯式資料庫不同，在同一個表格中，欄的名稱和格式會因列而異。您通常會在大規模工業應用程式中看到寬欄存放區，用於設備維護、叢集管理和路由優化。 [Amazon Keyspaces (適用於 Apache Cassandra)](https://aws.amazon.com/mcs/) 是寬欄的可擴展、高度可用且受管的 Apache Cassandra 相容資料庫服務。 

   1.  圖形資料庫適用此類應用程式：必須在高度連線圖形資料集之間，大規模導覽和查詢數百萬個關係，並且只有毫秒延遲。許多公司使用圖形資料庫進行詐騙偵測、社交聯網和推薦引擎。 [Amazon Neptune](https://aws.amazon.com/neptune/) 是快速、可靠、全受管的圖形資料庫服務，可讓您輕鬆建立和執行搭配高度連線資料集使用的應用程式。 

   1.  時間序列資料庫可有效率地從隨時間變化的資料收集、合成和衍生洞見。IoT 應用程式、DevOps 和工業遙測可以利用時間序列資料庫。 [Amazon Timestream](https://aws.amazon.com/timestream/) 是適用於 IoT 和操作應用程式的快速、可擴展、全受管時間序列資料庫服務，每天可輕鬆儲存和分析數兆個事件。 

   1.  總帳資料庫提供集中化且受信任的機構，為每個應用程式維護可擴展、不可變且以密碼編譯方式驗證的交易記錄。我們會看到用於記錄、供應鏈、註冊甚至銀行交易系統的總帳資料庫。 [Amazon Quantum Ledger Database (Amazon QLDB)](https://aws.amazon.com/qldb/) 是全受管總帳資料庫，提供透明、不可變且可加密驗證的交易日誌，由集中式信任的授權單位所擁有。Amazon QLDB 會追蹤每個應用程式資料變更，並維護一段時間內完整且可驗證的變更歷史記錄。 

 **實作計劃的工作量： **如果工作負載從某個資料庫解決方案移至另一個資料庫解決方案，則有一個 *高* 工作量，其中涉及重構資料和應用程式。   

## 資源
<a name="resources"></a>

 **相關文件：** 
+  [AWS 的雲端資料庫 ](https://aws.amazon.com/products/databases/?ref=wellarchitected) 
+  [AWS 資料庫快取 ](https://aws.amazon.com/caching/database-caching/?ref=wellarchitected) 
+  [Amazon DynamoDB Accelerator ](https://aws.amazon.com/dynamodb/dax/?ref=wellarchitected) 
+  [Amazon Aurora 最佳實務 ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html?ref=wellarchitected) 
+  [Amazon Redshift 效能 ](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html?ref=wellarchitected) 
+  [Amazon Athena 10 大效能秘訣 ](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/?ref=wellarchitected) 
+  [Amazon Redshift Spectrum 最佳實務 ](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/?ref=wellarchitected) 
+  [Amazon DynamoDB 最佳實務](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html?ref=wellarchitected) 
+  [在 EC2 與 Amazon RDS 之間選擇](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-sql-server/comparison.html) 
+  [實作 Amazon ElastiCache 的最佳實務](https://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/BestPractices.html) 

 **相關影片：** 
+ [AWS 專用資料庫 (DAT209-L) ](https://www.youtube.com/watch?v=q81TVuV5u28) 
+ [探究 Amazon Aurora 儲存的奧秘：運作方式 (DAT309-R) ](https://www.youtube.com/watch?v=uaQEGLKtw54) 
+ [深入探討 Amazon DynamoDB：進階設計模式 (DAT403-R1) ](https://www.youtube.com/watch?v=6yqfmXiZTlM) 

 **相關範例：** 
+  [使用 Amazon Redshift 資料共用來優化資料模式](https://wellarchitectedlabs.com/sustainability/300_labs/300_optimize_data_pattern_using_redshift_data_sharing/) 
+  [資料庫遷移](https://github.com/aws-samples/aws-database-migration-samples) 
+  [MS SQL Server - AWS Database Migration Service (DMS) 複寫示範](https://github.com/aws-samples/aws-dms-sql-server) 
+  [資料庫現代化實際操作研討會](https://github.com/aws-samples/amazon-rds-purpose-built-workshop) 
+  [Amazon Neptune 範例](https://github.com/aws-samples/amazon-neptune-samples) 

# PERF04-BP02 評估可用選項
<a name="perf_right_database_solution_evaluate_options"></a>

 了解可用的資料庫選項，以及這些選項如何在您選取資料管理解決方案之前優化您的效能。使用負載測試，識別對您的工作負載而言很重要的資料庫指標。在探索資料庫選項時，請考慮各種層面，例如參數群組、儲存選項、記憶體、運算、讀取複本、最終一致性、連線集區，以及快取選項。嘗試使用這些不同的組態選項來改善指標。 

 **預期成果：** 一個工作負載可以具有一或多個根據資料類型使用的資料庫解決方案。資料庫功能和優勢完美符合資料特性、存取模式和工作負載要求。要優化資料庫效能和成本，您必須評估資料存取模式，以判斷適當的資料庫選項。評估可接受的查詢時間，以確保選取的資料庫選項可以符合要求。 

 **常用的反模式：** 
+  未識別資料存取模式。 
+  未意識到所選資料庫管理解決方案的組態選項。 
+  僅依靠增加執行個體大小，而不查看其他可用的組態選項。 
+  未測試所選解決方案的擴展特性。 

 

 **建立此最佳實務的優勢：** 藉由探索和嘗試使用資料庫選項，您能夠降低基礎設施成本、改善效能和可擴展性，以及減少維護工作負載所需的工作量。 

 **若未建立此最佳實務，暴露的風險等級：** 高 
+  必須優化 *一體適用* 資料庫，表示做出不必要的妥協。 
+  由於未設定資料庫解決方案以符合流量模式，因此成本更高。 
+  擴展問題可能會出現操作問題。 
+  可能無法將資料保護到所需的等級。 

## 實作指引
<a name="implementation-guidance"></a>

 了解您的工作負載資料特性，以便您可以設定資料庫選項。執行負載測試來識別您的重要效能指標和瓶頸。使用這些特性和指標，來評估資料庫選項並嘗試使用不同的組態。 


|  AWS 服務  |  Amazon RDS、Amazon Aurora  |  Amazon DynamoDB  |  Amazon DocumentDB  |  Amazon ElastiCache  |  Amazon Neptune  |  Amazon Timestream  |  Amazon Keyspaces  |  Amazon QLDB  | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | 
|  擴展運算  |  增加執行個體大小，Aurora 無伺服器執行個體會自動擴展，以回應負載中的變更  |  隨需容量模式下的自動讀取/寫入擴展，或所佈建容量模式下所佈建讀取/寫入容量的自動擴展  |  增加執行個體大小  |  增加執行個體大小、將節點新增至叢集  |  增加執行個體大小  |  自動擴展以調整容量  |  隨需容量模式下的自動讀取/寫入擴展，或所佈建容量模式下所佈建讀取/寫入容量的自動擴展  |  自動擴展以調整容量  | 
|  橫向擴展讀取  |  所有引擎都支援讀取複本。Aurora 支援自動擴展讀取複本執行個體。  |  增加已佈建的讀取容量單位  |  讀取複本  |  讀取複本  |  讀取複本。支援自動擴展讀取複本執行個體  |  自動擴展  |  增加已佈建的讀取容量單位  |  自動縱向擴展至記錄的並行限制  | 
|  橫向擴展寫入  |  增加執行個體大小、在應用程式中批次寫入、在資料庫前面新增佇列。透過跨多個執行個體的應用程式層級共用來水平擴展  |  增加已佈建的寫入容量單位。確定最佳的分區索引鍵以防止分割層級寫入限流  |  增加主要執行個體大小  |  在叢集模式下使用 Redis 跨碎片散發寫入  |  增加執行個體大小  |  寫入要求可能會在擴展時進行限流。如果遇到限流異常，請繼續以相同 (或更高) 的輸送量傳送資料以自動擴展。批次寫入以減少並行寫入要求  |  增加已佈建的寫入容量單位。確定最佳的分區索引鍵以防止分割層級寫入限流  |  自動縱向擴展至記錄的並行限制  | 
|  引擎組態  |  參數群組  |  不適用  |  參數群組  |  參數群組  |  參數群組  |  不適用  |  不適用  |  不適用  | 
|  快取  |  記億體內快取，可透過參數群組設定。與 ElastiCache for Redis 等專用快取配對，以卸載經常存取項目的請求  |  DAX (DAX) 可用的完全受管快取  |  記憶體內快取。或者，與 ElastiCache for Redis 等專用快取配對，以卸載經常存取項目的請求  |  主要功能為快取  |  使用查詢結果快取來快取唯讀查詢的結果  |  Timestream 有兩個儲存層；其中一個是高效能記憶體內層  |  部署個別的專用快取 (例如 ElastiCache for Redis)，以卸載經常存取項目的請求  |  不適用  | 
|  高可用性/災難復原  |  生產工作負載的建議組態是在第二個可用區域中執行待命執行個體，以在區域內提供彈性。  若為跨區域的彈性，可以使用 Aurora 全域資料庫  |  區域內的高可用性可以使用 DynanoDB 全域資料表跨區域複寫資料表  |  如需可用性，跨可用區域建立多個執行個體。  可以跨區域共用快照，也可以使用 DMS 複寫叢集，以提供跨區域複寫/災難復原  |  生產叢集的建議組態是在次要可用區域中建立至少一個節點。  ElastiCache Global Datastore 可以用來跨區域複寫叢集。  |  其他可用區域中的讀取複本會充當容錯移轉目標。  可以跨區域共用快照，也可以使用 Neptune 串流複寫叢集，以在兩個不同區域的兩個叢集之間複寫資料。  |  可在區域內高度使用。跨區域複寫需要使用 Timestream SDK 進行自訂應用程式開發  |  區域內的高可用性  跨區域複寫需要自訂應用程式邏輯或第三方工具  |  區域內的高可用性  若要跨區域複寫，請將 Amazon QLDB 日誌的內容匯出到 S3 儲存貯體，並設定儲存貯體進行跨區域複寫。  | 

 

 **實作步驟** 

1.  哪些組態選項適用於選取的資料庫？ 

   1.  Amazon RDS 和 Aurora 的參數群組可讓您調整常用的資料庫引擎層級設定，例如針對快取分配的記憶體或調整資料庫的時區 

   1.  針對佈建的資料庫服務，例如 Amazon RDS、Aurora、Neptune、Amazon DocumentDB，以及在 Amazon EC2 上部署的服務，您可以變更執行個體類型、佈建的儲存，以及新增讀取複本。 

   1.  DynamoDB 可讓您指定兩個容量模式：隨需和已佈建。若要處理不同的工作負載，您可以隨時在這些模式之間進行變更，以及在已佈建模式下增加分配的容量。 

1.  工作負載是大量讀取或大量寫入？  

   1.  哪些解決方案適用於卸載讀取 (讀取複本、快取等)？  

      1.  若為 DynamoDB 資料表，您可以使用 DAX 卸載讀取，以進行快取。 

      1.  對於關聯式資料庫，您可以建立一個 ElastiCache for Redis 叢集，並將您的應用程式設定為首先從快取中讀取，如果請求的項目不存在，則退回到資料庫。 

      1.  關聯式資料庫 (例如 Amazon RDS 和 Aurora) 和已佈建的 NoSQL 資料庫 (例如 Neptune 和 Amazon DocumentDB) 全都支援新增讀取複本，以卸載工作負載的讀取部分。 

      1.  無伺服器資料庫 (例如 DynamoDB) 將自動擴展。確定您已佈建足夠的讀取容量單位 (RCU) 來處理工作負載。 

   1.  哪些解決方案適用於擴增寫入 (分區索引鍵碎片、引進佇列等)？ 

      1.  對於關聯式資料庫，您可以增加執行個體的大小，以適應增加的工作負載或增加已佈建的 IOPS，以允許增加基礎儲存的輸送量。 
         +  您也可以在資料庫前面引進佇列，而不是直接寫入至資料庫。此模式允許您將擷取與資料庫分離並控制流量，因此資料庫不會癱瘓。  
         +  批次處理寫入請求而不是建立許多短期交易，有助於改善高寫入量關聯式資料庫中的輸送量。 

      1.  DynamoDB 之類的無伺服器資料庫可以自動擴展寫入輸送量，或透過調整已佈建的容量單位 (WCU) 來進行，取決於容量模式。  
         +  您仍會遇到 *常用* 分區的問題，但這時您達到特定分區索引鍵的輸送量限制。這可以透過選擇更均勻分佈的分區索引鍵，或對分區索引鍵進行寫入碎片化來緩解。  

1.  目前或預期的每秒尖峰交易 (TPS) 有多少？ 使用此流量和此容量 \$1X% 進行測試，以了解擴展特性。 

   1.  原生工具 (例如 pg\$1bench for PostgreSQL) 可以用來對資料庫進行壓力測試，並了解瓶頸和擴展特性。 

   1.  應該擷取生產類流量，以便可以將其重播，來模擬除了綜合工作負載之外的真實條件。 

1.  如果使用無伺服器或彈性可擴展運算，請測試在資料庫上進行此擴展的影響。若適用，請引進連線管理或集區，以降低對資料庫的影響。  

   1.  RDS Proxy 可以搭配 Amazon RDS 和 Aurora 使用，以管理資料庫的連線。  

   1.  無伺服器資料庫 (例如 DynamoDB) 沒有與其相關聯的連線，但會考慮佈建的容量和自動擴展政策來處理負載中的峰值。 

1.  負載是否可預測、負載中是否有峰值，以及是否有閒置期間？ 

   1.  若有閒置期間，請考慮在這些時段縮減佈建的容量或執行個體大小。Aurora Serverless V2 將根據負載自動擴增和縮減。 

   1.  針對非生產執行個體，請考慮在這些非運作時刻暫停或停止這些執行個體。 

1.  您是否需要根據存取模式和資料特性分割和分解資料模型？ 

   1.  考慮使用 AWS DMS 或 AWS SCT，將您的資料移至其他服務。 

## 實作計劃的工作量： 
<a name="level-of-effort-for-the-implementation-plan-to-establish-this-best-practice-you-must-be-aware-of-your-current-data-characteristics-and-metrics.-gathering-those-metrics-establishing-a-baseline-and-then-using-those-metrics-to-identify-the-ideal-database-configuration-options-is-a-low-to-moderate-level-of-effort.-this-is-best-validated-by-load-tests-and-experimentation."></a>

若要建立此最佳實務，您必須注意目前資料特性和指標。收集這些指標、建立基準，然後使用這些指標來識別理想的資料庫組態選項為 *低* 至 *中* 工作量。這最好由負載測試和試驗進行驗證。 

## 資源
<a name="resources"></a>

 **相關文件：** 
+  [AWS 的雲端資料庫 ](https://aws.amazon.com/products/databases/?ref=wellarchitected) 
+  [AWS 資料庫快取 ](https://aws.amazon.com/caching/database-caching/?ref=wellarchitected) 
+  [Amazon DynamoDB Accelerator ](https://aws.amazon.com/dynamodb/dax/?ref=wellarchitected) 
+  [Amazon Aurora 最佳實務 ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html?ref=wellarchitected) 
+  [Amazon Redshift 效能 ](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html?ref=wellarchitected) 
+  [Amazon Athena 10 大效能秘訣 ](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/?ref=wellarchitected) 
+  [Amazon Redshift Spectrum 最佳實務 ](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/?ref=wellarchitected) 
+  [Amazon DynamoDB 最佳實務](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html?ref=wellarchitected) 

 

 **相關影片：** 
+  [AWS 專用資料庫 (DAT209-L) ](https://www.youtube.com/watch?v=q81TVuV5u28)
+ [探究 Amazon Aurora 儲存的奧秘：運作方式 (DAT309-R) ](https://www.youtube.com/watch?v=uaQEGLKtw54) 
+  [深入探討 Amazon DynamoDB：進階設計模式 (DAT403-R1) ](https://www.youtube.com/watch?v=6yqfmXiZTlM)

 **相關範例：** 
+  [Amazon DynamoDB 範例](https://github.com/aws-samples/aws-dynamodb-examples) 
+  [AWS 資料庫遷移範例](https://github.com/aws-samples/aws-database-migration-samples) 
+  [資料庫現代化研討會](https://github.com/aws-samples/amazon-rds-purpose-built-workshop) 
+  [使用 Amazon RDS for PostgreSQL 資料庫上的參數](https://github.com/awsdocs/amazon-rds-user-guide/blob/main/doc_source/Appendix.PostgreSQL.CommonDBATasks.Parameters.md) 

# PERF04-BP03 收集並記錄資料庫效能指標
<a name="perf_right_database_solution_collect_metrics"></a>

 若要了解您的資料管理系統如何執行，請務必追蹤相關指標。這些指標將協助您優化資料管理資源，以確保符合您的工作負載要求，並確保您對工作負載如何執行有著清楚的概觀。使用工具、程式庫和系統來記錄與資料庫效能有關的效能測量值。 

 

 有一些與資料庫託管所在系統相關的指標 (例如，CPU、儲存體、記憶體、IOPS)，也有一些用於存取資料本身的指標 (例如，每秒交易數、查詢率、回應時間、錯誤)。任何支援或操作人員都應該可以立即存取這些指標，並且有足夠的歷史記錄能夠識別趨勢、異常和瓶頸。 

 

 **預期成果：** 若要監控資料庫工作負載的效能，您必須記錄一段時間的多個效能指標。這可讓您偵測異常，以及針對業務指標測量效能，以確保符合您的工作負載需求。 

 **常用的反模式：** 
+  您只使用手動日誌檔案來搜尋指標。 
+  您只會將指標發佈至您團隊所使用的內部工具，而且沒有工作負載的全貌。 
+  您只會使用所選監控軟體記錄的預設指標。 
+  您只會在有問題時檢閱指標。 
+  您只會監控系統層級指標，而不會擷取資料存取或用量指標。 

 **建立此最佳實務的優勢：** 建立效能基準可協助您了解正常行為和工作負載的要求。異常模式可以更快地識別和偵錯，進而改善資料庫的效能和可靠性。可以設定資料庫容量，以確保最佳成本，而不會犧牲效能。 

 **若未建立此最佳實務，暴露的風險等級：** 高 
+  無法區分異常與正常效能等級將讓您難以識別問題和做出決策。 
+  可能未識別潛在的節省成本。 
+  將不會識別可能導致可靠性或效能下降的成長模式。 

## 實作指引
<a name="implementation-guidance"></a>

 識別、收集、彙總資料庫相關指標，並使其相互關聯。指標應該同時包括支援資料庫的基礎系統和資料庫指標。基礎系統指標可能包括 CPU 使用率、記憶體、可用磁碟儲存、磁碟 I/O 和網路傳入和傳出指標，而資料庫指標可能包括每秒交易數、熱門查詢、平均查詢率、回應時間、索引使用情況、表格鎖定、查詢逾時，以及開啟的連線數目。此資料對於了解工作負載的執行方式，以及資料庫解決方案的使用方式至關重要。將這些指標納入資料驅動的方法，以調整和優化工作負載的資源。  

 **實作步驟：** 

1.  務必要追蹤哪些資料庫指標？ 

   1.  [監控 Amazon RDS 的指標](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Monitoring.html) 

   1.  [使用 Performance Insights 進行監控](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html) 

   1.  [增強型監控](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.overview.html) 

   1.  [DynamoDB 指標](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html) 

   1.  [監控 DynamoDB DAX](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DAX.Monitoring.html) 

   1.  [監控 MemoryDB](https://docs.aws.amazon.com/memorydb/latest/devguide/monitoring-cloudwatch.html) 

   1.  [監控 Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/metrics.html) 

   1.  [Timeseries 指標和維度參考](https://docs.aws.amazon.com/timestream/latest/developerguide/metrics-dimensions.html) 

   1.  [Aurora 的叢集層級指標](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraMySQL.Monitoring.Metrics.html) 

   1.  [監控 Amazon Keyspaces](https://docs.aws.amazon.com/keyspaces/latest/devguide/monitoring.html) 

   1.  [監控 Amazon Neptune](https://docs.aws.amazon.com/neptune/latest/userguide/monitoring.html) 

1.  資料庫監控是否會受益於偵測操作異常效能問題的機器學習解決方案？ 

   1.  [Amazon DevOps Guru for Amazon RDS](https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-rds.overview.how-it-works.html) 可讓您查看效能問題，並做出更正動作的建議。 

1.  您是否需要有關 SQL 使用情況的應用程式層級詳細資訊？ 

   1.  [AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-api-segmentdocuments.html#api-segmentdocuments-sql) 可以檢測至應用程式，以獲得見解並封裝所有資料點以進行單一查詢。 

1.  您目前是否具有核准的記錄和監控解決方案？ 

   1.  [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/) 可以收集架構中各種資源的指標。您還可以收集和發佈自訂指標以顯示業務或衍生指標。使用 CloudWatch 或第三方解決方案來設定可指出何時超過閾值的警示。 

1.  您是否已識別並設定資料保留策略，以符合安全和營運目標？ 

   1.  [CloudWatch 指標的預設資料保留](https://aws.amazon.com/cloudwatch/faqs/#AWS_resource_.26_custom_metrics_monitoring) 

   1.  [CloudWatch Logs 的預設資料保留](https://aws.amazon.com/cloudwatch/faqs/#Log_management) 

 **實作計劃的工作量： **有一個 *中* 工作量，用來從所有資料庫資源識別、追蹤、收集、彙總指標，並使其相互關聯。 

## 資源
<a name="resources"></a>

 **相關文件：** 
+ [AWS 資料庫快取 ](https://aws.amazon.com/caching/database-caching/) 
+ [ Amazon Athena 10 大效能秘訣 ](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/)
+ [ Amazon Aurora 最佳實務 ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html)
+  [Amazon DynamoDB Accelerator ](https://aws.amazon.com/dynamodb/dax/)
+ [Amazon DynamoDB 最佳實務 ](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html) 
+ [Amazon Redshift Spectrum 最佳實務 ](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/) 
+ [Amazon Redshift 效能 ](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html) 
+ [AWS 的雲端資料庫 ](https://aws.amazon.com/products/databases/) 
+  [Amazon RDS Performance Insights](https://aws.amazon.com/rds/performance-insights/) 

 **相關影片：** 
+ [AWS 專用資料庫 (DAT209-L) ](https://www.youtube.com/watch?v=q81TVuV5u28) 
+  [探究 Amazon Aurora 儲存的奧秘：運作方式 (DAT309-R) ](https://www.youtube.com/watch?v=uaQEGLKtw54)
+  [深入探討 Amazon DynamoDB：進階設計模式 (DAT403-R1) ](https://www.youtube.com/watch?v=6yqfmXiZTlM)

 **相關範例：** 
+  [Level 100：使用 CloudWatch 儀表板進行監控](https://wellarchitectedlabs.com/performance-efficiency/100_labs/100_monitoring_with_cloudwatch_dashboards/) 
+  [AWS 資料集擷取指標收集架構](https://github.com/awslabs/aws-dataset-ingestion-metrics-collection-framework) 
+  [Amazon RDS 監控研討會](https://www.workshops.aws/?tag=Enhanced%20Monitoring) 

# PERF04-BP04 根據存取模式選擇資料儲存
<a name="perf_right_database_solution_access_patterns"></a>

 根據工作負載的存取模式確定要使用的服務和技術。除了效能和規模等非功能性要求外，存取模式還嚴重影響資料庫和儲存解決方案的選擇。第一個維度是對交易、ACID 合規和一致性讀取的需求。並非每個資料庫都支持這些項目，並且大部分 NoSQL 資料庫都會提供最終一致性模型。第二個重要維度是寫入和讀取隨時間和空間的分佈。全球分散式應用程式需要考慮流量模式、延遲和存取要求，以便識別最佳的儲存解決方案。選擇的第三個關鍵層面是查詢模式靈活性、隨機存取模式，以及一次性查詢。還必須斟酌圍繞文字和自然語言處理、時間系列和圖形的高度專業化查詢功能的考量。 

 **預期成果：** 已根據識別和記錄的資料存取模式選取資料儲存。這可能包括最常見的讀取、寫入和刪除查詢、對特定計算和彙總的需求、資料的複雜性、資料相依性，以及必要的一致性需求。 

 **常用的反模式：** 
+  您只選取一個資料庫廠商來簡化操作管理。 
+  您假設資料存取模式不會隨著時間改變。 
+  您在應用程式中實作複雜的交易、回復和一致性邏輯。 
+  資料庫設定為支援潛在的高流量爆增，這會導致資料庫資源大部分時間保持閒置狀態。 
+  使用共用的資料庫進行交易和分析用途。 

 **建立此最佳實務的優勢：** 根據存取模式選取和優化您的資料儲存將有助於降低開發複雜性，並優化您的效能機會。了解何時使用讀取複本、全域表、資料分割和快取將協助您降低營運負擔，並根據您的工作負載需求進行擴展。 

 **若未建立此最佳實務，暴露的風險等級：** 中 

## 實作指引
<a name="implementation-guidance"></a>

 識別並評估您的資料存取模式，以選取正確的儲存組態。每個資料庫解決方案都有設定和優化儲存解決方案的選項。使用收集的指標和記錄，並嘗試使用選項來找出最佳組態。使用下表根據每個資料庫服務檢閱儲存選項。 


|  AWS 服務  |  Amazon RDS、Amazon Aurora  |  Amazon DynamoDB  |  Amazon DocumentDB  |  Amazon ElastiCache  |  Amazon Neptune  |  Amazon Timestream  |  Amazon Keyspaces  |  Amazon QLDB  | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | 
|  擴展儲存  |  可用來自動擴展所佈建儲存 IOPS 的儲存自動擴展選項也可以在利用佈建的 IOPS 儲存類型時，獨立於佈建的儲存進行擴展  |  自動擴展。資料表在大小方面不受限制。  |  儲存自動擴展選項可用來擴展佈建的儲存  |  儲存是記憶體內，受制於執行個體類型或計數  |  儲存自動擴展選項可用來自動擴展佈建的儲存  |  設定記憶體內和磁性層的保留期間 (以天為單位)  |  自動擴增和縮減表格儲存  |  自動擴展。資料表在大小方面不受限制。  | 

 

 **實作步驟：** 

1.  識別並記錄資料和流量的預期成長。 

   1.  Amazon RDS 和 Aurora 支援儲存自動擴增至記錄的限制。除此之外，考慮將較舊資料轉換到 Amazon S3 進行封存、彙總歷史資料進行分析，或透過碎片水平擴展。 

   1.  DynamoDB 和 Amazon S3 將自動擴展至近乎無限制的儲存容量。 

   1.  可以手動調整在 EC2 上執行的 Amazon RDS 執行個體和資料庫大小，並且 EC2 執行個體可以在後來新增 EBS 容量以取得額外的儲存。  

   1.  可以根據活動中的變更來變更執行個體類型。例如，您可以在測試時從較小的執行個體開始，然後在您開始接收服務的生產流量時擴展執行個體。Aurora Serverless V2 會自動擴展以回應負載中的變更。  

1.  記錄有關正常和尖峰效能 (每秒交易數 TPS 和每秒查詢數 QPS) 和一致性 (ACID 和最終一致性) 的要求。 

1.  記錄解決方案部署層面和資料庫存取要求 (全域、多可用區域、讀取複寫、多個寫入節點) 

 **實作計劃的工作量： **如果您的資料管理解決方案沒有日誌或指標，則需要在識別和記錄資料存取模式之前完成該操作。一旦了解您的資料存取模式，選取並設定您的資料儲存是 *低* 工作量。 

## 資源
<a name="resources"></a>

 **相關文件：** 
+ [AWS 資料庫快取 ](https://aws.amazon.com/caching/database-caching/)
+ [Amazon Athena 10 大效能秘訣 ](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/) 
+ [Amazon Aurora 最佳實務](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html) 
+ [Amazon DynamoDB Accelerator ](https://aws.amazon.com/dynamodb/dax/) 
+ [Amazon DynamoDB 最佳實務 ](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html) 
+ [Amazon Redshift Spectrum 最佳實務 ](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/) 
+ [Amazon Redshift 效能 ](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html) 
+  [AWS 的雲端資料庫 ](https://aws.amazon.com/products/databases/)
+  [Amazon RDS 儲存類型](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html) 

 **相關影片：** 
+ [AWS 專用資料庫 (DAT209-L)](https://www.youtube.com/watch?v=q81TVuV5u28) 
+  [探究 Amazon Aurora 儲存的奧秘：運作方式 (DAT309-R) ](https://www.youtube.com/watch?v=uaQEGLKtw54)
+ [ 深入探討 Amazon DynamoDB：進階設計模式 (DAT403-R1) ](https://www.youtube.com/watch?v=6yqfmXiZTlM)

 **相關範例：** 
+  [在 AWS 上使用分散式負載測試進行試驗和測試](https://aws.amazon.com/solutions/implementations/distributed-load-testing-on-aws/) 

# PERF04-BP05 根據存取模式和指標優化資料儲存
<a name="perf_right_database_solution_optimize_metrics"></a>

 使用效能特性和存取模式來優化資料儲存或查詢，以實現最佳效能。測量索引編制、鍵值分佈、資料倉儲設計或快取策略此類的優化，會對系統效能或整體效率造成何種影響。 

 **常用的反模式：** 
+  您只使用手動日誌檔案來搜尋指標。 
+  您只將指標發佈到內部工具。 

 **建立此最佳實務的優勢：** 為了確保您符合工作負載所需的指標，您必須監控與讀取和寫入相關的資料庫效能指標。您可以使用這些資料，針對資料儲存層讀取和寫入來新增新的優化。 

 **若未建立此最佳實務，暴露的風險等級：** 低 

## 實作指引
<a name="implementation-guidance"></a>

 根據指標和模式優化資料儲存：使用報告的指標來識別工作負載中任何效能不佳的區域，並優化您的資料庫元件。每個資料庫系統都有不同的效能特性要評估，例如建立索引的方式、快取的方式或在多個系統之間分發的方式。測量優化的影響。 

## 資源
<a name="resources"></a>

 **相關文件：** 
+  [AWS 資料庫快取](https://aws.amazon.com/caching/database-caching/) 
+  [Amazon Athena 10 大效能秘訣](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/) 
+  [Amazon Aurora 最佳實務](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html) 
+  [Amazon DynamoDB Accelerator](https://aws.amazon.com/dynamodb/dax/) 
+  [Amazon DynamoDB 最佳實務](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html) 
+  [Amazon Redshift Spectrum 最佳實務](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/) 
+  [Amazon Redshift 效能](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html) 
+  [AWS 的雲端資料庫](https://aws.amazon.com/products/databases/) 
+  [使用 DevOps Guru for RDS 分析效能異常](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/devops-guru-for-rds.html) 
+  [DynamoDB 的讀取/寫入容量](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html) 

 **相關影片：** 
+  [AWS 專用資料庫 (DAT209-L)](https://www.youtube.com/watch?v=q81TVuV5u28) 
+  [探究 Amazon Aurora 儲存的奧秘：運作方式 (DAT309-R)](https://www.youtube.com/watch?v=uaQEGLKtw54) 
+  [深入探討 Amazon DynamoDB：進階設計模式 (DAT403-R1)](https://www.youtube.com/watch?v=6yqfmXiZTlM) 

 **相關範例：** 
+  [Amazon DynamoDB 的實作實驗室](https://amazon-dynamodb-labs.workshop.aws/hands-on-labs.html) 