DynamoDB
プライマリキー
パーティションキー
パーティションキーのみ を含むテーブルではこれで UNIQUE
パーティションキー + ソートキー
複合プライマリキー、組み合わせで UNIQUE
プライマリキー属性に許可される唯一のデータ型は、文字列、数値、またはバイナリ
セカンダリインデックス
グローバルセカンダリインデックス: テーブルと異なるパーティションキーとソートキーを持つインデックス
GSI(Global Secondaly Index)
ローカルセカンダリインデックス: テーブルと同じパーティションキーと、異なるソートキーを持つインデックス
ベーステーブルのパーティションに限られるので local
スカラー: 数値、文字列、バイナリ、ブール、および null です。
意外と文字列やバイナリのサイズ制限きびしい(1Item400kb)
バイナリ送る時は Base64 で送る
ドキュメント: リストとマップ
リスト: 型違ってもよい ["Cookies", "Coffee", 3.14159]
マップ: JSON そのまま入れれるのか?
セット: 集合
テーブル定義の雰囲気
AttributeDefinitions はキーだけのスキーマでよさそうだけど全部書いたほうが管理しやすいとかないのか? 書いちゃだめ?
データ追加
データ取得
GetItem: PKEY で直引き
code:getitem.json
{
TableName: "Music",
Key: {
"Artist": "No One You Know",
"SongTitle": "Call Me Today"
}
}
Query: パーティションキーで取得してフィルタ
KeyConditionExpression
code:query.json
{
TableName: "Music",
KeyConditionExpression: "Artist = :a and contains(SongTitle, :t)",
FilterExpression: "price < :p",
ExpressionAttributeValues: {
":a": "No One You Know",
":t": "Today",
":p": 1.00
}
}
Scan: 全体なめる
インデックス使うこともできる
用語
GSI: Global Secondaly Index
◯◯プレーン: API のカテゴリ、データプレーンは CRUD できる、コントロールプレーンはテーブル作ったり
GSI オーバーローディング