Существует довольно существенная разница между работой реляционной базы данных и работой DynamoDB.
В типичном механизме реляционных баз данных, таком как MySQL, PostgreSQL или MSSQL, ожидается, что каждый экземпляр клиентского приложения будет устанавливать небольшое количество подключений к механизму и держать соединения открытыми во время использования приложения. Затем, когда части приложения должны взаимодействовать с базой данных, они заимствуют соединение из пула, используют его для выполнения запроса и освобождают соединение обратно в пул. Это позволяет эффективно использовать соединения и устраняет накладные расходы на настройку и разрыв соединений, а также уменьшает побои, возникающие в результате создания и освобождения ресурсов объекта соединения.
Теперь переключаемся на DynamoDB: все выглядит немного иначе . У вас больше нет постоянных подключений от клиента к серверу базы данных. Когда вы выполняете операцию «Динамо» (запрос, сканирование и т. Д.), Это HTTP-запрос / ответ, который означает, что соединение устанавливается нерегулярно и длится только продолжительность запросов. DynamoDB - это веб-сервис, который заботится о балансировке нагрузки и маршрутизации, чтобы обеспечить стабильную производительность независимо от масштаба. В этом случае, как правило, для приложений лучше использовать один клиентский объект DynamoDB на экземпляр и позволить клиенту и связанной с ним инфраструктуре на стороне обслуживания позаботиться о балансировке нагрузки и маршрутизации.
Теперь клиент DynamoDB для вашего стека (т. Е. Java-клиент, .NET-клиент, JavaScript / NodeJS-клиент и т. Д.) Обычно использует базовый HTTP-клиент, объединенный в пул, в основном для минимизации затрат, связанных с созданием и сносить эти предметы. И вы можете настроить некоторые из этих параметров, а в некоторых случаях предоставить собственную реализацию пула HTTP-клиентов, но обычно это не требуется.