DynamoDBとは?
AWSが提供するフルマネージドなNoSQLデータベース(キーバリューストア)、どんな規模にも対応する高速で柔軟なキーバリュデータベース
RDBとの違い
- スキーマ(カラムのデータ型や桁数指定したもの)が使えない。
- SQLが使えない。
特徴
- SQLに比べたらシンプルなクエリ
- 1日10兆規模のアクセスがある。
- 毎秒2000万件以上のリクエストを捌ける。
- 規模関係なく、数ミリ秒のレスポンスを返せます。
テーブルの作成
「テーブル名」と「パーティションキー」は必須で入力します。(ソートキーはオプションなので任意入力です。)
「テーブルの作成」をクリックします。
少し待つと以下のようにテーブルが作成されます。
レコードの確認
テーブル名をクリックします。
「テーブルアイテムの探索」をクリックします。
テーブルを作成したばかりだと、まだ何も登録していないので「返された項目(すなわちレコード)」が空の状態になっています。
テーブル構成
Items
一行一行を示します。Attributesの個数はバラバラです。
Attributes
Itemsの中の一つ一つの属性のことです。
partition keys
必須になります。RDBでいえばテーブルのプライマリキーになります。一行の中に必ず一つは必要という意味になります。データの分布を決定するキーとして使われます。
- Itemを一意に識別できます。
- これを元にItemがどこのパーテーションに位置するかが決まります。(DynamoDBは内部ではスケールのためにパーテーションを保持しているため。)
sort key
オプションになります。partition keyのみで十分の場合は必要ありません。使用するとQueryによる幅広い探索が可能になります。
- パーテーション内でソートキーは昇順で配置されます。
- パーテーションキーごとのソートキーの数は制限はありません。
オプション
リザーブドキャパシティ
長期利用(1年)における割引料金の適用がある。意外と知らない人が多い。
アーキテクチャ
スケールに応じたパフォーマンス
事実上無制限のスループットでどんな規模にも対応できます。
例えば、Amazon.comのようなサイトでも対応可能
ストレージ容量も制限なし
高速で一貫した性能
フルマネージド
メンテナンスフリー
サーバレス
Auto Scalling
バックアップ/リストア
Global tables(グローバルデータベース)
エンタープライズ対応
通信と保存データの暗号化
柔軟な権限管理
PCI、HIPAA、FIPS140-2等を認証
SLAの提供
99.9%のSLAを実現します。
DynamoDB Transactions
- DynamoDBで複数Item、複数Tableに対する書き込み操作や読み込み操作でACIDトランザクションが可能になります。
- トランザクション分離レベルはserializableでロックは取りません。
- トランザクションの進行中にアイテムがトランザクション外で変更された場合、トランザクションはキャンセルされ、例外を発生させたItemまたはItemに関する詳細がスローされます。
- GlobalTableではデフォルトで向こうで、有効にした場合もトランザクションはリージョン単位になります。
- 全ての商用リージョンで利用可能です。
Item操作
読み込み
GetItem
Partition KeyとSort Keyを指定して対象Itemを決定する。
TransactGetItems
Partition KeyとSort Keyを指定して対象Itemを決定する。トランザクション処理が可能になります。(ロールバックさせるか、リトライするか等)
BatchGetItem
Partition KeyとSort Keyを指定して対象Itemを決定する。複数のItemを操作することが可能です。
Query
Partition Keyのみ指定し、Sort Keyは条件指定による範囲探索も可能
Scan
書き込み
「このAttributesがあったら書き込む」といったような条件付き書き込み設定も可能
PutItem
Partition KeyとSort Keyを指定して対象Itemを決定する。
Update
Partition KeyとSort Keyを指定して対象Itemを決定する。
TransactWriteItems
トランザクション処理が可能になります。(ロールバックさせるか、リトライするか等)
BatchWriteItem
複数のItemを操作することが可能です。
Delete
Partition KeyとSort Keyを指定して対象Itemを決定する。
Local Secondary Index(LSI)
Partition keyを変えることができないです。
- Sort key以外にも絞り込み検索を行うkeyを保持することが可能です。
- Partition keyが同一で他のattributesでQueryによる検索のために利用できます。
- 全ての要素の合計サイズを各Partationキーごとに10GBに制限します。
Global Secondary Index(GSI)
Partition keyを変えることができます。
- Partition key属性の代わりになります。
- Partition keyをまたいで検索を行うためのインデックスです。
- 元のテーブルとキャパシティは別で管理します。
この記事へのコメントはありません。