AWS 數據庫(七)

數據庫概念

關係型數據庫

  • 關係數據庫提供了一個通用接口,使用戶可使用使用 編寫的命令或查詢從數據庫讀取和寫入數據。
  • 關係數據庫由一個或多個表格組成,表格由與電子表格類似的列和行組成。
    • 以行列形式存儲數據,行包含一個條目的全部信息,列是分離不一樣數據點的屬性
    • 架構固定,輸入數據前要先鎖定列
    • 查詢方式是SQL語句
    • 支持垂直擴展屬性
    • 每一張表都有主鍵, 經過引用記錄的主鍵,表中的一條記錄能夠與另外一個表中的記錄相關。這個指針或引用被稱爲外鍵。
  • 關係數據庫能夠分爲聯機事務處理OLTP 和 聯機分析處理OLAP,具體取決於表的組織方式以及應用程序如何使用關係數據庫。
    • OLTP - 常常編寫和更改數據(例如數據輸入和 電子商務)的面向事務的應用程序,OLTP事務頻繁發生但相對簡單
    • OLAP - 應用於數據倉庫的領域,指的是報告或分析大型數據集。OLAP事務 的發生頻率要低得多,但要複雜得多
    • 大型應用程序常常混合使用OLTP和OLAP數據庫。一個數據庫做爲其OLTP事務的主生產 數據庫,另外一個數據庫做爲他們的數據倉庫爲OLAP。
  • 數據庫包括: MySQL,PostgreSQL,Microsoft SQL Server和Oracle
  • SQL 數據庫的默認端口
    • Oracle: 1521
    • MS SQL : 1433
    • MySQL : 3306
    • DB2: 5000前端

      數據倉庫

  • 數據倉庫爲能夠來自一個或多個源的數據的中央儲存庫。
  • 此數據存儲庫一般是專用類型的關係數據庫,可用於經過OLAP進行報告和分析,組織一般使用數據倉庫來編譯報告並使用高度複雜 的查詢搜索數據庫。

NoSQL數據庫

  • 相比關係型數據庫,NoSQL更加簡單易用,更加靈活,
  • 傳統數據庫在單臺服務器外擴展成本極高,而NoSQL能夠在商用硬件上實現水平伸縮性
  • 使用衆多模型(如鍵值對、文檔和圖表)中的一種來存儲數據
  • 數據結構
    • 集合 Collection : 至關於表
    • 文檔 Document: 至關於行
    • 鍵值 Key Value Pairs: 至關於列
  • 動態的架構,行無需包含與每一個列對應的數據
  • 查詢更關注文檔集合
  • 支持水平擴展屬性
  • NoSQL的其餘特性
    • 對於某些應用程序能夠替代關係型數據庫
    • 支持以高可用性處理大量數據
    • 能夠造成一個包含不一樣實施方案和數據模型的大類別
    • 具有分佈式容錯的能力
    • NoSQL 能夠提升靈活性、可用性、擴展性和高性能
  • 主要的NoSQL數據庫包括
    • EC2: Cassandra、Hbase、Redis、MongoDB、Couchbase、Riak
    • AWS託管:DynamoDB、ElastiCache(Redis)、Elastic Map Reduce(HBase)
  • NoSQL 數據庫經常使用端口
    • MongoDB:27017
    • Redis:6379
    • Memcached:11211
  • 採用NoSQL主要考慮幾個限制
    • 應用程序的事務支持
    • ACID合規(ACID=原子性、一致性、隔離性和持久性)
    • 聯接需求
    • SQL需求
  • 常見場景:
    • 排行榜、快速導入點擊流或日誌數據、購物車臨時數據需求、熱表、元數據或查找表、會話數據

