LoginSignup
0
0

More than 1 year has passed since last update.

DynamoDBのオペレーションとプレースホルダーについて

Posted at

 はじめに

 こんばんは!今回はDVA対策で勉強しているときに出てきたDynamoDBのAPIとプレースホルダー、についてまとめてみました。
 試験で出てくるかは別として、業務で使うことも今後あると仮定して記事にしてきたいと思います!!!

 よろしくお願いします(。・ω・)ノ゙

 DynamoDBのCRUD処理

 Amazon DynamoDBでは、項目は属性の集まりです。各属性には名前と値がありまる。属性値はスカラー値、セット型、ドキュメント型のいずれかになります。
 DynamoDB は、作成、読み込み、更新、削除 (CRUD) の 4 つの基本的なオペレーション機能を提供します。

◆DynamoDBのCRUD
  ・PutItem :作成
  ・GetItem :読み込み
  ・updateItem :更新
  ・DeleteItem :削除

この4つ以外にも下記のオペレーションがあります

 Batch

 大量のデータの書き込みや読み込みをまとめて行うときにPutItemやGetItemによるオペレーションでは非効率な場合があります。その場合に使用するオペレーションを紹介します。

 ◆Batch
  ・BatchGetItem:大量データの読み込み操作
  ・BatchWriteItem:大量なデータの書き込み操作

 BatchGetItemとBatchWriteItemによって並列処理ができて、パフォーマンスの向上が期待できます。一部の項目の書き込み、読み込みが失敗しても処理が継続し失敗した項目は、レスポンスのUnprocessedItemsに含まれるので、失敗原因や失敗処理、場合によっては再試行処理が行われる。

 Transaction

 複数のテーブルでタイミングを合わせて処理を行いたい場合はTransactWriteItemes、TransactGetItemsを使用する。トランザクションを成立させる必要上、1つでもリクエストが失敗した場合は処理全体を失敗にする。
 
 ◆Transaction
  ・TransactWriteItemes:複数テーブルへのタイミングを合わせた書き込み処理操作
  ・TransactGetItems:複数テーブルへのタイミングを合わせた読み込み処理操作

 この2つの操作は2018年に追加されたオペレーションであり2018年以前はDynamoDBではトランザクションはサポートされていなかった。現在はサポートされているので、認定試験対策として「DynamoDBはトランザクションをサポートしているNoSQLDB」である。

 PutItemについて

 新規項目の追加はPutItemオペレーションで行い同じキーを持つ既存の項目があった場合は、既存のアイテムがPutItemされたアイテムに置き換える

 UpdateItemについて

 DynamoDBテーブルの特定のアイテムの特定の属性のみを更新するときに使用されるUpdateItemオペレーションですが、予約語を属性として使用する場合はプレースホルダーを使用しなければならない。

 ◆プレースホルダー
  ・ExpressionAttributeNames:予約語を属性として指定する
  ・ExpressionAttributeValues:予約語を更新する値

 DynamoDBテーブルにUpdateItemを実行する際に、オプティミスティックロックを使用する場合はConditionExpressionを使用すると条件付きのUpdateItemができる。

 ・オプティミスティックロック
   更新 (または削除) しているクライアント側の項目と、Amazon DynamoDB の項目を確実に同じになるようにするための手段です。

 ・ConditionExpression
   DynamoDBテーブルにUpdateItemを実行する際にオプティミスティックロックを使用したいときに条件式を指定して使用する場合に使う。

 GetItemについて

 GetItemではプライマリキーが必須であり、特定の属性や強力な整合性で読み込みたい場合はこれらのパラメーターを使用します。

 ・ProjectionExpression:取得したい属性の指定
 ・ConsisitentRead:強力な整合性を指定

 DeleteItemについて

 キーを指定して項目を削除することができる。

 ・ReturnValues:削除前の項目の取得をすることができる。

 おわりに

 今回もお疲れ様でした。仕事終わりに少しづつ書いてきたので全然進みは遅かったですが、また来週も書いていこうとおもいます。

 お疲れ様でした(。・ω・)ノ゙

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0