本文へスキップ
BecomeCoder

AWSコース · 第5章 データベース · レッスン24

DynamoDB ― NoSQL

導入

ゲームのスコアランキングや、ECサイトのショッピングカートのように、大量のアクセスをミリ秒単位でさばきたい場面があります。RDSやAuroraのようなリレーショナルデータベースは万能ですが、こうした超高速・大量アクセスの用途には別の選択肢もあります。

説明

Amazon DynamoDBは、AWSが提供するフルマネージドのNoSQLデータベースです。キーと値の組み合わせ(キーバリュー)やドキュメント形式でデータを保存し、1桁ミリ秒単位の応答速度と、事実上無制限に近い規模までのスケールを特徴とします。

リレーショナルデータベース(RDS/Aurora)との主な違いは次のとおりです。

観点RDS / Aurora(リレーショナル)DynamoDB(NoSQL)
データ構造あらかじめ決めた表(スキーマ)に従う項目ごとに柔軟な構造を持てる(スキーマレス)
操作方法SQLで複雑な検索・集計・JOINができるキーを指定した高速な読み書きが中心。JOINはしない
得意なこと複雑な関係性を扱うデータ(在庫・注文・会計など)超高速・大量アクセス・可変な形式のデータ(セッション情報・ランキング・IoTデータなど)
サーバー管理インスタンスサイズを意識する完全サーバーレス。容量管理を意識しなくてよい
flowchart LR
    Client["アプリケーション"] -->|キー指定で読み書き| DDB["DynamoDB テーブル"]
    DDB --> Item1["項目: userId=1, name, score"]
    DDB --> Item2["項目: userId=2, name, score, badge"]

上の図のように、DynamoDBの同じテーブルの中でも、項目ごとに持つ属性(列に相当するもの)が異なってかまいません。これがリレーショナルデータベースの「決まった表構造」との大きな違いです。

読んでみよう

「複雑な関係を扱いたいならRDS/Aurora、とにかく速く・大量に・柔軟な形式で扱いたいならDynamoDB」という使い分けの軸を押さえておきましょう。