DB2

Материал из Seo Wiki - Поисковая Оптимизация и Программирование

Перейти к: навигация, поиск
DB2
Тип Система управления базами данных
Разработчик IBM
Написана на C, C++
ОС Кроссплатформенное ПО
Язык интерфейса English
Лицензия Проприетарная EULA

DB2 (в русском языке произносится «диби́ два», также распространена калька с английского «диби́ ту») — семейство программных продуктов в области управления информацией компании IBM.

Чаще всего, ссылаясь на DB2, имеют в виду реляционную систему управления базами данных DB2 Universal Database (DB2 UDB), разрабатываемую и выпускаемую компанией IBM.

Иногда встречается написание «DB/2», но такое написание неверно: в системе обозначений IBM число в знаменателе дроби означает платформу и «/2» означает продукт для операционной системы OS/2 (или серии компьютеров PS/2). Например, версия DB2 для OS/2 обозначалась «DB2/2».

Содержание

Реализации

В настоящее время СУБД DB2 представлена версиями на следующих платформах:

  • DB2 for Linux, UNIX and Windows v9 для платформ AIX, HP-UX, Linux, Solaris, Windows и бета-версия для платформы Mac OS X
  • DB2 for z/OS v9 для платформ z/OS и OS/390
  • DB2 Server for VSE & VM v7 для платформ z/VM и z/VSE
  • DB2 for i для платформы IBM i (встроена в систему на аппаратно-программном уровне)

В прошлом выпускались версии сервера СУБД DB2 для OS/2, UnixWare, PTX.

Клиенты СУБД DB2, помимо перечисленных платформ, выпускаются или выпускались в различных версиях также для SINIX, IRIX, классической Mac OS и для MS-DOS, а также в мобильной версии DB2 Everyplace для Windows CE, Palm OS, Symbian OS, Neutrino и виртуальной машины Java.

В настоящее время, помимо коммерческих продуктов семейства, IBM распространяет также бесплатный дистрибутив DB2 Express-C для платформ Linux (x86, x86-64, POWER), Windows (x86, x86-64), Solaris (x86-64), Mac OS X (x86-64 beta).[1] Бесплатная версия имеет ограничения на использование для работы СУБД не более одного двухъядерного процессора и 2 Гбайт оперативной памяти (общее количество процессоров и пямяти в системе может быть любым, но ресурсы сверх указанных ограничений не будут использоваться СУБД).

История

DB2 имеет долгую историю и, как некоторые считают, стала первой СУБД, использующей SQL.

С 1975 по 1982 год прототип DB2 разрабатывался в IBM под названием System Relational, или System R. Язык SQL впервые был реализован именно в IBM System R, но эта система имела исследовательский характер, а коммерческий продукт, включающий SQL, первой выпустила компания Oracle в 1979 году.

СУБД DB2 получила своё название в 1982 году, когда был выпущен первый коммерческий релиз для VM под названием SQL/DS, и затем релиз для MVS под названием DB2. Долгое время наряду с «DB2» употреблялся вариант «Database 2», также являющийся торговой маркой IBM. По всей видимости, имелось в виду, что это вторая флагманская СУБД IBM после старой иерархической СУБД IMS.

Развитие DB2 уходит корнями в начало 1970-х, когда доктор Э. Ф. Кодд, работавший на IBM, разработал теорию реляционных баз данных и в июне 1970 года опубликовал модель манипуляции данными. Для воплощения этой модели он разработал язык реляционных баз данных и назвал его Alpha. IBM предпочла передать дальнейшую разработку группе программистов, неподконтрольной доктору Кодду. Нарушив некоторые принципы реляционной модели, они реализовали её как «структурированный английский язык запросов», сокращённо SEQUEL. Поскольку SEQUEL было уже зарегистрированной торговой маркой, название сократили до SQL — «структурированный язык запросов», и таким оно осталось по сей день.

Таким образом, исторически СУБД DB2 возникла из продуктов DB2 для MVS (потомком которого является DB2 for z/OS) и родственного ему SQL/DS для VM (потомок — DB2 Server for VSE & VM). В дальнейшем другим коллективом разработчиков в IBM был реализован сервер OS/2 EE Database Manager, впоследствии эволюционировавший в DB2 v2 для OS/2, AIX и затем Windows, а потом в DB2 UDB (его потомок — DB2 for Linux, UNIX and Windows). Ещё одним коллективом была выполнена интеграция архитектуры DB2 со встроенной базой данных AS/400 (потомок — DB2 for i). IBM постепенно движется по пути интеграции всех этих веток.

Особенности

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

Благодаря приоритету IBM в развитии реляционной теории и позициям фирмы в компьютерной отрасли, диалект DB2 SQL оказывает значительное влияние на стандарты SQL ANSI/ISO.

