Фирма Ardent Software Inc. предлагает две постреляционные СУБД: uniVerse и UniData. Фактически эти СУБД используют одни и те же технологии и очень похожи набором свойств и инструментов. Сама фирма Ardent образовалась в 1997 г. после слияния двух фирм VMARK и UniData поддерживавших параллельные технологии и долгое время конкурировавших межу собой. Эти СУБД в своей основе используют модель данных и набор процессоров предложенных фирмой Pick Systems. Поскольку эти СУБД очень похожи, то дальнейший их обзор будет вестись со ссылкой на СУБД uniVerse, а различия будут даны в конце обзора. Кроме того, фирма Ardent планирует интеграцию этих двух СУБД в следующих версиях (uniVerse rel.10, UniData rel. 5).
Сервер базы данных - особенности реализации
Текущая версия uniVerse - rel.9.5 имеет реализации для большинства коммерческих версий UNIX и для Windows NT. Данные в СУБД uniVerse физически разделяются на различные базы - так называемые счета. Счета подразделяются на системные и счетах данных.
Рис 3. Структура счетов uniVerse
К системным счетам относятся счет UV в котором хранятся системные таблицы, основные системные процедуры, а также информация о настройках системы и SQL.Catalog - счет в котором хранятся данные о всех таблицах, видах, ограничениях целостности, SQL пользователях и их правах доступа.
Каждый счет данных содержит главный каталог - таблицу под названием VOC, содержащую сноски на таблицы данных, сноски на удаленные таблицы, ссылки на выполняемые процедуры, а также служебную информацию.
Рис 4. Варианты распределения данных внутри таблиц
Каждая таблица имеет словарную часть и часть данных, таблицы могут иметь несколько частей данных, или же несколько таблиц могут быть объединены в одну общую, при этом пользователь может определить алгоритм распределения данных по первичному ключу между таблицами.
Все поля данных (колонки) в таблице имеют переменную длину и хранят только необходимое количество байт информации. Длина данного хранимого в поле не ограничена, количество полей в таблице также не ограничено. Кроме того, данные в поле каждой записи (строке) могут иметь несколько значений, тогда такие поля называются многозначными. Многозначные поля могут быть объединены в группы, тогда они образуют вложенные таблицы.
Словарь таблицы определяется пользователем и содержит два типа определения полей типа "D" - определяющих реальные данные и типа "I" - определяющих вычисляемые поля и содержащих формулу вычисления. Примером может служить формула содержащаяся в поле НДС:
ЦЕНА / 6
В словаре может быть определено несколько виртуальных полей на одно реальное поле данных. Это может быть полезно для различного представления одних и тех же данных. Например, поля "ГОД_РОЖДЕНИЯ", "ВОЗРАСТ" и "ДАТА_РОЖДЕНИЯ" могут представлять по разному одни и те же данные.
Для хранения данных используются хэшированные таблицы с различными алгоритмами хеширования, один из которых позволяет динамически изменять параметры таблицы, что избавляет администратора базы данных следить за переполнением таблиц, осуществлять операции по переразмещению данных и т.п.
Для создания триггеров и хранимых процедур используются встроенный язык -" uniVerse BASIC" с мощными средствами обработки данных или TCL - язык интерпретатора команд. Поскольку uniVerse поддерживает вложенные транзакции, хранимые процедуры могут вызываться рекурсивно.
Имеется интерфейс для вызова процедур написанных на С. TCL и uniVerse BASIC используются также для создания приложений для "тупых" терминалов. Для создания Intranet/Internet приложений предоставляется Web Development Kit.
uniVerse поддерживает SMP и MPP архитектуру, что представляет хорошие возможности для масштабирования приложений. В США функционируют системы поддерживающие до 2000 пользователей на одной машине (PYRAMID).
Сетевые возможности uniVerse позволяют поддерживать в гетерогенных средах распределенные таблицы (утилита UV/Net) и репликацию данных. В сочетании с возможностями создавать горизонтально-распределенные таблицы это позволяет разработчику широко варьировать распределение данных по сети.
Общее администрирование системы осуществляется по сети, через набор простых утилит с удаленной рабочей станции Windows или непосредственно на сервере в оболочке uvsh.
Методы доступа к данным
Ядро СУБД uniVerse оптимизировано по производительности для поддержки двух моделей данных: реляционной (традиционный доступ через SQL) и модели хранения бизнес-объектов (доступ через внутренние средства uniVerse). Доступ к данным может осуществляться в интерактивном режиме с использованием процессоров из оболочки uvsh, через стандартный интерфейс ODBC или через соответствующий программный интерфейс (API).
Рис 5. Методы доступа
СУБД uniVerse позволяет проектировщику реализовывать оба подхода. Для каждого из них имеется соответствующий набор инструментов. Для первого - стандартный SQL, включая ODBC драйвер и соответствующий API - uniVerse Calling Interface (UCI), для второго - средства доступа к базе данных через процессоры оболочки uniVerse, интерфейс доступа к объектам, реализация которого для Windows включает Active-X компоненты (uniVerse Objects) и интерфейс низкого уровня InterCall.
uniVerse поддерживает многомерные массивы и вложенные таблицы, но динамическая нормализация данных распространяется только на вложенные таблицы. Вложенные таблицы имеют заранее предопределенные вложенные отношения и ограничения целостности: вложенная таблица не может существовать без записи к которой она относится и при удалении записи главной таблицы вместе с ней удаляются и все ее вложенные таблицы.
Для реализации второй модели была выбрана запись-ориентированная система доступа к данным. С одной стороны, записи выступают как строки в таблице и над ними могут осуществляться соответствующие операции выборки/обновления и проч., а с другой стороны, каждая запись может быть набором информации, содержащим в том числе вложенные таблицы и динамические массивы данных.
Типичный пример доступа к записям uniVerse через uniVerse Objects в кодах Visual Basic представлен ниже:
... Set UVCommand = ObjSession.Command Set InvList = ObjSession.SelectList(0) Set InvTable = ObjSession.OpenFile("INVOICES") UVCommand.Text = "SELECT INVOICES IF NAME LIKE JOHN..." UVCommand.Execute InvTable.RecordId = InvList.Next InvTable.Read Invoice = InvTable.Record Invoice.Field(ACCEPTED) = DateNow() InvTable.Record = Invoice InvTable.Write ...
Доступ к записи осуществляется по первичному ключу. Выборка списков ключей может осуществляться через операторы SQL или специальными средствами uniVerse (процессор RetrieVe, B-tree индексы, последовательная выборка).
При обращении к записи как к объекту вложенные таблицы выступают как двумерные или трехмерные динамические массивы. Динамические массивы позволяют добавлять, удалять строки, столбцы, количество измерений без переопределения. Для работы с динамическими массивами разработчику предоставляются соответствующие средства. Такая гибкость представления данных позволяет разработчику хранить в записях сложные бизнес-объекты со множественными наборами параметров, добавлять свойства объектов. При этом все изменения объектов после их записи сразу же отражаются на общей картине данных представленной как набор таблиц. Для обеспечения коллективного доступа к бизнес-объектам применяется механизм блокировок, обеспечивающий разный уровень ограничения доступа к данным.
Процессоры uniVerse
Ядро базы данных uniVerse состоит из нескольких процессоров предоставляющих разработчикам и пользователям средства для доступа и обработки данных. Здесь вкратце будут рассмотрены три основных процессора: командный процессор TCL, процессор запросов и отчетов RetrieVe и процессор языка uniVerse BASIC.
Язык BASIC обладает мощными средствами обработки данных и ориентирован на создание бизнес приложений. Кроме обычных атрибутов процедурного языка uniVerse BASIC имеет следующие особенности: отсутствие системных типов данных - все данные представляются одним типом - strings, мощные механизмы строковой обработки, механизм доступа и управления доступом к базе данных, возможность вызова других процессоров и передачи данных, средства обработки динамических массивов, средства преобразования в пользовательские типы данных, интерфейс вызова программ написанных на других языках, средства доступа к операционной системе.
Процессор запросов RetrieVe предоставляет мощные средства для запросов с использованием вложенных таблиц и предназначен для выполнения двух основных задач - получение списков первичных ключей для дальнейшей выборки записей из базы данных (оператор SELECT) и получение отчетов из базы данных с необходимыми сортировками, итогами, подитогами и т.д. (оператор LIST).
Командный процессор TCL содержит набор системных команд и позволяет создавать пользовательские команды на основе программ написанных на BASIC, предложений RetrieVe, команд и программ операционной системы.
Особенности SQL uniVerse
Реализация uniVerse SQL поддерживает :
uniVerse SQL максимально приближен к стандарту ANSI SQL 92 но имеет некоторые расширения, обеспечивающие совместимость с моделью данных объектов реального мира. В основном они касаются возможности поддержки вложенных таблиц данных и связанных с ними вложенных отношений.
Для обеспечения совместимости с реляционным представлением данных при обращении к данным содержащим вложенные таблицы производится динамическая нормализация данных т.е. для приложений не поддерживающих вложенные таблицы (например MS Access) данные представляются в виде набора таблиц с обычными реляционными отношениями.
Основные отличия СУБД uniVerse и UniData
uniVerse | UniData |
---|---|
Репликация данных | Доступ к другим СУБД как собствнным таблицам |
Поддержка UNICODE | Поддержка подзначений в SQL |
Вложенные транзакции | |
ODBC вызовы из BASIC |
Средства разработки
Кроме встроенных средств разработки (UNIVERSE BASIC, SQL) для СУБД uniVerse и для других СУБД фирма Ardent поставляет среду разработки SB+ , среду для разработки Web приложений RedBack и систему проектирования и построения хранилищ данных DataStage Кроме того для разработки приложений могут использоваться такие продукты как MS Visual Basic, MS C++, Borland Delphi, Power Builder, UniFace
Дополнительную информацию о СУБД uniVerse вы можете получить через Web сервер www.ardentsoftware.com или обратившись в московское представительство Ardent по телефону 135-7471.
Шабаев Илья Гумарович
Назад | Содержание | Вперед