1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PMする上で必要になってきたのでおさらい

AWS DynamoDBとは?

AWSが提供するスケーラブルなフルマネージド型NoSQLデータベースサービス。 高い可用性、低レイテンシ、スケーラビリティを備えており、リアルタイムアプリケーションに最適。

DynamoDBの特徴

  1. サーバーレス

    • インフラ管理が不要。必要に応じて自動スケール。
    • プロビジョニング(リソース確保)やパッチ適用が不要。
  2. スケーラブル

    • 数バイトのデータから数テラバイト規模まで自動スケール。
    • スループット(読み取り/書き込み性能)を動的に調整可能。
  3. 高速なパフォーマンス

    • ミリ秒単位の低レイテンシでデータを処理。
    • リアルタイムのレスポンスが必要なアプリケーションに適している。
  4. データモデルの柔軟性

    • キー/値ストア型とドキュメント型の両方に対応。
    • JSONや属性を持つ複雑なデータも扱える。
  5. フルマネージド

    • 高可用性(マルチAZ配置)とデータの耐障害性を自動で提供。
  6. イベント駆動

    • DynamoDB Streamsを使ってデータの変更をトリガーとして他のサービス(例: Lambda)を実行可能。

DynamoDBの基本構造

1. テーブル

  • データを格納する基本単位。
  • 各テーブルにはプライマリキーが設定される。

2. アイテム

  • テーブル内のデータの1つの単位(行に相当)。
  • アイテムは属性を持つ(列に相当)。

3. 属性

  • アイテムを構成するデータフィールド(値)。
  • : 文字列(String)、数値(Number)、ブール値(Boolean)、マップ(Map)、リスト(List)など。

4. プライマリキー

  • 各アイテムを一意に識別するキー。
    • パーティションキー: 単一キーでアイテムを識別。
    • パーティションキー+ソートキー: 複数属性を組み合わせて識別。

DynamoDBの主なユースケース

1. セッションデータの管理

  • シナリオ: ユーザーのログインセッション情報を保存。
  • 理由:
    • 高速なデータ読み書き。
    • セッションデータは軽量でスケールが必要。

2. リアルタイムアプリケーション

  • シナリオ: チャットアプリ、IoTデバイスのデータ管理。
  • 理由:
    • ミリ秒単位のレスポンス。
    • DynamoDB Streamsでリアルタイム処理。

3. ショッピングカートや在庫管理

  • シナリオ: Eコマースサイトでのショッピングカートデータ。
  • 理由:
    • 柔軟なデータモデル。
    • 高可用性でスケール可能。

4. ゲームのリーダーボード

  • シナリオ: スコアランキングやプレイヤーデータの管理。
  • 理由:
    • ソートキーを使った効率的なスコアランキングの取得。

5. データキャッシュ

  • シナリオ: 頻繁にアクセスされるデータの保存。
  • 理由:
    • 高速で低レイテンシの読み取り。

DynamoDBの料金体系

DynamoDBの料金は、以下の項目に基づいて課金されます:

  1. プロビジョンドスループット

    • 読み取りキャパシティユニット(RCU):
      • 1秒間に1つのデータ(最大4KB)を強力整合性で読み取れる単位。
    • 書き込みキャパシティユニット(WCU):
      • 1秒間に1つのデータ(最大1KB)を書き込める単位。
  2. オンデマンドモード

    • データ読み書きのリクエスト数に基づく課金(使用量が不規則な場合に適)。
  3. ストレージ

    • 保存されるデータの量に応じて課金($0.25/GB/月)。
  4. DynamoDB Streams

    • データ変更イベントを使用する場合、ストリームの利用料金が発生。
  5. バックアップとリストア

    • 自動バックアップ: 無料。
    • オンデマンドバックアップ: 保存容量に応じて課金。

DynamoDBの導入手順

1. テーブルの作成

  1. AWSコンソールで「DynamoDB」を開く。
  2. 「テーブルを作成」をクリック。
  3. テーブル名とプライマリキーを指定。
    • 例: パーティションキー = UserID

2. データの挿入

  • コンソールからデータを直接入力。
  • または、AWS SDKやCLIを使ってデータを挿入。

3. データの取得

  • プライマリキーでアイテムをクエリ。
  • ソートキーを使った範囲検索も可能。

4. DynamoDB Streamsの設定(オプション)

  • ストリームを有効にしてデータ変更イベントを処理。

DynamoDBのメリットとデメリット

メリット

  1. スケーラビリティ
    • 自動スケールで、大量のトラフィックにも対応。
  2. 高可用性
    • マルチAZ配置で耐障害性を確保。
  3. サーバーレス
    • インフラ管理が不要で、アプリケーション開発に集中できる。

デメリット

  1. 複雑なクエリには不向き
    • SQLのようなJOIN操作がないため、リレーショナルデータベースが必要な場合は適さない。
  2. 設計が重要
    • プライマリキーやアクセスパターンを適切に設計しないと、パフォーマンスが低下。

DynamoDBのベストプラクティス

  1. 適切なプライマリキー設計

    • 頻繁にアクセスするデータを効率的に取得できるキーを設定。
  2. オンデマンドモードの活用

    • 使用量が不規則な場合は、オンデマンドモードでコスト最適化。
  3. DynamoDB Streamsの活用

    • データの変更をリアルタイムでトリガーに利用。
  4. データモデリングの計画

    • アクセスパターンを事前に設計してパフォーマンスを最大化。

感想

NoSQLとRDBの使い分けについて、詳しく理解していないと選定が難しい。その辺りは実際に触ってみないとわからない気がする。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?