После выпуска спецификации Reactive Streams 1.0 станет ли реактивной спецификация jdbc?

Я изучал и использовал программирование реактивных потоков с потоками akka, я пытался найти любые библиотеки для async-jdbc-driver или reactive-jdbc-driver в течение 2 лет, и я обнаружил, что slick 3.0 или rxjava-jdbc-driver предоставляют async jdbc api, но я знаю, что slick строит удивительный API поверх API JDBC, который блокирует (поправьте меня, если я ошибаюсь), поэтому я предполагаю, что с точки зрения системы это может быть не 100% реактивная система сверху донизу.

Еще одним удивительным событием стало то, что в прошлом году была выпущена «Спецификация Reactive Streams V1.0», поэтому мои вопросы:

  1. Побудит ли это событие группу экспертов JDBC разработать поддержку асинхронного API JDBC?
  2. И затем организации-поставщики баз данных, такие как Oracle, поставщик MySQL, планируют ли реализовать соответствующие драйверы?
  3. Если это безнадежно, какие-либо указания или замена или что-то еще, что я мог бы превратить, или слой JDBC не должен быть реактивным, а масштабируемые серверы mysql достаточно хороши?

person Barry Zhong    schedule 23.04.2016    source источник
comment
На данный момент таких планов нет. JDBC довольно низкоуровневый, и более вероятно, что появится инфраструктура, которая будет строить реактивное поведение вокруг драйвера JDBC.   -  person Mark Rotteveel    schedule 24.04.2016


Ответы (2)


Согласно Oracle, они работают над созданием неблокирующего API для JDBC.

Как указано в ссылке:

Этот новый API полностью не блокирует. Он не предназначен для расширения или замены JDBC, а скорее представляет собой совершенно отдельный API, обеспечивающий полностью неблокирующий доступ к тем же базам данных, что и JDBC.

Теперь вы можете загрузить новый API с OpenJDK и принять участие в проекте, просмотрев API и отправив отзыв в список рассылки JDBC.

person dazito    schedule 04.03.2018
comment
На самом деле это не неблокирующий API для JDBC, это совершенно отдельный API. - person Mark Rotteveel; 04.03.2018

Я тоже ничего не знаю о каких-либо планах. Многие решения NoSQL, которые не связаны старым API JDBC, начали предоставлять API на основе реактивных систем. Я не могу сказать, являются ли они реактивными с полным стеком; вы должны подтвердить это, посмотрев на их спецификацию/реализацию.

Поскольку у нас есть реактивные решения полного стека для TCP/HTTP через RxNetty (Retrofit, OkHttp?), а также есть изменения для Servlet 4.0, было бы здорово, если бы мы могли просто скомпоновать асинхронный источник JDBC. Однако для этого требуется новый дизайн API с нуля.

Возможно, как только JDK 9 и Flow API (который по сути является Reactive-Streams, но в другом пакете) будут поняты и приняты разработчиками JDK. Однако обратите внимание, что, вероятно, простой API Reactive-Streams может быть не совсем адекватным для такого ввода-вывода, и требуется более расширенный API в виде двунаправленных реактивных потоков.

Может быть, кто-нибудь с опытом работы с JEP поднимет вопрос, и мы сможем начать повторять подходы.

До тех пор у нас есть упомянутые вами блокирующие оболочки для JDBC.

person akarnokd    schedule 24.04.2016
comment
На конференции scala days 2015 Reactive Slick for Database Programming я нашел технический доклад руководителя проекта Slick Стефана Зейгера youtube. com/watch?v=WvxXz7aklik Я могу ошибаться, но я думаю, что в основном он упомянул atm, что они работают над собственным драйвером базы данных, и на данный момент настраивают разные пулы потоков для разных пулов соединений в соответствии с разными источниками данных и с Slick3 может быть выход. Благодаря технологии обратного давления slick не будет загружать данные из базы данных, пока клиент не готов к обработке, поэтому производительность приложения каким-то образом оптимизируется. Поправьте меня, если я был неправ. - person Barry Zhong; 26.04.2016