數據庫選擇

  • 將非關係型數據放在NoSQL中(如DynamoDB)
  • 將技術與工做負載匹配,從各類關係型數據庫, NoSQL數據庫,數據倉庫和其餘針對搜索優化的數據存儲中選擇。
  • 數據庫選擇要考慮的事項:
    • 讀取和寫入要求
    • 總存儲容量
    • 典型對象大小及其訪問特性
    • 持久性需求
    • 延遲要求
    • 同時支持的最大用戶量
    • 查詢特性
    • 所需完整性控制強度

Amazon RDS存儲關係型數據

RDS綜述

  • RDS是一個全託管的數據庫

  • 開發人員能夠專一於查詢結構和查詢優化
  • 減輕運維負擔包括數據庫遷移、備份和恢復、修補、軟件升級、存儲升級、頻繁服務器升級、硬件故障處理
  • RDS能夠經過公用的客戶端軟件鏈接並執行SQL操做,包括使用相同的工具來查詢,分析,修改和管理數據庫。例如,當前的提取,轉換, 加載(ETL)工具和報告工具

RDS 數據庫實例

  • 數據庫實例是雲上專用網段中部署的隔離的數據庫環境
  • 每一個實例運行了一個商業或者開源的數據庫引擎,包括MySQL,PostgreSQL,MS SQL,Oracle,MariaDB以及AWS Aurora 六種。
  • 能夠經過API建立和管理RDS實例
  • 能夠利用AWS工具或者數據庫引擎自己的工具將數據從本地遷移到AWS上
  • 每一個用戶默認最多託管40個RDS數據庫
  • 每一個實例上只能運行1個Oracle和30個MS SQL數據庫,其他沒有限制
  • RDS支持預留實例,且只支持區域預留,可用於多可用區部署和只讀副本
  • 使用Parameter Group 對數據庫參數進行設置

存儲選項

  • RDS構建在EBS上
  • 經過預配置支持最大16TB (MSSQL) - 32TB,32000 IOPS - 40000 IOPS
  • 支持HDD,通用SSD和預配置IOPS SSD 三種類型

備份與恢復

  • 自動備份
    • 備份存儲在S3中
    • RDS備份整個數據庫實例,爲它建立存儲卷快照
    • 自動備份建期間IO會掛起3-5秒鐘,但對高可用部署的數據庫不受影響
    • 自動備份默認開啓且保留1天(API或CLI建立)或者7天(控制檯建立),最大可保留35天,自動刪除
    • 自動備份支持時間點恢復功能,最小間隔爲5分鐘
    • 刪除實例時全部自動備份都會被刪除
    • 能夠禁用自動備份,可是很是不建議。 禁用自動備份後,即便再從新啓用,被禁用的期間將不可恢復。
  • 手動數據庫快照
    • 快照存儲在S3中
    • 隨時手工對數據庫進行快照
    • 默認永久保留除非手工明確刪除
    • 使用多可用區部署能夠最小化快照的影響,由於快照能夠從備用數據庫發起,只是RPO會有必定影響
  • 恢復
    • 全部RDS數據庫恢復都會建立一個全新的數據庫實例
    • 還原時只會關聯默認的數據庫參數和安全組參數被關聯,須要從新手工設置
    • 不支持將VPC內的數據恢復到VPC外部

多可用區的高可用

  • 高可用是傳統關係型數據庫部署的難點
  • 利用RDS能夠輕鬆實現,實現最短几分鐘的RPO和RTO要求
  • 開啓多可用區部署後,自動在不一樣可用區建立備用RDS實例,並利用數據庫實例URL endpoint來實現DNS尋址
  • RDS 數據會同步複製到從數據庫,複製自己產生的數據傳輸不收費
  • 支持故障自動切換和手動轉移,轉移時間爲1-2分鐘
  • 跨可用區部署後因爲數據同步複製,會有必定的性能影響,備份是也會有更長的延遲
  • 從數據庫不能用做只讀副本提高IO

