DynamoDB バルクインサート: 簡単チュートリアル

DynamoDB バルクインサート: 簡単チュートリアル

  • オーケストレーション
6分で読めます 更新日 Jul 30, 2020

ポイント: DynamoDB バルクインサート チュートリアルは、AWS CLIを使用してバルクインサートと削除を実行する手順を提供し、IMDBデータからのJSONフォーマットの例を示しています。操作制限について説明し、テーブルの作成とデータの読み込みに関するガイダンスを提供します。

  • バルク操作はファイルごとに最大25件のリクエストをサポートします。
  • JSONフォーマットの例と属性タイプの詳細を含みます。

この記事では、DynamoDBでのバルクインサートの方法を示します。Amazon DynamoDBが初めての場合は、これらのリソースから始めてください:

バルクインサートと削除

DynamoDBはバルクインサートとバルク削除を処理できます。CLIを使用しますが、言語に依存しません。ファイルは最大16MBまでですが、1つのファイルに25件以上のリクエスト操作を含めることはできません。

リクエスト操作は次のようになります:

  • PutRequest
  • DeleteRequest

バルクリクエストは更新を処理しません。

IMDBからのデータ

例として、IMDB(インターネット映画データベース)から24アイテムを引き出し、JSON形式にしました。このデータはこちらからダウンロードできます。

バルク操作のフォーマットは:

こちらが例です:

    { "table name: [
        "request operation": {
             "item: {
                 (put your item here in Attribute value format)
         }
     }
}]
}

こちらが例です:

    {
	"title": [{
		"PutRequest": {
			"Item": {
				"tconst": {
					"S": "tt0276132"
				},
				"titleType": {
					"S": "movie"
				},
				"primaryTitle": {
					"S": "The Fetishist"
				},
				"originalTitle": {
					"S": "The Fetishist"
				},
				"isAdult": {
					"S": "0"
				},
				"startYear": {
					"S": "2019"
				},
				"endYear": {
					"S": "\\N"
				},
				"runtimeMinutes": {
					"S": "\\N"
				},
				"genres": {
					"S": "Animation"
				}
			}
		}
	}]
}

ローカルでDynamoDBを実行している場合は、次のように起動してください:

    java -Djava.library.path=./DynamoDBLoc_lib -jar DynamoDBLocal.jar -sharedDb

次のようにテーブルを作成します:

    aws dynamodb create-table \
    --table-name title \
    --attribute-definitions AttributeName=tconst,AttributeType=S \
    --key-schema AttributeName=tconst,KeyType=HASH \
    --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \
--endpoint-url http://localhost:8000

次のようにデータを読み込むと、IMDBデータを100.basics.jsonファイルに保存しておきます。

応答します:

    aws dynamodb batch-write-item \
         --endpoint-url http://localhost:8000 \
          --request-items file:////Users/walkerrowe/Documents/imdb/100.basics.json \
         --return-consumed-capacity  TOTAL \
        --return-item-collection-metrics  SIZE

応答します:

    {
    "UnprocessedItems": {}, 
    "ConsumedCapacity": [
        {
            "CapacityUnits": 23.0, 
            "TableName": "title"
        }
    ]
}

書き込まれたレコードの数を教えてくれました。それが正しく機能したかどうかは、次のようにしてクエリできます:

    aws dynamodb query  \
     --endpoint-url http://localhost:8000 \
     --table-name title    \
    --key-condition-expression "tconst = :tconst"     \
    --expression-attribute-values '{ ":tconst":{"S":"tt0276132"}}'

属性タイプとAttributeValue

ここでは、DynamoDBがサポートするAttributeValues、つまり属性またはデータタイプのいくつかを示します。それらは:

  • S
  • BOOL
  • L
  • M
  • その他。

注意: 数値値でも引用符で囲む必要があります。

属性タイプ 説明
S 文字列 日付は次のようなISO-8601値であることに注意してください: "currentTime": {"S": "2020-07-24T09:25:49+0000"}
BOOL ブール値。 true または false を使用します。
L

属性名なしの値のリスト、つまり属性名がないことを意味します:

"other": {

"L": [{"S": "パリ"},

{"N": "13000000"}]

}

M

属性値を含むマップ。これはJSONオブジェクトのようなもので、属性値を持っています。つまり、名前付き属性のリストのようなものです。

"map": {

"M": {"Name": {"S": "ジョー"},

"Age": {"N": "35"}}

}

}

こちらは、DynamoDB属性タイプを使用する方法を示す例です。

    {
	"title": [{
		"PutRequest": {
			"Item": {
				"tconst": {
					"S": "tt9276132"
				},
				"titleType": {
					"S": "movie"
				},
				"primaryTitle": {
					"S": "Zorba"
				},
				"isAdult": {
					"BOOL": true
				},
				"Years": {
					"NS": ["2019","2020"]
				},
				"actors": {
					"SS": ["Anthony Quinn", "Marcel Marciano", "David Niven", "Peter Sellers"]
				},
				"currentTime": {
					"S": "2020-07-24T09:25:49+0000"
				},
				"other": {
				"L": [{"S": "Paris"}, 
				     {"N": "13000000"}]
				},
				"map": {
				"M": {"Name": {"S": "Joe"}, "Age": {"N": "35"}}
				}
			}
		}
	}]
}

追加リソース

このトピックについての詳細は、BMC マシンラーニング & ビッグデータブログやこれらのリソースを探索してください:

これらの投稿は私自身のものであり、必ずしもBMCの立場、戦略、または意見を表すものではありません。

オーケストレーションの関連記事

The Briefを購読する

このオファーに登録することで、あなたはBMCのプライバシーポリシーを読み、同意したことを確認します。

ありがとう

あなたはThe Briefに登録されました
The Briefはメインフレームとエンタープライズオーケストレーション—BMC AMIとControl-M—および、両者に関するアナリストの研究、顧客の展開、イベントをカバーしています。