View on GitHub

Db2-Russian

IBM Db2 по-русски

Разработка клиентских приложений IBM Db2

Доступные языки и стандарты

DB2 предоставляет среду разработки приложений, основанную на стандартах и прозрачную для всего семейства DB2. Стандартизация SQL на всей линейке продуктов DB2 обеспечивает общий набор прикладных программных интерфейсов для доступа к базе данных.

Кроме того, каждый продукт DB2 предоставляет средства прекомпиляции SQL (т.е. поддержку встраивания SQL-операторов в программы на различных языках программирования), а также прикладные программные интерфейсы (API), с помощью которых разработчики могут встраивать статические и динамические SQL-запросы в разрабатываемые приложения.

Доступные в DB2 языки и стандарты включают в себя:

DB2 предлагает разработчикам баз данных гибкость, необходимую для использования преимуществ функций разработки на стороне сервера, таких как хранимые процедуры и пользовательские функции, при этом не ограничивая разработчиков в выборе языка программирования клиентских приложений.

При разработке на стороне клиента разработчики создают приложения на компьютере-клиенте, а затем устанавливают соединение и получают доступ к базе данных DB2 с помощью API, предоставленных DB2. Разработка на стороне клиента часто дополняется разработкой на стороне сервера, когда программный код оформляется в виде специальных объектов, размещаемых в базе данных и вызываемых из программного обеспечения на стороне клиента.

Организация разработки на стороне сервера описана в разделе «Разработка на стороне сервера Db2».

Разработка на встраиваемом SQL

Приложения на встраиваемом SQL — это приложения, в которых язык SQL встроен в язык хоста, например, C, C++ или COBOL. Приложение на встраиваемом SQL может содержать как статический, так и динамический SQL (см. далее). Встраивание операторов SQL в приложение осуществляется с помощью специальных программных конструкций, расширяющих применяемый язык программирования (обычно это конструкция EXEC SQL, адаптируемая под особенности конкретного языка программирования).

Приложения на встраиваемом SQL обрабатываются специальной программой-прекомпилятором, в результате чего формируются два промежуточных файла: файл связей, содержащий текст встроенных (статических) SQL-операторов и сопутствующую служебную информацию, и файл с программой на оригинальном языке программирования (без встроенных SQL-операторов), которая содержит исходную логику приложения и специальные вызовы клиента DB2 для выполнения операторов SQL. Вызов программы-прекомпилятора осуществляется с помощью команды DB2 PRECOMPILE (сокращенное наименование - PREP).

Программа на оригинальном языке программирования далее должна быть скомпилирована штатными средствами (например, обработана компилятором и редактором связей C/C++), а файл связей должен быть загружен в базу данных DB2 (командой BIND) перед выполнением программы.

Статические SQL-операторы — это операторы, структура SQL которых полностью известна во время прекомпиляции. Таким образом, работа со статическим SQL возможна только для приложений на встраиваемом SQL.

Статический SQL лучше всего использовать в базах данных, статистика распределения записей в которых не сильно изменяется. Преимуществом использования статического SQL является экономия системных ресурсов на выполнение оптимизации запросов и гарантированная стабильность используемых планов выполнения запросов.

Современные программные API, такие как JDBC и ODBC, всегда используют динамический SQL, независимо от того, включает SQL-оператор только заранее известные объекты или нет. В целом, для обработки SQL-оператора как динамического используется две команды:

Команды PREPARE и EXECUTE также можно выполнить разом, с помощью одного оператора: EXECUTE IMMEDIATE.

Разработка с использованием ODBC, CLI, OLE DB или ADO

Интерфейс уровня вызовов (Call Level Interface, CLI) был разработан компанией компаниями X/Open и SQL Access Group. Этот интерфейс создавался как спецификация вызываемого интерфейса SQL для разработки переносимых (совместимых с множеством операционных систем) приложений на C/C++, независимых от поставщика СУБД.

На основе предварительного проекта интерфейса уровня вызовов X/Open корпорация Microsoft разработала открытые средства связи с базами данных (Open Database Connectivity, ODBC), а позже международный комитет ISO принял большинство спецификаций интерфейса уровня вызовов X/Open в качестве стандарта SQL/CLI.

Интерфейс CLI DB2 основан на ODBC и Международном стандарте для SQL/CLI. Реализация CLI DB2 соответствует спецификации ODBC версии 3.51 и может использоваться в качестве драйвера ODBC при загрузке диспетчером драйверов ODBC.

CLI/ODBC имеет следующие характеристики:

Для выполнения приложения CLI/ODBC достаточно иметь драйвер CLI DB2. Для разработки приложения CLI/ODBC необходимы драйвер CLI DB2 и соответствующие библиотеки разработки.

OLE DB — это набор интерфейсов, предоставляющий доступ к данным из различных источников. Он разрабатывался корпорацией Microsoft как замена ODBC, но был расширен для поддержки более широкого набора источников, в том числе нереляционных баз данных, текстовых документов и электронных таблиц. Реализация OLE DB осуществляется с применением технологии объектной модели программных компонентов (Component Object Model, COM), также разработанной компанией Microsoft.

Пользователи OLE DB могут получить доступ к базам данных DB2 с помощью компонента DB2 OLE DB Provider от компании IBM. Для пользователей ADO (ActiveX Data Objects) в составе драйверов DB2 поставляется провайдер ADO.NET для DB2, который является надстройкой над драйвером OLE DB.

Разработка в среде Java

Интерфейс соединения с базами данных на Java (Java Database Connectivity, JDBC) — это программный API Java, определяющий стандарты средств для работы с базами данных и доступа к ним. Программный код JDBC достаточно легко переносится между продуктами нескольких поставщиков СУБД. Обычно в код необходимо вносить только изменения, касающиеся выбора драйвера JDBC для загрузки и используемой строки соединения.

В настоящее время работа с базами данных с использованием драйверов JDBC обеспечивается в том числе и для языков программирования, отличных от Java, но исполняемых средствами виртуальной машины Java (Java Virtual Machine, JVM), включая Groovy, Scala, Closure, Jython.

SQLJ — это стандарт встраивания SQL в Java-программы. Он используется преимущественно со статическим SQL, хотя совместим с JDBC. Хотя обычно SQLJ-программы являются более компактными по сравнению с программами JDBC, и обеспечивают более высокую производительность, этот стандарт не получил широкого применения. Программы SQLJ необходимо обрабатывать препроцессором (транслятором SQLJ) прежде, чем их можно будет скомпилировать компилятором Java.

Используемое имя класса драйвера JDBC: com.ibm.db2.jcc.DB2Driver, драйвер поставляется в виде архивов db2jcc4.jar (актуальная линейка версий драйвера по спецификации JDBC 4.0) и db2jcc.jar (устаревший драйвер по спецификации JDBC 3.0).

Типичный вариант URL для настройки JDBC-подключений для драйвера Db2 типа 4: jdbc:db2://hostname.example.com:50000/bludb. В этом примере значение 50000 - номер порта, hostname.example.com - имя сервера, bludb - имя базы данных.

Дополнительная информация по формату URL и параметрам драйвера приведена в документации.

Различные версии JDBC-драйвера Db2 доступны для загрузки на специальной странице.