テーブルからデータを読み込む場合の、SQL と DynamoDB の主な相違点
SQL では、SELECT
ステートメントを使用して、テーブルから 1 つ以上の行を取得します。WHERE
句を使用して、返されたデータを調べます。
これは、Amazon DynamoDB を使用する場合とは異なります。Amazon DynamoDb は、データの読み取りに次のオペレーションを提供します。
-
ExecuteStatement
がテーブルから 1 つまたは複数の項目を取得します。BatchExecuteStatement
が 1 回のオペレーションで異なるテーブルから複数の項目を取得します。どちらのオペレーションでも、SQL 互換のクエリ言語である PartiQL が使用されます。 -
GetItem
– テーブルから単一の項目を取り出します。これは、項目の物理的な場所に直接アクセスできるため、単一の項目を読み込むうえで最も効率的な方法です。(DynamoDB では、BatchGetItem
オペレーションを提供し、1 回のオペレーションで最大 100 回のGetItem
コールを実行できます。) -
Query
– 特定のパーティションキーがあるすべての項目を取得します。これらの項目内では、ソートキーに条件を適用し、データのサブセットのみ取得できます。Query
は、データが格納されているパーティションに、すばやく効率的にアクセスできます。(詳しくは、パーティションとデータ分散 を参照してください)。 -
Scan
– 指定されたテーブルで、すべての項目を取得します。(大量のリソースシステムを消費するため、このオペレーションは大きなテーブルでは使用しないでください。)
注記
リレーショナルデータベースでは、SELECT
ステートメントを使用して、複数のテーブルからデータを結合し、その結果を返すことができます。結合は、リレーショナルモデルにおいて必須です。結合を効率的に実行するために、データベースおよびアプリケーションは、継続的にパフォーマンスを調整する必要があります。DynamoDB は、テーブル結合をサポートしない非リレーショナル NoSQL データベースです。その代わり、アプリケーションは一度に 1 つのテーブルからデータを読み込みます。
次のセクションでは、データを読み込むための異なるユースケースおよびこれらのタスクをリレーショナルデータベースと DynamoDB を使って実行する方法を説明します。