DynamoDBの「NoSQL」ってどういうこと?
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