Попала ко мне в руки книжечка: "DB2 Universal Database. Освой самостоятельно". А с ней — диск. А на диске — персональная версия DB2. Ну что же, будем смотреть-инсталлировать…


При словах "база данных" у каждого из нас возникают разные ассоциации. Некоторые тут же вспоминают о MS Access. Бывает… Хотя, с другой стороны, для создания "быстрых отчетов" и встраивания выборок в документы MS Word там есть неплохие возможности — и многие несложные приложения вполне ими "затыкаются".


Более профессиональные возможности заложены в такие СУБД, как MySQL или Interbase. Что роднит эти серверы, так это аскетическая реализация SQL и минимум "родных" средств администрирования и доступа к данным. Такие средства, однако, можно найти у третьих производителей, или, как в случае с Interbase,— у того же производителя, но за отдельные деньги.


Следующая градация представлена такими "грандами", как MS SQL Server и Oracle. У первого явно выигрышная позиция при работе с серверами MS Windows Server (в частности с сервером IIS и сервером приложений DOT NET), встроенная безопасность и так далее. Об Oracle я вообще не буду говорить всуе: это просто легенда с бородой — тут и добавить нечего.


Так вот, речь пойдет вовсе не о перечисленных приложениях, а о DB2 — СУБД от IBM. Говоря о "калибре" это БД, можно сказать, что наиболее близка она к Oracle. В смысле, работает DB2 (в промышленном режиме, а не шуток ради), в основном, на больших серверах, мэйнфреймах серий iSeries или VSE&VM. Это большие системы уровня предприятия, нацеленные на самые требовательные приложения, критичные как к скорости обработки транзакций, так и к надежности хранения.


Существуют, однако, более "легкие" версии сервера DB2, называемые Workgroup и Personal Edition. Они не обеспечивают доступа к "взрослым" источникам данных, но в остальном это полноценные экземпляры DB2 и их работа ничем не отличается от работы старших братьев. Работают эти версии под Windows NT, Linus, Solaris, HP-UX и, конечно же, под AIX, родной для IBM платформе. Отчасти такая гибкость объясняется переносимым Java-кодом, на котором написан весь DB2-инструментарий. В частности, штатным методом доступа является JDBC, под который и "заточен" весь движок и под который выполнена вся оптимизация. Конечно, это не единственный метод, но мы еще вернемся к этой теме.


DB2 для администратора


Итак, с чего же начать после установки? С инструментария DBA, который по умолчанию зовется db2admin. У админа есть удобная панель управления, точнее "центр управления", ЦУП. Панель управления, как и все остальное, выполнена на Java и, возможно, является самой удобной среди прочих — ну, возможно, только MS SQL предлагает что-то более продвинутое.


В качестве "полной и достоверной" документации просто перечислю объекты базы данных (ну, как обычно, сначала вы подключаетесь к экземпляру и т.д…). Итак: таблицы, производные таблицы (ака запросы, ака представления, ака views), алиасы, триггеры, схемы, индексы, текстовые индексы, табличные пространства, мониторы событий, пулы буферов, объекты программ, объекты пользователей и групп, объекты базы данных соединения.


Как видите, в наличии как привычные, вроде таблиц, объекты, так и высокоуровневые (пользователи, табличные пространства) и низкоуровневые (буферы) атрибуты, связанные с конкретной БД. Это несколько отличает DB2 от других-разных: вы не ковыряетесь в системных таблицах и метаданных (хотя вам никто не запрещает делать это), а работаете с метаданными, что называется "by name".


Обратите внимание на текстовые индексы — это нечто, что присутствует сегодня во всех БД, только под разными именами. Понятно, что основной "консомер" данных поисков— это web. Но это уже романтика, мы же посмотрим пока на физическую организацию базы данных.


Физическая организация


Для управления физическим размещением данных применяются табличные пространства. Это способ заключить несколько объектов в один контейнер (точнее — пул), который хранится в определенном месте файловой системы. По умолчанию создается несколько пространств — системное, пользовательское и для временных данных. Сами контейнеры не доступны как самостоятельные объекты — вы их создаете неявно, при создании пространства. Одно пространство может "владеть" многими контейнерами, но не наоборот. Данные в контейнерах распределяются блоками и экстентами (экстент представляет собой неделимый набор блоков, также известный как кластер). БД заполняет контейнеры равномерно и циклически, "пожирая" под новые данные по одному экстенту за раз.


Вообще, как во всех серьезных БД, хранилища могут быть как SMS, так и DMS.


SMS (System Managed Space) — просто набор файлов в соответствующих каталогах, это более простой и дешевый, но и более медленный способ хранения. Другой вариант — DMS (Database Managed) — позволяет зарезервировать для хранилища один большой файл или даже физический диск. При этом база данных поддерживает "там-внутри" свою объектно-файловую систему, что часто и быстрее и, вместе с тем, эффективнее по пространству.

 


Кэш в памяти управляется буферным пулом — вы просто выделяете один или несколько буферов, состоящих из N блоков заданного размера, не сложно.


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


Восстановление данных


