Продолжается подписка на наши издания! Вы не забыли подписаться?

IBM DB2 Universal Database

Если бы потребовалось одним словом охарактеризовать продукты IBM, то это слово – основательность. Не надежность, масштабируемость или какая-нибудь там переносимость, а именно основательность. Вы спросите, к каким характеристикам продукта относится это странное определение? Не к характеристикам, дорогой читатель, а к общему впечатлению. Продукт IBM может иметь неработающие или глючные части, тормозить по страшному и требовать для работы прорву памяти в минимальной конфигурации, но впечатление солидности и респектабельности все равно останется. И это хорошо, потому, что ошибки когда-нибудь устранят фикс-паками, а респектабельность останется. И ничего, что дорого. Покупая Роллс-Ройс, не спрашивают о цене запчастей.

DB2 была выпущена IBM в 1983 году для платформы MVS. IBM достаточно долго не продвигала эту БД на других платформах. Но к середине 90-х отношение переменилось, и с 1997 года существуют версии для Windows, нескольких диалектов UNIX и OS/2, а с 1999 года – для AS/400 и OS/390.

Рис.1. Command Center

Изначально разработчики считали задачей DB2 работу с приложениями для поддержки принятия решений. Однако достаточно удачная архитектура позволила расширить рамки применимости, и сейчас DB2 позиционируется как универсальная СУБД. Под универсальностью в данном случае понимается многоплатформность, поддержка мультимедиа-типов данных, разумеется, интеграция в Web и весьма широкая масштабируемость. Но, судя по всему, не изменилось главное – подход. Разработчики меньше всего думают о DB2, как о сервере масштаба рабочей группы. Масштаб предприятия, не меньше. Каждое второе слово в разделе администрирования в документации посвящено группам серверов, а каждое первое – системам на базе мэйнфреймов.

DB2 Universal Database Version 6 существует в версиях для HP-UX, OS/2, Solaris, Windows NT, AIX и Linux. Мы рассматриваем версию для Windows NT, поэтому все нижесказанное относится именно к этой платформе, если, конечно, не указано обратное.

Минимальные и оптимальные характеристики аппаратного обеспечения

Потребность в дисковом пространстве для DB2 – вещь непостоянная. В нашем случае для установки клиентской части потребовалось немногим более 200 МВ на жестком диске, а для серверной – всего 160, несмотря на то, что определенные клиентские компоненты входят в состав серверной части инсталляции. Кажущийся парадокс объясняется просто – в состав клиентской части входит еще и SDK, который, естественно, не ставится с сервером.

Потребность же в оперативной памяти для сервера зависит от количества одновременно подключающихся к серверу клиентов. В общем случае отдельно стоящий сервер должен иметь около 256 MB памяти , при минимуме в 128 – исходя из того, что только средства администрирования нуждаются в 30 МВ, а даже минимальная загрузка сервера (5 клиентов) потребует еще 32 (остальную память сожрет прожорливая NT). Впрочем, по нынешним временам это немного.

Простота инсталляции

Установка DB2 проходит прекрасно – быстро и без проблем. Вполне стандартная программа установки позволяет осуществить практически все необходимые действия. Особо следует отметить потрясающе красивый интерфейс инсталлятора.

При инсталляции и сразу после нее DB2 очень похожа на MS SQLServer 7. Это, разумеется, касается чисто внешнего вида – просим поклонников любого из продуктов не обижаться. Примерно одинаковый набор утилит, даже внешне похожих друг на друга, заставляет подсознание предполагать, что и работа с обоими средствами будет сходна.

Когда же инсталляция заканчивается и дело доходит до первых шагов в роли администратора БД, появляются некоторые затруднения. Причем они легко могут довести неподготовленного человека до белого каления. Например, при попытке создать пробную БД (то есть sample database) из устанавливаемой в процессе инсталляции утилиты First Steps вам сообщат, что на это у вас нет прав. Как получить таковые, неизвестно, поэтому вы сразу начнете осваивать систему документации – DB2 Information Center. К сожалению, нам это слабо помогло, но в процессе поисков мы, даже сами того не желая, получили немало полезных сведений о DB2. Впрочем, кроме создания пробной БД и запуска Control Center, эта программа ничего не делает, так что это – не более, чем мелочь.

Если же у вас хватит догадливости открыть Control Center с помощью иконки из меню, то создание баз данных и таблиц окажется очень несложным. Самые большая проблема – проблема психологической совместимости. Все, вроде бы, ясно, но не покидает ощущение, что творцы DB2 имели в виду что-то совсем другое.

Рис.2. SmartGuides (аналог Мастеров Windows) отличаются великолепным оформлением

Средства администрирования

Средства администрирования DB2 – часть Administration Client, входящего в состав любого из продуктов линии DB2 Universal Database. Сердцевину набора средств представляет Control Center.

