我有一個grails應用程序。我正在使用amazon dynamodb來訪問特定的需求,並且由不同的應用程序添加條目。現在我需要從dynamodb表中獲取所有信息到postgreSQL表。有超過10000條記錄中dynamodb但吞吐量Amazon Dynamodb在grails中查找所有內容
Read capacity units : 100
Write capacity units : 100
在BuildConfig.groovy
compile ":dynamodb:0.1.1"
Config.groovy中我有以下的配置
grails {
dynamodb {
accessKey = '***'
secretKey = '***'
disableDrop = true
dbCreate = 'create'
}
}
我已經定義插件
代碼我看起來類似於這個
class book {
Long id
String author
String name
date publishedDate
static constraints = {
}
static mapWith = "dynamodb"
static mapping = {
table 'book'
throughput read:100
}
}
當我嘗試像book.findAll()我收到以下錯誤
AmazonClientException: Unable to unmarshall response (Connection reset)
,當我試圖通過嘗試類似book.findAllByAuthor()(其中也有WUD以上,以減少的記錄數記錄1000年)我得到以下錯誤
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.
我需要得到dynamodb所有的記錄,儘管吞吐量限制,並將其保存在一個Postgres的表。有沒有辦法做到這一點?
我對這方面很陌生,在此先感謝您的幫助。
經過一番研究,我來到谷歌番石榴。但即使使用Guava RateLimiter,也不會有固定的次數,我需要發送請求的時間需要多長時間。所以我正在尋找一個解決方案,以滿足我的要求
我正在尋找一個解決方案,這意味着我不必增加throuhput,因爲這意味着我必須付出更多。經過多一點研究後,節流可能是一個解決方案,這將不會超過極限,只需要更長的時間完成任務。我之前沒有這樣做過,所以從這方面的幫助也是有幫助的。 – Visahan
首先,你應該檢查你違反的限制是什麼。例如,您可以創建一個每15分鐘執行一次的作業,直到完成全部任務。 –
正如我在上面的例子中所描述的,我需要從dynamodb獲取所有記錄進行處理。所以我違反了讀取容量單位。我正在尋找一種解決方案,我可以使用節流來實現我的目標,這需要更長的時間,但會完成任務。 – Visahan