DynamoDB
Table
- 類似於 RDBMS 的 Table.
- DynamoDB Table 是一個儲存集合單位。
- 相當於 MongoDB 的 Collection
Items
- 每個 Table 可以有多個 Items,相當於 RDBMS 的 Rows。
- 每個 Items 可包含多個 Attributes
- 相當於 MongoDB 的 Document
Attributes:
- 每個 Items 由一個或多個 Attributes 組成
- Attributes 支援最深 32 個層級
Example
{
"PersonID":"101",
"LastName":"Simtih",
"FirstName":"Fred",
"Phone":"123-456",
},
{
"PersonID":"102",
"LastName":"Jones",
"FirstName":"Anytown",
"Address":{
"Street":"123 Main",
"City":"Anytown",
"Zip":123
}
}
Primary Key
Partitiion Key
- 相當於 RDS 的 Unique Key, 有一組不會重複的 hash value
Partition Key + Sort Key (複合鍵)
- 先找到 unique key 再依照 sort key 做索引, hash + range
- Hash : select * from xxx where id = hash
- Hash + range : select * from xxx where id between (123, 456)
Secondary Indexes (二級索引)
- 二級索引的會有一張 base table 跟 關聯的 table
- Global secondary index:
- Key = Hash Key or (Hash and Rang Key), 前面的 Hash Key 是 base Table 的 hash Key, 後面的 Hash and Range Key 是 join 的 Table
- Local secondary index:
- Key = Hash Key and Range Key
要注意的是,DynamoDB 不管是 Primary Key or Secondary Indexes,在 Table 建立之後就無法修改。