プライマリキーを使用して項目を読み込むときの相違点 - Amazon DynamoDB

プライマリキーを使用して項目を読み込むときの相違点

データベースの一般的なアクセスパターンの 1 つは、テーブルから単一項目を読み取ることです。目的の項目のプライマリキーを指定する必要があります。

SQL にプライマリキーを使用して項目を読み込む

SQL では、SELECT ステートメントを使用して、テーブルからデータを取得します。結果の 1 つ以上の列 (* オペレーター を使用すれば、すべて) をリクエストできます。WHERE 句は返る行を判別します。

以下は、Music テーブルから単一の行を取得するための SELECT ステートメントです。WHERE 句はプライマリキー値を指定します。

SELECT * FROM Music WHERE Artist='No One You Know' AND SongTitle = 'Call Me Today'

列のサブセットのみを取得するようにこのクエリを変更できます。

SELECT AlbumTitle, Year, Price FROM Music WHERE Artist='No One You Know' AND SongTitle = 'Call Me Today'

このテーブルのプライマリキーが、Artist および SongTitle で構成されていることに注意してください。

DynamoDB でプライマリキーを使用して項目を読み込む

Amazon DynamoDB では、DynamoDB API または PartiQL (SQL 互換のクエリ言語) を使用して、テーブルから項目を読み込むことができます。

DynamoDB API

DynamoDB API では、PutItem オペレーションを使用して、テーブルに項目を追加します。

DynamoDB は、プライマリキーにより項目を取得するための GetItem オペレーションを提供します。GetItem は、項目の物理的な場所への直接アクセスを提供するため非常に効率的です。(詳しくは、DynamoDB におけるパーティションとデータ分散 を参照してください)。

デフォルトでは、GetItem は、すべての属性を含む項目全体を返します。

{ TableName: "Music", Key: { "Artist": "No One You Know", "SongTitle": "Call Me Today" } }

一部の属性のみが返されるように、ProjectionExpression パラメータを追加できます。

{ TableName: "Music", Key: { "Artist": "No One You Know", "SongTitle": "Call Me Today" }, "ProjectionExpression": "AlbumTitle, Year, Price" }

このテーブルのプライマリキーが、Artist および SongTitle で構成されていることに注意してください。

DynamoDB GetItem オペレーションは非常に効率的です。プライマリキー値を使用して、該当する項目の正確な格納場所を特定し、そこから直接取得します。SQL SELECT ステートメントは、プライマリキー値によって項目を取得する場合、同様に効率的です。

SQL SELECT ステートメントは、さまざまな種類のクエリとテーブルスキャンをサポートしています。DynamoDB は、テーブルのクエリにおける相違点 および テーブルのスキャンにおける相違点 で説明されている Query および Scan オペレーションと同様の機能を提供します。

SQL SELECT ステートメントは、テーブルの結合を実行でき、同時に複数のテーブルからデータを取得できます。データベーステーブルが正規化され、テーブル間の関係が明確である場合、結合は最も効果的です。ただし、1 つの SELECTステートメントであまりに多くのテーブルを結合すると、アプリケーションパフォーマンスが影響を受けます。データベースレプリケーション、マテリアライズドビュー、またはクエリの書き換えを使用して、このような問題を回避できます。

DynamoDB は、非リレーショナルデータベースのため、テーブルの結合はサポートされません。リレーショナルデータベースから既存のアプリケーションを DynamoDB に移行する場合、結合の必要を排除するためデータモデルを非正規化する必要があります。

PartiQL for DynamoDB

PartiQL では、PartiQL Select ステートメントを利用する ExecuteStatement オペレーションを使用して、テーブルから項目を読みます。

SELECT AlbumTitle, Year, Price FROM Music WHERE Artist='No One You Know' AND SongTitle = 'Call Me Today'

このテーブルのプライマリキーが、Artist および SongTitle で構成されていることに注意してください。

注記

選択 PartiQL ステートメントは、DynamoDB テーブルにクエリやスキャンを実行する場合にも使用できます

SelectExecuteStatement を使用したコード例については、DynamoDB 用の PartiQL select ステートメント を参照してください。