П.П. Красюк
Borland АО, (+7 095) 366-42-98
Borland InterBase Workgroup Server - сервер реляционных баз данных, оптимизированный для реализации технологии upsizing (укрупнения) многопользовательских приложений. Технология upsizing предполагает переход от многопользовательских приложений, построенных по традиционной файл-серверной модели (таких, как приложения на FoxPro, Clipper, dBASE, Paradox) к приложениям с архитектурой клиент - сервер.
Новая версия InterBase 4.0 - сервера, традиционно доступного на всех основных UNIX-платформах (IBM, Sun, HP), оптимизирована для использования на Novell NetWare и Windows NT и обладает рядом функций, обязательных для современного SQL-сервера баз данных. К таким функциям относятся наличие хранимых процедур, расширенная поддержка триггеров, декларативная ссылочная целостность и т.д. Эти функции соответствуют стандарту ANSI/ISO SQL92 или, где возможно, проекту SQL3.
Важной особенностью новой версии является поддержка технологии C/S Express. Это особенно полезно при использовании InterBase 4.0 в качестве upsizing средства, т.к. позволяет сохранить привычную навигационную нотацию файл-серверной модели при переходе к архитектуре C/S.
Возможность обеспечивать как навигационный, так и SQL доступ к данным, является уникальной и делает InterBase 4.0, привлекательным средством для построения информационных систем различного масштаба - от небольшой рабочей группы до целого предприятия.
В данной статье мы рассмотрим следующие аспекты технологии InterBase 4.0 компании Borland:
- Архитектура ядра InterBase.
- Средства программирования.
- Интеграция с приложениями для PC.
- Средства поддержки национальных версий.
Архитектура ядра InterBase
Borland InterBase Workgroup Server обладает рядом свойств, позволяющих решать задачи оперативной обработки транзакций и обеспечивать режим поддержки принятия решений. Среди таких свойств важнейшие являются технология многоверсионности (Versioning Engine), поддержка распределенных баз данных и наличие нестандартных типов данных.
Многоверсионное ядро
Технология многоверсионности ядра обеспечивает бесконфликтный доступ к данным за счет ведения нескольких поколений записей. Когда транзакция модифицирует запись, InterBase создает новую запись. Во многих случаях новая запись представляет собой компактную запись изменений. InterBase связывает все такие записи и образует многоверсионную запись. Когда транзакция стартует, ей доступна наиболее поздняя версия записи, созданная завершенной транзакцией.
Если в процессе работы длинной транзакции, такой как получение архивной копии базы данных, будут внесены изменения в базу данных, это не нарушит целостностный вид архивной копии, так как эта транзакция имеет дело с предыдущей версией записи. Таким образом, транзакция "по чтению" никогда не конфликтует с транзакцией "по записи".
Побочным эффектом такой архитектуры является повышенная готовность системы, т.к. в случае аппаратных сбоев осуществляется откат к предыдущему состоянию с отменой незавершенных транзакций и результата их работы по обновлению базы данных.
Предыдущие версии записей ведутся до тех пор, пока существует активная транзакция, начавшаяся до момента модификации данной версии. Версии записи, более старые, чем самая старая активная транзакция, удаляются из системы следующей транзакцией с освобождением занимаемых системных ресурсов.
Распределенные базы данных
Технология построения InterBase позволяет создавать распределенные базы данных и обеспечивает возможность для приложения-клиента открыть необходимое количество БДцелью содействие распространению концепций и методологии открытых систем в странах бывшего Советского Союза, SUUG оказывает своим членамамммирования. Это означает, что если в процессе транзакции обновляются записи на различных узлах сети, то процесс фиксации происходит в две фазы. Вначале осуществляется предварительная фиксация транзакции в каждом узле, и если на одном узле фиксация оказывается невозможной, происходит откат и на остальных узлах. Если проблемы не было ни на одном узле, осуществляется окончательная фиксация.
Сложные типы данных
Помимо общепринятых типов данных, таких как алфавитно-цифровая информация, даты и т.д., InterBase обладает возможностью работы с неструктурированными данными, сохраняя их в виде объектов типа BLOB (Binary Large Objects - большие двоичные объекты). В виде BLOB может быть сохранена любая двоичная информация: изображения, оцифрованный звук, исполняемые модули программ. Особенностью реализации BLOB в InterBase является сегментированный доступ к ним, что позволяет увеличить производительность прикладных систем.
Другим нетрадиционным типом данных, допустимым в InterBase, является многомерный массив. В InterBase в качестве поля записи может быть сохранен массив произвольных данных (кроме BLOB) с размерностью от 1 до 16. Наличие такого типа данных позволяет эффективно строить приложения, работающие в финансовой, промышленной и научно-исследовательской области.
Средства программирования
InterBase предлагает разработчику прикладных систем ряд возможностей по реализации "активных" функций ядра. Это позволяет перенести часть приложения с компьютера - клиента на сервер, что повышает производительность и облегчает сопровождение прикладных систем
Декларативная целостность обеспечивает непротиворечивость данных на сервере. В отличие от реализации целостности с помощью триггеров декларативная целостность проще в применении и отладке. Существуют четыре категории средств обеспечения декларативной целостности:
Unique and Primary Key (уникальный первичный ключ) - гарантирует уникальность значения ключевого поля записи;
Referential Integrity (ссылочная целостность) - гарантирует соответствие значения ключевого поля записи подчиненной таблицы значению ключевого поля в главной таблице;
Check Constraint (ограничение допустимости) - гарантирует, что правило допустимости, связанное с данным ограничением, истинно для каждой записи в таблице;
Domain (домен) - позволяет создать новые подтипы с описанием допустимых значений и значений по умолчанию.
Хранимые процедуры - группа операторов, сохраняемая в базе данных, а не в приложении. Хранимые процедуры могут включать в себя операторы SQL, операторы передачи управления и т.д. Преимущества использования хранимых процедур:
Производительность - перенос на сервер часто используемых правил приводит к существенному повышению производительности;
Многократное использование кода - части приложения, перенесенные на сервер, могут использоваться любыми другими приложениями, получающими доступ к серверу;
Надежность - за счет централизованного характера сопровождения хранимых процедур вероятность некорректной их работы существенно снижается.
Хранимые процедуры InterBase соответствуют проекту ANSI/ISO SQL 3. В хранимых процедурах допустимы конструкции begin....end, if...then...else, while, for, when и т. д. Внутри хранимых процедур может быть предусмотрена обработка исключений. Исключения затем могут быть обработаны, используя оператор WHEN. Хранимые процедуры могут быть вложенными, а также рекурсивными, т.е. вызывать сами себя.
Триггеры - это еще одно средство построения "активной" базы данных, дополняющее хранимые процедуры. Триггеры - группа операторов, которые автоматически выполняются при вводе, модификации, удалении записи. При выполнении условия триггера, например "после модификации", группа операторов, образующих тело триггера, выполняется автоматически. Триггеры могут вызывать выполнение хранимых процедур и инициировать выполнение других триггеров. Понятие триггерного класса позволяет явно указать порядок выполнения триггера, если триггерное условие выполняется, для нескольких триггеров одновременно.
Сигнализаторы событий. Технология хранимых процедур и триггеров может быть использована для информирования приложения о наступлении некоего события, например, об изменении внутри базы данных. Приложение "заинтересованное" в получении информации о наступлении такого события сообщает диспетчеру событий о своем "интересе" и переходит в состояние ожидания или продолжает выполнять другие задачи. При наступлении события, диспетчер получает от сигнализатора извещение о нем и информирует приложение, зарегистрировавшее свой "интерес". Например, диспетчер событий может послать в отдел закупок сообщение по электронной почте, если остатки запасов по складу стали меньше допустимого предела.
Преимущества использования сигнализаторов событий:
Производительность - сигнализаторы событий уменьшают сетевой трафик и перегрузки, связанные с непрерывным опросом БД;
Надежность - сервер не пропустит событие независимо от продолжительности его действия;
Снижение стоимости сопровождения - одни и те же сигнализаторы событий могут быть использованы различными приложениями.
Интеграция с приложениями для PC
PC-клиенты подключаются к InterBase 4.0 с помощью технологии интегрированного интерфейса к базам данных (Integrated Database Application Programming Interface - IDAPI) фирмы Borland, которая является общей технологией промежуточного уровня, используемой в таких программных продуктах Borland, как Paradox и dBASE. Сегодня IDAPI поддерживает связь c dBASE и Paradox через ориентированный на интерактивную работу интерфейс, а подключение к InterBase, Oracle и Sybase - через ориентированный на работу с наборами интерфейс SQL (Borland SQL Link).
Альтернативным способом доступа к данным InterBase может быть технология ODBC. В комплект поставки InterBase входит ODBC драйвер, а все IDAPI-приложения имеют возможность взаимодействовать с ODBC-совместимым источником данных.
С появлением InterBase 4.0 средства IDAPI поддерживают для InterBase 4.0 специальную технологию связи с базой данных, которая называется Express Link. Являясь частью технологии IDAPI фирмы Borland, Express Link, минуя собственные средства персонального приложения, обеспечивает через IDAPI прямую связь между персональными приложениями и сервером InterBase.
Подобные функциональные возможности требуют наличия двух компонентов: драйвера и сервера, который может отвечать на команды персонального приложения. С помощью InterBase 4.0 сервер базы данных поддерживает две модели взаимодействия с сервером. С использованием Express Link, InterBase 4.0 может функционировать, как подлинный сервер для клиентов Paradox и dBASE с непосредственной поддержкой в механизме базы данных таких средств, как перемещение по записям и их обновление. Через динамические и встроенные вызовы SQL InterBase 4.0 может также поддерживать операционную среду для традиционных SQL-приложений.
Таким образом, InterBase 4.0 поддерживает две интерфейсных операционных среды:
- Технологию Express Link (использующую IDAPI) с поддержкой таких персональных инструментов, как dBASE, Paradox и другие продукты Windows на базе IDAPI.
- SQL, позволяющую реализовать доступ на базе статических или динамических операторов SQL.
Основываясь на конкретных потребностях, приложение может свободно сочетать эти модели.
Для взаимодействия с сервером персональное приложение на PC, включая Paradox и dBASE, может вызывать администратор IDAPI. Сами функции IDAPI по характеру выполняемой ими работы подразделяются на функции перемещения и функции SQL. Вызовы SQL в IDAPI основаны на спецификации X-Open Call Level Interface, в то время как расширения вызовов персональных приложений IDAPI предназначены для реализации характерной технологии программирования персональных приложений. Для получения общей рабочей среды некоторые вызовы используются совместно как в режиме SQL, так и в режиме перемещения. Режим взаимодействия приложения с сервером InterBase 4.0 обычно определяется режимом текущего вызова IDAPI. Использование SQL или режима перемещения прозрачно для пользователя.
Таблица и перебор индекса
Для поддержки ориентированного на записи доступа обычно требуется выполнение на промежуточном уровне трансляции, преобразующей запросы персонального приложения в команды SQL. Например, чтобы открыть индексный курсор, транслирующий уровень строит оператор SQL с предложением OrderBy, соответствующим столбцам индекса, а затем выполняет его на сервере. Фильтрующие выражения завершаются предложением Where сгенерированного оператора SQL. Сервер реляционной базы данных эмулирует через SQL семантику данных работающего с упорядоченной информацией персонального приложения, что ведет к заметному снижению производительности.
Позволяя открывать курсоры для таблиц и индексов без использования операторов SQL, InterBase 4.0 с помощью многопользовательской среды "клиент-сервер" обеспечивает производительность, "близкую к производительности локального персонального приложения". Это означает, что когда курсор открывается для таблицы, то записи возвращаются в естественном порядке, а когда он открывается для индекса, то они возвращаются в отсортированном порядке.
Важным аспектом дизайна InterBase 4.0 является прямая, осуществляемая на уровне механизма базы данных поддержка подобных операций перебора. Для более быстрой выборки записей из таблиц и индексов InterBase 4.0 использует специальные структуры данных, алгоритмы и протоколы. Для подготовки и выполнения таких операций операторы SQL не требуются, поэтому отпадает необходимость в промежуточных транслирующих модулях, а буферизация результирующего набора сводится с минимуму. Кроме того, к данным параллельно могут обращаться как пользователи Express Link, так и SQL.
Закладки
Закладка - это метка записи относительно ее позиции среди других записей. Механизм InterBase 4.0 поддерживает закладки непосредственно на уровне сервера, позволяя использовать вызовы для установки, получения и сравнения закладок. Закладка действует в течение всего подключения к базе данных и допустима даже после закрытия исходного курсора и завершения первоначальной транзакции. Используя внутренние идентификаторы записи, InterBase 4.0 поддерживает быстрые операции с закладками. Например, приложение может установить закладки в середине большой просматриваемой таблицы и использовать их позднее для позиционирования курсора. Средства Borland IDAPI используют возможности закладок InterBase 4.0 в Express Link.
Сохранение контекста курсора
Многие персональные приложения не используют понятия множественной транзакции и предполагают обычно, что каждая операция базы данных выполняется немедленно. Для поддержки такого представления InterBase 4.0 использует возможность автоматической фиксации, которая принудительно интерпретирует каждое обновление как полную транзакцию.
С этой целью в InterBase 4.0 поддерживается сохранение контекста курсора. Это позволяет поддерживать текущий курсор даже после завершения транзакции.
Явные блокировки
Когда сервер использует в качестве своего интерфейса исключительно SQL, он ограничен налагаемыми SQL правилами блокировок транзакций. В соответствии с правилами SQL пользователь может определить уровень выделения, но не может управлять блокировками (их установкой и отменой). Персональные приложения используют парадигмы явных и монопольных блокировок и в общем случае не применяют неявных блокировок. Более того, может потребоваться, чтобы запрашиваемые приложением блокировки сохранялись в течение транзакции, пока не будут явным образом отменены пользователем.
Для обеспечения потребностей пользователей персональных приложений PC, InterBase 4.0 поддерживает явные блокировки, но следует также и стандартной модели сервера, которая обеспечивает явные блокировки для традиционных пользователей SQL.
Обновление кэш-буфера
Персональные приложения часто позволяют пользователю просматривать большие объемы данных. Устанавливать для таких записей блокировки по чтению непрактично. В типичной системе "клиент-сервер" клиентское приложение выводит пользователю набор данных, не устанавливая на сервере никаких блокировок. Для поддержки целостности и согласованности данных клиентное приложение вынуждено следовать одним из путей:
Через регулярные интервалы обновлять данные путем опроса сервера.
Игнорировать изменения и продолжать выводить старые данные. Изменения распознаются, только если пользователь пытается обновить данные. В этом случае приложение информирует пользователей, что другое приложение изменило данные, и отражает это изменение.
Блокировать все кэшируемые данные
В InterBase 4.0 предусмотрена специальная технология, которая называется обновлением кэша. Используя это средство, приложение IDAPI может идентифицировать диапазон интересующих его записей и регистрирует это на сервере. Когда в записи из этого диапазона происходит изменение (например, параллельно работающий пользователь модифицирует запись), сервер инициирует событие, которое уведомляет клиентское приложение с помощью механизмов уведомления о событиях - InterBase 4.0 Event Alerters. Клиентское приложение получает это событие и может либо игнорировать его, либо запросить изменение записей в данном диапазоне.
Средства поддержки национальных версий
InterBase 4.0 допускает использование для хранения данных и работы с ними нескольких национальных наборов символов. Для всех строковых операций и операций с объектами BLOB поддерживаются как 8-битовые, так и 16-битовые наборы. Заданный по умолчанию набор символов и порядок сравнения можно определить для базы данных в целом. Сравнение можно также определить с помощью предложения Order By в операторе Select. Для спецификации символов национальных алфавитов можно использовать строковые литералы с префиксом имени набора символов. В стандартный комплект поставки включена поддержка кодовой таблицы ANSI 1251, являющейся стандартом при работе с русским языком в среде Windows.