DynamoDB テーブルの基本オペレーション - Amazon DynamoDB

DynamoDB テーブルの基本オペレーション

他のデータベース管理システムと同様、Amazon DynamoDB はデータをテーブルに保存します。いくつかの基本的なオペレーションでテーブルを管理できます。

テーブルの作成

CreateTable オペレーションを使用して Amazon DynamoDB でテーブルを作成します。テーブルを作成するために、以下の情報を指定する必要があります。

  • テーブル名。 名前は DynamoDB 命名規則に従う必要があります。また、現在の AWS アカウントとリージョンで一意である必要があります。たとえば、米国東部(バージニア北部) に People テーブルを作成し、欧州 (アイルランド) に別の People テーブルを作成できます。ただし、これらの 2 つのテーブルは互いにまったく異なっています。詳細については、「命名ルールおよびデータ型」を参照してください。

  • プライマリキー。 プライマリキーは 1 つの属性 (パーティションキー) または 2 つの属性で構成できます (パーティションキーとソートキー)。属性名、データタイプ、各属性のロール(パーティションキーでは HASH、ソートキーでは RANGE)を指定する必要があります。詳細については、「プライマリキー」を参照してください。

  • スループット設定 (プロビジョニングされたテーブルの場合)。 プロビジョニングモードを使用している場合、最初の読み取りと書き込みのスループット設定をテーブルに指定する必要があります。これらの設定は後から変更できます。また、DynamoDB Auto Scaling を有効化して設定を管理することもできます。詳細については、「DynamoDB のプロビジョニングされたキャパシティーテーブルの設定の管理」および「DynamoDB Auto Scaling によるスループットキャパシティーの自動管理」を参照してください。

例 1: プロビジョニングされたテーブルを作成する

以下の AWS CLI サンプルは、テーブル (Music) の作成方法を示しています。プライマリキーは、Artist (パーティションキー) と SongTitle (ソートキー) で構成されており、データ型はそれぞれ String です。このテーブルの最大スループットは、読み取りキャパシティーユニット数が 10、書き込みキャパシティーユニット数が 5 です。

aws dynamodb create-table \ --table-name Music \ --attribute-definitions \ AttributeName=Artist,AttributeType=S \ AttributeName=SongTitle,AttributeType=S \ --key-schema \ AttributeName=Artist,KeyType=HASH \ AttributeName=SongTitle,KeyType=RANGE \ --provisioned-throughput \ ReadCapacityUnits=10,WriteCapacityUnits=5

CreateTable オペレーションは、以下のようにテーブルにメタデータを返します。

{ "TableDescription": { "TableArn": "arn:aws:dynamodb:us-east-1:123456789012:table/Music", "AttributeDefinitions": [ { "AttributeName": "Artist", "AttributeType": "S" }, { "AttributeName": "SongTitle", "AttributeType": "S" } ], "ProvisionedThroughput": { "NumberOfDecreasesToday": 0, "WriteCapacityUnits": 5, "ReadCapacityUnits": 10 }, "TableSizeBytes": 0, "TableName": "Music", "TableStatus": "CREATING", "TableId": "12345678-0123-4567-a123-abcdefghijkl", "KeySchema": [ { "KeyType": "HASH", "AttributeName": "Artist" }, { "KeyType": "RANGE", "AttributeName": "SongTitle" } ], "ItemCount": 0, "CreationDateTime": 1542397215.37 } }

TableStatus エレメントは、テーブルの現在の状態を示します(CREATING)。ReadCapacityUnits および WriteCapacityUnits に指定した値によって、テーブルの作成にはしばらく時間がかかる場合があります。これらの値を大きくすると、DynamoDB はより多くのリソースをテーブルに割り当てなければならなくなります。

例 2: オンデマンドテーブルを作成する

オンデマンドモードを使用して同じテーブル Music を作成するには

aws dynamodb create-table \ --table-name Music \ --attribute-definitions \ AttributeName=Artist,AttributeType=S \ AttributeName=SongTitle,AttributeType=S \ --key-schema \ AttributeName=Artist,KeyType=HASH \ AttributeName=SongTitle,KeyType=RANGE \ --billing-mode=PAY_PER_REQUEST

CreateTable オペレーションは、以下のようにテーブルにメタデータを返します。

