DynamoDB 名詞概念

DynamoDB

Table

  • 類似於 RDBMS 的 Table.
  • DynamoDB Table 是一個儲存集合單位。
  • 相當於 MongoDB 的 Collection

Items

  • 每個 Table 可以有多個 Items,相當於 RDBMS 的 Rows。
  • 每個 Items 可包含多個 Attributes
  • 相當於 MongoDB 的 Document

Attributes:

  • 每個 Items 由一個或多個 Attributes 組成
  • Attributes 支援最深 32 個層級

Example

  • People Table
{
    "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:
    1. Key = Hash Key or (Hash and Rang Key), 前面的 Hash Key 是 base Table 的 hash Key, 後面的 Hash and Range Key 是 join 的 Table
  • Local secondary index:
    1. Key = Hash Key and Range Key
  • 要注意的是,DynamoDB 不管是 Primary Key or Secondary Indexes,在 Table 建立之後就無法修改。