規模擴大或縮小

  • RDS支持垂直擴展
  • 數據庫實例的資源大小能夠隨需求決定,支持1-32 vCPU,1-244GB Memory,用戶能夠更改實例大小,RDS會自動完成數據遷移
  • RDS採用數據庫參數和數據庫選項對數據庫實例進行配置,每次更改都須要重啓實例
  • SQL Server不支持存儲擴展
  • 能夠經過數據庫分片技術實現有限度的水平擴展
  • RDS 支持實時配置更多的存儲而無需停機
  • RDS IOPS(除SQL Server)還能夠擴展數據庫實例的吞吐量,1000 到 30000 IOPS分別對應100GB 到 6TB的存儲空間
  • 能夠在RDS前端的EC2選擇放置Redis 緩存服務,EC2 首選自我管理型緩存解決方案

只讀副本擴展

  • RDS容許從主數據庫建立一個或多個只讀副原本分流讀取事務
    • 讀取繁重的任務
    • 當主數據庫不可用時處理讀取操做
    • 離線數據分析場景
  • MySQL、PostgreSQL、MariaDB和Aurora支持只讀副本
  • 要使用只讀副本,須要先開啓自動備份功能
  • 只讀副本是異步的
  • 能夠爲只讀副本建立只讀副本,每一個數據庫最多建立5個只讀副本,Aurora最多15個
  • 能夠在多可用區部署只讀副本,每一個只讀副本都有本身的URL Endpoint
  • 只讀副本能夠被提高爲獨立的數據庫,可是不能用來作災備

RDS安全性

  • IAM權限管理
    • 採用IAM用戶來對數據庫進行操做
    • AMI能夠控制每個單獨的用戶對RDS操做的權限
    • RDS初次建立時會基於AWS開發人員帳戶建立一個有主用帳戶併成爲數據庫根管理員權限,他能夠單獨分配給不一樣數據庫實例的主用戶名和密碼
    • 可使用主用戶憑證鏈接數據庫
    • 接收RDS重要事件通知
  • 網絡隔離
    • RDS實例須要建立在VPC的私有子網中
    • 可使用IPSec ×××網關將RDS鏈接到現有的企業內部的IT基礎架構中
    • 在多可用區部署時,能夠建立全局子網組,這樣在建立RDS時只須要制定可用區便可從全局子網組中分配響應的子網和IP地址
    • 全部從VPC外部的EC2或者Internet對RDS的訪問,都必須通過×××或堡壘機實現,而且堡壘機須要充當SSH Bastion的角色
  • 自動補丁
    • RDS軟件始終與最新的補丁保持同步
    • 默認首周須要30分鐘進行維護
    • 建議每一週須要計劃30分鐘的維護時間以完成補丁操做
    • 通常僅有規模計算相關的補丁須要脫機執行,一般每幾個月發生一次
  • RDS加強型監控
    • 加強型監控可以捕獲 RDS 實例的系統級指標,如 CPU、內存、文件系統和磁盤 I/O 等
    • 最多能夠查看全部指標在 1 個小時以前的性能值,粒度最高爲 1 秒
    • RDS 加強型監控提供了一系列將以 JSON 有效負載形式發送到您的 CloudWatch Logs 帳戶的指標。JSON 有效負載會按照上次爲 RDS 實例配置的粒度進行發送。
    • 加強型監控在 CloudWatch Logs 中配置的默認保留期是 30 天。
  • RDS採用四層安全模型
    • RDS安全組
      • 用於控制傳入和傳出數據庫實例的流量,默認狀況下不能進行網絡訪問,但能夠經過ACL設置容許特定IP端口進行訪問。
    • 數據庫安全組
      • 控制對VPC外部數據庫實例的訪問
      • 默認狀況下RDS必須在VPC內才能啓動,可是仍然存在VPC外部託管RDS的狀況
      • 數據庫安全組僅適用於入站流量,目前不容許數據庫安全組有出站流量。
      • 可使用RDS API 或 AWS 控制檯的 RDS部分建立數據庫安全組
      • 安全組來控制對RDS的數據庫實例訪問, 相似於EC2安全組,但不能夠互換
      • 默認拒絕全部訪問,全部容許權限都須要顯式聲明
      • 能夠受權IP或安全組訪問
      • 僅容許訪問數據庫服務器端口
      • 數據庫安全組無需指定目標端口,默認由實例自動定義
      • 能夠在不重啓數據庫實例的狀況下對安全組策略進行更新


