dynamodb是aws NOSQL全托管資料庫。
1.所有的表都是分區的,主鍵有兩種
a》隻設定一個partition key
b》設定一個partion key和一個range key,相當于聯合主鍵
2.它可以根據表的資料量以及capacity unit自動進行分區擴充
a》每個分區最大10GB,如果表的資料量超過10GB,會自動建立兩個分區,把資料平均分散到建立的兩個分區裡面,然後删除原來的分區,也就是由原來的一個分區變成兩個新的分區
b》一個分區最大支援3000個read capacity unit和1000個write capacity unit,如果capacity unit發生變化,有可能會導緻分區數量的增加,比如
原來的capacity是 read 1000 write 500 1000/3000+500/1000=0.888 1個分區
新的capacity是 read 1000 write 1000 1000/3000+1000/1000=1.333 2個分區
3.No schema,建表的時候隻需要指定主鍵,其它字段在往表裡面插入資料的時候動态指定,每條記錄可以有不同數量的字段,不同記錄的同名字段,其類型也可以不同
4.多種字段類型,支援json資料的存儲
Scalar類型,也就是單值類型
String abcd
Number 24.56
Boolean true,false
Binary 二進制資料,比如圖檔
Null 不明或者未定義
Document類型
Map json格式
List 清單,清單内可以存儲不同類型的item
Set 集合 集合記憶體儲的item的類型必須一緻,比如都是String,或者都是Number
5.支援TTL,如果希望表裡面的記錄隻存在一個時間段,過期自動删除的話,可以指定一個ttl字段,這樣dynamodb會根據存留期限的數值來自動幫助你進行過期資料的删除工作,比如兩個小時,一周,兩年,期限任意
6.表的操作支援stream,也就是流。通過開啟stream,可以把對表的增删改操作記錄到stream管道裡面,然後我們可以通過trigger來觸發lambda函數,來消費流裡面的資料。啟用stream的話,有三種類型可以選擇
a》only new image 隻輸出修改後的record 比如 insert
b》only old image 隻輸出修改前的record 比如delete
c》new image and old image 變更前後的record都輸出 比如 update
7.支援全局二級索引和本地二級索引,也就是GSI和LSI
GSI支援跨分區檢索
LSI隻支援同一個分區内部的檢索
8.不支援外鍵關聯,也不支援表聯結,支援begins_with,contains等條件表達式
9.檢索包括query和scan
query通過主鍵或者索引來檢索,速度較快
scan可以通過任意字段進行檢索,因為不走索引和分區,速度較慢,全表查詢
10.支援batch檢索和batch插入和删除
BatchGetItem每次最大可以傳回100條record
BatchWriteItem每次最大可以寫入或者删除25條record
11.針對capacity unit進行按小時收費,比如write capacity unit 10unit一個小時0.00742USD,read capacity unit 50unit一個小時0.00742USD
12.檢索分為最終一緻性和強一緻性,預設是最終一緻性
強整合性的話,1 read capacity unit,4K以内的record,1秒可以讀取1條
最終一緻性的話,1秒可以讀取2條
1 write capacity unit,1K以内的record,1秒可以寫入1條,如果record占2K,同樣1秒寫入一條的話,則需要2個write capacity unit