AWS SAA系列
AWS Database part1
RDS、DynamoDB,關聯式與NoSQL資料庫
Amazon Relational Database Service (RDS)
關聯式資料庫,是AWS全託管的服務,有別於傳統地端資料庫需要處理網路、硬體資源、電源供應、作業系統…等等,這些在RDS上都不需要,全部交由AWS處理,相比於建立於EC2之上,RDS只需要處理應用層級的問題,讓使用者只需要專注在自己的商業邏輯之上。
支援
- MySQL
- Amazon Aurora
- SQL Server
- Oracle
- PostgreSQL
- MariaDB
Features
- Read replica:建立讀寫分離資料庫,可以複製一份提供查詢使用。
- Multi-AZ Deployments:high availability、Synchronous replication,啟用此設定會在另一個subnet建立備用資料庫並即時同步資料,當主要資料庫毀損後透過DNS切換CNAME的方式轉換到備援資料庫,所以應用程式如果cache DNS可能會導致切換失敗。
- Automated Backups and Maintenance:snapshot,資料庫建立後自動建立快照,並在設定的時間後刪除,也可以自行手動建立快照,可透過快照複製資料庫到其他Region。
- Parameter Groups:針對資料庫的啟動與執行參數設定。
- Encryption:使用KMS加密,也可以使用AWS KMS customer master key (CMK)。
Instance Type
- Burstable Compute (T Family):爆量效能,可充分利用CPU。
- General Purpose (M Family):一般用途。
- Memory Optimized (R Family):記憶體容量優化,適用於高連線數。
Storage Type
- General Purpos SSD:適用於大部分的情境。
- Provisioned IOPS SSD:提供更高的IO效能。
- Magnetic:效能較低,價格便宜,有一些限制,像是不支援自動擴展、不支援彈性磁碟區、限制為1000IOPS以下。
Amazon Aurora
AWS 特有的關聯式資料庫,相容於MySQL & PostgresSQL,效能更高,所以如果今天單純想提升效能只需要將原本的DB換成Aurora,程式與架構都不需要改變,Aurora儲存空間與read replicas數量的上限都相對較高,適合大型系統的資料庫選用,當然成本也高。
Amazon Aurora Serverless
自動啟動、根據需求擴展予關閉。使用得好的話成本較低,以秒計費。適用於使用頻率的服務、開發或是測試資料庫。相對也會有一些限制,像是不能將snapshot匯出至S3等等。
Amazon DynamoDB
全託管的NoSQL資料庫,與RDS相同,不需要處理硬體與網路或是作業系統的升級。在資料量爆炸的時代,低結構且資料量大的情況,就適合使用NoSQL,低延遲且高效能。
Features
- SSD
- Replicated across multiple Azs
- Provisioned throughput
- Access Control
Models
- Table:資料表,如同RDB裡面的table。
- Item:一筆資料。
- Partition Key:Partition類似資料夾的概念,是唯一的(uniquely),用來建立索引hash index,當需要擴展(scale)的時候也會需要用到,通常有可能是ID、Customer ID、Product ID。
- Sort Key:在資料夾內排序,指定這個欄位作為排序的依據,像是日期,建立日期,編輯日期,序號之類的。,如果有Sort Key,則Partition Key + Sort Key 才是Primary Key(唯一值),類似於組合鍵。
- Local Secondary Index(LSI):本地二級索引,用來重新排序,Partition Key必須跟原本的相同,但是可以選擇別的欄位作為 Sort Key。
- Global Secondary Index(GSI):全域二級索引,Partition Key與Sort Key都可以重新調整,如果資料寫入速度大於GSI綁定index的速度,當超過一定的buffer後將都導致DB卡住(throttled)直到GSI綁定完成。
MODE
- On-demand:系統自動根據需求調整大小,不須手動設定。
- Provisioned:手動指定讀寫容量的大小,適用於已知系統吞吐量的情況。
DynamoDB Streams
當DynamoDB內的資料發生異動,會將異動的log存放24h,超過時間就會被移除,可以透過DynamoDB Streams依據取的這些變更資料,並結合Amazon Kinesis、API或是AWS Lambda來進行邏輯處理。aws doc
Amazon DynamoDB Globe Table
建立的時候會同時在各Region建立副本,具有相同的資料結構與名稱,且資料會自動同步到各副本中,無須使用者特別處理就可以將資料存取到其他區域之外。
Amazon DynamoDB Accelerator (DAX)
DAX是提供給 Amazon DynamoDB的全託管記憶體快取,使每秒數百萬個請求也能將時間從毫秒縮短到微秒,提供十倍的效能增加。
資料來源
- aws doc
- Amazon Relational Database Service (Amazon RDS)
- AWS Blog(Choosing the Right DynamoDB Partition Key)
- AWS re:Invent 2018(Amazon DynamoDB Deep Div)
- AWS doc(DAX)