+ VPC安全組 - 控制對VPC內數據實例的訪問
+ 容許一個特定的來源(組)訪問VPC中與該VPC安全組關聯的數據庫實例, 能夠是地址範圍也能夠是VPC安全組
+ 必須使用EC2 API或VPC控制檯的Security Group選項才能建立VPC安全組算法


+ EC2安全組
+ 控制對EC2實例的訪問
+ RDS 數據加密
+ RDS加密適用於全部數據庫,除了 MS SQL Express版
+ RDS 加密僅適用於部分實例類型
+ 能夠對靜態RDS數據庫實例和快照進行加密,然後自動備份、只讀副本和快照均經過AES-256加密
+ 使用SSL\TLS對應用程序和數據庫實例之間鏈接進行加密
+ 加密僅能在建立數據庫時指定,不能過後對其加密,可是能夠經過恢復數據庫快照時加密這個複製版本
+ 加密RDS鏈接
+ 預置RDS實例時,會建立SSL證書並在數據庫實例上安裝該證書
+ 負責加密傳輸中的數據
+ 使用SSL/TLS加密應用程序與數據庫實例之間的鏈接,但不該依賴於數據庫自己的身份驗證
+ 將數據庫實例配置爲僅接受加密鏈接
+ 加密RDS資源
+ 啓用RDS數據庫實例加密選項,能夠加密靜態RDS實例和快照,自動備份和只讀副本
+ 利用KMS管理RDS資源的密鑰
+ 採用AES-256加密算法進行加密,RDS以透明方式進行訪問驗證和解密以下降性能影響
+ RDS將特定於Oracle 或 MySQL這些數據庫包加密數據,稱爲透明數據加密(TDE),TDE使用在數據庫應用程序中建立的密匙保護數據。sql

AWS Redshift

概念

  • 徹底託管的PB級數據倉庫服務
  • 基於SQL-based 設計的關係型數據庫
  • 基於行業標準的PostgreSQL,所以大多數現有的SQL客戶端應用程序只能進行極少的更改。
  • 針對OLAP設計的高性能數據分析和報告
  • Redshift使您可使用標準SQL命令快速查詢結構化數據的功能,以支持在大型數據集上進 行交互式查詢。
  • 使用柱狀存儲,數據壓縮和區域映射等技術減小查詢所需的IO量。
  • 經過ODBC或JDBC鏈接與各類數據加載,報告,數據挖掘和分 析工具集成。
  • Redshift負責管理設置,操做和擴展數據倉庫所需的工做,從設置基礎架構容量到自動執 行備份和修補等持續管理任務。
  • Redshift會自動監控您的節點和驅動器,以幫助從故障中恢復。

集羣

  • 集羣由一個領導者節點和多個計算節點組成
  • 支持從160GB - 1PB甚至更大的
  • 最多支持128個計算節點
  • Redshift集羣不能使用競價實例
  • 僅能在一個可用區部署
  • 客戶端只與領導者節點交互,計算節點對外部是徹底透明的
  • Redshift目前支持6種節點類型,分爲兩大類
    • 密集計算型 - 最大支持SSD 326TB
    • 密集存儲型 - 最大支持HDD 2PB
  • 每一個集羣都包含一個或多個數據庫,而且分佈在各個計算節點中,每一個節點的數據庫數據都是同步的
  • 計算節點的磁盤存儲會分片,切片一般在2-16之間,全部節點都會參與並行查詢。
  • 一般計算節點越多,查詢性能越強
  • 能夠隨時調整節點大小和類型,調整後都會建立一個新的集羣並將數據遷移過去,調整期間數據庫只讀。