Хранимые процедуры в DB2 не очень широко применяются, при этом традиционно для написания хранимых процедур используются обычные языки программирования высокого уровня (Си, Java, PL/I, Кобол и т.д.), это позволяет программисту легко оформлять один и тот же код либо как часть приложения, либо как хранимую процедуру, в зависимости от того, на клиенте или на сервере его целесообразнее выполнять. В настоящее время в DB2 также реализовано процедурное расширение SQL для хранимых процедур в соответствии со стандартом ANSI SQL/PSM.

Оптимизатор DB2 широко использует статистику распределения данных в таблицах (если процесс её сбора был выполнен администратором базы данных), поэтому один и тот же запрос на языке SQL может быть оттранслирован в совершенно различные планы выполнения в зависимости от статистических характеристик данных, которые он обрабатывает.

Поскольку исторически DB2 развивалась с многопользовательских систем на мейнфреймах, то большое внимание в архитектуре DB2 уделяется вопросам безопасности и распределения ролей обслуживающих DB2 специалистов. В частности, в отличие от многих других СУБД, в DB2 имеются отдельные роли для администратора СУБД (ответственного за конфигурирование программных компонентов DB2 и их оптимальное выполнение в компьютерной системе) и администратора базы данных (ответственного за управление данными в конкретной базе).

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

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

DB2 является единственной реляционной СУБД общего назначения, имеющей реализации на аппаратно-программном уровне (система IBM i; также в оборудовании мэйнфреймов IBM System z реализуются средства поддержки DB2).

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

Обработка ошибок

Полезной особенностью SQL-сервера DB2 является возможность обработки ошибок. Для этой цели используется структура SQLCA (англ. SQL Communications Area — область связи SQL), возвращающая информацию об ошибке прикладной программе после каждого выполнения SQL-выражения.

Поля структуры SQLCODE и их значения

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

  • 0 означает успешное выполнение.
  • Положительное число означает успешное выполнение с одним или более предупреждениями. Например, +100 означает, что не найдены столбцы.
  • Отрицательное число означает неудачу с ошибкой. Например, −911 означает обнаруженный истёкший интервал ожидания блокировки (или мёртвую блокировку), запускающий последовательный откат.

SQLERRM (тип данных — строка из 71 символа). Содержит текстовую строку с описанием ошибки в случае, если поле SQLCODE меньше нуля.

SQLERRD (тип данных — массив, 6 целых чисел). Описывает результат выполнения последнего оператора SQL:

  • 1 элемент — внутренняя информация;
  • 2 элемент — содержит сгенерированное сервером значение поля типа SERIAL для оператора INSERT, либо дополнительный код ошибки;
  • 3 элемент — равен количеству обработанных записей;
  • 4 элемент — примерная стоимость выполнения данного оператора;
  • 5 элемент — смещение ошибки в текстовой записи оператора SQL;
  • 6 элемент — внутренняя информация.

Примечания

Ссылки

Литература

  • Дейт К. Руководство по реляционной СУБД DB2. — М.: Финансы и статистика, 1988. — 320 с. — ISBN 5-279-00063-9
  • Зикопулос П. К., Бакларц Дж., деРус Д., Мельник Р. Б. DB2 версии 8: официальное руководство = DB2 Version 8: The Official Guide. — М.: КУДИЦ-ОБРАЗ, 2004. — 400 с. — ISBN 5-9579-0031-1
  • Смирнов С. Н. Работаем с IBM DB2: Учебное пособие. — М.: Гелиос, 2001. — 304 с. — ISBN 5-85438-007-2 (рекомендовано УМО вузов в области информационной безопасности в качестве учебного пособия по специальностям «Комплексное обеспечение информационной безопасности автоматизированных систем» и «Компьютерная безопасность»)
  • Сьюзен Виссер, Билл Вонг. Освой самостоятельно DB2 Universal Database за 21 день = Sams Teach Yourself DB2 Universal Database in 21 Days. — 2-е изд. — М.: Вильямс, 2004. — 528 с. — ISBN 0-672-32582-9
  • Hook J., Harbus R., Snow D. The Universal Guide to DB2 for Windows NT®. — New Jersey: Prentice Hall PTR, 1999. — P. 504. — ISBN 0-13-099723-4


ca:IBM DB2

de:DB2 en:IBM DB2 es:DB2 fa:دی‌بی‌تو fr:IBM DB2 hu:DB2 it:DB2 ja:DB2 ko:DB2 nl:IBM DB2 no:IBM DB2 pl:DB2 pt:DB2 sk:DB2 sv:DB2 th:ไอบีเอ็ม ดีบีทู tr:IBM DB2 uk:DB2 vi:DB2 zh:IBM DB2

Источник — «http://www.sbup.com/wiki/DB2»
Личные инструменты

Served in 0.296 secs.