Подтвердить что ты не робот

Является ли Slick 3.0 реактивным/асинхронным на уровне драйвера базы данных? Для каких баз данных?

Слик исторически полагался на драйверы JDBC, которые внутренне блокируют ожидание ввода-вывода сокета в ответ на запросы. Каждый выдающийся вызов базы данных требует, чтобы поток блокировался в сокете; следовательно, он не является действительно реактивным в том же смысле, что и ReactiveMongo, postgresql-async и mysql-async, которые асинхронны вплоть до конца.

Что-то изменилось в этом отношении в Slick 3.0? Или я запутался в этом?

4b9b3361

Ответ 1

Это не async до уровня драйвера, но это не проблема. Предполагается, что количество блокирующих потоков, ожидающих подключения к базе данных, будет небольшим в хорошей настройке. Таким образом, они не потребляют много ресурсов. Slick управляет ими и планирует блокировать потоки в свой собственный пул потоков, поэтому они не мешают вычислениям. "Исходный" драйвер async, вероятно, добавит незначительное ускорение, но не является основным. Slick может поддержать это в какой-то момент в будущем. Основное преимущество "реактивного" - это то, что Слик уже реализует в версии 3.0. Более подробное объяснение можно найти здесь: https://www.parleys.com/tutorial/reactive-slick-database-programming