DynamoDBのScanオペレーションを使用するデメリット、リスクをを解説

DynamoDBのScanオペレーションを使用するデメリット、リスクをを解説

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは!

DynamoDBのScanオペレーションを使用するデメリット、リスクを解説します。

はじめに

DynamoDBはAmazon Web Services(AWS)のNoSQLデータベースサービスです。DynamoDBのScanオペレーションを使用すると、テーブル内のすべてのデータを取得することができます。しかし、Scanオペレーションを使用すると、データベースへの負荷が増加し、パフォーマンスが低下してしまいます。本記事では、Scanオペレーションを使用するデメリットを解説します。

Scanオペレーションのデメリット

一般的に、Scan オペレーションは、DynamoDB の他の操作よりも効率が悪いです。

Scan オペレーションは常にテーブルまたはセカンダリインデックス全体をスキャンし、その後アイテムの値をフィルターして必要な結果を抽出し、最後に全取得結果からデータを削除する余分なステップを追加します。

そのため、Scan オペレーションを使用すると、データベースへの負荷が増加します。Scanオペレーションは、テーブル内のすべてのデータを取得するため、データベースへの負荷が増加し、データベースのパフォーマンスが低下します。

Scanオペレーションのデメリットまとめ

  • Scan オペレーションは常にテーブルまたはセカンダリインデックス全体をスキャン
  • 余分なアイテムの読み込みを行うためリードキャパシティユニットを余分に消費する可能性が高い
  • スロットリングが発生する可能性が高い
  • 余分な費用が発生する可能性が高い

Scanオペレーションを使用する例

import { DynamoDB } from 'aws-sdk';

const dynamoDb = new DynamoDB({
  apiVersion: '2012-08-10',
  region: 'us-east-1'
});

const params = {
  TableName: 'MyTable'
};

dynamoDb.scan(params, (err, data) => {
  if (err) {
    console.log(err);
  } else {
    console.log(data);
  }
});

Scanオペレーションを避けるには?

GSI、インデックス属性によるqueryを使用した効率的なアイテム取得を設計します。

事前にアクセスパターンを要件定義し、適切なインデックス設計を行う必要があります。

まとめ

本記事では、DynamoDBのScanオペレーションを使用するデメリットを解説しました。Scanオペレーションを使用すると、データベースへの負荷が増加し、パフォーマンスが低下してしまうので、避けましょう。

サーバーレス開発低コストなAWS開発内製化はお気軽にお問い合わせください。