

# テーブルからデータを読み込むときの、リレーショナル (SQL) データベースと DynamoDB の相違点
<a name="SQLtoNoSQL.ReadData"></a>

SQL では、`SELECT` ステートメントを使用して、テーブルから 1 つ以上の行を取得します。`WHERE` 句を使用して、返されたデータを調べます。

これは、Amazon DynamoDB を使用する場合とは異なります。Amazon DynamoDb は、データの読み取りに次のオペレーションを提供します。
+ `ExecuteStatement` がテーブルから 1 つまたは複数の項目を取得します。`BatchExecuteStatement` が 1 回のオペレーションで異なるテーブルから複数の項目を取得します。どちらのオペレーションでも、SQL 互換のクエリ言語である [PartiQL](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ql-reference.html) が使用されます。
+ `GetItem` – テーブルから単一の項目を取り出します。これは、項目の物理的な場所に直接アクセスできるため、単一の項目を読み込むうえで最も効率的な方法です。(DynamoDB では、`BatchGetItem` オペレーションを提供し、1 回のオペレーションで最大 100 回の `GetItem` コールを実行できます。)
+ `Query` – 特定のパーティションキーがあるすべての項目を取得します。これらの項目内では、ソートキーに条件を適用し、データのサブセットのみ取得できます。`Query` は、データが格納されているパーティションに、すばやく効率的にアクセスできます。（詳しくは、[DynamoDB におけるパーティションとデータ分散](HowItWorks.Partitions.md) を参照してください）。
+ `Scan` – 指定されたテーブルで、すべての項目を取得します。(大量のリソースシステムを消費するため、このオペレーションは大きなテーブルでは使用しないでください。)

**注記**  
リレーショナルデータベースでは、`SELECT` ステートメントを使用して、複数のテーブルからデータを結合し、その結果を返すことができます。結合は、リレーショナルモデルにおいて必須です。結合を効率的に実行するために、データベースおよびアプリケーションは、継続的にパフォーマンスを調整する必要があります。DynamoDB は、テーブル結合をサポートしない非リレーショナル NoSQL データベースです。その代わり、アプリケーションは一度に 1 つのテーブルからデータを読み込みます。

次のセクションでは、データを読み込むための異なるユースケースおよびこれらのタスクをリレーショナルデータベースと DynamoDB を使って実行する方法を説明します。

**Topics**
+ [プライマリキーを使用して項目を読み込むときの相違点](SQLtoNoSQL.ReadData.SingleItem.md)
+ [テーブルのクエリにおける相違点](SQLtoNoSQL.ReadData.Query.md)
+ [テーブルのスキャンにおける相違点](SQLtoNoSQL.ReadData.Scan.md)