ポイント: 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 マシンラーニング & ビッグデータブログやこれらのリソースを探索してください:
- AWS ガイド(15件以上のAWSに関する記事とチュートリアルを含む)
- AWS、Azure & GCPの可用性リージョンとゾーン
- AWSのデータベース: マルチクラウド環境におけるクラウドデータベースの位置づけ
- データベースの信頼性についての紹介
DynamoDB ガイド
これらの投稿は私自身のものであり、必ずしもBMCの立場、戦略、または意見を表すものではありません。