表設計

  • 每一個Redshift表均可以指定表名稱、列及其數據類型等。
  • 數據類型:
    • 常見數據類型包括: INTEGER,DECIMAL和 DOUBLE,文本數據類型(如CHAR和VARCHAR)以及日期數據類型(如DATE和TIMESTAMP)
  • 壓縮編碼
    • 首次將數據加載入新表時,自動對數據進行採樣而且爲每列選擇最佳壓縮方案
  • 分發策略
    • 建立表格時指定如何在集羣的節點進行切片進行分發,以及使用哪一種查詢模式
    • 分發風格對查詢性能,存儲要求,數據加載和維護影響很大
      • EVEN 分發: 默認,對數據以統一方式進行切片和分發
      • Key 分發:基於某一列的值進行分發,匹配的值會存儲在一塊兒
      • All 分發: 將整個表完整的分發到每一個節點
  • 排序Key
    • 在建立表時指定一個或多個列做爲排序key,這樣在處理必定範圍的查詢時能夠跳過大量的塊
    • 表格的排序Key能夠複合和交錯,查詢使用前綴可讓複合排序的查詢更加高效

數據加載

  • 使用標準的SQL Intert/update進行表的建立和修改記錄
  • 在Redshift中使用COPY命令是一個更高效的方式,如從S3或者DynamoDB中進行批量數據加載
  • 大量數據加載完成後,建議使用VACUUM命令從新組織數據並用ANALYZE來統計更新表格統計信息
  • UPLOUD命令能夠從Redshift中導出數據

查詢數據

  • 也是用標準的SQL Select命令進行查詢
  • 對於多用戶的大型Redshift,可使用WLM工做負載管理對查詢進行排隊,WLM能夠對每一個隊列設置併發級別。
  • 使用Redshift Spectrum
    • 能夠對 Amazon S3 中 EB 級非結構化數據運行查詢,而無需進行加載或 ETL 操做。
    • 當您發佈查詢時,查詢會進入 Amazon Redshift SQL 終端節點,該終端節點會生成查詢方案並對其進行優化。
    • Amazon Redshift 會肯定哪些數據存儲在本地以及哪些數據存儲在 Amazon S3 中,而後生成一種方案來儘量減小須要讀取的 + Amazon S3 數據量,從共享資源池中請求 Redshift Spectrum 工做線程來讀取和處理 Amazon S3 中的數據。
    • Redshift Spectrum 可根據須要擴展到數千個實例

備份快照

  • 自動快照到期後會自動刪除,設置時間爲1-35天
  • 支持跨區域快照,手工快照可跨區域甚至跨帳戶存儲,須要手工明確刪除
  • Redshift快照和備份數據存儲在S3中
  • 免費的快照存儲空間與當前節點容量至關,因此須要及時清除不須要的快照文件

安全

  • 安全級別
    • 基礎架構級別安全,使用IAM來限制用戶的可執行操做及生命週期
    • 網絡級別安全, 將Redshift部署到私有的VPC中(必須),並利用ACL和安全組限制細粒度網絡訪問
    • 數據庫級別安全,能夠經過Redshift的主用戶名和密碼建立更多的用戶並給他們相應受權
  • 數據加密存儲
    • 數據加密是可選項,利用硬件隨機生成的AES256密鑰對每一個數據塊進行加密,但加密影響性能
    • 多種靜態加密技術,符合HIPAA和PCI DSS合規要求
      • KMS
      • HSM
  • Redshift Enhanced VPC Routing
    • 強制將全部的COPY和UNLOAD流量指定走AWS VPC 內部
    • 若不開啓,則全部流量默認走Internet,包括從AWS內部讀取
  • 數據加密傳輸
    • 採用硬件加速的SSL鏈接與S3或者DynamoDB進行通訊
    • 能夠在客戶端上安裝SSL證書pem公鑰文件實現對Redshift 服務器的鏈接和管理
    • 支持橢圓曲線HCDHE協議提供更強大的密碼套件確保SSL的私密性
    • 同時也能夠啓用Perfect Forward Secrecy使用短暫會話密鑰防止密鑰泄露
  • 記錄全部的SQL操做信息用於監控和審計,包括鏈接嘗試、查詢和對數據庫的更改等操做
  • 在維護窗口中進行自動補丁更新

