Amazon DynamoDB
開発者ガイド (API バージョン 2012-08-10)

SQL から NoSQL へ

アプリケーション開発者なら、リレーショナルデータベース管理システム (RDBMS) および構造化クエリ言語 (SQL) を使用した経験があるかもしれません。Amazon DynamoDB を使い始めると、多くの類似点があると同時に、異なる点も多くあることに気づきます。このセクションでは、SQL ステートメントを同等の DynamoDB オペレーションと比較、対比しながら、一般的なデータベースタスクについて説明します。

NoSQL は、可用性が高く、スケーラブルで、高パフォーマンス用に最適化された、非リレーショナルデータベースシステムについて説明するのに使用される用語です。NoSQL データベース (DynamoDB など) は、リレーショナルモデルの代わりに、キーと値のペアやドキュメントストレージなど、データ管理のための代替モデルを使用します。詳細については、http://aws.amazon.com/nosql をご覧ください。

注記

このセクションの SQL の例は、MySQL のリレーショナルデータベース管理システムと互換性があります。

このセクションの DynamoDB 例では、JSON 形式のオペレーションのパラメータと共に DynamoDB オペレーションの名前を表示します。これらのオペレーションを使用するコード例については、「DynamoDB SDK の使用開始」を参照してください。

SQL か NoSQL か

現在のアプリケーションには今までになく厳しい要件があります。たとえば、あるオンラインゲームを、小数のユーザーおよび非常に小さいデータ量で開始するかもしれません。しかし、ゲームが成功すれば、それは基盤となるデータベース管理システムのリソースを簡単に上回ります。ウェブベースのアプリケーションに、数百、数千、数百万の同時ユーザーがいて、テラバイトあるいはそれ以上の新しいデータが毎日生成される、というのはよくあることです。そのようなアプリケーションのデータベースの場合は、1 秒あたり数万 (あるいは数十万) の読み取り/書き込みの処理が必要です。

Amazon DynamoDB は、これらのワークロードに適しています。開発者として、少量のプロビジョニングされたスループットで開始し、アプリケーションの人気が出てくるにつれて、徐々に増加させることができます。 DynamoDB は、大量のデータや多数のユーザーの処理をシームレスにスケーリングできます。

次の表はリレーショナルデータベース管理システム (RDBMS) と DynamoDB の、高レベルな相違点を示します。

特徴 リレーショナルデータベース管理システム (RDBMS) Amazon DynamoDB
最適なワークロード アドホッククエリ、データウェアハウス、OLAP (オンライン分析処理)。 ソーシャルネットワーク、ゲーム、メディア共有、IoT (Internet of Things) を含む、ウェブスケールアプリケーションです。
データモデル リレーショナルモデルには、データを、テーブル、行、列に正規化する、明確に定義されたスキーマが必要です。さらに、関係のすべては、テーブル、列、インデックスおよび他のデータベースのエレメント間で定義されます。 DynamoDB はスキーマレスです。すべてのテーブルに、各データ項目を一意に識別するプライマリキーが必要ですが、他の非キー属性のような制約はありません。DynamoDB は、JSON ドキュメントを含む構造化データまたは半構造化データを管理できます。
データアクセス SQL (構造化クエリ言語) は、データを保存および取得するための基準です。リレーショナルデータベースにはデータベース駆動型アプリケーションの開発を簡素化するためのツールが豊富ですが、これらのツールはすべて、SQL を使用します。 AWS マネジメントコンソール または AWS CLI を使用して DynamoDB を操作し、アドホックタスクを実行できます。アプリケーションでは、オブジェクトベースでドキュメント中心、または低レベルのインターフェイスを使用しながら、AWS Software Development Kit (SDK) を活用し、DynamoDB を操作できます。
パフォーマンス リレーショナルデータベースは、ストレージに最適化されていますので、パフォーマンスは通常、ディスクサブシステムによって異なります。開発者とデータベース管理者は、ピークパフォーマンスを達成するために、クエリ、インデックスおよびテーブルの構造を最適化する必要があります。 DynamoDB は、コンピューティングに最適化されていますので、パフォーマンスは主に、基盤となるハードウェアとネットワークレイテンシーの機能です。マネージド型サービスとして、DynamoDB は、これらの実装の詳細からアプリケーションを隔離し、堅牢で高パフォーマンスなアプリケーションの設計と構築に集中できるようにします。
スケーリング より高速なハードウェアでスケールアップするのが最も簡単です。データベーステーブルが分散システムの複数のホストにまたがることは可能ですが、この場合、追加の投資が必要です。リレーショナルデータベースは、スケーラビリティに上限を課すファイルの数とサイズが最大サイズです。 DynamoDB は、ハードウェアの分散型クラスターを使用してスケールアウトできるように設計されています。この設計により、レイテンシーの増加なしでスループットを強化することができます。顧客がスループット要件を指定すると、DynamoDB は、その要件に対応するために十分なリソースを割り当てます。テーブル単位の項目数、およびそのテーブルの合計サイズに上限はありません。

このページの内容: