

# 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/) 