DynamoDB操作スキャン対クエリ


AWS DynamoDBはデータ検索のためのスキャンとクエリ操作を提供します.両方の操作は、データ組織がバックグラウンドでどのように起こるかという点だけでなく、操作のパフォーマンスに関して異なって働きます.CloudWatchカスタムメトリックを使用すると、DynamoDB操作のためにとられた時間のグラフをプロットすることができます-スキャンまたはクエリは、どのようにDynamoDB操作がパフォーマンスの面で異なるかを理解するのに役立ちます.

ブログからのキー取材

  • ダイナモ操作操作比較-スキャン対質問.
  • ステップ関数に基づくラムダ関数トリガの実装
  • CloudWatchカスタムメトリクスの実装
  • 実装ウォークスルー

  • ラムダ関数を呼び出すためのステップ関数の設定.
  • ステップ関数でトリガされたラムダは、別のラムダを呼び出して、ダイナモを照会し、応答時間を記録します.
  • 応答時間もCloudWatchカスタムメトリックにスキャンとクエリの比較に書き込まれます.

  • ダイナモ操作操作比較



    何がスキャンですか?
    スキャンDynamoDB操作は、完全なテーブルを検索し、それがシーケンシャルフォームに格納されているデータを返します.
    let scanResponse = await dynamodb.scan({
            "TableName": "cars-demo"
        }).promise()
    

    どのようなクエリですか?
    クエリダイナモ操作を使用しますKeyConditionExpression テーブルのキースキーマまたはクエリ操作を検索条件を定義するインデックススキーマを使用してデータモデルを活用するには.
    let queryResponse = await dynamodb.query({
            TableName: 'cars-demo',
            IndexName: 'origin-index',
            KeyConditionExpression: 'origin = :origin',
            ExpressionAttributeValues: { ':origin': { "S": "USA" } },
        }).promise()
    
    機能
    スキャン
    クエリ
    探索技術
    逐次探索
    分割検索
    スキーマ制約


    インデックス

    ✅ LSIとGSIのほうが良い
    ソート

    ✅ データをSortKey応答限界
    1 MB
    1 MB
    応答時間
    より遅い
    速く
    計算
    o ( n )
    log ( n )
    コスト
    各項目として高価なスキャン
    安い
    DynamoDB操作の性能はキーファクタに依存する
  • データのモデル化
  • 使用するフィルターは何ですか?
  • データが存在する場所.
  • 1 MBの制限を越えると応答をペナルティしなければならない.
  • ステップ関数に基づくラムダ関数トリガの実装


    Step Function workflows プロセスフローのスケルトンであるステートマシンを定義します.この実装では、手動でstate machine 設定が初期化され、ラムダ関数を呼び出します.ラムダの応答をステップ関数に戻し、ステートマシンが実行を完了したかどうかをチェックする条件チェックを行う.条件が失敗した場合、状態機械はWait 1秒待ち、ラムダを再起動する.条件が満たされるまで継続する.

    {
      "Comment": "Invoke Lambda every 1 second",
      "StartAt": "ConfigureCount",
      "States": {
        "ConfigureCount": {
          "Type": "Pass",
          "Result": {
            "index": 0,
            "count": 5000
          },
          "ResultPath": "$.iterator",
          "Next": "Iterator"
        },
        "Iterator": {
          "Type": "Task",
          "Resource": "arn:aws:lambda:ap-south-1:228628157461:function:dynamodb-monitoring-Iterator-S9CK3cTj2qii",
          "ResultPath": "$.iterator",
          "Next": "IsCountReached"
        },
        "IsCountReached": {
          "Type": "Choice",
          "Choices": [
            {
              "Variable": "$.iterator.continue",
              "BooleanEquals": true,
              "Next": "Wait"
            }
          ],
          "Default": "Done"
        },
        "Wait": {
          "Type": "Wait",
          "Seconds": 1,
          "Next": "Iterator"
        },
        "Done": {
          "Type": "Pass",
          "End": true
        }
      }
    }
    
    この州のマシンの実装はAWSのブログで利用可能です.click here ラムダ関数のサブ分周波数呼び出しのためのアーキテクチャについて説明する.
    CloudWatchイベントルールを使用していないこのアーキテクチャにいくつかの変更があり、代わりに状態機械の実行を開始するためにラムダ関数を呼び出します.これはAWS Webコンソールから手動で実行されます.
    ステートマシンを実行するには、ステップ関数コンソールでステートマシンが作成された状態に移動し、「実行を開始」ボタンをクリックします.をクリックすると、ステートマシンの入力JSONが表示されます(これはオプションです).

    状態型の遷移を示す状態機械実行task , wait and choice また、入力、各状態の実行の出力を表示することができます.

    CloudWatchカスタムメトリックの実装


    CloudWatch Custom Metrics データのグラフィカルな表現を生成するためのCloudWatchにユーザー定義のカスタムメトリックを発行するために使用されます.
    このCloudWatchカスタムメトリックの詳細な実装はAWSのブログで入手できます.click here
    この実装ではメトリック演算を発行する予定です.SCAN or QUERY を返します.
    await cloudwatch.putMetricData({
            'MetricData': [{
                'MetricName': 'DynamoDBOperations',
                'Dimensions': [{
                    'Name': 'OPERATION',
                    'Value': metric
                }],
                'Unit': 'Milliseconds',
                'Value': value
            }, ],
            'Namespace': 'DynamoDB Queries and Scans'
        }).promise()
    
    公開されたデータは、Metricsサブメニューの下でCloudWatchコンソールで利用できるでしょう.
    US - East - 1から実行されたDynamoDB操作によるカスタムメトリック(データがDynamoDBに存在する領域)

    AP - South - 1から実行されるDynamoDB操作によるカスタムメトリクス(データがDynamoDBに存在する場所とは異なる領域で)

    US - East - 1 V/S AP - South - 1から実行されるDynamoDB操作によるカスタムメトリック

    CloudWatchカスタムメトリクスから推論。

  • クエリーがスキャン操作よりずっと速いことは静かです.
  • AP - SAR - 1領域のラムダ関数が、Emacs - East - 1にデータが格納されているDynamodbから照会/走査項目であるとき、領域も重要な役割を演じます.
  • これは、NODEJSとAWSサムアプリケーションで実装されているサンプルコードはGithubで利用可能です.

    ザカズノネル / CloudWatchカスタムメトリクスによるAWSダイナモ操作


    DynamoOB操作の実行-ステップ関数の実行によって呼び出される毎秒を検索し、スキャンします。これは、DynamoDB操作の応答で、カスタムメトリックを使用してCloudWatchを更新します。