例外

  • 不適用於大規模對少數對象的讀寫操做,這種場景須要考慮Aurora 或者RDS

DynamoDB

主要特性

  • 是NoSQL的的託管版本
    • 低延遲 - 基於SSD,延遲小於10ms
    • 大規模無縫可擴展 - 無表大小和吞吐限制、可針對存儲和吞吐量進行實時從新分區
    • 性能可預測 - 預配置吞吐量模型
    • 持久性和可用性 - 自動執行區域內三向複製,確保一致性、僅限磁盤寫入
    • 安全性- 成熟的加密方案對用戶身份進行驗證
    • 零管理- 徹底託管的NoSQL服務
  • 同時鏈接和訪問多個NoSQL存儲(如RDS、S三、MongoDB、Hbase等),對組合數據集進行復雜分析
  • 經過在多個分區上自動分配表的數據和流量提供一致的性能級別,其性能是以讀寫容量的吞吐量級衡量的
  • 根據實際需求能夠隨時調整讀取和寫入容量,DynamoDB會自動添加或刪除基礎架構或調整內部分區,默認最大支持20000個讀取和20000個寫入容量
  • DynamoDB 按照存儲數據大小和讀寫能力進行收費
  • 應用場景
    • 支持與Amazon EMR集成
    • 支持即插即用的Hadoop分析
    • 支持儲存會話數據

數據模型

  • 沒有架構,一個表有多個項目,項目具備可變屬性
  • 數據類型
    • 對每個主鍵及其屬性都必須指定一個數據類型
      • Scalar數據類型 - 表示某一個值的類型, 包括字符串、數值、二進制、布爾值、空
      • Set數據類型 - 表示某一個list的類型,包括 字符串set,數值set和二進制set
      • Document 數據類型- 表示多個嵌套的屬性,相似於JSON文件結構,包括List和Map兩種文檔類型
      • List - 用於儲存不一樣數據類型的屬性的有序列表
      • Map - 每一個可用於Key/Value的無序列表,能夠用來表示任何JSON對象結構
  • 主鍵
    • 主鍵是每一個項目的惟一標識也是惟一強制屬性,DB經過它來進行GET/PUT
    • 每一個主鍵屬性必須是字符串、數字或二進制。
    • 兩種類型的主鍵
      • 分區鍵 - 一個屬性一個分區哈希值組成,用於構建無序散列索引
      • 分區+排序鍵 - 兩個屬性組成,由分區和排序組合起來做爲惟一標識
  • DynamoDB 調用包頭類型
    • host
    • x-amz-date
    • x-amz-target
    • content-type
  • 預置容量
    • DynamoDB須要調配必定數量的讀寫容量來處理預期工做負載
    • 選擇適宜的容量已持續的提供低延遲的響應時間,能夠經過Updatetable指令縮放。
    • 讀操做每4K爲一個單位容量,寫操做每1K爲一個單位容量。
      • 最終一致性 - 1個單位容量能夠讀寫兩次
      • 強一致性 - 1個單位容量能夠讀寫一次
      • 事務一致性 - 2個單位容量才能讀寫一次
    • 能夠CloudWatch 監控DynamoDB容量並制定擴展決策。
  • 二級索引
    • 只有使用分區+排序主鍵時,能夠定義一個或多個二級索引
    • 支持全局二級索引和本地二級索引等靈活方法來查詢非主鍵值
      • 全局二級索引索引整個分區+排序鍵的值
      • 本地二級索引索引相同分區鍵但不一樣排序鍵的值
    • 主鍵分爲單屬性分區或複合屬性分區
      • 單分區以UserID爲惟一標識
      • 複合分區以UserID(分區鍵)和TimeStamp(排序鍵)進行組合標識一對一關聯關係,支持交叉檢索功能
    • 當數據集大小和預配置容量增長時會發生自動分區
    • 只支持一個本地二級索引,但能夠建立多個全局二級索引
    • 項目大小不能超過400KB,必須包含屬性名稱和屬性值長度兩個二進制長度

