DynamoDB操作スキャン対クエリ
14285 ワード
AWS DynamoDBはデータ検索のためのスキャンとクエリ操作を提供します.両方の操作は、データ組織がバックグラウンドでどのように起こるかという点だけでなく、操作のパフォーマンスに関して異なって働きます.CloudWatchカスタムメトリックを使用すると、DynamoDB操作のためにとられた時間のグラフをプロットすることができます-スキャンまたはクエリは、どのようにDynamoDB操作がパフォーマンスの面で異なるかを理解するのに役立ちます.
ダイナモ操作操作比較-スキャン対質問. ステップ関数に基づくラムダ関数トリガの実装 CloudWatchカスタムメトリクスの実装 ラムダ関数を呼び出すためのステップ関数の設定. ステップ関数でトリガされたラムダは、別のラムダを呼び出して、ダイナモを照会し、応答時間を記録します. 応答時間もCloudWatchカスタムメトリックにスキャンとクエリの比較に書き込まれます.
何がスキャンですか?
スキャンDynamoDB操作は、完全なテーブルを検索し、それがシーケンシャルフォームに格納されているデータを返します.
どのようなクエリですか?
クエリダイナモ操作を使用します
スキャン
クエリ
探索技術
逐次探索
分割検索
スキーマ制約
❌
✅
インデックス
✅
✅ LSIとGSIのほうが良い
ソート
❌
✅ データを
1 MB
1 MB
応答時間
より遅い
速く
計算
o ( n )
log ( n )
コスト
各項目として高価なスキャン
安い
DynamoDB操作の性能はキーファクタに依存する データのモデル化 使用するフィルターは何ですか? データが存在する場所. 1 MBの制限を越えると応答をペナルティしなければならない.
Step Function workflows プロセスフローのスケルトンであるステートマシンを定義します.この実装では、手動で
CloudWatchイベントルールを使用していないこのアーキテクチャにいくつかの変更があり、代わりに状態機械の実行を開始するためにラムダ関数を呼び出します.これはAWS Webコンソールから手動で実行されます.
ステートマシンを実行するには、ステップ関数コンソールでステートマシンが作成された状態に移動し、「実行を開始」ボタンをクリックします.をクリックすると、ステートマシンの入力JSONが表示されます(これはオプションです).
状態型の遷移を示す状態機械実行
CloudWatch Custom Metrics データのグラフィカルな表現を生成するためのCloudWatchにユーザー定義のカスタムメトリックを発行するために使用されます.
このCloudWatchカスタムメトリックの詳細な実装はAWSのブログで入手できます.click here
この実装ではメトリック演算を発行する予定です.
US - East - 1から実行されたDynamoDB操作によるカスタムメトリック(データがDynamoDBに存在する領域)
AP - South - 1から実行されるDynamoDB操作によるカスタムメトリクス(データがDynamoDBに存在する場所とは異なる領域で)
US - East - 1 V/S AP - South - 1から実行されるDynamoDB操作によるカスタムメトリック
クエリーがスキャン操作よりずっと速いことは静かです. AP - SAR - 1領域のラムダ関数が、Emacs - East - 1にデータが格納されているDynamodbから照会/走査項目であるとき、領域も重要な役割を演じます. これは、NODEJSとAWSサムアプリケーションで実装されているサンプルコードはGithubで利用可能です.
ブログからのキー取材
実装ウォークスルー
ダイナモ操作操作比較
何がスキャンですか?
スキャン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操作の性能はキーファクタに依存する
ステップ関数に基づくラムダ関数トリガの実装
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カスタムメトリクスから推論。
ザカズノネル / CloudWatchカスタムメトリクスによるAWSダイナモ操作
DynamoOB操作の実行-ステップ関数の実行によって呼び出される毎秒を検索し、スキャンします。これは、DynamoDB操作の応答で、カスタムメトリックを使用してCloudWatchを更新します。
Reference
この問題について(DynamoDB操作スキャン対クエリ), 我々は、より多くの情報をここで見つけました https://dev.to/awscommunity-asean/dynamodb-operations-scan-vs-query-with-cloudwatch-custom-metrics-2mikテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol