Database Selection
Introduction
要考慮數據量大小及QPS/TPS大小
AWS RDS vs AWS Aurora
AWS Aurora
- 性能: 比傳統db有更高的性能,throughout是MySQL的5倍,PostgreSQL的3倍
- 可用性: 提供高達99.99%的SLA,基于日志的架構使得failover更快
- 彈性: Aurora 的架構設計使其比 RDS 更具彈性。它具備快速故障恢復功能,如果計算節點崩潰,Aurora 能快速恢復。
- 複製: 支援最多 15 個低延遲唯讀副本,提升讀取操作的擴展性。
- 適用場景: 適用於業務快速增長、低延遲讀寫分離、業務負載高低峰波動、簡化應用開發和測試、全球化部署等場景。
AWS RDS
- 管理: RDS 負責資料庫的安裝、配置、備份和監控等任務,使用者只需專注於業務邏輯和數據操作。
- 相容性: RDS 與 MySQL、PostgreSQL、MariaDB、Microsoft SQL Server 和 Oracle 相容,而 Aurora 僅相容於 PostgreSQL 和 MySQL。
- 高可用性: 提供多可用區(multi-AZ)的高可用(HA)設定,SLA 高達 99.95%。
- 成本效益: 對於相同的工作負載,Aurora 的成本高於 RDS。使用者可根據實際需求選擇不同的資料庫類型和配置,按需付費,降低成本。
- 適用場景: 適合初創企業、開發測試環境、行動應用程式、電子商務網站及數據分析平台等。
總結
- 如果您需要高效能、高可用性與擴展性,並希望降低成本,Aurora是更好的選擇。而如果您的應用需要一個託管的關聯式資料庫環境,且不需要特別高的效能需求,期望成本較低,RDS可能更合適。
AWS ElastiCache vs AWS MemoryDB
Amazon ElastiCache
- 資料模型: 支援 Redis 和 Memcached。
- 資料持久性: 提供基於快照的可選資料持久性,這意味著資料不是即時持久化的,可能會在快照之間遺失資料。
- 可用性和持久性: 提供跨多個可用區的高可用性,但主要是為快取場景設計,其中持久性不是關鍵。
- 效能: 提供高吞吐量和低延遲效能,適合快取和會話存儲等場景。
- 成本: 尤其是 Memcached 選項,由於沒有持久性特性,成本效益更高。
- 適用場景: 適合需要快速、成本效益高的快取解決方案的場景,如資料庫查詢結果快取以減少響應時間和減輕後端資料庫壓力、使用者會話資料存儲、遊戲排行榜等。
Amazon MemoryDB
- 資料模型: 僅支援 Redis。
- 資料持久性: 提供全持久性,所有資料都存儲在 AWS 管理的持久存儲中。
- 可用性和持久性: 在多可用區環境中自動故障轉移,確保即使在故障情況下資料的安全性和可用性。
- 效能: 提供與 ElastiCache 相當的效能,但增加了持久性特性。
- 成本: 由於提供更高級的特性如持久性和自動故障轉移,定價通常更高。
- 適用場景: 適合需要速度和全資料持久性的應用,如即時分析、作為需要 Redis 效能和資料持久性的應用的主資料庫、需要強一致性的應用。
總結
如果您的應用場景需要一個高效能的快取解決方案,並且可以接受偶爾的資料遺失,ElastiCache 是一個合適的選擇。而如果您需要一個具有全資料持久性和高可用性的記憶體資料庫,MemoryDB 將更適合您的需求。
AWS ElastiCache vs AWS DynamoDB
Amazon DynamoDB
- 特性: DynamoDB 是一個完全託管的 NoSQL 資料庫服務,它能夠提供快速和可預測的效能,並且可以輕鬆擴展。
- 適用場景:
- 存儲和處理大量半結構化資料: DynamoDB 適合需要存儲和查詢大量半結構化資料的場景。
- 即時應用: 對於需要低延遲存取資料的即時應用,DynamoDB 能夠提供一致性和快速響應。
- 高併發和請求速度: DynamoDB 能夠處理高併發和高請求速度的場景,如互聯網服務和行動應用。
- 全球擴展: 借助全域表,DynamoDB 可以輕鬆擴展到多個 AWS 區域,實現全球服務和業務連續性。
AWS ElastiCache
- 特性: ElastiCache 是一個完全託管的記憶體中快取服務,支援 Redis 和 Memcached 兩種開源記憶體快取引擎。它通過將頻繁存取的資料存儲在記憶體中來加速資料檢索過程,提高 web 應用的效能。
- 適用場景:
- 讀多寫少: ElastiCache 適合那些讀操作遠多於寫操作的場景,如社群媒體平台、電子商務網站和遊戲應用。
- 緩解資料庫壓力: 通過快取頻繁存取的資料,ElastiCache 可以減輕後端資料庫的壓力。
- 無狀態應用會話資料存儲: 對於需要存儲會話資料的無狀態應用,ElastiCache 是一個合適的選擇。
總結
如果你的應用主要需要快取頻繁存取的資料以提高響應速度和減輕資料庫壓力,ElastiCache 是更合適的選擇。而如果你需要一個能夠處理大量半結構化資料、高速讀寫操作的靈活且可擴展的 NoSQL 資料庫,DynamoDB 會是更好的選擇。
圖資料庫使用姿勢
首先解釋一下什麼叫做一跳和多跳:
-
一跳: 找到關注使用者 U 的所有粉絲,這種關係用 KV 或者 MySQL 的一行就搞定了。
-
多跳: 查詢使用者 U 的好友的好友,這是兩跳。本質上是根據 K1 查詢 V1,然後將 V1 作為 K2,根據 K2 查詢 V2 的過程。
-
如果僅僅是一跳,優先考慮 AWS DynamoDB 或者 AWS RDS 等,不考慮 AWS Neptune。
-
離線場景可能有圖遍歷,多跳的查詢需求,才考慮 AWS Neptune,比如風控。
場景主要包括:
- 使用者行為分析: 通過分析使用者的行為資料,了解使用者的興趣偏好和購買習慣,從而制定更精準的行銷策略。
- 商品推薦系統: 利用 Neptune 的圖譜分析能力,企業可以構建智能的商品推薦系統,根據使用者的購買歷史和瀏覽記錄,推薦相關的商品,提高轉化率。
- 供應鏈管理: 通過 Neptune,企業可以更好地管理供應鏈中的複雜關係資料,如供應商、產品、庫存等,提高供應鏈的效率和透明度。
- 風險控制: Neptune 可以幫助企業分析交易資料、使用者行為資料等,及時發現異常交易和風險行為,提高企業的風險控制能力。
- 社交網路分析: 在電商環境中,社交網路分析可以幫助理解使用者之間的互動和影響力,以及他們對商品的共同偏好。
- 即時資料分析: 利用 Neptune 來實現複雜的關係分析,例如社交網路分析或產品推薦系統。