AWS SAA系列

AWS Database part1

RDS、DynamoDB,關聯式與NoSQL資料庫

RobertWang

--

Photo by Sabina Sturzu on Unsplash

Amazon Relational Database Service (RDS)

關聯式資料庫,是AWS全託管的服務,有別於傳統地端資料庫需要處理網路、硬體資源、電源供應、作業系統…等等,這些在RDS上都不需要,全部交由AWS處理,相比於建立於EC2之上,RDS只需要處理應用層級的問題,讓使用者只需要專注在自己的商業邏輯之上。

aws

支援

  • MySQL
  • Amazon Aurora
  • SQL Server
  • Oracle
  • PostgreSQL
  • MariaDB
Multi-AZ

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

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建立副本,具有相同的資料結構與名稱,且資料會自動同步到各副本中,無須使用者特別處理就可以將資料存取到其他區域之外。

aws doc

Amazon DynamoDB Accelerator (DAX)

DAX是提供給 Amazon DynamoDB的全託管記憶體快取,使每秒數百萬個請求也能將時間從毫秒縮短到微秒,提供十倍的效能增加。

aws DAX

資料來源

--

--

RobertWang

好好學習,天天向上,期待大AI時代來臨