Д. А. АБРАМОВ, В. В. КЛИМОВ,

Научный руководитель – А. А. КОВАЛЬ, ст. преподаватель

Московский инженерно-физический институт (государственный университет)

ПЕРЕНОС СХЕМЫ БАЗЫ ДАННЫХ И ДАННЫХ ИЗ СУБД ORACLE В СУБД IBM DB2

В докладе рассматривается переход с СУБД Oracle на СУБД IBM DB2 в рамках разработки модуля администрирования для SmartVista Front End.

Процессинговая система SmartVista предназначена для проведения денежных транзакций, связи с платежными системами и автоматизированной банковской системой. SmartVista включает в себя два основных модуля: SmartVista Back-Office и SmartVista Front End, которые реализованы на СУБД Oracle и имеют пользовательский интерфейс, реализованный с помощью технологии Oracle Forms. Разрабатывался модуль администрирования SVFE в многоуровневой архитектуре клиент – сервер с выделенным сервером приложений. Решалась задача переноса схемы базы данных и данных из СУБД Oracle в СУБД IBM DB2. В рамках переноса базы данных, были исследованы и обнаружены следующие особенности двух этих СУБД, и был произведен сравнительный анализ.

С точки зрения типов данных и языка определения данных можно выделить следующие различия:

DB2 поддерживает стандартный набор типов данных, используемый также в большинстве промышленных СУБД. Oracle обеспечивает единое представление всех числовых типов собственным типом NUMBER(p, s)
(p – точность, s – масштаб), но при этом «понимает» объявления со стандартными числовыми типами и автоматически переводит их в представление NUMBER. Т. е. объявление NUMBER(p) или NUMBER(p, 0) будет соответствовать числу с фиксированной точкой, а объявление NUMBER(p, s), где s > 0 - числу с плавающей точкой. Также, от типа объявления зависит и количество памяти, выделяемое СУБД Oracle для хранения значений соответствующего типа. Поэтому в качестве хранения типа данных Oracle NUMBER(p, 0) в DB2 было решено использовать INTEGER, который обеспечивает более экономное хранение и легкость использования значения этого типа (операции быстрее выполняются).

НЕ нашли? Не то? Что вы ищете?

DB2 поддерживает стандартные типы даты/времени: DATE, TIME, TIMESTAMP. В Oracle есть единственный тип - DATE, позволяющие хранить год, месяц, число, час, минуты, секунды. В зависимости от определения типа Oracle DATE в DB2 было решено использовать DATE, TIME или TIMESTAMP.

С точки зрения языка манипулирования данными можно выделить следующие различия между двумя СУБД:

Возможность использования скалярных подзапросов в качестве элементов столбцов в запросе SELECT в DB2.

Условное выражение – CASE, является более удобной альтернативой функции DECODE в Oracle. Поскольку триггеры DB2 могут содержать только операторы SQL, то выражение CASE может быть использовано для перевода логики триггеров Oracle.

Отсутствие ограничений на использование подзапросов в предикатах сравнения (в частности, могут сравниваться и результаты двух подзапросов, что невозможно в Oracle).

PL/SQL в Oracle - принципиально новый язык, процедурный язык в DB2 - расширение стандартного языка SQL. Это позволяет формулировать запросы зачастую более компактные и более понятные, чем в Oracle.

В части создания представлений возможности обеих СУБД практически одинаковы, соответствуют стандартным возможностям оператора CREATE VIEW. Обе СУБД расширяют стандартные ограничения на изменяемость представлений, разрешая изменять представления, в определении которых содержатся вложенные запросы.

Также стоит отметить различную реакцию на NULL значения. Так, например, функция конкатенации строк CONCAT в Oracle интерпретирует NULL-значения как пустые строки, а аналогичная функция в DB2 вернет NULL, если хотя бы один из ее аргументов – NULL. Учесть это различие можно с помощью функции DB2 Coalesce, которая в зависимости от переданного значения возвращает либо это значения, либо значение по умолчанию, если переданное значение есть NULL. Остальные функции одинаково реагируют на NULL значение в качестве аргумента, соответствуя стандартам трехзначной логике, принятой в SQL.

Учитывая все установленные различия между СУБД, был осуществлен перенос схемы базы данных и данных SmartVista Front End в DB2.

Список литературы

1.  IBM DB2 UDB, Руководство по переходу из Oracle в DB2 версии 7.2. IBM, 2002.

2.  Graeme Birchall DB2 UDB V7.2 SQL Cookbook, 2002