AWS Relational Database Service (AWS RDS)
- AWS 支援以下RDS
- MySQL 5.1, 5.5, 5.6, community Edition with InnoDB engine,Multi-AZ
- PostgreSQL 9.3, 9.4 9.5,Multi-AZ
- MariaDB 10.0.17, MySQL 那幫作者做的,Multi-AZ
- Avamar Aurora,Multi-AZ,相容MySQL和PostgreSQL,性能是MySQL的5倍,是AWS推薦的資料庫
- Oracle 11g, 12c,有三個版本,都支援Multi-AZ
- Standard One,Multi-AZ,Included License,KMS
- Standard,Multi-AZ,BYOL,KMS
- Enterprise,Multi-AZ,BYOL,KMS and TDE
- SQLServer 2008R2, 2012, 2014,有四個版本
- Express,不支援Multi-AZ,Included License,KMS
- Web,不支援Multi-AZ,Included License,KMS
- Standard,Multi-AZ,KMS
- Enterprise,Multi-AZ,KMS and TDE
- Storage Options
- Magnetic,性能最差,最便宜,用在需要很小IOPS的場景
- General Purpose SSD,通用型,大部分場景都可以使用
- Provisioned IOPS SSD,最高配置,價格最貴,用在需要高IOPS的場景
- RDS資料庫的兩種類型
- Online Transaction Processing (OLTP),事務型資料庫,對事務要求高,資料一緻性要求高
- Online Analytical Processing (OLAP),分析性資料庫,對計算和處理資料要求高,對讀性能要求高
- RPO/RTO
- RPO(Recovery Point Objective)出現事故時,最大允許丢失的資料量
- RTO(Recovery Time Objective)出現事故時,最大允許down機的時間
- Backup/Recovery
- 自動備份,Amazon RDS會自動為DB的Storage建立snapshot來備份資料,但預設情況每個backup隻保留一天,可以設定最多保留35天
- 手動備份,手動備份的backup不會被自動删除
- Recovery,恢複DB時不會影響原DB,隻會建立一個新的DB instance
- High Availability with Mulit-AZ
- 除了SQLServer的Express/Web不支援Multi-AZ,其它DB都支援Mulit-AZ
- Multi-AZ是指在不同的AZ上建立DB Instance,如果主Instance挂了,AWS會自動将連接配接轉移到副Instance,而不需要使用者任何操作
- Multi-AZ并不能提高DB的performance,隻是為了增加HA
- 可以通過reboot主Instance來模拟主DB當機
- Scaling up and Out
- Vertical Scalability,垂直擴充,增加CPU性能,增加記憶體,增加存儲,修改存儲類别等。注意,Storage的擴充不支援SQLServer。
- Horizontal Scalability With Partitioning,通過分區分表的方式水準擴充
- Horizontal Scalability With Read Replicas,通過建立隻讀副本來提高性能,這樣做的目的是讀寫分離。支援的DB有:MySQL,PostgreSQL,Aurora,MariaDB
- Security,可以從多個層面來控制RDS的安全
- IAM,設定IAM權限,僅允許有權限的使用者可以建立DB instance,修改DB屬性等
- 将RDS部署在private網絡中,并且建立DB subnet group,指定哪些子網可以通路DB所在的子網
- 建立RDS使用者,隻有合法的使用者可以登入RDS
- 在傳輸過程中使用SSL加密,對at rest的資料使用KMS和TDE加密
AWS Redshift
- AWS Redshift是資料倉庫,用于存放大量統計資料,内部實作是PostgreSQL,Redshift是典型的OLAP型資料庫
- 叢集和結點
- 支援6種結點類型,分為兩類,面向計算和面向存儲。面向計算的類型支援326TB的SSD資料,面向存儲的結點支援2PB的Magnetic資料
- 可以通過增加節點來提高整體性能
- Data Types, 支援多種資料類型,char,int,decimal,double,varchar等
- 壓縮編碼,第一次加載資料到空表時,Redshift會為每列選擇最好的壓縮方式。
- 分布式政策
- EVEN distribution,預設方式,資料會以統一的方式配置設定到slices上,而不管資料是什麼類型
- KEY distribution,通過某一列的值來配置設定row
- ALL distribution, 所有的資料都會配置設定到所有的結點
- Sort Keys
- 排序用key,在建立表的時候可以選擇性的指定一列或多列為sort key,以加快資料的排序
- 增加資料
- Redshift支援标準的SQL,例如INSERT,UPDATE等
- COPY指令支援從S3以檔案方式加載資料到Redshift,也支援從DynamodDB加載資料
- 查詢資料
- 支援标準SQL查詢,如INSERT等
- 支援并發查詢,workload management (WLM)
- Snapshot
- 支援動态快照和手動快照,自動快照會定期删除,手動快照不會自動删除,需要手動删除
- Security
- IAM,設定IAM權限,僅允許有權限的使用者可以建立DB instance,修改DB屬性等
- 将Redshift部署在private網絡中
- 建立Redshift master account,隻有合法的使用者可以登入Redshift
- 在傳輸過程中使用SSL加密,對at rest的資料使用KMS和CloudHSM
AWS DynamoDB
- No SQL 資料庫,與Mango DB類似
- 支援資料類型,String,Number,Binary,Boolean,Null,String Set,Number Set,Binary Set,List,Map
- 主鍵
- Partition Key,partition key唯一辨別Object,一個key就是一個partition
- Partion Key and Sort Key,partition key和sort key辨別Object,先partition分組,再sort key排序
- Provisioned Capacity
- Read capacity and write capacity
- 預先設定capacity,當有讀或寫操作時就會消耗相應的capacity,capacity越大,費用越高
- 可以設定Auto Scaling,但Read or Write capacity達到一定程度,就可以自動增加capacity
- Secondary Index
- Global Secondary Index,全局index,會在所有的partition上查詢資料。任何時候都可以建立任意多的global secondary index
- Local Secondary Index,本地index,隻在目前partition上查詢資料。在建立table的時候指定,且隻能有一個loca secondary index
- Writing and Reading data
- PutItem,UpdateItem,DeleteItem,GetItem,Query or Scan action,etc
- 最終一緻性
- Eventually Consistent Reads,可能讀取到髒資料,但最終會讀取到一緻的資料
- Strongly Consistent Reads,不會讀取到髒資料,但可能會影響性能
- Batch Operations
- BatchGetItem,BatchWriterItem等批量操作
- Searching Items
- Query,僅查詢需要的資料
- Scan,會Scan所有資料
- 一般推薦用Query而不是Scan,Scan會掃描所有資料或所有secondary index
- Scaling and Partitioning
- 通過建立更多的partition來擴充DynamoDB資料庫表
- Security
- 通過IAM控制IAM User通路DynamoDB
- Streams
- 支援通過修改DB的log來記錄改動的資料,通過擷取修改DB的log,可以用于審計資料的修改,統計資料通路等
- 相當于把資料庫的修改記錄stream到log裡,其它應用就可以基于log做更多的事情
- Multi-AZ
- Dynamo DB預設按照Multi-AZ模式來部署以提高高可用