DynamoDB屬性

  • 一致性
    • AWS同一區域內的多個可用區之間自動複製每一個DynamoDB表
    • 讀取一致性:經過控制成功寫入或更新的讀取操做的方式和時間,指定最終一致性或強一致性讀取,默認是最終一致性讀取
    • 最終一次性讀取: 數據副本的一致性可以須要1秒實現,僅驗證數據一致而不會驗證寫入完成,因此可能讀取的是舊數據
    • 強一致性讀取:讀取時驗證寫入成功完成,而且確保數據讀取的一致性,在網絡延遲或者中斷的狀況下可能不可用。
  • 批量操做
    • 能夠經過單個操做執行最多25個項目的建立或更新
  • 項目搜索
    • 查詢 - 用於僅限主鍵屬性的查找和索引操做,用排序鍵值能夠優化搜索結果,結果會按主鍵排序,
    • 掃描- 會返回每一個項目的全部屬性,返回限制1MB
    • 每一個查詢或掃描結果返回最多1MB,若超過則須要對增量結果進行翻頁
  • 縮放和分區
    • DynamoDB能夠無限數量的擴展而且提供一致的低延遲性能
    • 經過分區來進行水平擴展
    • 好的程序設計須要考慮表的分區結構,以平均分配讀寫事務,實現低延遲處理
    • 隨着表中項目的增長,能夠不斷拆分現有分區來添加額外分區
    • 預置吞吐量將在個分區之間平均分配,且不可跨區共享
    • 一個分區可容納10GB數據和最多3000個讀取容量以及1000個寫入容量,對於未充分利用的容量分區,能夠用於處理突發流量
  • AWS DynamoDB Stream
    • 獲取DynamoDB最近24小時內的項目修改列表用於分析和審計。
    • 經過Stream中讀取的活動修改日誌,能夠在不修改原始應用程序的狀況下擴展和構建新的功能。
  • 自動備份
    • 須要經過AWS Data Pipeline的專用配置模板,將DynamoDB完整或增量備份到同一地區或不一樣地區進行備份
  • DAX
    • DynamoDB 數據庫性能加速
  • DynamoDB 自動擴展
    • DynamoDB在建立時,能夠指定讀取和寫入流量以及每一個大小的平均大小來配置所需的請求容量
    • 能夠經過第三方工具(如 CloudFormation模板)啓用 Dynamic DynamoDB 配置自動擴展和縮減表格
    • 支持將擴展活動限制在必定時間段,使用上下限預置單獨擴展讀取和寫入吞吐量
    • 支持斷路器,確保每次擴展和縮減活動以前檢查應用程序是否正常以免當應用程序發生問題而觸發的虛假縮減活動

安全

  • DynamoDB 須要與IAM服務集成,用策略最大限度控制權限。
  • 全部操做都必須經過身份驗證,建議使用EC2實例配置文件或角色來管理密鑰
  • 在數據庫級別能夠建立權限,以細粒度的容許或拒絕對項目和屬性的訪問
  • 對DynamoDB的服務請求都必須包含HMAC-SHA-256的簽名
  • 移動端的最佳作法是使用Web身份聯合與AWS安全令牌服務提供臨時密鑰
  • DynamoDB自己不提供服務器端加密存儲數據,須要存儲前使用客戶端或KMS加密

