🙆‍♀️

DynamoDBの「NoSQL」ってどういうこと?

2024/11/25に公開

AWSのフルマネージド型データベースサービス「DynamoDB」。その特徴として「NoSQLデータベース」であることが挙げられますが、そもそもNoSQLとは何なのでしょうか?そして、リレーショナルデータベース(RDBMS)と何が違うのでしょう?

NoSQLとは?

まずはNoSQLの定義から。NoSQLとは「Not Only SQL」の略で、従来のリレーショナルデータベースとは異なるアプローチでデータを管理するデータベースを指します。以下のような特徴があります:

スキーマレス: 固定されたデータ構造を持たず、柔軟にデータを格納可能。

水平スケーリング: データ量が増えた場合、サーバーを増やしてスケーリングできる。
高速処理: シンプルなデータアクセスを効率的に行う設計。
DynamoDBもこのNoSQLデータベースの一種で、AWSが提供する完全マネージド型サービスです。

DynamoDBの特徴

1. キーバリューストア / ドキュメントストア型データベース

DynamoDBは、キーとその値(バリュー)のペアでデータを保存します。このシンプルな構造により、高速なデータアクセスが可能です。また、JSON形式のデータを保存できるため、ドキュメント型データベースとしても利用できます。

2. スキーマレス

リレーショナルデータベースのように固定されたスキーマは不要です。各アイテム(行)は異なる属性(列)を持つことができます。これにより、柔軟にデータを扱えます。

3. 高いスケーラビリティと可用性

DynamoDBはデータを自動的に複数のリージョンやアベイラビリティゾーンに分散し、常に高い可用性を維持します。また、データ量やトラフィックの増加に応じて水平スケーリングできるため、大規模なアプリケーションにも対応可能です。

4. クエリの柔軟性

プライマリキーを使用した高速なデータアクセスが基本ですが、セカンダリインデックス(GSI/LSI)を設定することで、別の条件でデータを検索することもできます。

5. トランザクション対応

NoSQLの中でも珍しく、DynamoDBはACIDトランザクションをサポートしています。複数の操作を安全に実行できるのは、信頼性が求められるアプリケーションでの大きなメリットです。

リレーショナルデータベースとの違い

特徴 リレーショナルデータベース (RDBMS) DynamoDB (NoSQL)
スキーマ 固定されたスキーマが必要 スキーマレスで柔軟
データ構造 行と列で構成されたテーブル キーバリューまたはJSONドキュメント
クエリ 複雑なSQLクエリをサポート 単純なキーアクセスが中心、条件付きクエリが可能
スケーリング 垂直スケーリング(サーバースペックを上げる) 水平スケーリング(複数ノードで分散)
用途 データの関係性が重要なアプリケーション スケーラビリティと柔軟性が求められる場面
トランザクションサポート 完全なACIDトランザクションをサポート 一部制限付きでACIDトランザクション対応

DynamoDBの具体例

ProductID (パーティションキー) Category (ソートキー) Name Price Stock
101 Electronics スマートフォン 60000 50
102 Furniture 椅子 8000 100

クエリ例:

商品ID 101 を取得 → プライマリキー(パーティションキー)を使用。
Electronicsカテゴリの商品一覧を取得 → ソートキーを条件にクエリ。
このように、シンプルなデータモデルで柔軟な検索が可能です。

DynamoDBが選ばれる理由

大規模データやトラフィックへの対応 DynamoDBは、スケーラビリティと高可用性を備えており、IoTやEコマースなど、大量のデータを扱うアプリケーションに最適です。

スキーマ変更が容易 スキーマレス設計により、データモデルの変更が簡単に行えます。

サーバーレスアーキテクチャとの親和性 LambdaやStep Functionsと組み合わせて、完全サーバーレスなアプリケーションを構築できます。

Discussion