私はgrailsアプリケーションを持っています。私はアクセスされる特定の要件のためにamazon dynamodbを使用しており、エントリは別のアプリケーションによって追加されています。今度は、dynamodbテーブルからpostgreSQLテーブルにすべての情報を取得する必要があります。そこDynamoDBの中で10000件のレコードを超えているが、スループットがBuildConfig.groovyでAmazon Dynamodbはすべてgrailで見つかる
Read capacity units : 100
Write capacity units : 100
である私は、私は次のような構成
grails {
dynamodb {
accessKey = '***'
secretKey = '***'
disableDrop = true
dbCreate = 'create'
}
}
を持っているプラグインにconfig.groovyで
compile ":dynamodb:0.1.1"
を定義しています
私が持っているコードはこのようなものです。
class book {
Long id
String author
String name
date publishedDate
static constraints = {
}
static mapWith = "dynamodb"
static mapping = {
table 'book'
throughput read:100
}
}
また、上記持っWUD
私はbook.findAll(のようなものを試してみてください)私は
AmazonClientException: Unable to unmarshall response (Connection reset)
そして、ときに私はbook.findAllByAuthor(のようなものを試みることによって、レコードの数を減らすためにしようとした次のエラーを取得します)(レコードの1000の)私は、スループットの制限にもかかわらず、DynamoDBの内のすべてのレコードを取得し、postgresのテーブルに保存する必要があり、次のエラー
Caused by ProvisionedThroughputExceededException: Status Code: 400, AWS Service: AmazonDynamoDB, AWS Request ID: ***, AWS Error Code: ProvisionedThroughputExceededException, AWS Error Message: The level of configured provisioned throughput for the table was exceeded. Consider increasing your provisioning level with the UpdateTable API.
を取得します。そうする方法はありますか?
私は非常にこの分野に新しいです、事前にお手伝いをしています。
いくつかの調査の後、私はAcross Google Guavaに来ました。しかし、たとえGuava RateLimiterを使用する場合でも、それがどれくらいの時間がかかるかという要求を送る必要がある固定回数はありません。だから、私が持っている要件に合った解決策を探しています
私はそれが私が多くを支払う必要が意味するので、throuhputを増加する必要がないことを意味し解決策を探しています。もう少しリサーチした後で、スロットルはこれのための解決策になる可能性があります。タスクが完了するまでには時間がかかるだけです。私はこれまでにそれをしていないので、その目的のために役立つだろう。 – Visahan
まず、あなたが違反している限度額を確認してください。たとえば、完全なタスクが完了するまで15分ごとに実行されるジョブを作成することができます。 –
上記のサンプルで説明したように、dynamodbからすべてのレコードを処理する必要があります。だから私は読み込み容量単位に違反しています。私は目標を達成するために絞りを使うことができる解決策を探していますが、これは時間がかかりますがタスクを完了させるでしょう。 – Visahan