DynamoDB最佳實踐

  • 保持較小的項目大小
  • 將元數據存儲在DynamoDB中,將大型BLOB存儲在S3中
  • 按日、周、月進行Hash計算使用表來存儲實踐序列數據用於強制分區
  • 使用有條件更新或者開放式併發控制更新(OCC)
  • OCC是假定多個事務能夠頻繁完成且相互不會干擾
  • 獲取資源時無需提早鎖定,提交時須要確認沒有衝突的修改,如有則回滾
  • 僅適用於低爭用環境,從而提升吞吐量,不然反而會大大下降性能
  • 避免熱鍵和熱分區
  • 更加適合於無狀態的服務設計
  • 支持JSON對象的存儲

Amazon Aurora

概述

  • 是一種面向服務的架構交付的關係型數據庫,是mySQL的託管版本,還兼容PostgreSQL
  • 速度是MySQL的5倍,成本是其餘商用數據庫的1/10
  • 容量支持10GB - 64TB;每10GB一增量,僅爲使用的容量付費。
  • 支持Schema Changes
  • 利用S3實現可擴展和高可用性,默認支持6個副本,
    • 複製到3個可用區,每一個可用區2個副本
    • 2個如下副本丟失,不影響寫入
    • 3個如下副本丟失,不影響讀取
  • 與MySQL 5.6簡易兼容 - 現有程序可正常運行,可輕鬆遷移,可直接導入數據文件

其餘特性

  • 擴展性能
    • 與S3集成,可實現最多三個可用區之間6個副本的持續備份
    • 將日誌記錄和存儲層轉移到可擴展的多租戶服務層
    • MySQL支持跨區域副本(最多5個區域)創建全球數據庫,使用Read Replicate 技術, PostgreSQL不支持,跨區域DR須要手工完成
  • 彈性設計
    • 最多15個副本,約10ms副本滯後
    • 99.99%可用
    • 即時崩潰恢復(60s),故障轉移30s內
    • 與單一線程重放全部日誌的傳統數據庫至關
    • 在磁盤讀取時重放重作記錄
    • 自動備份,且不會影響數據庫性能
    • 支持快照,而且能夠跨帳戶共享快照,也能夠跨區域共享,可是不能同時 跨帳戶和區域共享
    • 平行的分佈式異步恢復
    • 緩存層可在數據庫重啓時繼續使用,從而改善讀取響應
    • 支持KMS加密,但必須在建立數據庫時即開啓加密選項
    • 主數據庫出現故障時,只讀副本能夠實現即時提高爲主數據庫
  • 支持Aurora Serverless
    • 適用於 Amazon Aurora 的 MySQL 兼容版的按需 autoscaling 配置。
    • Aurora Serverless 數據庫集羣會根據您應用程序的需求自動啓動、關閉以及擴展或縮減容量。
    • Aurora Serverless 是簡單且更具成本效益的選擇,適用於不頻發的、間歇性的或不可預測的工做負載。
  • Parallel Query
    • Amazon Aurora Parallel Query 是一項功能,可以將單個查詢的計算負載下移並分佈到 Aurora 存儲層中的數千個 CPU。若是不使用 Parallel Query,則對 Amazon Aurora 數據庫發出的查詢將所有在數據庫集羣的一個實例中執行;這與大多數數據庫的運做方式相似。
    • Parallel Query 很是適合須要新數據和良好查詢性能的分析工做負載,即便在大型表上也是如此。這種類型的工做負載在本質上一般是可操做的。

好處:

  • 速度更快:Parallel Query 可將分析查詢的運行速度提升多達 2 個數量級。
  • 操做簡易性和數據新鮮度:您能夠直接對 Aurora 集羣中的當前事務數據發出查詢。
  • 同一數據庫上的事務工做負載和分析工做負載:藉助 Parallel Query 功能,Aurora 能夠在處理並行分析查詢的同時保持較高的事務吞吐量。

數據庫架構示例

相關文章
相關標籤/搜索