На Control Center стоит остановиться подробнее. Это основное средство управления системой, DB2 instances, базами данных, объектами БД, правами пользователей и их групп и так далее. Отсюда можно управлять и удаленными системами, например, DB2 for OS/390. В принципе, он существует для всех платформ, поддерживаемых DB2, что позволяет работать практически на любой рабочей станции, с удаленным или локальным сервером, использующим любую платформу. Средство позволяет производить в графическом интерфейсе практически все действия, доступные при работе с командной строкой. Эти функции включают ввод команд DB2, SQL-выражений, или системных команд.

Дерево объектов в Control Center показывает все системы, входящие в instance, к которому вы сейчас подключены. Что имеется в виду под instance, спросите вы? Это очередной термин, понятный только IBM. Раньше, в предыдущей версии, это, кажется, называлось location. Перевести адекватно этот термин на русский невозможно, но в виду имеется практически сервер или группа серверов со всеми базами данных, сетевыми связями и так далее. Если выделить другой instance, Control Center покажет системы, входящие в эту группу. Из Control Center можно также управлять репликацией данных между DB2 Universal Database, DB2 для AS/400, DB2 для VSE и VM и DB2 для OS/390.

В состав Control Center входят:

Рис. 3. Event Monitor

Для некоторых задач, выполняемых с помощью графических средств, созданы так называемые SmartGuide'ы. Это другое название для Мастеров, но, к сожалению, иногда они работают странно. SmartGuides вызываются из выпадающих меню Control Center и в ряде случаев весьма полезны, особенно для новичков в администрировании DB2.

С помощью Control Center можно:

Кроме графических средств, вызываемых из Control Center, есть и дополнительные средства, не связанные с ним.

Две вещи мы так и не смогли понять. Например, для чего в Control Center введен список пользовательских процедур, если с ними ничего нельзя сделать? Их даже нельзя просмотреть! Для любых действий с ними нужно запустить Procedure Builder,. Второе – местные SmartGuide-ы прекрасно работают, пока нажимаешь только кнопку Next, принимая настройки по умолчанию. Если же изменять настройки, то начинаются крики о том, что все делается неправильно. При этом никто не говорит, как правильно! Многие поля по умолчанию пусты. Если их не заполнять, все проходит нормально, но как узнать, что заполнять их не нужно?

Satellite Administration Center

Satellite Administration Center – набор средств, доступных из DB2 Control Center. Они позволяют управлять набором серверов DB2 из одной точки. Каждый сервер DB2, принадлежащий к группе, называется сателлитом. Почему – непонятно. Впрочем, на терминологию DB2 мы уже сетовали. Администрирование сателлитов из одной точки означает, что DB2 может быть скрыта от всех пользователей данного сервера.

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

Практически все средства администрирования DB2 работают как локально, так и удаленно.

Рис.4. Утилита с громким названием Command Center

Прямая работа с SQL из консоли

Утилита, предназначенная для интерактивной работы с SQL, носит гордое название Command Center. Это снабженная графическим интерфейсом консоль, близкая по свойствам (и столь же неудобная) как у Interbase или Oracle.

Сама по себе консоль хотя и примитивна, но вполне работоспособна. Загадочный момент кроется в подключении к БД. Никаких средств для этого не предусмотрено, а синтаксис строки подключения глубоко спрятан в недрах документации. Очевидно, предварительно обученному специалисту будет несложно работать с этим средством. Но неплохо было бы все-таки создать диалог подключения к БД. Еще одним неудобством является то, что команды можно выполнять только по одной, а для повтора следует выбирать их из выпадающего списка. Но это все же лучше, чем в Interbase, где их приходится перебирать вслепую, стрелками ”вперед-назад”.

Драйверы

DB2 поддерживает стандарт ODBC 3.0. Настроить ODBC довольно просто – если не вдаваться в подробности. Если же нажать на кнопочку “Advanced”, выпадет окно с огромным количеством закладок, полей и кнопочек. Впрочем, с установками по умолчанию все работает, достаточно ввести название БД, пароль и имя пользователя.

Прямой работы с ADO не предусмотрено, но работа через ODBC выглядит неплохо. Возможно, большего и не нужно.

Естественно, предлагая Java в качестве основного средства общения с DB2, IBM не могла не предоставить пользователям полномасштабной поддержки Java (и драйверов JDBC, в частности). Поддерживается и SQLJ.

Имеется собственный интерфейс CLI (Call Level Interface). Его использование оправдано только в случае написания собственных драйверов. В остальных случаях лучше воспользоваться ODBC или JDBC. Причиной кроется в том, что попросту не имеется расширений (как у Oracle или Informix), для которых требовался бы спец. интерфейс.

Внешние функции и процедуры

IBM уже давно позволяла подключать внешние функции и процедуры, написаные на языках третьего поколения, например, на С, но делать это могли только знатоки – задача была, мягко говоря, нетривиальной. В этой версии ИБМ выбрала Java в качестве основной платформы для расширения функциональности сервера. В эту версию включены несколько утилит и набор API, упрощающих задачу. Это фактически стирает грань между встроенными и внешними функциями и процедурами. Вершиной айсберга является DB2 Stored Procedure Builder.

