Имеется много оснований для того, чтобы создавать модель и
использовать средства моделирования и проектирования, а не
перепрыгивать через этот этап и сразу приступать к прямому
программированию базы данных и приложений. Моделирование помогает
навести мосты между бизнес-концепциями (концептуальными
моделями), проектами баз данных (логическими моделями) и
физическими реализациями баз данных (физическими моделями или
схемами).
Логическая модель, созданная с применением средства
проектирования, изолирована от специфических особенностей СУБД,
теоретически позволяя реализовать один и тот же проект на разных
СУБД. Схемы же привязаны к конкретным серверным продуктам
управления базами данных. В течение многих лет средства
моделирования обладают возможностями обратной инженерии
(порождения логических моделей на основе существующих баз данных)
и прямой инженерии (генерации схем баз данных на основе
логических моделей).
Компания Microsoft для достижения расширяемости данных выбрала подход, менее ориентированный на базы данных, чем подходы Informix, IBM или Oracle. Microsoft все еще работает над преодолением унаследованного от Sybase SQL Server отсутствия блокировок на уровне строк и поддержки параллелизма. Компания старается продемонстрировать возможность Windows NT быть платформой баз данных переднего края. В отношение расширяемости, подобно Sybase, Microsoft в большей степени опирается на компонентный подход.
Компания прежде всего основывается на компонентах промежуточного программного обеспечения, обеспечивая универсальный доступ к данным через OLE DB, и хотела бы, чтобы все ведущие производители РСУБД реализовали такой интерфейс к своим серверам. Никто из них публично не обещал сделать этого, а компания Microsoft, в свою очередь, заняла выжидательную позицию относительно SQL-3.
OLE DB - это промежуточное программное обеспечение, предоставляющее согласованный уровень абстракции по отношению к разнообразным типам и источникам данных. Обеспечивается единый интерфейс объектного уровня, позволяющий пользователям производить выборки из разнородных наборов данных, а поставщикам данных - делать их доступными. Кроме того, Microsoft преобразует SQL Server в СУБД, которая может обращаться к другим источникам данных, за счет отделения процессора запросов от компонента хранения данных. Теперь эти компоненты сами взаимодействуют через OLE DB. Если поставщики других хранилищ данных будут поддерживать OLE DB, Microsoft сможет интегрировать их в среду SQL Server для обработки запросов. SQL Server будет развит для обработки распределенных запросов, стоимостная информация будет пересылаться между источниками данных. Кроме того, каждый источник данных будет демонстрировать свою каталожную информацию через интерфейсы OLE DB.
Microsoft не говорит о том, какие объектные расширения появятся в следующем выпуске SQL Server, и появятся ли они вообще (бета-версия ожидается в этом году). Больше внимание уделяется увеличению производительности, масштабируемости, полезности и т.д. Видимо, движение к объектам будет постепенным.
Для создания многомерной модели требуется разработать комбинацию составных данных, все DDL (операторы определения данных), программы извлечения данных; все сценарии нагрузки должны работать в соответствии с моделью и поддерживать ее. Многомерное моделирование уменьшает рабочую нагрузку СУБД и перекладывает работу на плечи разработчика базы данных. Очевидно, что это не идеально; база данных может работать быстрее и точнее, чем люди, у которых уже имеется трудная задача реализации сложного склада данных. Появляются дополнительные расходы, связанные с выполнением работы вручную.
Дополнительной ценой многомерного моделирования является свойственная денормализации (через внешние соединения) избыточность данных. Кроме того, для обеспечения доступа к большой денормализованной таблице фактов часто приходится создавать много индексов, чтобы избежать сканирований, и несколько уровней сводных таблиц, чтобы избежать как сканирований, так и агрегаций. СУБД должна поддерживать это при обновлениях, что иногда занимает больше времени, чем бы этого хотелось, и всегда отнимает ресурсы, которые правильнее было бы потратить на выполнение запросов. По определению (и даже по своей номенклатуре) многомерные модели ограничены построенными измерениями. Для большинства запросов и бизнес-вопросов этих измерений достаточно. Но известные вопросы, заранее подготовленные, ожидаемые вопросы сами по себе обладают относительно низкой значимостью. Они могут возвращать полезную информацию, но вы можете достичь понимания и мудрости, преобразующих деятельность компании, только размышляя "за пределами звезды".
OLAP (On-Line Analitical Processing - оперативная аналитическая
обработка) и многомерный анализ представляют собой важные факторы
систем поддержки принятия решений. Поддерживаемые в Oracle
звезднообразные запросы с соединениями (star-query join)
обеспечивают многомерное представление данных путем получения
Декартова произведения таблиц измерений с последующим соединением
результата с таблицей фактов. В DB2 используется модифицированный
оптимизатор, использующий динамические побитные индексы и
предварительное чтение списков для выборки строк из многомерной
таблицы фактов. Использование побитных индексов позволяет
повысить эффективность доступа к многомерным данным. В DB2 v.5
побитные индексы могут создаваться динамически, в то время как в
Oracle8 они должны быть предопределены. (Важно заметить, что
реализация побитных индексов IBM и Oracle существенно
различается.) Кроме того, в DB2 поддерживаются новые функции SQL
ROLLUP и CUBE, облегчающие многомерный анализ. Пользователи могут
"закатить" данные на более высокий уровень агрегации и видеть
данные в структуре куба, а не в традиционных табличных
структурах. Эти возможности расширяют функциональность языка SQL
и облегчают жизнь пользователей. Компания Oracle интегрирует c
Oracle8 продукт IRI Express для развития возможностей
многомерного анализа. В ближайшем будущем IBM также будет
обеспечивать полную поддержку многомерных данных за счет
интеграции UDB с сервером Essbase OLAP компании Arbor Software.
Человеческие мозги думают в терминах измерений (обычно в двух, трех или четырех), поскольку таким образом мы привязываемся ко всему в мире - как пространственным объектам, существующим во времени. Это также способ нашего представления данных; многие вопросы бизнеса естественно сводятся к многомерным взглядам. Транзакция продажи происходит в определенном месте, в определенное время и вовлекает как товар, так и покупателя. В телефонный разговор вовлекаются тот, кто звонит, тот, кому звонят, время начала и время конца разговора, а также оборудование, поддерживающее разговор.
Измерения (география, время, предмет и человек) представляют затрагиваемые сущности (где, когда, что и кто). Коротко говоря, представления - это то, как мы представляем реальность в мыслях, словах и поступках. Поскольку я использовал термины "измерение" и "сущность" в одном предложении, можно видеть, что они не исключают друг друга. Можно использовать их как взаимно дополняющие для облегчения понимания жизни.
В большинстве продуктов OLAP и многих других пользовательских средствах для генерации SQL требуется использование схем "звезда" или "снежинка". Физическая реализация многомерной модели может существенно облегчить управление данными в сервере баз данных. Для некоторых баз данных обработка сложных соединений может создать огромную проблему. Наличие большой денормализованной таблицы фактов помогает СУБД избежать накладных операций, таких как соединения, сканирования, агрегирования и сортировки, путем создания составных данных и помещения их в том порядке, который наиболее вероятно запрашивается. Сама таблица фактов содержит иерархию.
В традиционных методологиях моделирования реляционных баз данных
обычно пренебрегают поддержки концептуального уровня.
Моделирование "объект-роль" (ORM - Object-Role Modeling) - это
привлекательная методология, направленная на отрицание этого
правила. Понятия ORM известны в течение ряда лет, хотя
методология стала привлекать широкое внимание относительно
недавно в связи с работой Терри Хаплина (Terry Haplin) по
реализации средства проектирования InfoModeler. Формальный язык
моделирования "объект-роль" (FORML - Formal Object-Role Modeling
Language) основан на концепциях ORM и поддерживает
систематический и строгий подход к моделированию
бизнес-концепций. Концептуальный моделер FORML позволяет
вербализовать данные, представить их в символической или
диаграммной форме, ограничить концептуальную модель фактами,
иллюстрирующими утверждения и проверить правильность модели.
С самого начала язык Java позиционировался как язык программирования для использования в среде Web. На Java разрабатывалось много простых приложений (игры, часы, тикеры и т.д.) информативных, новаторских Web-узлов. Но следует заметить, что языковые компоненты и конструкции, первоначально внедренные в язык для расширения его функциональных возможностей как Web-ориентированного языка, могут применяться и в других областях. Язык Java обеспечивает разработчиков средствами, пригодными для создания новых сетевых приложений, приложений баз данных и графических пользовательских интерфейсов (GUI Graphical User Interface). Java и связанные с этим языком технологии, такие как API JDBC, драйверы JDBC, многопоточность и AWT обеспечивают поддержку разработки независимых от платформы и используемой базы данных приложений. Вот компоненты, которые играют важную роль при построении интерфейсов с базами данных:
JDBC. Модуль Java Database Connectivity предоставляет
стандартизованное решение проблемы доступа к базам данных (JDBC
входит в пакет поставки Java начиная с версии 1.1).
Java Threads. Java - это многопотоковый язык программирования.
Поддерживается возможность создания и выполнения нескольких
нитей (легковесных квази-процессов) при выполнении в то же время
нескольких разных задач.
AWT. Набор инструментальных средств Abstract Window Toolkit
позволяет строить независимые от платформы графические
пользовательские интерфейсы.
Комбинация перечисленных компонентов составляет базовые
строительные блоки, используемые для разработки интерфейсов к
распределенным базам данных. Пакет Java Distributed Query
Dispatcher (JavaDQD) является независимым от платформы
GUI-приложением, позволяющим направлять запросы одновременно к
нескольким разнородным базам данных. В основе JavaDQD лежат
следующие идеи:
JavaDQD устанавливает подключение к базе данных с
использованием API и драйверов JDBC. Использование API дает
возможность обеспечить единообразный доступ к любой базе данных,
Еще одна причина, которая заставляет автора считать инкапсуляцию не настолько важным понятием, как это полагается в литературе, состоит в следующем. Некоторые типы являются совсем не инкапсулированными, и это никому не мешает! В частности, это относится к "генерируемым" типам, которые определяются с использованием генераторов типов, такие как ARRAY, LIST, TUPLE и RELATION. Рассмотрим для определенности RELATION. Предположим, что теперь мы имеем дело с relvar (relation variable) POINT:
VAR POINT ... RELATION { X ..., Y ... } ... ; /* для простоты типы атрибутов X и Y опущены */
Замечание: Определение сформулировано на языке Tutorial D, который определен в Third Manifesto для иллюстративных целей. Многоточия в определении поставлено вместо конструкций, не являющихся существенными для этого обсуждения.
В этом определении для указании (генерируемого) типа relvar используется генератор типов RELATION; это конкретный тип отношения, а именно:
RELATION { X ..., Y ... } /* снова для простоты типы атрибутов X и Y опущены */
И этот тип определенно не является инкапсулированным: у него имеются видимые пользователям компоненты - атрибуты X и Y. И именно наличие этих видимых пользователям компонентов позволяет выполнять над relvar POINT непредвиденные запросы; например, можно выполнить проецирование на атрибут Y, ограничение по условию "значение Y меньше пяти".
Заметим мимоходом, что похожие наблюдение содержатся в книге Mike Stonebraker про объектно-реляционные СУБД: "Базовые типы полностью инкапсулированы. Единственный способ манипулировать [экземпляром] базового типа состоит в том, чтобы выбрать его и выполнить функцию, принимающую [экземпляр этого типа] в качестве аргумента. В противоположность этому, составные типы полностью прозрачны. Можно видеть все поля, и они легко доступны в языке запросов. Конечно, промежуточная позиция заключается в том, чтобы допустить в составном объекте наличие публичных (видимых) полей и приватных (инкапсулированных). Этот подход используется в Си++". Однако следует добавить, что остается неясным, проводит ли Стоунбрейкер четкое различие между реальными и возможными представлениями, как это делается в The Third Manifesto.
Вернемся к основному аргументу. Тот факт, что типы отношений не искапсулированы, не означает потерю независимости данных! Например, в случае relvar POINT нет абсолютно никаких причин, по которым нельзя было бы физически представить эту relvar полярными координатами R и U, а не декартовыми координатами X и Y. (Вероятно, это невозможно сделать в сегодняшних продуктах SQL, но это недостаток продуктов. Сегодняшние продукты SQL вообще обеспечивают меньшую независимость данных, чем теоретически в состоянии обеспечить реляционная технология.) Другими словами, даже при использовании не инкапсулированных типов требуется четко различать типы и представления, и "отказ от инкапсуляции" не обязательно ведет к разрушению независимости данных.
Грядущий мир объектно-реляционных VLDB предлагает разработчикам и
конечным пользователям приложений богатые возможности получить
более мощные, интуитивно понятные и продуктивные приложения.
Однако, как это часто бывает при использовании новых технологий,
прежде, чем такие приложения станут обычными, потребуется период
изучения. Это изучение (и некоторые существенные изменения в
реализации) должно быть произведено поставщиками СУБД, которые
должны обеспечить функции манипулирования данными, определения
данных, администрирования и также средства обучения. Требуются
также значительные усилия для обеспечения всех необходимых типов
данных и методов и оптимизации данных. Эти процессы будут в
полном разгаре в 1998 г. и должны начать стабилизироваться в
1999-2000 гг.
Кодд начинает этот раздел со следующего решающего наблюдения: "Применение реляционного представления данных ... делает возможной разработку универсального подъязыка выборки, основанного на логике предикатов второго порядка". (Обратите внимание на слова "второго порядка"; в статье 1969 г. явно допускалась возможность определения отношений на доменах, содержащих в качестве элементов отношения. Я вернусь к этому моменту при подробном обсуждении статьи 1970 года.)
Величайшая интуиция Кодда подсказала ему, что можно представлять базу данных как набор отношений, которые, в свою очередь, могут представляться в виде наборов высказываний (по договоренности считающихся истинными), и следовательно, языки и понятия логики могут быть прямо применены к проблеме доступа данных и связным проблемам. В этом разделе статьи он обрисовал основные черты языка доступа, основанного на этих понятиях. Эти черты включают следующее: Язык должен быть ориентирован на работу с множествами, основное внимание должно быть сосредоточено на выборке данных (хотя должен также включать и операции обновления). Кроме того, язык не должен быть вычислительно полным; это означало, что речь идет о "подъязыке", "[встраиваемом] в разнообразные включающие языки ... Любые требуемые [вычислительные] функции могут определяться во [включающем языке] и вызываться [из подъязыка]". Лично я никогда не был полностью убежден в том, что выделение средств доступа к данным в отдельный подъязык было хорошей идеей, но он пребывает с нами в течение довольно долгого времени (в обличии встраиваемого SQL). Между прочим, в связи с этим интересно заметить, что с добавлением к стандарту SQL в 1996 г. возможности PSM (Persistent Stored Modules) SQL сам по себе теперь стал вычислительно полным языком, что означает отсутствие потребности во включающем языке (включающем SQL).
Кодд также писал: "Выполнение некоторых операций удаления может вызываться другими такими операциями, если объявлены зависимости по удалениям." Другими словами, уже в 1969 г. Кодд допускал возможность автоматически вызываемых "ссылочных действий", таких как CASCADE DELETE (и в статье 1970-го года он расширил это поняти, введя и ссылочные действия UPDATE. Кроме того, язык должен обеспечивать симметричное использование. Т.е. пользователь должен иметь возможность доступа к данному отношению с использованием любой комбинации его атрибутов, как известных, так и оставшихся неизвестными. "Эта возможность отсутствует в большинстве современных информационных систем." Совершенно верно. Ны мы принимаем это теперь как sine qua non (обязательное условие), по крайней мере, в реляционном мире. (По некоторым причинам в объектном мире эту возможность не считают настолько важной.)
Инкапсуляция вступает в некоторый конфликт с потребностью выполнять непредвиденные запросы. Инкапсуляция означает, что доступ к данным может быть произведен только через заранее определенные операции, а смысл непредвиденных запросов, почти по определению, состоит в том, что требуется доступ, способ которого невозможно предопределить. Например, пусть имеется тип данных POINT; предположим, что также имеется (предопределенная) операция для "взятия" (чтения или выборки) X-координаты заданной точки, но нет подобной операции для соответствующей Y-координаты. Тогда невозможно выполнить даже следующие простые запросы и множество подобных:
Получить Y-координату точки P Выбрать все точки по оси X Выбрать все точки со значением ординаты меньшим пяти.
В Third Manifesto (3) Крис Дейт и Хью Дарвин для разрешения этого конфликта предлагают потребовать, чтобы для каждого заданного типа были определены операции, раскрывающие некоторое возможное представление экземпляров этого типа (авторы называют такие операции "THE_operators"). Для типа POINT, например, можно было бы определить операции THE_X и THE_Y, что позволило бы производить следующие действия:
Q := THE_Y (P) ; /* получить Y-координату точки P и присвоить ее Q */ Z := SQRT ( THE_X (P) ** 2 + THE_Y (P) ** 2 ) ; /* получить расстояние до точки P от точки (0,0) и присвоить его Z */
Таким образом, THE_X и THE_Y действительно раскрывают возможное представление - а именно, декартовы координаты X и Y - и обеспечивают возможность выполнять непредвиденные запросы с точками. Однако это не означает того, что внутри системы точки действительно представлены декартовыми координатами; это значит лишь то, что декартовы координаты являются возможным представлением. В реальном представлении могут использоваться декартовы координаты, полярные координаты R и U или что-нибудь совсем другое. Другими словами, THE_операции не нарушают инкапсуляцию и не подрывают независимость данных. Заметим, кстати, что типы данных DATE и TIME языка SQL представляют пример встроенных типов с раскрытием некоторых возможных представлений. Например, для дат раскрывается возможное представление с компонентами YEAR, MONTH и DAY. Хотя, вероятно, следует добавить, что эти "возможные" представления в SQL, к сожалению, близки к реальным представлениям; в SQL различие между типами и представлениями часто не является четким.
Победитель - VisiBroker (Visigenic Software, )
После поглощения компании PostModern Computing и ее продукта
компания Visigenic заняла лидирующие позиции на рынке брокеров
объектных заявок. Поддерживая такие Web-технологии как Java и
IIOP, компания работает с мощной группой партнеров (Netscape,
Novell, Oracle, Sybase, Borland, Hitachi), которые используют
VisiBroker в своих продуктах.
Победитель - ERwin (Logic Works Inc., )
ERwin обеспечивает возможности сложного моделирования, генерации
схемы, реинжениринга, а также позволяет интегрировать средства
разработки. В настоящее время продукт расширяется, чтобы быть в
состоянии моделировать сложные данные в универсальных серверах.
Победитель - Crystal Reports (Seagate Software Inc.,
)
Crystal Reports обеспечивает доступ к десяткам источников данных,
и базовый компонент системы может быть внедрен в приложения с
использованием множества различных интерфейсов. В версии 6.0
добавлены средства поддержки Web, так что могут производиться
отчеты, доступные для браузеров.
Победитель - ERwin (Logic Works Inc., )
В этой номинации читатели DBMS выбрали ERwin компании Logic
Works как предпочтительное CASE-средство, выделив исключительные
качества технической поддержки.
Победитель - Joe Celko
Кто сказал, что язык SQL скучен? Колонка Joe Celko "SQL for
Smarties" дает возможность читателям познакомиться с его
уникальными и перспективными соображениями в области индустрии
баз данных.
Читателям предлагались еще и следующие номинации, но по причине
малого числа поданных голосов награды не были присуждены:
"Средство тестирования для приложений "клиент/сервер" и
"Internet/intranet""
"Средство миграции, преобразования и очистки данных для складов
данных и других потребностей в миграции"
"Web-сервер как шлюз к базам данных или средство интеграции"
Победитель - Tuxedo (BEA Systems Inc., )
Tuxedo - это популярный монитор транзакций, работающий на
различных UNIX-платформах и в среде Windows NT. Сегодня Tuxedo
делает много больше, чем просто управляет транзакциями. Продукт
отслеживает работу приложений, администрирует безопасность,
управляет сообщениями и т.д.
Победитель - ERwin (Logic Works Inc.)
В ERwin 3.0 различаются логическая и физическая модели. В
последней версии продукта улучшены возможности пользовательского
интерфейса и введены практические усовершенствования, такие как
поддержка представлений.
Победитель - Teradata RDBMS (NCR Corp., )
Размеры баз данных, используемых для поддержки складов данных,
растут с феноменальными темпами. Сегодня в ходу такие термины как
петабайты. Компания Teradata начала поставлять параллельные СУБД
в 1984 г. задолго до того, как параллельная обработка стала
обычной в РСУБД переднего края. В настоящее время сервер баз
данных Teradata является популярным средством для организации
больших складов данных.
Победитель - ObjectStore (Object Design Inc., )
ObjectStore - это зрелая ООСУБД, побеждавшая и в прошлые годы.
Сервер ObjectStore 5.0 обеспечивает интерфейсы для Java, ActiveX
и C++.
Победитель - Oracle Applications (Oracle Corp.)
Продукт Oracle Applications включает более 30 интегрированных
модулей для управления финансами, человеческими ресурсами,
управления поставками и т.д.
Победители - SQL Net (Oracle Corp.) и ODBC (Microsoft Corp.)
При критическом значении, которое промежуточное программное
обеспечение имеет для приложений, связанных с использованием баз
данных, эта разновидность программного обеспечения должна
оставаться прозрачным для конечных пользователей. Компания Oracle
предлагает стандартную версию SQL Net в связке со своими
популярными РСУБД. ODBC компании Microsoft претендует на большее:
драйверы ODBC имеются практически для всех доступных источников
данных (включая нереляционные) и почти все средства разработки
поддерживают использование этих драйверов.
Победитель - Oracle (Oracle Corp. )
Поддерживая сверхбольшие базы данных, побитовую индексацию,
оптимизацию звезднообразных запросов и развитые средства
распараллеливания, компания Oracle доказала свою возможность
обеспечить потребности приложений складов и лавок данных.
Победитель - Oracle (Oracle Corp. )
Читатели DBMS продолжают хранить верность Oracle7 и теперь
Oracle8. РСУБД компании Oracle поддерживают большое число
пользователей, выполняют большое число транзакций, позволяют
работать с большими базами данных, обеспечивают высокий уровень
доступности данных. Улучшенная производительность Oracle8 должна
позволить компании остаться лидером в области OLTP.
Победитель - Visual Basic (Microsoft Corp., )
Появление Visual Basic революционизировало разработку приложений
в среде Windows. Но до появления версии 3.0 Visual Basic не
обеспечивал встроенную поддержку разработки приложений баз
данных. Сегодня Visual Basic - это зрелый и мощный продукт для
построения приложений масштаба предприятия, особенно при
использовании его с новейшими компонентами Back Office, такими
как Microsoft Transaction Server и Microsoft Message Queue
Server.
Нет победителя
Читатели высказали много различных мнений, но ни один продукт не
набрал достаточного количества голосов, чтобы быть признанным
победителем.
Победитель - BusinessObjects (Busines Objects SA,
)
Продукт может быть применен при использовании оперативных баз
данных, складов и лавок данных, а теперь еще и внутри
Web-браузеров. В последней версии (4.1) имеется возможность
использования интеллектуальных агентов для оповещения
пользователей об изменениях в базе данных.
Победитель - SQL Enterprise Manager (Microsoft Corp.,
)
С годами Microsoft SQL Enterprise Manager стал мощной и
популярной утилитой, позволяющей легко администрировать сложные
реляционные СУБД.
Победитель - CA-Unicenter TNG (Computer Associates International
Inc., )
CA-Unicenter TNG управляет ресурсами в широком диапазоне, включая
сети, приложения, базы данных в среде различных операционных
систем. Продукт поддерживает безопасность, отслеживает события,
управляет распространением и обновлением программного обеспечения
и выполняет множество других функций.
Победитель - PVCS Series (Intersolv Inc., )
При наличии все возрастающей роли приложений, основанных на
Web-браузерах и HTML-страницах, надежная система управлениями
версиями, как всегда, актуальна.
Победитель - Access (Microsoft Corp., )
Последние усовершенствования продукта в значительной степени
облегчают его использование: имевшиеся ранее многочисленные
многошаговые процедуры теперь существенно упрощены и убыстрены.
Access близок к популярным средствам разработки уровня конечного
пользователя.
Победитель - Oracle (Oracle Corp.)
После появления версии 7.3 Oracle7 РСУБД стала центром
универсального сервера компании. Не удовлетворяясь более
хранением только табличных данных, компания поставляет
специализированные серверы, такие как ConText для
интеллектуального управления текстовыми данными и Oracle Video
Server. Теперь механизм картриджей обеспечивает другие средства
для поддержки сложных типов данных в среде Oracle.
Как уже отмечалось, наиболее значительным изменением изменением в статье 1970-го г. является та идея, что всегда следует нормализовывать отношения: их следует определять только на "доменах, элементы которых являются атомарными (не составными) значениями". Таким образом, "нормализация" означает "отсутствие повторяющихся групп" или то, что теперь называется первой нормальной формой - 1NF. (Нормальные формы более высокого порядка -- 2NF, 3NF и т.д. -- были определены позже.) Кодд настаивает на нормализации, потому что нормализованное отношение "может быть представлено в памяти в виде двумерного массива с однородными столбцами ... [хотя] для отношений необходимы некоторые более усложненные структуры данных [т.е. ненормализованность].
Странно, что в своем первом аргументе в пользу нормализации Кодд сосредотачивается на простоте представления в памяти. Возможно, в действительности он имел в виду простое представление для пользователей. Немного странным является его использование термина "массив", поскольку доступ к элементам массива производится путем адресации их позиций, в то время как для элементов отношения (n-кортежей) это в основном не так.
Кодд утверждает, что простота представления в виде массива обеспечивает преимущество "при обмене крупными порциями данных между системами, использующими различные представления данных. Для обмена данные могли бы представляться в виде сжатого представления на основе массивов и в этом представлении (a) следовало бы избегать использования указателей, (b) следовало бы избегать всех зависимостей от схем хэш-адресации и (c) не должны были бы содержаться индексы или упорядоченные поля" (цитата слегка перефразирована).
Как кажется, второе утверждение является первым явным упоминанием Кодда того факта, что реляционная модель строго исключает использование указателей -- факта, который, как вы должны знать, впоследствии стал предметом многих споров. "Применение реляционной модели данных ...
дает возможность разработки универсального подъязыка данных, основанного на прикладном исчислении предикатов. Если набор отношений находится в нормальной форме, оказывается достаточным исчисление предикатов первого порядка." Это важный момент! -- и в нем отражается основной отход от статьи 1969-го года, в которой обсуждалось исчисление предикатов второго порядка, а не первого. Для читателей, которые могут быть не знакомы с этими понятиями, позвольте мне сказать (в реляционных терминах) лишь то, что "первый порядок" означает, что мы квантифицируем только строки отношений, а "второй порядок" дает возможность расставлять кванторы над отношениями. Логика первого порядка позволяет формулировать такие запросы как "Существует ли поставщик S1 в отношении поставщиков?" Логика второго порядка дает возможность формулировать запросы типа "Существует ли поставщик S1 в каком-либо отношении?"
Я хотел бы сказать еще кое-что по поводу этого вопроса нормализации. Я согласен с Коддом, что желательно оставаться в рамках логики первого порядка, если это возможно. В то же время я отвергаю идею "атомарных значений", по крайней мере в смысле абсолютной атомарности. В Третьем манифесте [3] мы допускаем наличие доменов, содержащих значения произвольной сложности. (Они могут быть даже отношениями.) Тем не менее, мы остаемся в рамках логики первого порядка. Более подробное обсуждение этой темы увело бы нас слишком далеко; если вы хотите знать больше, детали содержатся в другой статье Дарвена [4].
В статье 1970-го года Кодд приводит простой пример, показывающий, что происходит при нормализации ненормализованного отношения. Как уже отмечалось, под "нормализацией" здесь понимается приведение к первой нормальной форме, и пример является весьма прямолинейным. Однако в статье содержатся следующие дразнящие замечания: "Возможны и операции дальнейшей нормализации. Они не обсуждаются в этой статье." Еще один намек на появление интересной области исследований!
Между прочим, Кодд также замечает, что "он не знает приложений, в которых бы потребовался первичный ключ, компонент которого определен на домене с неатомарными значениями" (значительно перефразировано). В действительности такие приложения существуют, и одно из них описано в статье Дарвена [4]. Однако только то, что такие приложения существуют, не означает невозможности нормализации существующих отношений. (Опять же, это связано с тем, как понимать "атомарность".) И снова дальнейшее обсуждение нас увело бы слишком далеко.
Понятно, что расширяемость и функциональные возможности,
получаемые при добавлении объектных свойств к среде VLDB,
приводят к появлению новых видов ответственности для всех
сторон, связанных с созданием приложений.
Разработчики новых типов данных и методов могут теперь не
являться сотрудниками компании-поставщика СУБД, как это было при
применении чисто реляционных данных. В этом случае они будут
отвечать за оптимизацию данных и обеспечение оценочных функций.
Они также должны обеспечить новые средства индексации и методы
доступа к данным, когда это требуется. При тестировании этого
программного обеспечения потребуются механизмы изоляции и
разрешения проблем. В будущем эти разработчики будут должны при
необходимости предоставлять параллельные версии своих методов.
Новые виды ответственности появляются и у разработчиков
приложений. Они должны более тщательно обдумывать управление
внешней памятью и буферами и решать, что и когда следует
журнализовать. Как и администратор баз данных, они должны
реализовывать стратегии управления внешней памятью и буферами,
наиболее соответствующие проекту приложения, формулировать и
реализовывать стратегию журнализации, соответствующую требованиям
целостности и восстанавливаемости данных, производить более
сложный выбор средств индексации и денормализации и выбирать, где
следует выполнять разные функции для достижения оптимального
соотношения стоимость/эффективность - на сервере баз данных, на
сервере приложений или на стороне клиента.
Наконец, для достижения успеха новые виды ответственности должны
принять на себя и поставщики СУБД. В дополнение к обязанности
поставлять надежно работающие ОР-продукты для параллельных сред
они должны обеспечивать простые для использования интерфейсы,
поддерживающие обсуждавшиеся выше вспомогательные функции:
определение и внедрение новых типов данных, операторов, методов
доступа и индексации, оценочных функций и т.д. Более того, должны
обеспечиваться не только новые средства разработки приложений, но
Большие объекты. При использовании традиционных методов хранение в базе данных больших объектов (например, видео-клипов) может
привести к существенной деградации производительности системы по
причине слишком интенсивного использования таких ресурсов как
буфера и журналы. Истинная объектно-реляционная система должна
обеспечивать специальные средства для повышения эффективности
приложений, связанных с большими объектами, и минимизации их
влияния на системные ресурсы.
В DB2 поддерживаются три типа данных для хранения больших
объектов: BLOB для бинарных объектов, CLOB для символьных строк и
DBCLOB для строк, в которых используются двухбайтовые наборы
символов. Для каждого из этих типов данных можно хранить объекты
объемом до 2 Гбт. Когда большие объекты сохраняется в столбце
таблицы, то на самом деле столбец содержит "дескриптор" каждого
такого значения; сами же большие объекты хранятся вне таблицы.
Такой подход предотвращает влияние наличия больших объектов на
физическую кластеризацию таблицы, которая может уменьшить число
чтений страниц внешней памяти при просмотре таблицы. Опции
оператора CREATE TABLE позволяют управлять расположением больших
объектов на физическом носителе.
Подсистема восстановления DB2 дает возможность создателю таблицу выключать обычную журнализацию изменений столбцов с большими
объектами. При выключенной журнализации по отношению к таким
столбцам гарантируется согласованность транзакций, но столбец не
может участвовать в процедуре прямого восстановления (повторении
операций зафиксированных транзакций при восстановлении базы
данных от контрольной точки).
По причине большого размера крайне желательно минимизировать
число перемещений и копирований больших объектов. В среде DB2
прикладная программа может объявить переменную-"локатор", которая
представляет значение большого объекта, но реально его не
содержит. Содержимое локатора является спецификацией того, как
значение большого объекта может быть материализовано в случае
Теоретически ОСУБД в состоянии моделировать объектно-реляционные (и чисто реляционные) базы данных и управлять ими. Зачем же тогда беспокоиться о более ограничительных моделях?
Объектные базы данных не вытеснили РСУБД в конце 80-х - начале 90-х, поскольку на ранней стадии существования они обеспечивали, по существу, лишь среду постоянного хранения для программ, написанных на языках Си++ и Smalltalk, а их API были ограничены привязкой к объектно-ориентированным языкам. Со временем ОСУБД "подросли", приобретя интерфейс SQL и средства разработки приложений. Но в течение того же времени производители РСУБД переписали свои системы для эффективного использования мультипроцессоров. В системах появились многопотоковость (multithreading) и распараллеливание выполнения запросов. Потеря соответствия (impedance mismatch) между множественными результатами реляционных запросов и ориентированным на записи процедурным программированием была компенсирована во многих средствах разработки, что снизило преимущества объектного моделирования данных в ОСУБД. Кроме того, в последних выпусках РСУБД и ОРСУБД в дополнение к обычным типам индексации, основанной на B-деревьях и хэшировании поддерживаются битовая индексация, R-деревья и другие виды индексов, играющие важную роль при организации хранилищ данных (datawarehousing) и управлении геопространственными данными. В этих СУБД теперь применяется оптимизация на основе оценок, а табличное пространство может быть разделено (фрагментировано) между устройствами и даже серверами.
Майкл Стоунбрейкер любит называть компанию "домом отставного программного обеспечения", возможно, по причине неудовольства тем, что его РСУБД Ingres стала относительно незаметной после ее приобретения этой компанией. В Ingres никогда не было реализовано собственное видение реляционной СУБД, расширенной объектными свойствами, хотя модули управления объектами и знаниями поставлялись в начале 90-х, и это представляло первую попытку приближения к ОРСУБД.
В частности, модуль управления объектами дает пользователям возможность расширения Ingres определяемыми ими типами и методами, хотя сложность Си-кода, требуемого для реализации, делает их практически неиспользуемыми. Но на самом деле характеристика CA, данная Соунбракером, неверна. Продукты Unicenter-TNG и ОСУБД Jasmine далеки от пенсионного возраста.
Другой широко обсуждаемой компанией является , недавно образованная путем слияния компаний O2 Technology, Unidata и Vmark. Система Unidata относится к классу РСУБД, поддерживающих ненормализованную реляционную модель данных (в частности, допускаются вложенные таблицы). Поддержка аналогичных возможностях в ОРСУБД за счет механизмов строчных типов или вложенных таблиц обеспечивает существенно большую масштабируемость. Кроме того, Ardent предлагает РСУБД UniVerse, близкую по подходу к Unidata, и ОСУБД O2. Вполне понятно, что Unidata и UniVerse не справятся с ОРСУБД, но система O2, рекламируемая на рынке как "универсальный объектный сервер", - это достаточно впечатляющий продукт.
Продукт Cashe компании представляет еще один пример постреляционной СУБД (ПРСУБД). СУБД Cashe выглядит и функционирует подобно реляционной системе, но основана на многомерной моделе данных, оптимизированной для обработки сложных транзакций.
Несмотря на такие достоинства ПРСУБД как сильная технология, стандартизованные интерфейсы, совместимость с реляционным подходом и наличие ряда впечатляющих приложений, сомнительно, чтобы эти системы смогли вытеснить РСУБД или ОРСУБД. Функциональных возможностей ПРСУБД недостаточно, чтобы потеснить занимающие твердые позиции Oracle, IBM и Informix. Распределенные объекты представляют более жизненную альтернативу.
, July 1998
, a principal of , a consultancy specializing in database design and software development for Internet and decision-support applications
Оригинал статьи можно найти по адресу
Являются ли объектно-реляционные СУБД (ОРСУБД) "следующей большой волной"? При всем хорошем к ним отношении ответ автора статьи - "нет". Возможно, волны ОРСУБД будет биться о берег в течение нескольких следующих лет, но это не цунами. Ситуация объясняется природой объектно-реляционных моделей, существующих в контексте более широкой тенденции, которая опирается на распределенные объекты.
Технологию объектно-реляционных баз данных нельзя считать устоявшейся, и, более того, она далеко не так развита, как обещалось. Первая значимая коммерческая ОРСУБД Illustra появилась в 1993 г., а в 1997 г. несколько ведущих компаний-поставщиков СУБД стали предлагать свои оъектно-реляционные продукты, но во всех них остаются большие дыры. В каждой из этих ОРСУБД (Oracle8, IBM DB2 Universal Database и Informix Universal Server) объектные расширения реляционной модели реализуются неполно и разными способами. Доступно лишь немного средств проектирования и разработки, пригодных для использования в объектно-реляционных средах, и рынок приложений, основанных на этом подходе, развивается медленно. В результате поставщики ОРСУБД переосмысляют свои маркетинговые и технологические стратегии в свете навеянного Internet бума в распределенных объектных вычислениях, а поставщики чистых РСУБД (такие как и ) принимают решение обойтись поддержкой объектов на основе промежуточного программного обеспечения (middleware), не входящего в состав СУБД.
В статье кратко объясняется, как понятия объектно-реляционного подхода реализованы в разных продуктах, и описываются некоторые альтернативные подходы, обеспечивающие объектно-реляционное представление реляционных данных. После этого приводится обзор инструментальных средств ОРСУБД и некоторых ключевых прикладных областей.
Чтобы расширить пространство поиска физического проекта материализованными представлениями, нам требуется не только расширить базисные средства выбора индексов, но также гарантировать, что подсистема обработки запросов может поддерживать материализованные представления. В особенности требуется решить две следующие проблемы:
Преобразование запросов: Оптимизатор запросов должен быть в состоянии переформулировать запрос для использования материализованных представлений, когда это выгодною
Поддержка представлений: Система должна автоматически обновлять все необходимые материализованные представления при каждом обновлении базовых таблиц.
До сих пор наша работа над материализованными представлениями фокусировалась на проблеме преобразования запросов. В большинстве предыдущих работ по поводу преобразования запросов делалось несколько упрощающих предположений: запросы и представления только категории "проекция-селекция-соединение" (Project-Select-Join - PSJ), семантика множеств (а не мультимножеств), никакого знания ограничений (таких как ключи и внешние ключи), вычисление запросов на одном представлении. В настоящее время мы имеем работающий прототип системы преобразования запросов, который справляется с более широким классом запросов и представлений (проекция-селекция-соединение-группирование) с обычной семантикой SQL, использует знания о ключах и внешних ключах, берется за преобразования запросов на нескольких представлениях. Мультимножественная семантика SQL добавляет новое измерение в проблему преобразования запросов, поскольку мы должны быть уверены не только в получении всех требуемых строк, но и в том, что будет правильно учтен фактор дубликации.
Принятие во внимание знаний о ключах и внешних ключах оказалось очень важным, но также и поразительно сложным. Рассмотрим две таблицы - Orders и Customers, где таблица Orders содержит внешний ключ CustomerNo, в котором запрещены неопределенные значения и который ссылается на первичный ключ таблицы Customers.
Предположим, что имеется представление, получаемое (естественным) соединением Orders и Customers, и что задается запрос, адресуемый к таблице Orders. Без знаний о ключах и внешних ключах мы могли бы заключить, что запрос не может быть выполнен с применением представления. (Поскольку операция естественного соединения в языке SQL по определению отсекает строки с неопределенными значениями столбца соединения и устраняет в результате дубликаты. Прим. С.Кузнецова.) Принимая во внимание внешние ключи, мы можем заключить, что в представлении присутствуют все требуемые строки, но, возможно, без учета фактора дублирования. Для гарантирования того, что фактор дублирования учитывается корректно, мы должны принять во внимание, одним из столбцов соединения является первичный ключ.
Зависимости ключей генерируют функциональные зависимости, которые сохраняются в результата вычисления выражения запроса. Эти порождаемые функциональные зависимости играют важную роль при принятии решения о том, может ли запрос с группированием быть вычислен на основе представления с группированием. Комбинаторный взрыв поднимает свою ужасную голову при попытке расширить пространство решений трансформациями запросов на нескольких представлениях. Здесь ключевой проблемой является нахождение хороших эвристик для ограничения поиска без потери слишком большого числа хороших решений. Эвристики в текущем прототипе работают хорошо на небольших базах данных, насколько хорошо они будут масштабироваться при переходе к большим базам данных с сотнями или даже тысячами таблиц и представлений.
В заметке сделана попытка показать, что запросы с разделами GROUP BY и HAVING (GBH-запросы) и переменные с областью значений являются избыточными в языке SQL. Интересно заметить, что эти аспекты SQL относятся к числу тех, которые наиболее трудно изучаются, понимаются и правильно применяются. Если говорить конкретно о GBH-запросах, то кажется, что альтернативные формулировки часто бывают более предпочтительными. Рассмотрим еще раз запрос Q4 из первой части заметки.
Q4: Выдать номер каждой детали, поставляемой более чем одним поставщиком.
Вот формулировки этого запроса с GBH и без GBH:
SELECT SP.P# FROM SP GROUP BY SP.P# HAVING COUNT(*) > 1 ;
SELECT DISTINCT SP.P# FROM SP WHERE ( SELECT COUNT(*) FROM SP AS SPX WHERE SPX.P# = SP.P# ) > 1 ;
По мнению Дейта,
Вариант без GBH по крайней мере логически понятнее и проще чем вариант с GBH, поскольку в нем не используются дополнительные языковые конструкции (разделы GROUP BY и HAVING) Из исходной формулировки проблемы не видно, что именно группирование требуется для выражения запроса на SQL (и оно действительно не требуется) Далеко не очевидно, что нужен раздел HAVING, а не раздел WHERE
Вариант с GBH больше похож на предписание решения проблемы, т.е. набора шагов, которые необходимо предпринять для нахождения ответа, а не на описание самой проблемы. А общее назначение реляционной модели всегда состояло в том, чтобы можно было использовать декларативные, а не процедурные формулировки. Декларативные формулировки требуют работы системы, процедурные - работы пользователя.
Конечно, нельзя отрицать, что вариант формулировки с GBH более короткий. Но если единственным преимуществом формулировок с GBH является краткость, то было бы лучше определять такие формулировки как сокращенную запись. Тогда, вероятно, не проявлялись бы отмеченные в заметке аномалии и реализация была бы проще. Замечание: следует упомянуть, что реляционный аналог разделов GROUP BY и HAVING языка SQL оператор SUMMARIZE определяется как сокращенная запись.
, Центр Информационных Технологий
В этом (1997) году исполняется десять лет одному из наиболее
популярных и авторитетных журналов в области баз данных "Data
Base Programming and Design". По этому поводу на журнала выпущена специальная, доступная только в
электронной форме подборка материалов. Среди них, по нашему
мнению, особый интерес представляет материал под названием
"Звезды десятилетия" ("Stars of the Decade"). Редакция попросила
своих ведущих авторов выделить наилучшие программные средства
управления базами данных, которые появились в последние десять
лет. Нам кажется, что краткий пересказ этих мнений будет
интересен нашим читателям.
Nagraj Alur
DataBase Associates
Contributing Editor, Client/Server Forum column (1993-96)
Неоспоримым лидером среди поставщиков реляционных систем
управления базами данных (РСУБД) для мейнфреймов была компания
IBM с DB2 в среде MVS. Особое влияние на широкое признание
системы оказал выпуск DB2/2 в апреле 1988 г. В этой версии
системы сосуществовали возможности поддержки оперативных
транзакционных приложений и приложений, ориентированных на
системы принятия решений.
Компания Sybase сыграла решающую роль во внедрении в сферу РСУБД
аппаратуры микропроцессоров и технологии открытых систем на
основе применения архитектуры "клиент-сервер". Используемая
комбинация низкостоимостных персональных компьютеров и
технологии открытых систем произвела сильное впечатление на
индустрию баз данных. Необходимо также отметить значение
PowerBuilder в развитии технологии "клиент-сервер" на уровне
рабочих групп за счет возможности быстрой разработки приложения и
обеспечения доступа к разнородным РСУБД.
Компании Microsoft и Intel сосредоточились на том, чтобы
обеспечить доминирование клиентских станций с Windows на рынке
настольных компьютеров и сделать возможным создание корпоративных
информационных систем на основе использования дешевых серверов NT
и SQL-сервера.
Агрессивная ценовая политика, разработка
популярных стандартов ODBC, ActiveX и OLE DB, наличие большого
числа независимых производителей программного обеспечения и
консультантов способствовали влиянию на информационные технологии
таких инициатив Microsoft как Wolfpack, Viper и Falcon.
Компания Oracle способствовала росту популярности РСУБД и
архитектуры "клиент-сервер" тем, что поддерживала наиболее
широкий диапазон аппаратных и программных платформ. В этом
отношении версия Oracle7 явилась существенной вехой в эволюции
РСУБД.
Значимость технологии универсальных серверов (Oracle и Informix)
и баз данных (IBM) пока еще не доказана, но полезность этих
продуктов будет горячо отстаиваться в близком будущем.
Joe Celko
Northern Lights Software
Contributing Editor on SQL column (1990-1992)
Наиболее важным продуктом является тот, о котором знает немного
людей: реализация SQL компании Britton-Lee, выполненная Лаурой
Йедвааб (Laura Yedwaab) и ее группой. Этот продукт первым
выдержал испытания на новых тогда тестах FIPS на предмет полного
соответствия стандарту SQL/89. Это событие было знаменательным,
поскольку многие производители утверждали о невозможности
добиться соответствия стандарту, а маленькая компания с группой
разработчиков из пяти человек смогла это сделать. В результате
крупные компании немедленно занялись стандартизацией и
тестированием.
Terry Moriarty
Spectrum Technology Group Inc.
Contributing Editor, Enterprise View column (1993-present)
Ни один из продуктов не удовлетворяет полностью потребности
управления и администрирования данных. Как это не печально, по
всей видимости ни один поставщик не понимает, что значит
управлять информацией как стратегическим бизнес-ресурсом. Имеется
много продуктов управления базами данных, но совсем мало решений
для управления данными.
Если бы потребовалось выделить наиболее существенный продукт
управления базами данных, то им был бы Microsoft Access; не
потому что он лучший, а потому что самый распространенный.
MS
Access получил широкое распространение как компонент пакета MS
Office Professional, пригодный для управления локальными данными.
Бизнес-пользователи стали более грамотными по отношению к
компьютерам после того, как поиграли со своими персональными
базами данных в среде Access.
Наиболее существенным вкладом последнего десятилетия я считаю
принятие и реализацию поставщиками стандарта ODBC. Без технологии
такого типа склады данных использовались бы менее успешно, чем
в настоящее время.
Patrick O'Neil
University of Massachusetts
Most recent DBPD feature: "Informix and Indexing: Data Warehouse
Support", February 1997
Более десяти лет тому назад IBM выпустила свои первые реляционные
продукты - SQL/DS для VM (1982) и DB2 для MVS (1983). Ingres была
доступна для пользователей с конца 70-х, и Oracle в
действительности подавил IBM на рынке, но нет сомнений, что
именно долговременная поддержка компанией IBM реляционной модели
(SQL в 1974 г., работающая System R в 1977 г.) ориентировала
пользователей на использование реляционных продуктов в начале
80-х.
Долгий период консолидации и постепенных улучшений длился до 1993
г., когда Майкл Стоунбрейкер (Michael Stonebraker) выпустил в
свет объектно-ориентированную систему Illustra (поглощенную
компанией Informix в 1995 г.) - первый продукт десятилетия
настолько же важный, как DB2. Новые концепции Illustra сильно
влияют на рождающийся стандарт SQL3, и большинство поставщиков
СУБД учитывает это в новых продуктах (DB2 version 2, Oracle8).
Через пять лет приложения, написанные на основе реляционных
продуктов без использования объектно-реляционных расширений будут
выглядеть странно.
David Plotkin
Longs Drug Stores
Contributing Editor, Desktop Database column (1993-1995)
Для линии малых систем поворотным пунктом стал продукт Approach,
первая персональная СУБД, сделавшая доступными для
непрограммистов в среде Windows надежные реляционные базы данных
(раньше, чем Microsoft Access). При применении Approach
реляционные свойства приложений определяются с помощью простых
средств моделирования; простые для использования средства
управления экраном, генерации отчетов, макросов и запросов на
основе форм доставляют удовольствие. Теперь в Approach (которой
теперь владеют IBM/Lotus) имеется язык программирования, на я
редко использую его, потому что могу выполнять свою работу без
потребности в написании кода.
На другом конце спектра продукт Rochade Repository компании R&O
(теперь часть компании Viasoft) был особо значимым для хранения
метаданных. Свой первый репозиторий я реализовал не на Rochade
(эта честь принадлежит DB Excel компании Reltech, теперь это
часть компании Platinum Technology), но Rochade-репозиторий было
определенно легче совершенствовать, расширять и сопровождать. В
Rochade используется база данных с объектными свойствами, которые
облегчают расширения. Используемая архитектура "клиент-сервер"
является очень гибкой, и, по моему мнению, интерфейс Windows
гораздо быстрее осваивается, чем интерфейсы других репозиториев.
Объектно-ориентированный язык программирования позволяет
добавлять дополнительные интерфейсы (например средства запросов
для случайных пользователей) и автоматизировать почти все.
Наконец, средство ADW CASE компании KnowledgeWare (теперь часть
компании Sterling) было еще одним потрясением. Когда я первый раз
увидел этот продукт (в 1987 г.), он работал в среде операционной
системы GEM компании Digital Research на PC. Интерфейс на основе
мыши и твердое следование методологии IE делали этот продукт
неоценимым для начинающих администраторов данных.
Tim Quinlan
Consultant
Most recent DBPD feature: "Time to Reengineer the DBA", March 1996
Десять лет назад наибольшее влияние оказывала СУБД DB2 для MVS:
версии 1.3 и 2.1 доказали, что реляционные базы данных готовы к
использованию в промышленных масштабах и пригодны для оперативной
обработки транзакций (OLTP). DB2 обеспечила доверие к реляционным
базам данных и заложила основу их использования за пределами
областей, связанных с поддержкой принятия решений. Многие из
свойств DB2 воспроизведены в других СУБД (хотя редко настолько
же элегантно); IBM остается лидером в области
высокопроизводительных СУБД, применяемых в OLTP-приложениях.
SQL-сервер компаний Sybase и Microsoft был следующим крупным
шагом вперед. Появление этого сервера популяризировало
архитектуру "клиент-сервер" и многие важные свойства, такие как
триггеры баз данных, хранимые процедуры, поддержку больших
двоичных объектов (BLOB'ов), которые стали стандартными в
сегодняшних развитых реляционных продуктах. SQL-сервер изменил
способ проектирования, разработки и реализации систем. Он изменил
набор платформ, на которых можно использовать готовые системы, и
прикладное программное обеспечение, используемое для их
разработки. Все основные поставщики продуктов баз данных
последовали этому примеру: SQL-сервер оказал наибольшее влияние
на рынок баз данных за последние десять лет.
Последним крупным шагом вперед было появление
объектно-реляционных баз данных, таких как UniSQL и Illustra. Но
именно приобретение Illustra компанией Informix с последующим
слиянием кода удалило барьер для наращивания возможностей
реляционных баз данных. Механизм DataBlade, возможности
определения пользователями функций, операторов, типов данных и
даже методов доступа являются основными достижениями.
Возможности переопределения неструктурированных типов данных для
использования в операторах языка SQL обратили всех поставщиков
реляционных продуктов в сторону объектно-реляционных
универсальных серверов. Все это существенно изменит рынок баз
данных.
Что касается компании Oracle, то ее размер и возможность внедрить
в свои продукты почти любые возможности позволяет компании быть
несомненным лидером на рынке, которого другие поставщики хотели
бы вытеснить, но не следовать его техническим решениям.
Alan Simon
CoreTech Consulting Group
Most recent DBPD feature: "Beyond the Warehouse", Industry in
Focus Issue: December 1996
Наибольшее влияние за последнее десятилетие оказал продукт
Oracle7. Этим выпуском компания Oracle окончательно убедила
специалистов корпораций в области информационных технологий в
том, что реляционные СУБД пригодны для разработки масштабных
приложений. Хотя некоторые люди считают, что у Oracle отсутствует
собственная твердая позиция, компания является лидером на рынке с
феноменальным ростом числа продаж.
Doug Thomson
Pragmatek Consulting Group
Contributing Editor, Corporate Developer column (1995-present)
Насколько иной была индустрия баз данных десять лет назад!
Возникали неожиданные споры по поводу реляционной теории, десятки
парадигм и архитектур пытались пробиться в мир. Компания Oracle
была одной из немногих, которые руководствовались четкой и
перспективной точкой зрения: мобильная, основанная на SQL
реляционная система управления базами данных. У Cullinet,
Software AG и Progress не было реляционных продуктов; продукты
IBM и Applied Data Research не обладали мобильностью; в Ingres не
поддерживался SQL; Sybase и Informix выпустили свои успешные
продукты немного позже.
Бывшая восходящей звездой в мире СУБД, компания Cullinet Software
была обрушена волной реляционных систем. Горсточка питомцев
Cullinet применила полученные болезненные уроки к созданию
средства разработки приложений PowerBuilder, которое не было
первым, основанным на Windows и ориентированным на архитектуру
"клиент-сервер", но к которому впервые для продуктов этого класса
были применены эффективные методы продаж.
Около двух лет назад, когда индустрия СУБД становилась несколько
скучной по причине прочности позиций Oracle и ошибок Sybase,
появилась Illustra, претендующая на долю умов, если не на долю
рынка. Теперь, после интеграции технологии DataBlade Illustra с
технологией Informix (по крайней мере, на бумаге) конкуренция
снова обостряется.
Jay-Louise Weldon
SHL Systemhouse
Most recent DBPD feature: "Choosing Tools for Multidimensional
Data", February 1996
Acess и ODBC компании Microsoft позволили использовать
реляционную технологию на настольных компьютерах с возможностью
доступа к базам данных, управляемым серверами. Компонент
Distributed Option компании Oracle дал возможность прозрачного
доступа к данным. Replication Server компании Sybase позволил
поддерживать синхронные копии данных в удаленных компьютерах.
ERwin явился простым и элегантным CASE-средством для
использования на настольном компьютере. Illustra стала первой
СУБД следующего поколения.
Paul Winsberg
DataBase Associates
Client/Server Forum column (1993-1996)
Продукт Excelerator компании Index Technology был первым в
прошедшем десятилетии средством графического проектирования баз
данных на настольных компьютерах. Хотя Excelerator прекратил свое
существование к 1990 г., он породил целое поколение средств
моделирования данных, таких как KnowledgeWare, System Architect и
ERwin.
Важным продуктом был также Information Engineering Workbench
(IEW) компании Texas Instruments. Он был первым, позволяющим
генерировать 100% приложения, включая код и структуры данных.
Парадоксально, что IEW продемонстрировал как мощность
управляемого моделью подхода, так и его ограничения.
Список важных средств разработки был бы не полон без PowerBuilder
компании Powersoft. PowerBuilder подготовил путь для поколения
средств разработки, основанных на архитектуре "клиент-сервер" и
реляционных базах данных. Хотя Visual Basic занимал существенно
лучшую позицию на рынке, PowerBuilder был в течение нескольких
лет технологическим и поэтому оказал большее влияние.
В области СУБД ранние выпуски Sybase ввели в использование
хранимые процедуры, триггеры и доступ в стиле "клиент-сервер".
Эти технологии теперь доминируют на рынке, несмотря на то, что
Sabase переживает не самые счастливые времена.
Casey Young
RYC Inc./International DB2 Users Group (IDUG)
Most recent DBPD feature: "Seeking the Promised Land", June 1995"
Я приверженец DB2. Я работал с этим продуктом в течение 13 лет.
До 1997 г. DB2 не отличалась высокой производительностью. Но в
последующих выпусках ситуация изменилась: неожиданно стало
возможно рассматривать DB2 как реальную СУБД. В 1992 г. компания
UPS и др. прогоняли по 200000 транзакций в день над терабайтными
базами данных (существенное число для конца 80-х). К концу 1997
г. станут возможными терабайтные таблицы. DB2 для OS/390 стала
сервером с предельными возможностями.
Но взгляд на DB2 для OS/390 дает только половину картины.
Функциональные возможности DB2 Universal Database по-настоящему
не ограничены. В то время как Informix и Oracle ведут публичные
политические битвы вокруг названий и сотрудников, IBM выносит на
рынок объектные средства, расширители, обеспечивающие работу с
графикой, видео, текстами и т.д.
Единственное ограничение для использования DB2 - психологический
барьер у пользователей. Это наиболее существенный продукт
прошедшего десятилетия.
, vol.10, N 6, June 1997
, Won Kim
, Центр Информационных Технологий
Существует путаница вокруг понятия универсального сервера баз
данных, и стоит разобраться, что же свойственно истинной
объектно-реляционной системе.
Эра объектно-реляционной технологии баз данных началась в 1992 г.
с выпуском системы баз данных UniSQL/X, сочетающей черты
реляционной и объектно-ориентированной системы. Вскоре после
этого компания Hewlett-Packard выпустила систему OpenOOB (позднее
переименованную в Odapter), представляющую собой объектный слой
над реляционной системой AllBase. В 1993 г. компания Montana
Systems (переименованная впоследствии в Illustra) начала поставки
первой коммерческой версии объектно-реляционной системы Postgres,
в реализации которой наибольшее внимание уделялось управлению
мультимедийными данными.
Эти три производителя вскоре привлекли внимание аналитиков прессы
и индустрии. Компания Informix поглотила Illustra Technology
(интересуясь главным образом технологией DataBlade для расширения
возможностей баз данных). Сегодня такие гиганты как Oracle,
Informix, Sybase, IBM и Microsoft имеют объявленные планы
преобразования своих реляционных продуктов в объектно-реляционные
к концу 1997 г. В результате на рынке объектно-реляционных систем
царствуют сомнения. Для этого есть несколько причин.
Во-первых, в результате поглощения компанией Informix технологии
Illustra и последующей маркетинговой активности в общей
технологии объектно-реляционных систем чрезмерный вес был придан
роли расширяемости типов данных. Во-вторых, озадачивает
отсутствие меры "объектно-реляционной полноты системы", т.е.
уровня поддержки возможностей объектно-реляционного моделирования
и управления данными.
В статье предлагается практическая метрика объектно-реляционной
полноты; эта метрика может применяться для определения того,
насколько продукт является истинным объектно-реляционным. Метрика
состоит из семи основных категорий, в каждой из которых
, August 1997
, President of Bischoff Consulting Inc.
, Центр Информационных Технологий
IBM и Oracle стремятся к тому, чтобы обеспечить средства
управления базами данных, удовлетворяющие всем возможным
потребностям: интеграция с World Wide Web; intranets; поддержка
сложных типов данных; поддержка всех приложений, связанных с
оперативной обработкой транзакций (OLTP) и принятием решений.
Хотя многие считают невозможным удовлетворение всех этих
требований в одной СУБД, IBM и Oracle добились существенных
успехов в этом направлении. Кроме того, обе компании обеспечивают
поддержку больших баз данных, параллелизма, разделения данных,
высокого уровня доступности и целостности данных.
Компания Oracle объявила продукт Oracle8 в июне 1997 г., а IBM
объявила DB2 Universal Database Version 5 (UDB) в декабре 1996 г.
Хотя в обоих продуктах компании стремились обеспечить одни и те
же возможности, для их реализации применяются разные методы.
Существо подхода Oracle8 сосредоточено в движении в сторону
чистого объектно-ориентированного подхода. С другой стороны, в
UDB v.5 упор делается на интегрированную и масштабируемую
поддерку сложных данных за счет средств расширения РСУБД, а также
на интеграцию со средством доступа к Web Net.Data.
Judith R. Davis, principal with InfoIT Inc.,
Обзор подготовлен С. Кузнецовым,
В первой части статьи (, см. Также наш обзор) были сформулированы требования приложений, стимулирующие усилия по расширению функциональных возможностей реляционных СУБД (РСУБД) для управления сложными данными. Отмечалось, что универсальный сервер часто является лишь одним из компонентов расширяемой среды управления данными. Были также обсуждены базовые свойства, которыми должен обладать сервер баз данных для достижения расширяемости.
Во второй части рассматривается, каким образом пять ведущих компаний-поставщиков РСУБД - Informix Software Inc., IBM Corp., Microsoft Corp., Oracle Corp. и Sybase Inc. - реально поддерживают расширяемость.
В этом разделе статьи приводятся определения некоторых реляционных операций; другими словами, в нем описывается то, что позже стали называть манипуляционной частью реляционной модели. Прежде, чем вдаваться в определения, Дейт утверждает: "Эти операции не будут напрямую интересовать большинство пользователей. Однако проектировщики информационных и люди, отвечающими за управление банками данных, должны быть досконально знакомы [с ними]" (Курсив К.Дейта.) Как это верно! По моему опыту, к сожалению, люди, которым следует быть досконально знакомыми с этими операциями, слишком часто не обладают соответствующими знаниями.
В число определенных Коддом операций входят перестановка (permutation), проекция (projection), соединение (join), связывание (tie) и композиция (composition) (в статье 1970-го г. добавлена операция ограничения (restriction), которую я описываю здесь для удобства). Интересно заметить, что определения ограничения и соединения отличаются от тех, которые используются сегодня, а операции связывания и композиции теперь редко принимаются во внимание. В том, что следует ниже, символы X, Y, ... (и т.д.) по мере необходимости обозначают либо индивидуальные атрибуты, либо комбинации атрибутов. Кроме того, по причинам, которые скоро будут понятны, определение соединения откладывается до конца раздела.
Перестановка. Переупорядочение атрибутов отношения слева направо. (Как я отмечал в прошлом месяце, в статье 1969-го года предполагалась упорядоченность атрибутов отношения слева направо. В отличие от этого, в статье 1970-го года утверждается, что перестановка рассчитана исключительно на внутреннее использование, поскольку упорядоченность атрибутов слева направо не является -- или не должна являться -- существенной для пользователей.)
Проекция. Понималась более или менее так же, как и сегодня (хотя синтаксис был другим; далее я буду использовать синтаксис R{X} для обозначения проекции R на X). Замечание: название "проекция" происходит из того факта, что отношение степени n можно рассматривать как представление точек в n-мерном пространстве, и к проекции этого отношения на m его атрибутов (mСвязывание.
Для данного отношения A{X1,X2,...,Xn} связывание A - это ограничение A до тех строк, в которых A.Xn = A.X1 (если использовать термин "ограничение" в его современном смысле, а не в специальном смысле, определяемом ниже.)
Композиция. Для данных отношений A{X,Y} и B{Y,Z} композицией A c B называется проекция на X и Z соединения (a join) A с B (причина, по которой я говорю "a join", а не "the join", объясняется ниже). Замечание: естественная композиция - это проекция на X и Z естественного соединения.
Ограничение. Для данных отношений A{X,Y} и B{Y} ограничение A по B определяется как максимальное подмножество A такое, что A{Y} является подмножеством -- не обязательно точным -- B.
Кодд также говорит, что "весь обычный набор операций [также] применим ... [но] результат может не являться отношением". Другими словами, когда Кодд писал свою статью 1969-го года, он оставил на будущее определения специализированных реляционных вариантов декартова произведения, объединения, пересечения и вычитания.
Приступим теперь к определению соединения. Для данных отношений A{X,Y} и B{Y,Z} соединение A с B в статье определяется как любое отношение C{X,Y,Z} такое, что C{X,Y} = A и C{Y,Z} = B. Заметим, что следовательно A и B можно соединить (или они "соединяемы"), только если их проекции на Y идентичны -- т.е. только если A{Y} = B{Y}, условие, которое вряд ли удовлетворяется на практике. Также заметим, что если A и B соединяемы, то могут существовать различные соединения (в общем случае). Хорошо известное естественное соединение -- называемое в статье линейным естественным соединением, чтобы отличить его от другого вида, именуемого циклическим соединением -- это важный частный случай, но не единственно возможный.
Однако странно то, что приводимое в статье определение естественного соединения не требует соединяемости A и B в приведенном специальном смысле! На самом деле, это определение почти такое же, как то, которое мы используем сегодня.
Постараюсь объяснить, откуда берется это довольно ограничительное понятие "соединимости". Кодд начинает свое обсуждение соединений с важного вопроса: При каких условиях соединение двух отношений сохраняет всю информацию, содержащуюся в этих двух отношениях? И он показывает, что свойство "соединяемости" является достаточным для обеспечения сохранения всей информации (поскольку в результате соединения не теряется ни одна строка ни одного операнда). Далее он также показывает, что если A и B соединяемы, и либо A.X функционально зависит от A.Y либо B.Z функционально зависит от B.Y, то естественное соединение является единственным возможным соединением (хотя реально он не использует терминологию функциональных зависимостей -- это также оставлено на будущее). Другими словами, Кодд здесь закладывает фундамент важнейшей теории декомпозиции без потерь (которую он, конечно, развил в последующих статьях).
Замечательно, что Кодд также приводит пример, показывающий, что уже в 1969 г. он осознавал тот факт, что некоторые отношения не могут быть декомпозированы без потерь в две проекции, но могут быть декомпозированы без потерь в три проекции! Этот пример был, очевидно, не замечен большинством первоначальных читателей статьи; во всяком случае для исследовательского сообщества оказалось неожиданностью повторное открытие этого факта несколькими годами позже. Именно это повторное открытие привело к изобретению Рональдом Фейджином окончательной нормальной формы 5NF, называемой также нормальной формы проекции-соединения (PJNF).
DB2 обеспечивает более 100 встроенных функций для выполнения
различных вычислений над числами, строками, датами и другими
типами данных, а также дает пользователям возможность создания
собственных функций с использованием языков Си, Си++ и Бейзик.
Определяемые пользователями функции (User-Defined Functions -
UDF) могут принимать параметры и могут быть использованы в любом
выражении SQL, где предполагается наличие скалярного значения.
Поддерживается соглашение о передаче параметров UDF в
поставляемую пользователем программу реализации функции. Этой
программе передаются входные параметры функции, а также указатели
на буфера, в которые должны быть возвращены результат функции и
код статуса ее завершения. Создатель функции должен
откомпилировать реализующую ее программу и поместить выполняемый
файл в каталог, доступный серверу баз данных. После этого
пользователь должен зарегистрировать UDF в каждой базе данных,
где предполагается ее использование, путем выполнения оператора
CREATE FUNCTION. В этом операторе определяются типы параметров и
результата функции, указывается место расположения реализующей
программы. Описание функции помещается в таблицы системного
каталога. После этого при каждом вызове функции ее реализация
будет динамически загружаться и выполняться. Важно обеспечить
защиту выполняемого файла, поскольку он выполняется при вызове
функции без дополнительных системных проверок.
Комбинация имени функции и типов ее параметров называется
"сигнатурой" функции. SQL позволяет "перегружать" имя функции,
т.е. определять несколько функций с одним именем и разными типами
параметров. При обработке вызова функции DB2 вызывает функцию,
типы параметров которой строго соответствуют типам аргументов
вызова.
В DB2 определяемые пользователями типы данных называются
"индивидуальными типами" (distinct type"). В каждом из
индивидуальных типов используется общее представление одного из
встроенных типов (называемых "базовыми типами"), но может иметься
собственный набор допустимых операций.
Следующие операторы создают два индивидуальных типа с именами
DOLLARS и YEN, базирующихся на встроенном типе Decimal. Фраза
WITH COMPARISONS означает что можно сравнить любые два значения
типа DOLLARS и любые два значения типа YEN, однако значение типа
DOLLARS не может быть сравнено со значением типа YEN или с
обычным десятичным значением.
CREATE DISTINCT TYPE DOLLARS AS DECIMAL (10,2) WITH COMPARISONS;
CREATE DISTINCT TYPE YEN AS DECIMAL (10,2) WITH COMPARISONS;
При создании индивидуального типа DB2 генерирует функцию,
преобразующие значение индивидуального типа в значение его
базового типа и наоборот. Например, при создании типа DOLLARS
создаются функции преобразования DOLLARS(DECIMAL) со значением
типа DOLLARS и DECIMAL(DOLLARS) со значением типа DECIMAL(10,2).
Сразу после создания индивидуального типа единственными
операторами, применимыми к его значениям, являются операторы
сравнения. Например, если SALARY и BONUS - это два столбца типа
DOLLARS, то SALARY=BONUS и SALARY>BONUS являются допустимыми
предикатами, но выражения SALARY+BONUS и SALARY*BONUS не
допускаются, поскольку для типа DOLLARS не определены
арифметические операции.
Легко указать, какие из операций базового типа являются
осмысленными для созданного на его основе индивидуального типа.
Каждый встроенный оператор, такой как "+", реализуется функций с
тем же именем, что и оператор. Чтобы сделать этот оператор
применимым к индивидуальному типу, нужно просто создать функцию с
тем же именем, что и оператор, принимающую параметры и/или
возвращающую результат индивидуального типа данных. Функция,
реализующая оператор, может основываться на функции, реализующей
Если сила Oracle заключается в средствах разработки, то IBM
выигрывает в возможностях оптимизации. Хотя в обоих продуктах
оптимизаторы используют оценки стоимости плана выполнения
запроса, оптимизатор DB2 в дополнение к размерам таблиц и
возможным путям доступа принимает во внимание скорость
центрального процессора и дисковых устройств, а также полностью
переписывает запросы, которые можно выполнить более эффективно в
другой формулировке. Oracle продолжает работать над своим
оптимизатором, пытаясь навести мосты между прежним оптимизатором,
основанным на использовании правил, и средством, которое
позволило бы пользователям включать в операторы SQL подсказки,
ориентирующие оптимизатор на использование более эффективных
путей доступа.
В флагманском продукте компании Logic Works ERwin/ERX реализованы
средства моделирования в стиле "сущность-связь" с поддержкой
нотаций IDEF1X и IE. Обеспечивается прямая и обратная инженерия
для всех ведущих реляционных СУБД, синхронизация логических
моделей и физических схем. Система ModelMart обеспечивает
управление моделью при ее групповой разработке. Компонент
ERwin/OPEN поддерживает связи со средствами разработки
приложений, включая PowerBuilder и VisualBasic. Кроме того, Logic
Works предлагает средство обмена метаданными с системой
моделирования объектов компании Retional Rose.
OR-Compass - это новый продукт, который не является простым
расширением ERwin/ERX, хотя и допускается импортирование
ERX-модели. OR-Compass 1.0 работает с СУБД компании Informix
(), но в начале 1998 г. обещана поддержка
Oracle8 (), DB2 Universal Database компании IBM
() и Adaptive Server компании Sybase ().
В OR-Compass используется методология моделирования
"сущность-связь" в нотации IDEF1X.
Компоненты Row Type Wizard (RTW) и Functional Index Wizard (FIW)
помогают моделировать объектно-реляционные свойства. RTW
ориентирован на поддержку проектировщиков, мигрирующих от
реляционных к объектно-реляционным базам данных, и позволяет
произвести строчный тип на основе выбранных столбцов таблицы.
Компонент не дает возможности просто определить строчный тип. FIW
кажется более полезным, позволяя определить индекс для таблицы на
основе вычисляемого поля.
Полезным механизмом являются ModelBlades. Эти модули состоят из
определений и документации объектов, входящих в состав DataBlades
компании Informix, которые могут импортироваться из файлов
ModelBlade или скриптов DDL (Data Definition Language).
Импортируемые объекты могут включаться в определяемые
пользователями модели.
Компания объявила, что Oracle 8 будет уметь делать с объектами все, что умеет делать Informix-Universal Server, и даже больше. Однако это не так в первом выпуске Oracle 8 (этот выпуск был официально объявлен 24 июня 1997 г., см. сервер компании Oracle). В фокусе Oracle 8 находятся расширенная система типов и поддержка бизнес-объектов; появление других возможностей расширяемости ожидается в версии 8.1. Oracle концентрируется на реализации своей сетевой вычислительной архитектуры (NCA - Network Computing Architecture), и в Oracle 8 вносятся улучшенные возможности производительности, масштабируемости, доступности, репликации, разделения данных и т.д.
NCA - это трехзвенная архитектурная структура, основанная на CORBA (Common Object Request Broker Architecture). В NCA используются расширяющие компоненты, называемые "картриджами", которые могут разрабатываться Oracle или сторонними поставщиками. Впервые использование картриджей приложений и картриджей баз данных
потребовалось в Oracle Web Application Server для организации связи на основе CORBA. В контексте расширяемой среды данных Oracle будет обеспечивать компоненты на уровне промежуточного программного обеспечения приложений (например, компонент управления транзакциями в Web Application Server) и на уровне универсального сервера (Oracle 8). На объектном уровне Oracle 8 поддерживает объектные представления данных с использованием новых объектных типов и существующих реляционных данных. Кроме того, Oracle 8 поддерживает объектный кэш клиентов и навигацию между объектами по ссылкам. Транслятор объектных типов отображает объекты базы данных в соответствующие конструкции языка Си.
Далее приводится сводка свойств, имеющихся в Oracle 8 и ожидаемых в версии 8.1.
Расширяемая система типов - поддерживаются объектные типы, типы коллекций (массивы переменного размера и вложенные таблицы) и ссылочные типы. Объектный тип может применяться либо к столбцу, либо к строке и может быть семантически эквивалентен именованному строчному типу SQL-3.
Кроме того, Oracle 8 явно связывает с объектными типами методы. Пока поддерживается только один уровень вложенности таблиц (в 8.0), не поддерживаются полностью инкапсулированные ADT. Будет поддерживаться одиночное наследование. Отсутствует возможность репликации расширенных данных.
Определяемые пользователями функции - скалярные UDF, перегрузка и разрешение имени на основе типов параметров, параллельное выполнение UDF с определенными пользователями агрегатами (функции столбцов) находятся в стадии обсуждения.
Расширяемая система индексации - поддержка определяемых пользователями индексных структур и индексов на выражениях появится вместе с компонентом Database Extesibility Services.
Расширяемый оптимизатор - возможность указывать стоимость UDF и обеспечивать статистику об использовании определенных пользователями данных ожидается с появлением Database Extesibility Services. К расширенным типам пока не применяются параллельные операции.
Большие объекты и внешние данные - LOB могут храниться внутри базы данных или во внешних файлах. Oracle 8 не поддерживает доступа по чтению к внешним данным и не гарантирует их целостность. Большие объекты могут быть реплицированы, но таблицы с LOB реплицировать нельзя.
Расширяемая языковая поддержка - UDF и хранимые процедуры пишутся на PL/SQL или Си/Си++, причем подпрограммы на Си/Си++ выполняются вне адресного пространства сервера. Поддержка Java в сервере будет обеспечиваться в Database Extesibility Services (версия 8.1).
Предопределенные расширения - сервер Oracle 8 поддерживает хранение текстовых, пространственных и видео- данных; ожидается появление нового типа данных для хранения графической информации. Компания работает также с несколькими партнерами для тестирования и формализации API для Database Extesibility Services и разработки картриджей данных.
В чисто реляционных базах данных для успешной работы с данными
объемом более 250 Гбт требуется наивысшая степень параллельности
при выполнении каждого индивидуального запроса. Первейшим ключом
к распараллеливанию является структура самого языка запросов SQL.
Этот язык предназначен для работы со множествами и накладывает
немного ограничений на порядок выполнения запроса; поэтому
оптимизаторы запросов реляционных СУБД обладают такой гибкостью
при выборе планов выполнения запроса. По этой же причине SQL
исключительно подходит для параллельного выполнения.
Для использования этой возможности необходимо придумать стратегии
выполнения, обеспечивающие оптимизированное параллельное
выполнение индивидуального запроса, а не только обеспечить
параллельное выполнение последовательных индивидуальных
стратегий. Заметим, что и индивидуальные операции определения и
манипулирования данными (а также утилиты архивирования и
восстановления) должны выполняться параллельным образом.
Поставщики реляционных СУБД выполнили большую часть работы для
обеспечения такого распараллеливания. Более того, оказалось
возможным поддерживать высокую степень прозрачности для
приложений и администраторов баз данных. Этому значительно
способствовали не только структура SQL, но также и то, что ядро
языка и типы данных были в основном зафиксированы в 80-х и начале
90-х гг. И тем не менее, от производителей требуется 2-3 года,
чтобы внедрить внутреннее распараллеливание запросов в зрелую
реляционную СУБД.
Многие отмечают, что сложность внедрения параллелизма в VLDB
связана с двумя аспектами. Первый аспект состоит в замене
последовательных алгоритмов на параллельные. Второй аспект более
тонкий. Для проектирования и разработки конкурентоспособного
программного обеспечения требуется качественная перестройка
образа мышления. Например, первым поползновением разработчика
программы загрузки базы данных было бы использование функции
INSERT. Этот метод работает для малых и средних баз данных, но не
Для поддержки больших баз данных существенна поддержка
параллельного выполнения операций вставки, модификации и удаления
данных, и такая поддержка присутствует в обоих продуктах. Кроме
того, в продуктах поддерживается параллельное сканирование
индексов, но в Oracle имеются некоторые ограничения,
отсутствующие в DB2:
Параллельное выполнение операторов DML не производится, если
имеются определенные ограничения целостности: каскадное удаление;
ограничение по ссылкам таблицы к самой себе; ограничения с
отложенной проверкой
Для параллельно выполняемых операторов DML не поддерживаются
триггеры
Параллельное выполнение не происходит при наличии объектных или
LOB-столбцов.
Замечание С.Кузнецова по поводу русскоязычной терминологии: На английском языке словосочетание "range variable" лаконично и правильно отражает суть понятия. К сожалению, до сих пор мне не удалось найти столь же лаконичный русский эквивалент, хотя было много попыток. Когда-то я пытался ввести в оборот термин "ранжированная переменная", но мне справедливо указали на отсутствие явного смысла в этом словосочетании. Если кто-нибудь знает, как лучше обозначать рассматривамое понятие на русском языке, дайте мне знать, пожалуйста.
Рассмотрим следующий запрос:
Q9: Выдать все пары номеров поставщиков, располагающихся в одном и том же городе
На языке SQL возможна следующая формулировка этого запроса:
SELECT FIRST.S# AS SX, SECOND.S# AS SY FROM S AS FIRST, S AS SECOND WHERE FIRST.CITY = SECOND.CITY
FIRST и SECOND являются примерами того, что в SQL называется корреляционными именами. Однако заметим, что SQL ничего не говорит о том, что именно именуют эти имена! В отличие от этого, в реляционном исчислении такие имена определяются для ссылок на переменные с областью значения, и далее будет использоваться этот термин.
Переменная с областью значений - это переменная, определенная на некоторой конкретной таблице; значениями переменной являются строки этой таблицы. Если областью значений переменной r является таблица R, то в каждый момент времени значением выражения "r" является некоторая строка R. В SQL переменные с областью значений вводятся посредством спецификации AS в разделе FROM (не нужно путать эту спецификацию со спецификацией AS в разделе SELECT, которая позволяет назначить имя столбцу результирующей таблицы).
Покажем, что, подобно разделам GROUP BY и HAVING, переменные с областью значений являются логически избыточными в языке SQL (несмотря на то, что они активно использовались в предыдущих примерах). Для иллюстрации сначала приведем формулировку запроса Q9 без использования переменных с областью значений:
SELECT SX, SY FROM ( SELECT S.S# AS SX, S.CITY FROM S) AS POINTLESS1 ) NATURAL JOIN ( SELECT S.S# AS SY, S.CITY FROM S) AS POINTLESS2 )
Планирование ресурсов предприятия (Enterprise Resource Planning - ERP) требует наличия нескольких приложений, критичных для крупномасштабных организаций: финансы, человеческие ресурсы, управление системой поставок и т.д. На рынке ERP доминирует всего несколько поставщиков, в число которых входят , , и Oracle. Их программное обеспечение обычно строится поверх РСУБД.
ERP-приложения выполняют много транзакционных функций, которые базируются на нормализации для гарантирования высокого уровня параллельности и эффективности за счет минимизации числа обращений к дискам и блокировок. Другой важной областью применения РСУБД являются приложения, не относящиеся к категории ERP: резервирование, управление продажами, обслуживание заказчиков и т.д. Не слышно, чтобы поставщики таких приложений собирались перейти к использованию ОРСУБД. Продукт Universal Database Enabler компании Formida дает возможность использования объектов R/3 в приложениях Formida, но из этого не следует, что SAP применяет средства ОРСУБД. Единственной новостью, вызывающей вопросы, является участие компании Baan в разработке JavaBlend. Заключение автора: современные ОРСУБД могут являться универсальными серверами, но они далеки от универсального использования. Они могут управлять новыми типами данных, но поставщики корпоративных приложений вполне удовлетворены набором типов и ограниченными возможностями расширений РСУБД.
Явление Internet вызывает существенные изменения в способах
ведения бизнеса. В Сети все равны. Трудно узнать, является ли
бизнес-партнер в Internet большой многонациональной корпорацией
или лавочкой, расположенной в подвале. В этих условиях
конкуренция должна основываться на доступности продуктов, уровне
цен и качестве сервиса. DB2 v.5 и Oracle8 встречают появление
новой культуры рынка, обеспечивая развитую поддержку
Web-технологии. Пакет DB2 включает Net.Data, мощную поддержку
языка Java и средства интероперабельности со многими программными
средствами поддержки Internet производства как IBM, так и
других компаний. Oracle также предлагает развитую поддержку Web,
но не поддерживает хранимые процедуры и определенные
пользователями функции, написанные на языке Java. Продукт Web
Server, существующий со времени выпуска Oracle7, очень похож на
Net.Data и обеспечивает сопоставимые возможности за счет
использования брокера заявок web (web request broker). Net.Data и
Oracle Web Server упрощают написание интерактивных Web-приложений
путем расширения языка HTML средствами определения логики,
переменных, вызовов программ и производства отчетов.
Поддерживаются условная логика, HTML и подстановка переменных, а
также VRML.
Что же будет дальше в мире промежуточного ПО? Коротко говоря,
Web, распределенные объекты, Web, Java и снова Web. Появление
Web-технологии применительно и к Internet, и к intranet дало
новую жизнь бизнесу промежуточного ПО. В то время, как компании
начинают связывать свои базы данных и другие ресурсы с Web,
производители промежуточного ПО получают удачную возможность
создать продукты, облегчающие этот процесс. Ирония ситуации
состоит в том, что использование браузера в качестве общей
платформы приложений "клиент-сервер" и HTTP в качестве общего
промежуточного ПО снижает интерес к промежуточному ПО на стороне
клиента. Анализируя возможности Web-технологии, нужно понимать,
что наибольшая выгода от промежуточного ПО может быть получена на
стороне сервера.
Популярные продукты промежуточного ПО, основанные на Web, можно
разделить на две категории - серверные и клиентские. Серверные
продукты обеспечивают связь между Web-сервером и сервером баз
данных с передачей данных клиенту на основе использования HTTP и
HTML. Часто встречается промежуточное ПО, поддерживающее и
разработки приложений, обеспечивая, например, возможность
отображения атрибутов базы данных на Web-страницы. Категория
серверных Web-продуктов промежуточного ПО включает, в частности,
WebDBC компании и Internet Database Connector (IDC), входящий теперь в состав
Microsoft Internet Information Server. Обычно такие продукты
легко устанавливаются и просто используются, обеспечивая
Web-мастеров и разработчиков приложений визуальной средой
разработки публикации данных из баз данных. На переднем крае
можно найти такие продукты как ActiveWeb компании , программная коммуникационная система,
дающая разработчикам доступ к приложениям, базам данных и
браузерам, поддерживающим Java, для обмена информацией через Web.
Конечно, и другие серверные продукты промежуточного ПО
обеспечивают разработчикам простой доступ к серверам приложений и
даже к унаследованным системам.
Криком моды являются клиентские Web-продукты промежуточного ПО.
Пользовательский интерфейс JDBC дает возможность строить
распределенные запросы в графической среде таким образом, что
несколько запрашиваемых баз данных представляются как одна база
данных. От пользователей не требуется знание схемы каждой
подключаемой базы данных. JavaDQD анализирует метаданные этих баз
данных и предоставляет пользователям информация об их схемах.
Диалог подключения к базе данных дает возможность подключиться к
локальным или удаленным базам данных и к временной базе данных.
Для выполнения подключения требуется указать URL базы данных и,
если это требуется, имя пользователя и пароль. В URL базы данных
указываются драйвер JDBC, источник данных и порт базы данных. Для
упрощения действий URL и имя пользователя могут быть сохранены в
конфигурационном файле, загружаемым во время инициализации
JavaDQD.
Для формулировки запросов и манипулирования данными используется
интерфейс в стиле QBE, при разработке которого использованы
средства GUI Java и MCT (Microline Component Toolkit). Компоненты
GUI и наличие в JDBS API возможности зондирования схемы базы
данных дают возможность динамического построения QBE-подобного
интерфейса после подключения к базе данных. Интерфейс дает
возможность создания и уничтожения объектов базы данных, а также
выборки, занесения, модификации и удаления строк таблиц.
Интерфейс создания таблицы состоит из трех основных компонентов.
Во-первых, выдается список всех текущих баз данных. Пользователь
может выбрать базу данных, в которой будет создана новая таблица.
Во-вторых, выдается текстовое поле для ввода имени новой таблицы.
В-третьих, выдается решетка, в которой можно определить столбцы
таблицы: имя столбца, поддерживаемый тип данных и длину столбца.
Поддерживаемые типы данных определяются динамически путем
зондирования схемы выбранной базы данных.
Интерфейс выборки позволяет пользователям выбрать данные из
распределенной базы данных. Эти данные затем показываются во
фрейме результата. Интерфейс выборки показывает список доступных
В этом разделе Кодд начинает обсуждать некоторые вопросы, которые позже вошли в целостную часть реляционной модели. Отношение называется порождаемым, если и только если оно является выражаемым в смысле предыдущего раздела. (Заметим, что это определение порождаемости не является точно тем же, которое я защищал выше, поскольку -- по крайней мере, неявно -- под него подпадают и базовые отношения.) Набор отношений называется строго избыточным, если включает по крайней мере одно отношение, порождаемое (в смысле Кодда) из других отношений этого набора.
В статье 1970-го г. это определение слегка улучшено: Набор отношений называется строго избыточным, если включает по крайней мере одно отношение, некоторая проекция которого -- возможно, тождественная проекция, т.е. проекция на все атрибуты -- порождаема из других отношений этого набора. (Я взял на себя смелость несколько упростить определение Кодда, хотя, конечно, старался сохранить его исходный смысл.)
Затем Кодд приводит наблюдение, что именованные отношения, вероятно, будут строго избыточны в этом смысле, потому что они, вероятно, будут включать как базовые отношения, так и представления, порождаемые из этих базовых отношений. (На самом деле, в статье говорится, что "[такая избыточность] может служить для улучшения доступности определенных видов информации, для которой существует большой спрос"; это один из способов сказать, что представления обеспечивают полезную сокращенную запись.)
Однако хранимые отношения обычно не будут строго избыточны. Кодд развивает эту мысль в статье 1970-го г.: "Если ... строгая избыточность в именованном наборе прямо отражается ... на хранимом наборе ... то, вообще говоря, расходуются дополнительные пространство памяти и время обновления, [хотя может также достигаться] сокращение времени выполнения некоторых запросов и загрузки центральных процессоров."
Лично я сказал бы, что базовые отношения определенно не должны быть строго избыточными, но хранимые отношения могут быть таковыми (в зависимости -- как всегда на уровне хранения -- от соображений эффективности).
Можно произвести много изменений моделей для повышения их эффективности, и общие рассуждения следует основывать на некоторых общих принципах:
Все СУБД функционируют на основе файлов. В случае реляционных СУБД файлы представляют таблицы, содержащие данные. Для приложения каждый файл или таблица, который СУБД должна содержать открытым или для которого требуется поддерживать указатель, составляет дополнительный накладной расход. Следовательно, чем меньше таблиц, тем выше эффективность. Все данные, выбираемые СУБД, должны обрабатываться в том порядке, который соответствует плану обработки. В зависимости от сложности физической структуры, которая должна обрабатываться, может потребоваться перемещение данных в разные компоненты СУБД. Другими словами, при наличии сложных и неэффективных структур данных СУБД приходится выполнять более сложные действия, вовлекающие большой объем ввода/вывода и снижающие пропускную способность.
Полностью функциональные СУБД обладают автоматизированными механизмами восстановления единиц работы. Большая их часть основывается на использовании журнализации единиц работы. Хороший проект модели существенно влияет на размер связанных наборов данных, вовлекаемых в единицы работы. Чем больше и сложнее единицы работы, тем дольше длятся журнализация и восстановление.
СУБД подобны мотору: чем лучше качество горючего, тем выше эффективность. Некоторые производители настраивают свои СУБД с целью частичного или полного распознавания последовательного ввода, чтобы использовать возможность упреждающего чтения блоков. Устранение непоследовательных, низкокачественных данных поможет серверу работать более эффективно.
Во введении я выражал желание увидеть схему с двузначной логикой
и значениями по умолчанию, понятность и простота которой
уравновешивала бы уменьшение выразительной мощности. Поскольку
Дейт не дал нам такую схему, я кратко обрисую ее сам.
Прежде всего, я согласен с Дейтом в том, что по возможности нам
стоит устранить в своих базах данных атрибуты, допускающие
неопределенные значения. С некоторыми оговорками (которые здесь
не буду разъяснять) я согласен и с тем, что хорошим подходом
является расщепление типа сущности с подобным атрибутом на два
подтипа. В первом подтипе атрибут не сможет содержать
неопределенные значения, а во втором не будет самого этого
атрибута.
Во-вторых, я полагаю, что для идентификации специальных значений
следует зарезервировать одно или несколько значений из обычного
домена атрибута. Все что требуется, это одно значение, которое
означает, что "реальное значение отсутствует". Возможно,
потребуется различать случаи неприменимости, неизвестности и "то
или другое, не знаю точно что". В ответ на часто используемый
Дейтом аргумент, что имеется произвольное число различных типов
неопределенных значений и, следовательно, потребуется MVL с
произвольным числом истинностных значений, я заметил бы, что мне
кажется наивным полагать необходимость наличия формально
отличаемого вида неопределенных значений для каждого способа
формулировки условия отсутствия значения на естественном языке. В
книге Atzeni и DeAntonellis "Relational Database Theory"
(Benjamin/Cummings, 1993) показано, что любое такое условие можно
свести к одному из упомянутых выше.
При возможности, следует ввести бизнес-правила, гарантирующие,
что выбираемое значение не будет омонимом (т.е. не будет
использоваться в разном смысле). Например, если на предприятии
действует правило, что размер счета не может быть нулевым, то
можно использовать нули в атрибуте размера счета для индикации
отсутствия реального значения.
Однако иногда это невозможно.
Если на предприятии допускаются
счета нулевого размера, то наличие в столбце значения
"$000,000,00" будет означать a) счет нулевого размера и b)
"реальное значение отсутствует". Чтобы разобраться с подобными
омонимами, требуются дополнительные расходы. Выходом из положения
является добавления флага, отличающего нулевые счета ото всех
остальных, или использование в качестве специального значения
менее критичного и очень редко используемого реального значения
(например, "$999,999,98"). В последнем случае мы не устраняем
расходы на различение омономов, но существенно их сокращаем. На
самом деле, этот вид стратегии удешевленного использования
омонимов использовался десятки лет.
Наконец, заметим, что стратегия избежания омонимов с
использованием некоторого значения для идентификации "отсутствия
реального значения", не значащего ничего больше, предоставляет ту
же выразительную мощность (и те же сложности), что схема Дейта со
специальными значениями. Собственно, стратегия состоит в том,
чтобы найти представление UNK внутри обычного домена, а не
заставлять производителей СУБД расширять этот домен.
Новая схема Дейта является альтернативой MVL с неправильно
определенной операцией сравнения по равенству, полным отсутствием
операций сравнения на больше и меньше, невозможностью получать
полную информацию из базы данных и существенным усложнением
написания даже простых запросов. Более того, теперь, когда мы
понимаем, как далека схема Дейта от реализации, видно, что наши
дебаты не имеют непосредственного отношения к практической
разработке и использованию баз данных. И проектировщики, и
пользователи будут продолжать работать при наличии ограничений,
свойственных применяемым диалектам SQL.
Консерваторы будут избегать использовать неопределенные значения
и MVL, осмотрительно остерегаясь сложности. Чтобы им помочь, я
кратко изложил практический подход к управлению отсутствующей
информации, который может быть использован при наличии
сегодняшних продуктов баз данных. Этот подход не претендует на
оригинальность и лишь немного расширяет существующую практику.
Более рисковые пользователи будут использовать неопределенные
значения и, возможно, иногда им придется обжигаться. Но
постепенно у них составится понимание сути неопределенных
значений и MVL, которое невозможно получить при чтении книг.
Пользователи будут переходить к ОРСУБД, если их собственным или разработанным сторонними поставщиками приложениям потребуются объектные расширения. ОРСУБД приняты в ряде важных прикладных областей, но в их число не входят области, обеспечивающие хлеб для РСУБД.
Success Story. Области, в которых у ОРСУБД дела обстоят хорошо, включают управление графической, аудио, видео, текстовой информацией, временными рядами, геопростраственными данными, а также Web-приложения. Для управления медиа-информацией требуется применение идейно простых методов к неструктурированным данным. В отличие от этого, управление временными рядами и геопространственными данными требует наличия относительно сложных структур данных и применения аналитических методов. Web-приложения занимают промежуточную позицию, основываясь на неструктурированных данных для представления шаблонов динамических страниц и усложненных методах управления переменными, логикой страниц и запросами к базам данных. Принятие для использования расширяемого языка разметки (eXtensible Markup Language - XML) поможет добиться большей структуризации шаблонов Web-страниц и других документов.
До появления ОРСУБД управление временными рядами, текстовыми и геопространственными данными обычно проиводилось с помощью специализированного программного обеспечения с нестандартизованными интерфейсами и языками запросов. Медиа-данные (и часто тексты) хранились в файловых системах и индексировались с помощью специальных средств. ОРСУБД привнесли во все эти области возможности, которые дают возможность манипулировать данными с помощью стандартного языка, интегирующего запросы к обычным и экзотическим данным.
OLAP и хранилища данных (datawarehousing). OLAP (On-Line Analitycal Processing) - это интерактивный, исследовательский анализ данных, основанный на выделении нужных слоев многомерных кубов и агрегировании по измерениям. Развитые OLAP-системы позволяют связывать индивидуальные значения с агрегатами и с другими значениями. Для этих систем важно то, что можно делать с данными, а не как они хранятся.
Можно хранить кубы в специализированной многомерной базе данных или с помощью РСУБД. В последнем случае многомерное представление достигается с помощью реляционных OLAP-систем (ROLAP).
У каждого поставщика ОРСУБД имеются OLAP-средства. Компания IBM интегрирует продукт Essbase компании с DB2 и обеспечивает использование своего продукта Visual Warehouse в продуктах компании . Informix продает средство Metacube ROLAP, которое основано на технологии, полученной от Stanford Technology Group. Oracle предлагает Express Server (купленный у компании , в просторечии IRI Software), история которого восходит к 1970 г. Однако перспективы встраивания функций OLAP в ОРСУБД кажутся отдаленными. Расширения собственных аналитических возможностей СУБД выглядят, в лучшем случае, неоднородными. К хорошим примерам относятся продукты SQL Expander для DB2 компании , обеспечивающий ряд аналитических функций для обычных данных DB2, и S-Plus DataBlade компании , предоставляющий возможности статистического анализа, моделирования и визуализации.
Возможно, поставщики не имеют стимула, полагая, что их текущие реляционные и многомерные СУБД хорошо обслуживают приложения. Но имеются и технические проблемы, такие как написание эффективного кода для управления большими разреженными многомерными массивамм данных с множественными иерархиями и потребность в единообразных, быстрых, не ограниченных одним измерением вычислениях. Аналогичные трудности сохраняются для хранилищ данных, которые обычно основываются на многомерных моделях данных, реализуемых звездообразными схемами (или вариантами "снежинка" и "создездие"). В реализациях используются битовые индексы, доступные в традиционных СУБД. (Джерри Додж и Тим Горман (Gary Dorge and Tim Gorman, Oracle8 Data Warehousing, John Wiley & Sons, 1998) утверждают, что они осветили все возможности Oracle7 и Oracle8, но во всей книге не разу не упомянута поддержка объектов в Oracle8.)