{ "TableDescription": { "TableArn": "arn:aws:dynamodb:us-east-1:123456789012:table/Music", "AttributeDefinitions": [ { "AttributeName": "Artist", "AttributeType": "S" }, { "AttributeName": "SongTitle", "AttributeType": "S" } ], "ProvisionedThroughput": { "NumberOfDecreasesToday": 0, "WriteCapacityUnits": 0, "ReadCapacityUnits": 0 }, "TableSizeBytes": 0, "TableName": "Music", "BillingModeSummary": { "BillingMode": "PAY_PER_REQUEST" }, "TableStatus": "CREATING", "TableId": "12345678-0123-4567-a123-abcdefghijkl", "KeySchema": [ { "KeyType": "HASH", "AttributeName": "Artist" }, { "KeyType": "RANGE", "AttributeName": "SongTitle" } ], "ItemCount": 0, "CreationDateTime": 1542397468.348 } }
重要

オンデマンドテーブルで DescribeTable を呼び出すと、読み込みキャパシティーユニットと書き込みキャパシティーユニットが 0 に設定されます。

テーブルの説明

テーブルの詳細を表示するには、DescribeTable オペレーションを使用します。テーブル名を入力する必要があります。DescribeTable の出力は CreateTable の出力と同じ形式です。このメタデータには、テーブル作成時のタイムスタンプ、キースキーマ、プロビジョンドスループット設定、推定サイズ、既存のすべての セカンダリインデックス が含まれています。

重要

オンデマンドテーブルで DescribeTable を呼び出すと、読み込みキャパシティーユニットと書き込みキャパシティーユニットが 0 に設定されます。

aws dynamodb describe-table --table-name Music

TableStatusCREATING から ACTIVE に変わると、テーブルは使用できる状態になります。

注記

CreateTable のリクエスト直後に DescribeTable リクエストを発行した場合、DynamoDB によってエラー (ResourceNotFoundException) が返されることがあります。DescribeTable で結果整合性のあるクエリが使用されており、テーブルのメタデータがその時点で使用できない可能性があるためです。数秒間待ってから、再び DescribeTable リクエストを試してみてください。

請求目的上、DynamoDB ストレージコストには、100 bytes の項目あたりのオーバーヘッドが含まれます詳細は、DynamoDB 料金表を参照してください。 各項目の余分な 100 bytes は、キャパシティーユニットの計算または DescribeTable オペレーションでは使用されません。

テーブルの更新

UpdateTable オペレーションを使用すると、以下のいずれかを実行できます。

次の AWS CLI の例では、テーブルのプロビジョニングされたスループット設定を変更する方法を示します。

aws dynamodb update-table --table-name Music \ --provisioned-throughput ReadCapacityUnits=20,WriteCapacityUnits=10
注記

UpdateTable リクエストを発行すると、テーブルのステータスが AVAILABLE から UPDATING に変わります。テーブルは UPDATING 中も全面的に利用できます。この処理が完了すると、テーブルのステータスが UPDATING から AVAILABLE に変わります。

次の AWS CLI の例では、テーブルの読み取り/書き込みキャパシティーモードをオンデマンドモードに変更する方法を示します。

aws dynamodb update-table --table-name Music \ --billing-mode PAY_PER_REQUEST

テーブルの削除

DeleteTable オペレーションで未使用のテーブルを削除できます。テーブルの削除は回復不可能な操作です。

次の AWS CLI の例で、テーブルを削除する方法について説明します。

aws dynamodb delete-table --table-name Music

DeleteTable リクエストを発行すると、テーブルのステータスが ACTIVE から DELETING に変わります。使用しているリソース(テーブルに保存されたデータ、ストリーム、テーブルのインデックスなど)によって、テーブルの削除には時間がかかる場合があります。

DeleteTable オペレーションが完了すると、テーブルは DynamoDB に存在しなくなります。

テーブル名のリスト化

ListTables オペレーションは、現在の AWS アカウントやリージョンの DynamoDB テーブルの名前を返します。

次の AWS CLI の例は、DynamoDB テーブル名をリストする方法を示しています。

aws dynamodb list-tables

プロビジョニングされたスループットクォータの説明

DescribeLimits オペレーションは、現在の AWS アカウントやリージョンの現在の読み取りおよび書き込みキャパシティーのクォータを返します。

次の AWS CLI の例では、現在のプロビジョニングされたスループットクォータを記述する方法を示します。

aws dynamodb describe-limits

出力は、現在の AWS アカウントやリージョンの読み取りおよび書き込みキャパシティーユニットの上限クォータを返します。

これらのクォータの詳細およびクォータの引き上げをリクエストする方法については、「スループットのデフォルトクォータ」を参照してください。