メニュー
Amazon DynamoDB
開発者ガイド (API Version 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 の使用開始」を参照してください。

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 は、その要件に対応するために十分なリソースを割り当てます。 テーブル単位の項目数、およびそのテーブルの合計サイズに上限はありません。

このページの内容: