Подключение к СУБД MySQL через Java
У меня есть требование для подключения существующего приложения cobol в z/OS к удаленной базе данных MySQL с использованием Java. Я читал о подходе хранимых процедур, но не получил четкого представления об архитектуре. Не могли бы вы поделиться своими идеями относительно подхода к подключению хранимых процедур кобол-Java -MySQL?
4 ответа
... другой возможностью было бы перенести ваше приложение cobol на as400 (это не должно быть слишком сложно, на уровне источника) и получить доступ к любой базе данных JDBC, которую вы хотите, используя ArdGate, универсальный мост от DB2/400, к любой базе данных, поддерживающей JDBC.
Dieter
У вас есть Java, это означает, что вы можете использовать драйверы JDBC для общения с MySQL.
И у вас есть Cobol, который в наши дни хорошо интегрируется с Java на мейнфрейме. Вы можете написать объект Cobol, который будет вызывать различные методы в драйвере JDBC.
Вы можете заключить это в процедурную (или набор процедурных) программу (-ы) Cobol для запуска хранимой процедуры или подготовленного запроса и возврата результатов.
Таким образом, возможный программный стек может выглядеть так:
Existing Application (Cobol)
Procedureal Interface Module (Cobol)
Cobol-To-Java interace (OO-Cobol)
JDBC Driver for MySql (prepackaged JAR, Java)
MySQL database
Oracle, по крайней мере, предлагает поддержку DRDA через функциональность "прозрачных шлюзов (TG)".
http://www.oracle.com/technetwork/database/enterprise-edition/tg4drda-097332.html
Стоимость значительная, 5 цифр, когда я на это смотрю.
В IBM i (он же AS/400) Oracle предлагал поддержку как клиентов, так и серверов. TG сделал IBM i похожей на другую БД оракула и заставил БД оракула выглядеть как другая IBM i. MS SQL Server предлагает поддержку клиентов DRDA, но не сервер. Таким образом, MS SQL Server может успешно подключиться к серверу DRDA, но сервер DRDA не может подключиться к серверу MS SQL.
Цена, которую вы платите за использование открытого стандарта, а ваши конкуренты - нет.
Решением IBM будет установка DB2 LUW "Сервер федерации". Это в основном переведет DRDA в ODBC/OLEDB.
Последний вариант - установить и использовать драйверы JDBC типа 4 на вашем z. Я предполагаю, что есть какой-то способ вызова Java-программ из COBOL в z/OS. Я знаю, что есть на IBM я.
На самом деле, поскольку спецификация DRDA открыта, вы можете создать собственный реквестер DRDA Application, который использует JDBC для связи с удаленным сервером; давая вам шлюз DRDA (мост). На самом деле, есть проект с открытым исходным кодом для IBM i, который делает именно это. ARDGATE распространяется как часть проекта AppServer4rpg http://sourceforge.net/projects/appserver4rpg/?source=navbar
Компонент ARDGATE написан на Java, вероятно, он может быть перенесен в z/OS.
ArdGate не использует DRDA, он использует выход для интеграции с клиентом SQL (AKA ARDPGM), который является только AS400. Так что он не переносим на Z-Series.
Должна быть возможность написать Мост из DRDA в JDBC (это будет работать на всех разновидностях DB2), но спецификации DRDA плохо документированы (это было причиной для меня, чтобы использовать подход ArdPGM).
Продукт IBM снова переименован в InfoSphere Federation Server и требует дополнительного сервера и довольно дорогой (это IBM). Используя это, вы можете получить доступ к MS SQL Server со встроенным SQL в COBOL, как таблицы DB2.
Подход хранимой процедуры может работать следующим образом:
Чтобы получить набор результатов (открытый курсор), вы должны передать оператор выбора SQL хранимой процедуре (реализованной в Java), а внутри хранимой процедуры вам придется иметь дело с базой данных MSSQL внутри хранимой процедуры, чтобы получить ResultSet, вытягивая его в массив (или временная таблица), возвращающий открытый курсор. Это может быть очень неуклюже с z-OS, и я не знаю, будет ли он хорошо масштабироваться. На AS400 это не так.