У меня есть приложение grails. Я использую amazon dynamodb для определенного требования, к которому обращаются, и записи добавляются другим приложением. Теперь мне нужно получить всю информацию из таблицы dynamodb в таблицу postgreSQL. Есть более 10000 записей в dynamodb, но пропускная способностьAmazon Dynamodb найти все в графе
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, так как это означает, что я должен платить больше. После немного более тщательного изучения, Throttling может быть решением для этого, которое не превысит предела, для выполнения задачи потребуется больше времени. Я раньше этого не делал, поэтому помощь с этой целью также была бы полезной. – Visahan
Сначала вы должны проверить, какие ограничения вы нарушаете. Например, вы можете создать задание, которое будет выполняться каждые 15 минут, пока оно не завершит полную задачу. –
Как я описал в приведенном выше примере, мне нужно получить все записи из dynamodb для обработки. Поэтому я нарушаю единицы чтения. Я ищу решение, в котором я мог бы использовать дросселирование для достижения моей цели, которая займет больше времени, но завершит задачу. – Visahan