Другая интересная, хоть и не оригинальная, фишка — это схемы. Схема — это набор таблиц, индексов, триггеров и прочих объектов, логически объединенных под одной "крышей". У каждого пользователя есть своя "родная" схема, с именем самого пользователя. Если пользователь не задает схему создаваемого объекта, объект попадет в схему по умолчанию. Синтаксически схема выглядит как квалификатор с точкой перед именем объекта. Например, AC.ARTICLES может обозначать таблицу в моей схеме.


С пользователями и группами тут никаких особых чудес. Есть пользователи и есть группы — их создает DBA. Вообще-то, в смысле безопасности (по крайней мере, под Windows) применяется принцип "физический доступ равнозначен полному" — как следствие, все админы по данному компу получают полный SYSADM, то есть доступ ко всему. И правильно, нечего притворяться котиками: если человек может скопировать файлы базы данных, то их интерпретация — просто дело времени и/или денег, а точнее — их комбинации в правильной пропорции.


Заключая краткий обзор средств администрирования, хочется отметить грамотную русификацию центра управления, как, впрочем, и всего продукта — уникальное для серверных модулей свойство, никто больше не позаботился такими вещами. Можно сказать, мелочь — но крайне приятная, особенно в плане однозначной трактовки терминов (не всегда, однако, на 100% попадающих в мой БД-лексикон).


DB2 для программиста


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


На своем месте также и триггеры: они шустрят за (и перед) событиями с записями и у ловкого программиста могут творить такие каскадные чудеса, которые вовек никто ни понять, ни задокументировать не сможет. Типичные применения триггеров — аудит (кто, куда и какого получал доступ), контроль целостности транзакций и выполнение каскадных обновлений.


DB2: разное


К разному я хочу отнести… разное. Ну, во-первых, как сейчас принято в приложениях БД, особые реверансы сделаны в две области: текстовый поиск и работа с мультимедиа. Текстовый поиск, как водится, реализован адаптивно-рейтинговым, то есть можно не просто ответить, содержится ли данная подстрока в тексте, а сказать, что данная статья "удовлетворяет поиску на 80%". Что это значит, можно только догадываться — в тестовой версии текстовый поиск не работает.


Работа с мультимедиа известна также как обработка LOB-объектов, то есть "больших и очень больших" полей базы данных. В DB2 (хотя и не только здесь) все это производится по специальным правилам: клиентское приложение не получает реального значения поля во время запроса, а вместо этого — локатор, то есть данные не выбираются до момента реально использования. Это позволяет сократить трафик от сервера к клиенту. Кроме того, многие операции можно производить на самом сервере: например, поиск в текстовом поле, представленном локатором, будет выполнен на сервере.


Поддерживаются также файловые локаторы, то есть поле БД ссылается на файл — это эффективно в смысле "ленивого" кэширования таких объектов: файл, в отличие от LOB-поля, не будет кэшироваться до момента использования. Так работает большинство мультимедийных СУБД.


Итого: DB2 или не DB2?
Решать все равно не нам…


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


С другой стороны, знать, быть готовым и "прохавать" фишку вам никто не мешает. Лучше всего — вместе с книжкой "Освой самостоятельно", поскольку там уже содержится диск с инсталляцией (причем с фирменной, без пиратских подгребок). А уж по мере того, как вы будете изучать такие крутые вещи, как IBM DB2,— по мере этого вы станете ценным перцем и сможете найти работу поближе к DB2, а заодно к мэйнфреймам, серьезным проблемам, реальным зарплатам и прочим калифорниям.

2004.09.22
19.03.2009
В IV квартале 2008 г. украинский рынок серверов по сравнению с аналогичным периодом прошлого года сократился в денежном выражении на 34% – до $30 млн (в ценах для конечных пользователей), а за весь календарный год – более чем на 5%, до 132 млн долл.


12.03.2009
4 марта в Киеве компания Telco провела конференцию "Инновационные телекоммуникации", посвященную новым эффективным телекоммуникационным технологиям для решения задач современного бизнеса.


05.03.2009
25 февраля в Киеве компания IBM, при информационной поддержке "1С" и Canonical, провела конференцию "Как сохранить деньги в условиях кризиса?"


26.02.2009
18-19 февраля в Киеве прошел юбилейный съезд ИТ-директоров Украины. Участниками данного мероприятия стали ИТ-директора, ИТ-менеджеры, поставщики ИТ-решений из Киева, Николаева, Днепропетровска, Чернигова и других городов Украины...


19.02.2009
10 февраля в Киеве состоялась пресс-конференция, посвященная итогам деятельности компании "DiaWest – Комп’ютерний світ" в 2008 году.


12.02.2009
С 5 февраля 2009 г. в Киеве начали работу учебные курсы по использованию услуг "электронного предприятия/ учреждения" на базе сети информационно-маркетинговых центров (ИМЦ).


04.02.2009
29 января 2009 года в редакции еженедельника "Computer World/Украина" состоялось награждение победителей акции "Оформи подписку – получи приз!".


29.01.2009
22 января в Киеве компания "МУК" и представительство компании Cisco в Украине провели семинар для партнеров "Обзор продуктов и решений Cisco Small Business"

 

 
 
Copyright © 1997-2008 ИД "Комиздат".