2016-12-16 4 views
2

私は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を使用する場合でも、それがどれくらいの時間がかかるかという要求を送る必要がある固定回数はありません。だから、私が持っている要件に合った解決策を探しています

答えて

0

あなたの問題はまったくGrailsに関連していない可能性があります。返されるエラーメッセージは、The level of configured provisioned throughput for the table was exceeded. Consider increasing your provisioning level with the UpdateTable API

となります。したがって、実際の制限に従うようにスループットのレベルを上げる(このオプションではさらに支払う必要があります)、またはクエリを調整することを検討する必要があります。

もこの答えをチェックアウト:https://stackoverflow.com/a/31484168/2166188

+0

私はそれが私が多くを支払う必要が意味するので、throuhputを増加する必要がないことを意味し解決策を探しています。もう少しリサーチした後で、スロットルはこれのための解決策になる可能性があります。タスクが完了するまでには時間がかかるだけです。私はこれまでにそれをしていないので、その目的のために役立つだろう。 – Visahan

+0

まず、あなたが違反している限度額を確認してください。たとえば、完全なタスクが完了するまで15分ごとに実行されるジョブを作成することができます。 –

+0

上記のサンプルで説明したように、dynamodbからすべてのレコードを処理する必要があります。だから私は読み込み容量単位に違反しています。私は目標を達成するために絞りを使うことができる解決策を探していますが、これは時間がかかりますがタスクを完了させるでしょう。 – Visahan

関連する問題