AWS学習8日目:DynamoDB (2)
今日のテーマ
AWS学習8日目は、前回学んだDynamoDBを実際に触りました。
具体的にはDynamoDBでテーブルを作成し、itemを追加・確認・削除する流れを体験しました。
今日できたこと
- DynamoDBの基本単語を学習した
- DynamoDBテーブルを作成した
- itemを各種操作した
- scanとqueryの違いを学んだ
- partition keyとsort keyの役割を確認した
今日のハンズオン
今回は、DynamoDBの画面を眺めるだけでなく、実際にテーブルを作成し、itemを操作しました。
基本単語学習
今日覚えた用語は次の6つです。
| 用語 | 現時点での理解 |
|---|---|
| partition key | itemを特定するための基本となるキー |
| sort key | partition keyと組み合わせて、並び順や追加の識別に使うキー |
| attribute | itemが持つ項目 |
| item | DynamoDBに保存される1件分のデータ |
| scan | テーブル全体を走査してデータを探す操作 |
| query | キーを指定して効率よくデータを取得する操作 |
DynamoDBの基本構造
DynamoDBでは、データを table に保存します。
そのtableの中に、1件分のデータである item が入ります。
itemの中には、複数の attribute が含まれます。
現時点での理解
| DynamoDBの要素 | RDSで近いイメージ |
|---|---|
| table | テーブル |
| item | 1行分のデータ |
| attribute | カラムのような項目 |
| partition key | 主キーのような識別キー |
partition keyとは何か
partition keyは、DynamoDBでitemを特定するための基本となるキーです。
RDSでいう主キーに近い感覚で理解しました。
ただし、DynamoDBではpartition keyがデータの配置やアクセス効率にも関係します。
自分の理解
partition keyは、itemを選択する際に設定するキー。
RDSの主キーのような扱いで、データアクセスの分散にも関係する。
sort keyとは何か
sort keyは、partition keyと組み合わせて使うキーです。
同じpartition keyの中で複数のitemを扱いたい場合に、並び順や追加の識別として使えます。
attributeとは何か
attributeは、itemが持つ項目です。
RDSでいうカラムに近いものとして理解しました。
例えば、タスク管理のitemなら、次のようなattributeを持ちそうです。
| attribute | item |
|---|---|
| taskId | task-001 |
| title | AWS学習をする |
| status | open |
| dueDate | 2026-05-30 |
| priority | high |
itemとは何か
itemは、DynamoDBに保存される1件分のデータです。
RDSでいうレコードに近い感覚です。
例えば、LifeOSのタスクをDynamoDBに保存するなら、1つのタスクが1つのitemになります。
{
"taskId": "task-001",
"title": "AWS学習をする",
"status": "open",
"priority": "high"
}
scanとは何か
scanは、テーブル全体を走査してデータを探す操作です。
つまり、テーブル内のitemをすべて見に行くイメージです。
queryとは何か
queryは、キーを指定して効率よくitemを取得する操作です。
scanが全体を見るのに対し、queryは条件に合うデータを狙って取りに行くイメージです。
scanとqueryの違い
| 比較項目 | scan | query |
|---|---|---|
| 探し方 | テーブル全体を見る | キーを指定して探す |
| 効率 | データが多いと重くなりやすい | 効率よく取得しやすい |
| 使いどころ | 小規模確認、全件確認 | 実際のアプリでの取得 |
| 設計との関係 | キー設計の影響が小さい | キー設計が重要 |
ハンズオン
今日のハンズオンでは、DynamoDBでtableを作成し、itemを追加・確認・削除しました。
DynamoDBでやったこと
- tableを作成
- partition keyを設定
- itemを操作
つまずいたこと
今回は特に大きなつまずきはありませんでした。
LifeOSではどう使えそうか
DynamoDBは、LifeOSの中でタスクや学習記録などを保存する用途に使えそうです。
特に、キーで高速に取得したいデータとの相性が良さそうです。
LifeOSでのテーブル例
| table | partition key | sort key | 用途 |
|---|---|---|---|
| Tasks | userId | taskId | ユーザーごとのタスク管理 |
| StudyLogs | userId | date | 学習記録 |
| Reminders | userId | reminderId | リマインダー管理 |
| Documents | userId | documentId | 書類情報の管理 |
資格学習として覚えておきたいこと
今日の内容から、まず次の点を覚えておきます。
| ポイント | 内容 |
|---|---|
| DynamoDB | AWSのサーバーレスNoSQLデータベース |
| table | itemを保存する入れ物 |
| item | 1件分のデータ |
| attribute | itemが持つ項目 |
| partition key | itemを識別・分散するためのキー |
| sort key | partition keyと組み合わせて並びや追加識別に使うキー |
| scan | table全体を走査する |
| query | キーを指定して効率よく取得する |
特に重要そうな比較
| 比較 | 覚えておきたいこと |
|---|---|
| RDSとDynamoDB | RDSはリレーショナルDB、DynamoDBはNoSQL |
| partition keyとsort key | partition keyは基本の識別、sort keyは並びや追加識別 |
| itemとattribute | itemは1件分、attributeは項目 |
| scanとquery | scanは全走査、queryはキー指定で効率的 |
| S3とDynamoDB | S3はファイル保存、DynamoDBは検索しやすいデータ保存 |
現時点でまだ曖昧なこと
- partition keyのベストな決め方
- sort keyを使うべき場面
- DynamoDBの料金体系
- scanがどれくらい非効率になるのか
- queryを前提にした設計方法
- LambdaからDynamoDBを操作する方法
今日の振り返り
今日できるようになったこと
- DynamoDBテーブルを作成できる
- partition keyを設定できる
- itemを操作できる
- attributeがitemの項目であると説明できる
- scanとqueryの違いが説明できる
次回
次回は、EventBridge を使ってLambdaを動かします。
Discussion