Введение новых типов данных

DB2 позволяет использовать семантику, связанную с вашей деятельностью, то есть использовать пользовательские типы данных. Такие типы полезны для разработки как объектно-ориентированных, так и традиционных прикладных программ. Пользовательские типы данных в DB2 именуются distinct type. Под этим названием понимается определяемый пользователем тип данных, разделяющий свое внутреннее представление с существующим типом (то есть, его прототипом), но рассматривающийся как отдельный и неприменимый в большинстве операций. Например, вы можете захотеть назначить типы данных для возраста, веса, роста. Все они различаются семантически, но используют один и тот же встроенный тип данных INTEGER.

Например, можно создать пользовательский тип данных с названием PAY:

CREATE DISTINCT TYPE PAY AS DECIMAL(9,2) WITH COMPARISONS

Хотя тип PAY имеет то же представление данных, что и встроенный DECIMAL(9,2), он рассматривается как отдельный тип, несовместимый с DECIMAL(9,2) или любым другим типом. Он может сравниваться только с таким же отдельным типом. Операторы и функции, которые работают с DECIMAL, здесь неприменимы. Например, нельзя перемножить значения данных типа PAY и типа INTEGER. Следовательно, вам придется создать и функции, применимые к типу данных PAY.

Использование пользовательских типов уменьшает возможность случайных ошибок. Например, если колонка SALARY в таблице EMPLOYEE была определена как тип данных PAY, ее нельзя добавить к COMM, даже если исходный тип данных обеих был одним и тем же.

Пользовательские типы данных в реализации IBM поддерживают приведение типов. Исходный тип данных может быть приведен к пользовательскому, и наоборот. Например, если колонка SALARY в таблице MPLOYEE была определена как тип данных PAY, следующий пример не даст ошибки на операторе сравнения.

SELECT * FROM EMPLOYEE 
WHERE DECIMAL(SALARY) = 41250

DECIMAL(SALARY) возвращает тип данных decimal. Наоборот, тип данных numeric может быть приведен к типу PAY. Например, вы можете привести число 41250 используя PAY(41250).

Практически все современные SQL-серверы разрешают использовать пользовательские типы, но в DB2 эта функциональность несколько лучше и глубже проработано, чем у многих конкурентов.

Создание хранимых процедур и тригеров на стандартных языках

Хранимые процедуры могут быть созданы на любом из языков, поддерживаемых DB2 на вашей операционной системе.
Для упрощения создания хранимых процедур на Java можно использовать DB2 Stored Procedure Builder (SPB). SPB можно использовать в сочетании с популярными средствами разработки, например, Microsoft Visual Studio или IBM Visual Age for Java, а также использовать как самостоятельную утилиту. Это прекрасное средство. Если бы оно работало, его полезность была бы просто неоценима. Жаль, что оно не работает.

DB2 предоставляет возможность интерактивно создавать и изменять хранимые процедуры на Java. Это справедливо, если они исполняются на серверах AIX или Windows NT. Для поддержки отладки требуется JDK 1.1.6 или выше. Здесь можно усмотреть противоречие. Как же воспользоваться средством, которое – как было сказано двумя абзацами выше – не работает? Ну, оно не то чтобы совсем не работает. Оно прекрасно запускается, в него можно загрузить или написать в нем новую процедуру. Но только один раз. Второй раз это можно сделать, если передварительно перезапустить сервер(!). Вполне возможно, что к моменту, когда вы будете читать эти строки, появится патч, решающий эту проблему, но во время наших тестов у нас его еще не было.

Для отладки хранимых процедур необходимо иметь установленный IBM Visual Age for Java. Мы не будем здесь касаться удобства и функциональности совместного их использования. В следующем номере, продолжая разговор о DB2, мы (может быть) вернемся к этому вопросу.

Связь с серверами приложений и другими продуктами

DB2 вполне может работать с различными серверами приложений. Поскольку IBM является одним из пионеров в создании middleware, DB2, разумеется, может работать с менеджерами очередей и мониторами транзакций от IBM (подробнее об MQSeries см. №2 нашего журнала за 1999 год). Кроме этого, последняя версия поддерживает множество серверов сторонних производителей. Полное их перечисление займет неоправданно много места, достаточно упомянуть Tuxedo и MTS. В документации DB2 достаточно подробно освещаются вопросы взаимодействия с middleware, но MTS отведено больше всего места.

DB2 поддерживает самые разнообразные кодировки и локали, а для ряда языков (включая русский) обеспечивает перевод сообщений сервера. DB2 поддерживает 2-хбайтную кодировку Unicode (без расширений).

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


Copyright © 1994-2016 ООО "К-Пресс"