iT邦幫忙

2021 iThome 鐵人賽

DAY 10
0
AI & Data

Data on Air - 以AWS服務實作雲端數據分析系列 第 10

DAY 10 Big Data 5Vs – Velocity(多樣性) DynamoDB

對於「半結構化」類型的資料可以存放至NoSQL 資料庫*之中。NoSQL 資料庫常見於需要較快寫入速度的應用場景;半結構化資料本身少了關聯式資料庫那種schema的限制,以換取較快的寫入速度。幾乎等於NoSQL 資料庫代名詞的資料庫軟體MongoDB,在AWS上也有個對應的服務叫Amazon DocumentDB ,它是與 MongoDB 完全相容性的全託管資料庫服務。在DocumentDB 中可以執行與MongoDB相同的程式碼且可以使用相同的驅動程式和與資料庫工具。

然而,在AWS中更常用被應用的是另一個的 NoSQL 資料庫服務—Amazon DynamoDB。
DynamoDB 是可以快速佈建與快速擴展的分散式資料庫,且有內建提供對資料庫中的資料做靜態加密的功能,如果不使用預設的金鑰也可搭配AWS KMS的金鑰加密。
https://ithelp.ithome.com.tw/upload/images/20210922/20140161ldgAyheilI.jpg
先認識DynamoDB的基本元件:

資料表Tables:是由 項目 組成的資料集合
項目Items:資料呈現的基本單位,含有只少一個屬性
屬性Attributes:存在於項目中,類似關聯式資料庫的欄位。有些項目有巢狀屬性,最多 32 層。

主索引鍵Primary Key:必須存在且獨一無二,可用來識別資料表中每個項目
次要索引Secondary Indexes:每個項目可有一或多個次要索引,有Global與Local兩種;
每個資料表預設可建立 20 個Global Secondary Indexes與5個Local Secondary Indexes

主控台右方橘色「建立資料表」按鍵點入可以直接建立資料表,從工具欄點進分頁也可以進入相同畫面來建立:
注意資料表名稱長度有限制
設定partition key:功能類似 Hash key
選用設定 Sort Key:功能類似 range key可以加快查找
https://ithelp.ithome.com.tw/upload/images/20210922/20140161VUnolqFuQG.jpg
可依照需求決定要多少算力,當然跟計算費用也有關
https://ithelp.ithome.com.tw/upload/images/20210922/20140161PkFF5iOqQ0.jpg

建立完資料表後可以從左邊工具欄進入項目分頁
選定剛剛建立的Table後可以來建立Item
https://ithelp.ithome.com.tw/upload/images/20210922/20140161mKdsmCPh3E.jpg

但實務上更常使用AWS CLI或CDK來與DynamoDB互動
以下提供基本增刪改查用法:

寫入

aws dynamodb put-item \
    --table-name 資料表名  \
    --item '{"項目": {"子項目": "屬性"}, "項目2": {"子項目2": "屬性2"}, \
            "項目3": {"子項目3": "屬性3"}, "項目4": {"子項目4": "屬性4"}}'

讀取

aws dynamodb get-item --consistent-read \
    --table-name 資料表名  \
    --key '{"項目": {"子項目": "屬性"}'

更新

aws dynamodb update-item \
    --table-name 資料表名  \
    --key '{"項目": {"子項目": "屬性"}' \
    --update-expression "SET "項目 = : 新項目"" \	
    --expression-attribute-values '{":新項目":{"項目":"新屬性"}}' \
    --return-values ALL_NEW

查詢

aws dynamodb query \
    --table-name 資料表名  \
    --key-condition-expression "項目 = : 子項目" \
    --expression-attribute-values  '{":子項目":{"子項目":"屬性"}}'

刪除

aws dynamodb delete-table --table-name 資料表名

*No-SQL( https://zh.wikipedia.org/wiki/NoSQL )


上一篇
DAY 9 Big Data 5Vs – Velocity(多樣性) RDS
下一篇
DAY 11 Big Data 5Vs – Velocity(多樣性)
系列文
Data on Air - 以AWS服務實作雲端數據分析30

尚未有邦友留言

立即登入留言