Развитие серверов баз данных
Р. Финкельштейн
АННОТАЦИЯ. Будущее
обработки данных уже близко. Персональные компьютеры скоро будут наделены
мощными средствами использования данных в режиме коллективноого пользования,
что недавно было прерогативой только больших вычислительных машин. Ключом к
этому будущему являются основывающиеся на SQL серверы баз данных.
"Управление данными в архитектуре клиент-сервер" - это новые
термины в обработке данных на персональных компьютерах. Разработчики обещают
новый революционизирующий подход к управлению базами данных, который поместит
персональные компьютеры прямо в центр совместной вычислительной работы.
Является ли сервер баз данных действительно вызывающе новой технологией, или
это попытка оживить старую концепцию локальных вычислительных сетей (local
area network - LAN)? Является ли оказываемое серверам баз данных внимание
преувеличением, или это отражение реальных тенденций их развития?
Освещение преимуществ
нового подхода зависит от архитектуры сервера, которая проиллюстрирована в
данной статье на примере пяти имеющихся в настоящее время серверов баз данных,
работающих под управлением DOS или OS/2 и основывающихся на Structured Query
Language (SQL). Рассматриваемые здесь серверы - это Ashton-Tate/Microsoft SQL
Server Network Developers Kit, разработанный совместно фирмами Ashton-Tate,
Microsoft и Sybase; SQLBase, версия 3.5 фирмы Gupta Technologies; NetWare SQL,
версия 1.0 Beta фирмы Novell; ORACLE Server, версия 5.1 Beta фирмы Oracle
Corporation и XDB-Server 2.2 фирмы XDB Systems. Вторая статья, помещенная в
этом выпуске, посвящена программам пользова-тельского интерфейса серверов баз
данных, средствам разработки прикладных программ, которые позволяют прикладным
системам взаимодейство-вать с серверами.
Сервер баз данных -
это многопользовательская вычислительная машина (engine) обработки данных,
которая централизованно осуществляет поиск, выборку и обработку данных,
запрашиваемых прикладной системой, находящейся на рабочей станции (клиенте).
Серверы сокращают трафик в вычислительной сети, координируя совместный доступ к
базам данных и возвращая прикладной системе только запрашиваемые данные, и
содержат средства обеспечения целостности и непротиворечивости данных, качество
которых не уступает качеству аналогичных средств больших ЭВМ.
-----------------------------------------------------------------
____________ ____________ ____________
| | | | | |
| Файл 1 | | Файл 2 | | Файл 3 |
|____________| |____________| |____________|
| | |
|___________________|_____________________|
__________|__________
| |
/| Файловый сервер |\
/ |_____________________| \
/ \
___________/________ ___\_________________
| Система управления | | Система управления |
| данными | | данными |
|____________________| |_____________________|
\ _____________________ /
\ | Система управления | /
\| данными |/
|_____________________|
Рис. 1. Файловые серверы
В архитектуре файловых
серверов один узел сети овсуществляет доступ к файлам с данными, в то время
как на других узлах сети выполняются приложения и системы управления данными,
которые запрашивают дан-ные, блокируют таблицы. Передача данных от сервера
осуществляется целыми таблицами.
____________ ____________ ____________
| База данных| | База данных| | База данных|
| 1 | | 2 | | 3 |
|____________| |____________| |____________|
| | |
|___________________|_____________________|
__________|__________
| |
/| Сервер баз данных |\
/ |_____________________| \
/ \
___________/________ ___\_________________
| Система с графичес-| | Электронные |
| кими функциями | | таблицы |
|____________________| |_____________________|
\ _____________________ /
\ | Система ввода | /
\| данных |/
|_____________________|
Рис. 2. Серверы баз данных
Серверы баз данных
централизуют всю деятельность по управлению данными, включая координацию
блокирования, обеспечение целостности и непротиворечивости данных, доступ к
базам данных и возвращение в прикладную систему только запрашиваемых записей.
Сетевой трафик сокращается и обеспечиваются целостность и непротиворечивость
данных.
Сокращая сетевой
трафик, серверы баз данных могут повысить производительность локальной
вычислительной сети персональных компьютеров при управлении данными по
сравнению с файловыми серверами. Они могут обеспечить функциональную и
целостную основу для операций управления данными на персональных компьютерах,
которые до сих пор считались слишком сложными, объемными или критичными для
персональных компьютеров. Наконец, поскольку вычислительными
машинами-клиентами могут быть PC/XT, PC/AT и PS/2 и совместимые с ними (без
необходимости добавления или наращивания памяти), серверы баз данных позволяют
осуществлять экономное разделение ресурсов между большим количеством
пользователей при использовании данных во всех видах прикладных систем.
В то время как
технология "клиент-сервер" для баз данных является новой и
революционизирующей в области персональных компьютеров, она хорошо разработана
для больших вычислительных машин, для которых еще раньше были важны вопросы
многопользовательской работы.
Большинство серверов
баз данных для персональных компьютеров построены на основе SQL, широко
принятом в качестве стандарта языка запросов баз данных. Система SQLBase фирмы
Gupta Technologies, выпущенная в 1986 году, была первым сервером баз данных, в
основу которого поло-жен SQL, для локальных вычислительных сетей микрокомпьютеров.
Помимо описываемых в
данной статье серверов, у фирмы VIA Information Systems есть сервер баз данных,
VIA/HOST, работающий в разработанной этой фирмой системе VIA/Distributed
Relational Environment (VIA/DRE). VIA/HOST поддерживает распределенную
обработку данных - "прозрачное" разделение доступа к данным между
удаленными или неудаленными вершинами локальной вычислительной сети или
глобальной вычислительной сети. Версия SQL этого программного продукта не была
еще доступна в то время, когда готовилась эта статья, поэтому она не включена в
данный обзор.
Фирма IBM объявила, что многопользовательская версия Extended Edition
Database Manager OS/2 будет поставляться как сервер баз данных, но не указала
дату ее готовности. Она будет составной частью стратегии реализации локальных
вычислительных сетей фирмы IBM и ее бо-лее крупной технологии распределенных
серверов баз данных.
Прощайте, файловые серверы
В архитектуре файловых
серверов системы управления данными находятся на каждой рабочей станции, а
разделяемые данные находятся на файловом сервере (см. рис.1). Файловые серверы
работают как разделяемые дисковые устройства : они не могут координировать
работу и предоставляют системе управления данными каждой рабочей станции
возможность самой осуществлять свои собственные операции по блокированию,
копированию, восстановлению и обработке данных. Когда некоторая рабочая
станция блокирует ресурсы файлового сервера, то неизвестно, какое влияние это
действие окажет на программы, выполняющиеся на различных рабочих станциях.
Файловые серверы не
могут восстанавливать утерянные транзакции или восстанавливать неполные
транзакции, так что сбой системы на одной рабочей станции может привести к
противоречивости данных на других станциях. Обеспечение целостности данных -
предоставляемые и отбираемые привилегии - не централизовано, так как файловые
серверы не могут связывать таблицы и базы данных и не имеют центральных
словарей (ката-логов) данных.
Они имеют меньшую
производительность, так как передают на рабочие станции только полные таблицы.
Система управления данными должна затем отфильтровывать необходимые ей записи.
Файловые серверы осуществляют также избыточные операции по передаче таблиц
данных, индексов и запро-сов на блокировку между файловым сервером и рабочей
станцией.
Сервер баз данных на
центральном персональном компьютере призван решить все проблемы файловых
серверов. Сервер баз данных управляет доступом к базам данных и контролирует
все программы на рабочих станциях. Он управляет блокированием таблиц и
кортежей, восстановлением и дублированием баз данных, обеспечением целостности
и непротиворечивости данных, обработкой транзакций и другими элементами
многопользовательской системы автоматически и "прозрачно". Это
освобождает вычислительные машины-клиенты для взаимодействия с пользователями
и генерации отчетов. Каталог системы (с системной таблицей, в которой хранится
вся описательная информация) находится в одном месте, так что сервер может
просматривать все таблицы, индексы и пути доступа, когда несколько прикладных
систем осуществляют к ним доступ.
Программы на рабочей станции посылают запросы на данные серверу в виде
команд SQL, передаваемые ему программой переадресации, установленной на
рабочей станции. Сервер обрабатывает их, делает выборку только запрашиваемых
кортежей и посылает их клиенту. Программа может модифицировать таблицы, посылая
серверу SQL-запрос UPDATE.
Выбор сервера
Попытка встроить
многопользовательские средства управления данны-ми в систему сервера, не
ориентированного на поддержку баз данных, обойдется в сотни или тысячи
долларов. Кроме того, это сложная задача, что объясняет тот факт, почему
разработано пока только несколько фай-ловых серверов.
На выбор сервера
оказывает влияние много факторов, в том числе и наличие программ пользовательского
интерфейса. Некоторые разработчики предлагают серверы и программы
пользовательского интерфейса как единый пакет; другие создают программы
пользовательского интерфейса, предназначенные для работы с конкретными
серверами. Покупатели должны подыскивать совместимые серверы и программы
пользовательского интерфейса.
Большинство
разработчиков программ пользовательского интерфейса , такие как Ashton-Tate и
Borland, реализуют средства разработки прикладных программ для архитектуры
сервера почти идентично тому, как это сделано в их автономных системах
управления данными. Программы пользо-вательского интерфейса подерживают
непосредственное обращение к SQL, а также генерируют команды SQL из своих
собственных языков запросов или средств запросов по образцу (query-by-example QBE).
Другими факторами, которые следует учитывать при выборе сервера,
являются операционная система и требования, предъявляемые к ресурсам, генерация
системы, поддержка SQL, управление параллельной обработкой (разделяемое
использование данных), механизмы дублирования и восстановления данных,
средства обеспечения целостности данных, производительность и возможность
подключения к системам управления данными, размещенным на больших и мини-ЭВМ.
Таблица 1. Системные требования для серверов баз данных
Ashton-Tate/Фирма Microsoft
|
Gupta Tech-nologies Novell
|
Oracle Cor- XDB poration Systems
|
Продукт SQL Server
|
SQLBase NetWare SQL
|
ORACLE Server XDB-Server
|
ЭВМ PC/AT,PS/2
|
PC/AT PC/AT,PS/2
|
PC/AT,PS/2 PC/AT,PS/2
|
Операционная система OS/2
|
DOS 3.1+, NetWare OS/2
|
OS/2 1.0+ DOS 3.1+
|
(Мин.)объем 30 Мбайт жесткого диска (Мин.)объем оперативной памяти 6 Мбайт
|
10 Мбайт 10 Мбайт 640 Кбайт 512 Кбайт
|
10 Мбайт 10 Мбайт (только для сервера 4,5 Мбайт 640 Кбайт, 640 Кбайт 896 Кбайт расширения
|
Сетевая MS LAN поддержка Manager 1.0
|
NETBIOS NetWare совм.
|
NETBIOS NETBIOS и совм. и совм.
|
Первые серверы баз
данных, появившиеся на рынке персональных компьютеров, работают на
вычислительных машинах, оснащенных микропро-цессорами 80286 и 80386, преимущественно
под управлением OS/2, DOS или обеих этих операционных систем. Существующее
разнообразие этих прог-раммных продуктов позволяет заказчикам выбрать сервер,
который будет работать на используемых ими в настоящее время компьютерах.
Требования к
техническим средствам и к среде операционной системы для каждой из
рассматриваемых систем различны (см. табл. 1). Сервером должна быть
вычислительная машина, оснащенная микропроцессором 80286 или 80386,
машина-клиент может быть персональным компьютером любого типа, в зависимости от
потребностей приложений.
ORACLE Server и SQL
Server работают только под управлением OS/2, в то же время для XDB-Server
необходима MS-DOS. SQLBase работает либо под управлением MS-DOS , либо OS/2, а
для NetWare SQL требуется опера-ционная система NetWare.
Ни один из серверов
баз данных не характеризуется простотой генерирации и обслуживания, хотя
некоторые все же проще, чем другие. Ни для одного сервера не нужно введение
полной ставки администратора баз данных, но для некоторых необходимо выполнение
частичных обязанностей по администрированию. Администраторы должны знать о
порядке дублирова-ния и восстановления данных, о настройке производительности
системы, о планировании емкости технических средств, о проектировании баз
данных и обеспечении целостности данных, о физической реализации баз данных.
SQLBase. SQLBase генерируется просто. Администратор загружает в сервер
выполняемый модуль и служебные (поддерживающие) файлы, затем инициализирует базу
данных при помощи процедуры INIT. В файле конфигу-рации перечислены все базы
данных в сети и место их размещения, макси-мальное число рабочих станций,
количество 1-Кбайтных страниц кэш-буфера, количество пользователей, курсоров,
блокирующих запросов и тран-закций, которые сервер позволяет обрабатывать в
некоторый момент вре-мени.
Диалоговые программные
средства, SQLTalk, помогают осуществить запросы к базам данных и сохранять
прошедшие предварительную компиля-цию операторы SQL. При помощи команд можно
входить в среду SQLTalk, устанавливать взаимодействия между несколькими базами
данных и курсорами, генерировать отчеты, управлять дублированием,
восстановлением данных и ведением системного журнала (регистрацией всех изменений
в базах данных), импортировать и экспортировать файлы, сохранять прошед-шие
предварительную компиляцию операторы SQL и создавать макеты прикладных систем.
В окне информации о
состоянии сервера (Status screen) указываются номера узлов-клиентов в вычислительной
сети и активные базы данных; информация о текущих задачах (Process Activity)
отражает сведения о взаимодействующих базах данных и обрабатываемых операторах
SQL, а информация о функционировании системы представляет собой техническую информацию
о сервере для технического обслуживания.
NetWare SQL. Инстолляция NetWare SQL и задание параметров конфигурации системы
осуществляется простой программой загрузки. Среди параметров - максимальная
длина сообщения, максимальный размер буфера и количество процессов. Программа
инстолляции (Install option) копирует программы NetWare SQL на сервер, а
администратор копирует программы рабочих станций на каждую рабочую станцию.
Консоль администратора
NetWare SQL предоставляет информацию о количестве активных рабочих станций и
активных процессов и позволяет администратору освобождать ресурсы,
используемые рабочей станцией.
XDB-Server. У XDB-Server нехитрая процедура инстолляции,
при которой производится
выбор цветов меню сервера, путей (маршрутов) доступа, имени сервера и
прерываний NETBIOS. Процедура конфигурирования запрашивает о выборе ряда
параметров, включая количество пользователей, максимальное число открытых баз
данных, запросов и файлов, макси-мальный объем памяти для сортировки и
максимальный размер таблицы блокировок (lock table). Администраторы могут
устанавливать размеры буферов на рабочих станциях, каждый при помощи своей
собственной процедуры инстолляции для загрузки рабочей станции XDB и программ
переадресации.
В окне информации о
работе пользователей указан список зарегистрированных в системе пользователей,
их уровни (приоритеты) блокирования и имеют ли они открытые запросы.
Администратор может удалить поль-зователя из системы, если рабочая станция даст
сбой.
XDB-Server предъявляет
невысокие требования к необходимому ему объему оперативной памяти (640 Кбайт) и
поддерживает до 20 пользователей под управлением MS-DOS и более чем 100 под
управлением OS/2. Эти параметры, однако, зависят от требований к
производительности приклад-ных систем. Служебные программы для системного
администрирования, та-кие как SRVCONFIG, должны быть загружены в каталог,
защищенный при по-мощи сетевых средств и ограничений безопасности. С другой
стороны, лю-бой пользователь вместе с доступом к серверу может изменить системные
параметры.
ORACLE Server. ORACLE Server был разработан для DEC VAX и сложных
Unix-подобных систем,
и последствия этого ярко проявляются во всем: он требует сложного управления
высококвалифицированным администратором. Инстолляцию очень трудно провести,
когда разработчик пытается изменить предлагаемые по умолчанию определения
разбиений (разделов) и объемов памяти.
Администратор должен
отслеживать устанавливаемое по умолчанию распределение ресурсов. Если объем баз
данных превышает установленный, происходит аварийное завершение работы ORACLE
Server, и администратор должен восстанавливать базы данных и дополнительный
объем памяти. Эта система озадачит даже опытных администраторов баз данных.
SQL Server. Программа загрузки SQL Server инстоллирует служебные программы и средства
прикладного программирования либо как автономную систему
управления данными, либо как сервер баз данных. Эта программа, которая выдает
сообщения вместе с подсказками, сообщает вам об ошибке, если LAN Manager
(программа управления локальной вычислительной сетью) фирмы Microsoft, которая должна именовать каналы,
еще не инстоллирована.
Управляемая при помощи
меню-подобных и диалоговых средств, программа Server Administration Facility
(SAF) - программное средство ад-министратора сервера баз данных - обращается с
запросами к базам данных и анализирует результаты с любой рабочей станции.
Чтобы управлять сервером и его пользователями, администратор использует SAF
вместе с запросами SQL и системными процедурами (такими как sp_helpuser и
sp_configure). В документации описано, как при помощи средства адми-нистрирования
Admin option SAF устанавливать бюджеты пользователей, их группы и пароли; как
просматривать информацию о пользователях при по-мощи процедуры sp_helpuser; как
создавать процедуры дублирования и восстановления, как распределять ресурсы для
достижения максимальной производительности системы; и как создавать загружаемые
из внешней памяти процедуры (bulk-loading procedures).
Весь богатый набор
параметров настройки задается посредством сис-темной процедуры sp_configure,
включая максимальное количество взаимодействий, объем памяти для кэш-буферов
данных и программ (для хранения самых последних использовавшихся программ и
данных), и коэффициент за-полнения (fill factor) (для определения, когда SQL
Server должен на-чать новую страницу при создании нового индекса данных).
SQL Server может устрашать своей сложностью, но все его функции полезны
в больших по объему справочных системах реального времени.
Полные версии SQL
Во всех перечисленных
серверах баз данных поддерживаются полные версии SQL, которые позволяют
прикладным системам обращаться к другим прикладным системам и системам
управления данными, размещенным на больших ЭВМ, например, к таким, как DATABASE
2 (DB2) и SQL/Data Services (SQL/DS) фирмы IBM. В большинстве этих версий SQL
моделирует-ся так, как это было сделано фирмой IBM в СУБД DB2, в которой поддерживаются
типы данных "дата" и "время", операторы DROP и REVOKE и
реляционный оператор UNION, ни один из которых не входит в существующий
стандарт ANSI. В таблице 2 указано соответствие их командам стандарта IBM SQL,
а в таблице 3 приведены расширения, реализованные разработчи-ками для каждого
сервера. Близость к стандартам означает, что система является более гибкой и
коммуникабельной, но наличие расширений может сэкономить время, сократить
затраты усилий на программирование и уве-личить мощность.
Таблица 2. Поддержка команд SQL
Ashton-Tate/ Gupta Tech- Oracle Cor- XDB Фирма Microsoft nologies Novell poration Systems
|
Продукт SQL SQLBase NetWare ORACLE XDB Server SQL Server Server
|
КОМАНДЫ ОПРЕДЕЛЕНИЯ ДАННЫХ
|
AFTER TABLE ADD + + + + + DELETE(DROP) - + + - + MODIFY - + + + +
COMMENT ON - + - + +
CREATE INDEX + + + + + UNIQUE + + - + +
CREATE SYNONIM - + - + +
CREATE TABLE + + + + + PRIMARY KEY - - - - +
CREATE VIEW + + + + + WITH CHECK OPTION - + - + +
DROP INDEX + + + + +
DROP TABLE/VIEW + + + + +
NULL/NOT NULL + + - + + WITH DEFAULT - - - - +
КОМАНДЫ МАНИПУЛИРОВАНИЯ ДАННЫМИ
|
DELETE + + + + + Subquery + + + + +
GROUP BY + + + + +
INSERT + + + + + Subquery + + + + +
ORDER BY + + + + +
SELECT + + + + + ALL - - - + + ANY + + - + + AVG() + + + + + BETWEEN +
+ - + + Columns + + + + + COUNT() + + + + + COUNT(*) + + + + + DISTINCT + + +
+ + EXISTS + + + + + Expressions + + + + +
ALL - + - + + FROM + + + + + HAVING + + + + + IN + + + + + IS NULL + +
- + + LIKE + + + + + MAX() + + + + + MIN() + + + + + NOT + + + + + SOME - - -
- - Subquery + + + + +
Correlated
subquery + + + + +
Outer join ограничено двумя таблицами SUM() + + + + +
WHERE + + + + + UNION - + + + + UPDATE + + + + +
Subquery + + + + +
КОМАНДЫ УПРАВЛЕНИЯ ДАННЫМИ
|
GRANT + + + + + WITH GRANT OPTION - + - + -
REVOKE + + + + +
КОМАНДЫ УПРАВЛЕНИЯ ТРАНЗАКЦИЯМИ
|
COMMIT WORK
ROLLBACK WORK
|
|
В пяти рассматриваемых серверах баз данных реализация SQL очень близка к
реализации SQL в IBM SAA. Кроме нескольких исключений, для написания
прикладных программ, использующих языков высокого уровня, разработчики могут использовать одни и
те команды манипулирования данными для всех пяти серверов
Для пользователей,
желающих сохранить совместимость SQL со стан-дартом IBM, SQLBase, NetWare SQL и
XDB-Server являются хорошим выбо-ром. Те пользователи, которым нужны средства
расширения SQL, найдут SQL Server и ORACLE Server достаточно мощными.
Пользователи могут иг-норировать средства расширения, чтобы обеспечить в
будущем совмести-мость со стандартами IBM или ANSI SQL.
NetWare SQL и SQLBase. В NetWare SQL поддерживается IBM SQL
без расширений. В SQLBase есть несколько расширений: типы данных "дата" и"время", операции
обработки строк (такие как"выделить подстроку"-Substring, и "найти
строку" - Find String), и математические функции.
XDB-Server. В XDB-Server используются такие же коды сообщений об ошибках, как и в IBM SQL,
так что программисты, работающие на Коболе, могут использовать
XDB-Server как рабочую станцию для разработки приложений для DB2. Это
единственный из рассматриваемых серверов, в котором поддерживаются правила
обеспечения непротиворечивости ссылок, а также другие правила
непротиворечивости в языке определения данных - ЯОД (Data Definition Language -
DDL), который состоит из операторов SQL, определяющих такие объекты как таблицы
(tables), представления (views) и индексы. Однако, он не содержит такого
полного набора функций, как DB2, в котором реализованы средства CASCADE
(удалить строки, зависящие от удаленной строки) и средства SET NULL (установить
внешний ключ для NULL). В XDB-Server также используется оператор ALTER вместо
оператора CREATE, используемого в DB2.
В XDB-Server
реализовано обеспечение непротиворечивости ссылок в случае нескольких ключей,
определяющих структурирование существующей таблицы, либо добавление ограничений
целостности. Предложения PRIMARY KEY (первичный ключ) и UNIQUE KEY
(единственный ключ) задают ограничения целостности для простых (single) и
составных (composite) полей и предполагают для поля спецификации NOT NULL (то
есть поле должно иметь значение). Предложение FOREIGHN KEY (внешний ключ)
задает ограничения непротиворечивости ссылок при вставках и обновлениях баз
данных.
По параметру CHECK
команды АLTER TABLE запоминаются определяемые пользователем условия, которые
проверяются для каждого вводимого или обновляемого кортежа. Если кортеж не
удовлетворяет этим условиям, то он не может быть введен или изменен, и
XDB-Server выдает сообщение об ошибке. Следующим оператором SQL задается
условие, что размер статьи не должен превосходить 10 страниц:
ALTER TABLE articles CHECK pages <= 10
Нельзя задавать
вложенные команды SQL в качестве условия в параметре CHECK или помещать
правила проверки правильности кортежей в ка-талог.
При помощи специальных
команд для рекурсивных запросов можно на-ходить все части некоторого целого;
например, все части некоторой системы или всех служащих, подчиненных одному
руководителю. По предложе-нию PREVIOUS (предыдущий) в команде SELECТ (выбрать)
в XDB-Server генерируется реляционная таблица , в которой перечислены все
части целого. Пользователи могут определять, на каком уровне следует
прекратить расширение - например, LEVEL=2 определяет выделение подсистем до вто-рого
уровня, а предложение BOTTOM определяет самый нижний уровень.
SQL Server. В SQL Server управляемый каталогом правил контроль целостности и непротиворечивости
данных, но все это реализовано не в рамках DDL (то есть команд CREATE и ALTER TABLE). В
нем используются переключатели (triggers), определяемые в мощной команде расширения
TRANSACT-SQL, которая содержит управляющие ключевые слова, такие как IF ...
THEN ... ELSE, GOTO и многочисленные команды присваивания значений переменным и
манипулирования с ними. При помощи TRANSACT-SQL можно создавать программы,
поддерживающие обеспечение непротиворечивости ссылок и определяемые
пользователем правила. Помещенные в каталог переключатели (триггеры)
автоматически инициализируются, когда таблица обновляется. Они могут
обеспечить изменение всех вхождений некоторого значения в базу данных при
изменении этого значения в таблице , могут предотвратить изменение внешнего
(foreighn) ключа, когда значение не соответствует его первичному ключу; могут
устранить все обновления, которые не удовлетворяют некоторому специфическому
условию и могут проверять, принадлежат ли значения данных соответствующим
доменам или интервалам или не превосходят ли значения некото-рых пределов.
Триггерами в каталоге
управлять проще, чем процедурами, встроенными в программы, и они
непротиворечивы по отношению ко всем програм-мам, но они выполняются только на
одном конце транзакции. Пользователь может потратить много времени, вводя
данные в определенном порядке, только на то, чтобы узнать, что эта транзакция
не может быть выполне-на. Ошибка должна быть выявлена, когда пользователь
вводит данные, а не тогда, когда транзакция начинает выполняться.
Помимо триггеров, в
SQL Server есть еще два механизма обеспечения целостности данных: правила
умолчания, по которым SQL Server вставляет в столбец заданные значения, если
конечный пользователь не ввел ни одного значения, и правила, которые
определяют значения, занесенные в столбцы.
Не имеющие аналогов
хранимые процедуры (stored procedures) состоят из прошедших предварительную
компиляцию команд TRANSACT-SQL и хра-нящихся в одной каталогизированной
процедуре, вызываемой из любой программы. Хранимая процедура может осуществлять
чтение, обновление и введение новых данных,- все это в одной процедуре.
Благодаря наличию хранимых процедур в прикладной программе будет содержаться
меньше SQL-обращений к серверу баз данных, что уменьшает трафик в сети и зат-раты
на взаимодействие "программа-сервер". Поскольку они проходят
предварительную компиляцию в системном каталоге, то производительность
повышается невероятно.
В SQL Server также
поддерживаются подзапросы, которые могут ис-пользоваться везде, где длины
выражения не должны превосходить единственное возвращаемое значение. Подзапросы
позволяют пользователям фор-мулировать мощные запросы, такие как:
SELECT salesperson, sales, sales/SELECT SUM(sales FROM sales_table) FROM sales_table
По этому запросу будут
найдены все продавцы (salesperson), объем их торговых операций (sales) и процент
от общего объема торговых опе-раций, который получается делением объемов их
торговых операций на результат подзапроса, по которому будет найден суммарный
объем всех торговых операций. Ни в каком другом сервере баз данных подзапрос
не может использоваться как часть выражения. В других серверах баз данных
должны быть созданы временные таблицы отношений ,чтобы выполнить такой запрос.
Бросающимся в глаза
недостатком SQL Server является отсутствие операции UNION, естественной при
слиянии таблиц , которая является основной в SQL, реализованном фирмой IBM.
Компании Ashton-Tate и Microsoft собираются заполнить этот зияющий пробел.
Пользователи пока могут моделировать операцию UNION при помощи команд INSERT
... SELECT, но при этом приходится создавать и использовать временные таблицы.
ORACLE Server. В ORACLE Server реализовано много расширений SQL.
Например, пользователи
могут писать связанные запросы (correlated queries) на обновление таблицы ,
основанные на значениях из другой таблицы . По следующему запросу обновляется
новая таблица , соответс-твующая отделению, со сведениями о руководителях,
взятых из старой таблицы, соответствующей отделению:
UPDATE new_dept_table
SET new_manager = (SELECT old_manager FROM old_dept_table
WHERE old_dept_table.dept_no = new_dept_table.dept_no);
Обновления посредством
связанных запросов в предложении SET, являющиеся естественными для перемещения
данных между таблицами , осно-ванного на ключевых значениях, поддерживаются
только в ORACLE Server.
В ORACLE Server есть
также команды MINUS и INTERSECTION, реализу-ющие реляционные операции вычитания
и пересечения, что устраняет необходимость в подзапросах при задании этих
операций. Недавно фирма IBM ввела такие же команды в версию SQL для Extended Edition в OS/2.
Благодаря предложению
CONNECT в команде SELECT можно реализовать рекурсию без средств LEVEL или
BOTTOM, имеющихся в XDB. В ORACLE Server осуществляется идентифицирование
уровней, так что результирую-щая таблица содержит номер уровня для каждого
кортежа в рекурсивной операции.
Триггеры этого
программного продукта встроены в прикладные прог-раммы или накладывают
ограничения на некоторое поле в виде ограничений на входные или обновляемые
данные. Они не обладают преимуществами триггеров SQL Server, которые система
управления данными централизо-ванно активизирует, и управляет ими для
обеспечения непротиворечивости при выводе.
Таблица 3. Поддержка команд расширения SQL
Ashton-Tate/ Gupta Tech- Oracle Cor- XDB Фирма Microsoft nologies Novell poration Systems
|
Продукт SQL SQLBase NetWare ORACLE XDB Server SQL Server Server
|
КОМАНДЫ УПРАВЛЕНИЯ ТРАНЗАКЦИЯМИ
|
Begin/start transaction + - + - -
Holdlock + - - - -
Lock table - - - + +
Set isolation level - + - - +
Unlock table - - - - +
ОПЕРАЦИИ
|
Compute + - - - -
Intersect - - - + -
Minus - - - + -
Recursive - - - + +
Subquery in Update
Where clause + - - + - Subquery as any
expression + - - - -
IF condition + + - - - ELSE action + - - - -
МАТЕМАТИЧЕСКИЕ ФУНКЦИИ
|
Absolute + - - + +
Ceiling/floor + - - + -
Degrees + - - - -
Exponential + - - - +
Logarithmic + - - - +
Pi + - - - -
Modulo - - - + -
Power + - - + +
Radians + - - - -
Random + - - - -
Round + - - + -
Sign + - - + -
Sqrt + - - + +
Trigonimetric + - - - -
Truncate - - - + -
ФУНКЦИИ СО СТРОКАМИ СИМВОЛОВ
|
ASCII value + - - + -
Character value + + - + -
Concatenate + + - + +
Exact match - + - - -
Initial capital - + - + -
Find string + + - + -
Length + + - + +
Lowercase + - - + +
Pad left/write + - - + +
Left/write trim + + - + +
Repeate string + + - - -
Replace string - + - - -
Stuff a string + - - - -
Substring + + - + +
Translate - - - + -
Uppercase + + - + +
СТАТИСТИЧЕСКИЕ ФУНКЦИИ
|
Standard deviation - - - + +
Variance - - - + +
ФУНКЦИИ НАД ДАТАМИ
|
Get current date + + + + +
Add months to day - - - + -
Last day of month - - - + -
Months between - - - + -
Time-zone conversion- - - + -
Next day of week - - - + -
Day + + - - +
Hour + + - - -
Minute + + - - -
Second + + - - -
Millisecond + - - - -
Weekday + + - - -
Month + + - - +
Quarter + + - - -
Year + + - - +
Year number - + - - -
Week beginning - + - - -
Month beginning - + - - -
Quarter beginning - + - - -
Year beginning - + - - -
Convert to date - + - - +
Date arithmetic + + + + +
ДРУГИЕ ФУНКЦИИ
|
Decode values - + - + -
Null-value defaulte - + - + -
Greatest/least value- - - + -
КОМАНДЫ ЯЗЫКА ОПРЕДЕЛЕНИЯ ДАННЫХ
|
Alter table
Primary key - - - - +
Foreighn key - - - - +
Reference - - - - +
Restrict - - - - + Create/alter
Space + - - + -
Partition - - - + -
Cluster - - - + - Create value/range + - + - + Create clustered
Indexes + - - - -
Tables - - - + - Create triggers/stured procedures + - - - -
КОМАНДЫ ЯЗЫКА УПРАВЛЕНИЯ ДАННЫМИ
|
Create/drop group
|
|
Большинство
разработчиков серверов баз данных добавили к IBM SQL команды расширения,
которые экономят время и затраты на программирование. Системы, корни которых
уходят к большим ЭВМ, такие как SQL Server Network Developer's Kit и ORACLE
Server, имеют расширения, связанные с распределением памяти; все из рассматриваемых
серверов, за исключением NetWare SQL, имеют команды расширения для работы с
датами, временем, символами и математическими функциями.
|
Системные каталоги
Все разработчики
организуют системные каталоги как таблицы языка SQL для хранения информации об
отношениях, индексах, представлениях, атрибутах и других объектах.
Разработчики, конечные пользователи и администраторы баз данных могут получать
информацию из системных каталогов при помощи команд SQL. Можно быстро узнать о
том, какие таблицы и представления есть в базе данных, какие атрибуты находятся
в какой таблице и какие из атрибутов индексированы. Большинство разработчиков
следуют примеру фирмы IBM и создают системные таблицы для отношений, атрибутов,
индексов, представлений, синонимов, ключей, паролей и привилегий для каждой
базы данных (см. табл. 4). В ORACLE Server есть системные таблицы для фиксации
такой информации, как контрольный журнал базы данных (фиксирующий обращение к
защищенным данным), время доступа, описание сеансов и информации о
распределении памяти; системные таблицы SQL Server содержат информацию о
хранимых процедурах, сообщениях и конфигурациях.
Таблица 4. Системные каталоги
г====================================================================¬
¦ Ashton-Tate/ Gupta Tech- Oracle Cor- XDB ¦
¦ Фирма Microsoft nologies Novell poration Systems ¦
¦--------------------------------------------------------------------¦
¦ Продукт SQL SQLBase NetWare ORACLE XDB ¦
¦ Server SQL Server Server ¦
¦--------------------------------------------------------------------¦
¦Таблицы Sysobjects Systables - Syscatalog Systable¦
¦Столбцы Syscolumns Syscolumns FIELD.DDF Syscolumns Syscols ¦
¦Индексы Sysindexes Sysindexes INDEX.DDF Sysindexes Sysindex¦
¦Представления - Sysviews VIEW.DDF Sysviews Sysviews¦
¦Синонимы - Syssynonyms - Synonims Syssin ¦
¦Имя/пароль Sysusers Sysalternates USER.DDF Sysuserlist Sysusers¦
¦Защита Sysprotects Syscolauth RIGHTS.DDF Syscolauth Sysauth ¦
¦ Systabauth Systabauth ¦
¦ Sysuserauth Sysuserauth ¦
¦Базы данных Sysdatabases - FILE.DDF - Sysdb ¦
¦Информация о ¦
¦ ключах Syskeys Syskeys - - Syskeys ¦
¦--------------------------------------------------------------------¦
¦ Во всех из расматривавшихся здесь серверах баз данных имеются ¦
¦ системные каталоги - системные таблицы, в которых хранится инфор- ¦
¦ мация о компонентах баз данных, таких как таблицы, столбцы, и о ¦
¦ приоритетах доступа к ним. В большинстве каталогов также содержит- ¦
¦ ся информация о представлениях, синонимах, базах данных и ключах. ¦
L====================================================================-
В SQL Server и ORACLE
Server такой каталог расширен включением в него информации о физической памяти
на дисках. Чтобы сохранить контрольную информацию, в ORACLE Server
используются несколько каталогов, в то время как в XDB-Server информация для
восстановления находится в таблице SYSDB. В SQL Server хранится статистическая
информация о данных в прикладных базах данных, которую системный оптимизатор
использует для выбора наиболее эффективного метода для поиска и обновления
данных. По команде UPDATE STATISTICS статистические данные об индексах
обновляются.
Защита от коллизий
Важной функцией
серверов баз данных является автоматическое блокирование, осуществляемой для
защиты от коллизий между транзакциями при обновлении данных, которое может
привести к потере обновляемых данных и утрате целостности данных. В
многопользовательской среде (когда несколько пользователей могут одновременно
осуществлять доступ к одним и тем же записям), блокирование должно быть
автоматическим.
Чтобы оценить мощность
средства блокирования серверов баз данных, следует понимать ограничения
блокирования в файловых серверах. Системы баз данных в файловых серверах могут
реализовать только пассивное (или "оптимистическое" -
optimistic) блокирование в сетях с небольшим объемом транзакций. Это позволяет
пользователям одновременно обращаться к записям, которые могут быть обновлены.
Прежде чем пользователь выполнит операцию обновления, система управления дан-ными
проверяет, изменялась ли эта запись другой программой. Если это так, то файловый
сервер отклоняет вторую транзакцию и выдает сообщение об ошибке программе или
оператору. В некоторых файловых серверах при выполнении операции обновления
выводятся сообщения на экран.
При блокировании в
файловом сервере операторы могут входить в транзакцию только для того, чтобы
посмотреть, отклонена ли она. Изме-нения, мелькающие на экране, могут ни о чем
не сказать; оператор, связь с которым осуществляется по телефону, может
ответить на звонок, просмотреть элемент данных и ответить пользователю, доступен
ли он, затем увидеть его исчезновение.
Серверы баз данных, с
другой стороны, могут автоматически блоки-ровать целые таблицы (уровень
таблиц), страницы (блочный уровень) размером 1 или 2 Кбайт (размер страницы
зависит от сервера) или отдельные записи (уровень записей), так как логическое
управление сосредоточено в вершине-сервере вычислительной сети (см. табл. 5).
Они обеспечивают непротиворечивость данных с помощью либо разделяемого
блокирования (когда другие программы могут читать данные, но блокируются их
действия по обновлению данных), либо исключающего блокирования при обновле-нии
(запрещающего другим программам обновлять или читать данные, пока не выполнится
данная транзакция.)
По SQL-команде SELECT на запрашиваемые данные накладывается огра-ничение
разделяемого блокирования. Когда программа обновляет запись, сервер усиливает
разделяемое блокирование до исключающего для каждой обновляемой страницы.
Командой SQL COMMIT исключающее блокирование снимается. Такая стратегия
обеспечивает хороший уровень блокирования и максимизирует параллельность
транзакций.
Таблица 5. Средства блокирования
г====================================================================¬
¦ Ashton-Tate/ Gupta Tech- Oracle Cor- XDB ¦
¦ Фирма Microsoft nologies Novell poration Systems ¦
¦--------------------------------------------------------------------¦
¦ Продукт SQL SQLBase NetWare ORACLE XDB ¦
¦ Server SQL Server Server ¦
¦--------------------------------------------------------------------¦
¦РЕЖИМЫ ЗАЩИТЫ ¦
¦------------- ¦
¦Стабильность ¦
¦ курсора + + + + + ¦
¦Повторяющееся ¦
¦ чтение + + - - + ¦
¦ (моделирует- ¦
¦ ся командой ¦
¦ HOLDLOCK) ¦
¦Непротиворечивость ¦
¦ чтения - + - + - ¦
¦Неаккуратное ¦
¦ чтение - - - - + ¦
¦ ¦
¦АВТОМАТИЧЕСКОЕ БЛОКИРОВАНИЕ ¦
¦--------------------------- ¦
¦Уровень таблиц - - + + - ¦
¦ (В команде ¦
¦ SELECT FOR UPDATE ¦
¦ используется уро- ¦
¦ вень блокирования ¦
¦ записей для чтения, ¦
¦ но уровень таблиц ¦
¦ для модификации) ¦
¦Уровень страниц + + - - - ¦
¦Уровень записей - - - - + ¦
¦ ¦
¦БЛОКИРОВАНИЕ, УПРАВЛЯЕМОЕ ПРИКЛАДНЫМ ПРОГРАММИСТОМ ¦
¦-------------------------------------------------- ¦
¦Уровень таблиц - - - + + ¦
¦Уровень страниц - - - - - ¦
¦Уровень записей - - + - - ¦
¦ ¦
¦ДРУГИЕ ВИДЫ БЛОКИРОВАНИЯ ¦
¦------------------------ ¦
¦Намеренное ¦
¦ блокирование + - - - + ¦
¦Выявление ситуаций ¦
¦ взаимоблокировки + + - + + ¦
¦Выявление ситуаций ¦
¦ "живой" блокировки + - - - - ¦
¦--------------------------------------------------------------------¦
¦ Центральным моментом в роли сервера баз данных является коорди- ¦
¦ нация блокирования. Все операции блокирования (как разделяемого, ¦
¦ так и исключающего) должны выполняться автоматически сервером баз ¦
¦ данных так, чтобы отдельные прикладные системы не могли блокиро- ¦
¦ вать ту или ниую таблицу данных. Среди рассматриваемых серверов ¦
¦ SQLBase, SQL SErver и XDB-Server имеют развитые системы управления ¦
¦ блокированием, которые поддерживают режимы повторяющегося чтения и ¦
¦ стабильности курсора. ¦
L====================================================================-
Поскольку при блокировании отношений только один пользователь в данный
момент времени может получить доступ ко всему отношению, то примение
блокирования ограничивает параллельность. Хотя блокирование на уровне записей
кажется наилучшим вариантом, оно может уменьшить производительность по
сравнению со страничным блокированием. При помощи страничного уровня можно
осуществлять блокирование многих записей за один раз и наилучшим образом
обеспечить баланс соотношения параллельности и производительности. Такое
блокирование позволяет админист-ратору решать, какие отношения будут
блокироваться и на каком уровне.
Как у NetWare SQL, так
и в ORACLE Server системы управления бло-кированием довольно неуклюжие, что
требует дополнительной работы программистов и администраторов. SQLBase,
XDB-Server и SQL Server освобождают программистов и пользователей от
блокирования записей и обеспечения целостности данных. Они обеспечивают
высококуровневую параллельность транзакций многих пользователей и могут
управлять высокопроизводительной системой обработки транзакций в режиме
реального времени, такой, какая прежде могла работать только на мини и больших
ЭВМ.
NetWare SQL. В NetWare SQL таблицы автоматически блокируются, если программисты не определят точно блокирование
записей, что приводит к тому, что блокирование
становится скорее программистской задачей, а не автоматическим
механизмом.
Любая команда
блокирования WAIT или NOWAIT в каждом программном SQL-обращении вызывает
избыточную операцию автоматического блокирования таблиц. Оператор NOWAIT
возвращает управление программе, когда она пытается получить заблокированную
запись. Затем программа должна повторить выполнение запроса SQL, либо послать
сообщение оператору. Ко-манда WAIT задерживает работу программы, пока она не
сможет получить все запрашиваемые записи. В обоих этих случаях оператор SQL
COMMIT разблокирует таблицы. Как дополнительное средство программиста, систе-ма
блокирования запросов SQL в NetWare может быть полезной для непе-регруженных
транзакциями приложений.
ORACLE Server. В ORACLE Server таблицы также блокируются автоматически. Замыкая
таблицу, пока не будет полностью выполнена транзакция, ORACLE Server позволяет
только одной транзакции в данный момент времени завершать выполнение, что
уменьшает производительности системы.
Режим системы ORACLE - SHARE- налагает на таблицу условие разде-ляемого блокирования (share lock), которое
позволяет программам читать данные из таблицы параллельно и предотвращает
изменение ее кортежей другими пользователями. Программы, в которых используется
режим блоки-рования EXCLUSIVE, имеют исключающее право на управление таблицей.
Разработчики могут
получить возможность блокирования на уровне 2- Кбайтных блоков в режиме SHARE
UPDATE системы ORACLE Server, используя команду SELECT с предложением FOR
UPDATE. ORACLE Server выполняет бло-кирование на уровне блоков для всех
страниц, получаемых в результате выполнения оператора SQL SELECT. Если запись
обновляется, то ORACLE Server использует исключающее блокирование таблицы,
которое не будет снято, пока не закончится обработка транзакции.
Специальный режим не противоречивости чтения (read consistency) позволяет
пользователям читать любую запись, независимо от того, заблокирована она или
нет. Запись появляется так, как это и должно быть. Непротиворечивость чтения
обеспечивает высокую степень параллельности тогда, когда программы только
читают, но не обнов-ляют записи. Однако, он требует при этом избыточной
обработки.
Если две или более
программ пытаются получить доступ или заблокировать одну и ту же группу таблиц
или записей, происходит взаимоблоки-ровка (deadlock). Ни одна из программ не
может работать, так как каждая ждет таблицу или запись, которую заблокировала
другая. В ORACLE Server (как и в XDB-Server, SQL Server, и SQLBase) есть
средства автоматического выявления ситуации взаимоблокирования и произвольного
прекращения обработки одной из транзакций.
SQLBase. В SQLBase поддерживаются два уровня изоляции (в зависимости от количества
одновременно заблокированных кортежей):режим
п_о_в_т_о_р_я_е_м_о_г_о ч_т_е_н_и_я (repeatable read), когда блокиру-ются все 1-Кбайтные страницы,
получаемые или обновляемые командой SQL, и осуществляет это блокирование, пока
они заняты, и режим с_т_а_б_и_л_ь_н_о_с_т_и к_у_р_с_о_р_а (cursor stability),
при котором блокируется только одна запись в каждый момент времени, в
зависимости от того, на какой странице программа читает данные. Режим
стабильности курсора позволяет двум или более программам читать одно и то же
мно-жество записей (одно множество или несколько), но предотвращает однов-ременное
обновление двумя программами одной и той же записи.
Стабильность курсора
полезна в ситуациях, когда программа читает несколько кортежей и обрабатывает
только по одной записи за один раз. Этот режим предоставляет больше средств для
распараллеливания работы, но он более противоречив, чем режим повторяющегося
чтения: программы, обновляющие записи, могут изменять записи, к которым имеет
доступ чи-тающая их программа. Повторяющееся чтение обеспечивает большую непротиворечивость,
так как в течение обработки транзакции заблокировано все множество записей.
Непротиворечивость при чтении позволяет пользователям читать любую запись,
заблокирована она или нет. Система имеет автоматические средства выявления
взаимоблокировок и произвольно прек-ращает выполнение одной из транзакций.
XDB-Server. XDB-Server - это единственный из рассматриваемых в данной статье
серверов, поддерживающий автоматическое блокирование записей. В нем также
поддерживаются режимы повторяемого чтения и стабильности курсора, а у
программистов есть возможность запрашивать блокирование таблиц при помощи
команды LOCK TABLE как дополнение к автоматическому блокированию на уровне
блоков.
XDB-Server автоматически расширяет блокирование на уровне записи до блокирования на уровне
таблицы, если в программе используются больше обращений к блокированию на
уровне блоков, чем допускается в сервере по умолчанию или установлено
администратором при загрузке. Это сокращает непроизводительные затраты на
управление блокированием, но повышает потенциальную вероятность
взаимоблокировки, если программа управления блокированием пытается расширить
до уровня таблиц блокировку для одной программы в то время, когда другие
программы используют эту таблицу.
При режиме
н_а_м_е_р_е_н_н_о_г_о б_л_о_к_и_р_о_в_а_н_и_я (intent lock) блокируются пути
для каждой таблицы, чтобы помочь системе управ-ления решить, улучшит ли
блокирование производительность. При режиме н_е_а_к_к_у_р_а_т_н_о_г_о
ч_т_е_н_и_я (dirty read) для запросов только на чтение все блокировки
игнорируются. Для пользователей, представляющих себе риск потенциальной
противоречивости данных, может быть желателен параллельный доступ. В
XDB-Server есть средства автоматического выявления взаимоблокировок и
произвольного завершения обработки одной из транзакций.
SQL Server. SQL Server автоматически расширяет блокирование уровне 2-Кбайтных
блоков до блокирования программе имеется слишком
много блокирований на уровне блоков. В этой системе также
поддерживается режим повторяющегося чтения с дополнительным предложением
HOLDLOCK в операторе SELECT.
В средствах
автоматического выявления взаимоблокировок в SQL Server реализован срециальных
алгоритм, по которому осуществляется завершение обработки той транзакции, по
которой был выполнен наименьший объем работы.
Механизм выявления "живого" блокирования (livelock)
используется для выявления случаев, когда на выполнение программ,
осуществляющих только чтение (разделяемое блокирование), накладываются
приводящие к останову операции модификации данных. SQL Server фирм Ashton-Tate
и Microsoft автоматически задерживает выполнение запрашивающих транзакций,
пока не выполнится операция обновления. Намеренное блокирование (intent lock) в
SQL Server подобно блокированию путей для каждой таб-лицы, используемому в
XDB-Server.
Средства восстановления данных
В всех системах
управления данными должно обеспечиваться автома-тическое восстановление данных,
чтобы отделять программные и системные сбои от проблем, возникающих с
техническими средствами, скачков напря-жения или некорректных команд оператора.
Программы могут выявлять ошибку и заканчивать свою работу после того, как они
уже частично изменили базу данных, или оператор может выявить ошибку и
прекратить выполнение программы.
Механизм
восстановления транзакций основан на логических рабочих модулях (logical-units-of-work,
LUW). Это операторы SQL, которые долж-ны быть выполнены, прежде чем любое
изменение в базе данных сможет стать постоянным. На следующем примере показан
логический рабочий мо-дуль (LUW) для транзакции с упорядоченным вводом:
BEGIN TRANSACTION
Read customer record from customer table
Insert order record in order table
Insert detail line-1 in detail line table
Insert detail line-2 in detail line table
Insert detail line-3 in detail line table
Update customer record in customer table
COMMIT TRANSACTION
Если обработка этой
транзакции будет прекращена до выполнения ко-манды COMMIT, сервер восстаносит
базу данных в том состоянии, в котором она была до начала выполнения
транзакции.
Обработка транзакций
начинается, когда программа начинает рабо-тать. (В NetWare SQL и SQL Server
есть операторы из расширения SQL: BEGIN TRANSAKTION, которые могут определить
начало транзакции в любой момент времени). Конец транзакции может быть указан
оператором SQL COMMIT или может следовать из событий, таких как окончание
программы. Все обновления и ввод данных транзакции с упорядоченным вводом и связанных
с ней индексов должны быть успешно выполнены, прежде чем логический рабочий
модуль считается завершенным. Если программа или система заканчивает свою работу
до того, как будут завершены все обновле-ния, сервер автоматически удаляет
частичные обновления из базы данных.
Серверы баз данных SQL
записывают все обновления, производимые транзакцией, в журнал
отката-восстановления, который сохраняет копии всех записей прежде, чем они
будут изменены. Если в программе используется оператор SQL ROLLBACK или
программа аварийно завершает работу, программа управления восстановлением
сервера автоматически заменит частично измененные записи их
"предыдущими" копиями.
При сбоях системы,
вызванных ошибками чтения/записи на жестком диске или скачками напряжения,
индексы и таблицы могут содержать частично обновленные записи, частично
измененные индексы и устойчиво разрушенные внутренние указатели. Администратор
должен восстановить базы данных в том виде, в каком она была в момент
последнего сохранения, при этом теряются все обновления, сделанные после
момента сохранения и перед сбоем системы.
Чтобы восстановить
изменения, во всех SQL-серверах баз данных ве-дется журнал восстановления
"вперед". Если в этом журнале содержатся обновления частично
выполненных транзакций, система управления данными удаляет их из журнала
отката-восстановления. Журнал восстановления "вперед" осуществляет
работу по вводу заново результатов завершенных транзакций и помогает обеспечить
то, что данные не будут утеряны.
NetWare SQL.В NetWare SQL нет встроенного механизма управления восстановлением транзакций.
Эта система полагается на Transaction Tracking System (TTS)
фирмы Novell, в которой используется специализи-рованная технология
ввода/вывода, так что любой сервер баз данных мо-жет контролировать целостность
данных и управление транзакциями.
ORACLE Server. Для восстановления "вперед" в ORACLE Server используется журнал
AFTER IMAGE JOURNAL (AIJ), который имеет возможность добавлять параметр
after_image (после копирования) к файлу инициализации ORACLE Server. AIJ
просматривает все журналы, в которых хранится информация после копирования
данных, для всех завершенных транзакций и выводит их на экран оператора с
информацией о всех незавершенных тран-закциях, чтобы дать ясную картину того,
как база данных должна быть реконструирована. Затем сервер читает завершенные
транзакции из журна-ла и обновляет сохраненную копию базы данных.
SQL Base. B SQL Base ecть файл, содержащий
информацию до копирования (журнал отката),
в котором до тех пор, пока пользователь не укажет оператор COMMIT, хранятся
данные, которые должны быть изменены, и журнал восстановления
"вперед", в котором хранятся все операторы SQL, изменяющие данные.
По команде BACKUP
осуществляется сохранение базы данных во время работы с ней, по команде RESTORE
вызывается копия базы данных, полученная в результате выполнения оператора
BACKUP. APPLY JOURNAL читает журнал восстановления "вперед" и
осуществляет завершение обновления.
SQL Server. В SQL Server имеется усовершенствованная система сохранения и
восстановления базы данных, обеспечиваемая как автоматическим, так и
генерируемым прикладной системой восстановлением. Автоматическое восстановление,
которое осуществляется после сбоя на носителях данных, удаляет результаты
работы всех незавершенных транзакций и "прокручивает вперед" любые
транзакции, для которых журнал транзакций был обновлен позже, чем база данных.
Администратор определяет макси-мальное приемлемое время восстановления, по
которому SQL Server опре-деляет автоматически интервал точки проверки (для
транзакций, записан-ных в базу данных). Оператор CHECKPOINT позволяет
программисту указать дополнительную точку проверки.
Динамический дамп
позволяет сохранять базы данных или журналы транзакций без остановки операций
по вводу данных. По оператору DUMP инициализируется создание дампа, а по
оператору LOAD начинается восс-тановление. Программа проверки
непротиворечивости баз данных - Database Consistency Cheker - проверяет, как
индексы привязаны к стра-ницам таблиц и правильно ли отсортированы данные.
XDB-Server. В XDB-Server используется журнал отката для хранения копий данных до
изменения и дополнительный журнал восстановления "вперед" для записи
изменений в базу данных, произведенных после самого последнего сохранения. Если
либо прикладная система, либо сервер даст сбой, сервер автоматически осуществит
откат независимых транзакций.
В XDB-Server есть команды BACKUP и RECOVER, а также служебная программа
для проверки непротиворечивости баз данных,- все эти средства подобны
аналогичным средствам SQL Server.
Обеспечение безопасности данных
Для обеспечения
безопасности данных администраторы используют операторы SQL GRANT и REVOKE, по
которым устанавливается, какие пользователи и к каким таблицам и
представлениям могут иметь доступ. Администраторы баз данных могут определять
представления с настройкой на различные уровни секретности, ограничивая доступ
к ним пользователей. Представления определяются при помощи команд SQL с
условием WHERE. Чтобы ограничить доступ пользователей к таблице паролей
некоторого отдела, администратор создает запрос:
CREATE VIEW payroll_view AS SELECT employee_name, employee address FROM payroll_table WHERE dept_no='DEPT01';
Администратор предоставляет возможность доступа для конкретных пользователей посредством оператора GRANT:
GRANT SELECT ON payroll_view TO user_name
Это означает, что
пользователь с именем user_name может просмат-ривать таблицу employee_name и
обращаться к DEPT01, где упрятана информация о паролях. Приоритеты могут быть
отменены командой REVOKE. Операторы GRANT используются применительно к
таблицам, базам данных, планам, системным приоритетам.
Команды GRANT и REVOKE
поддерживаются во всех рассматриваемых здесь серверах баз данных, хотя и с
некоторыми синтаксическими различиями. И все версии будут удовлетворять
ограничениям целостности (безопасности) системы.
NetWare SQL. В NetWare SQL средства SQL-оператора GRANT ограничиваются установлением
приоритетов доступа для таблиц. Не имеющий анало-гов оператор CREATE GROUP
позволяет определять привилегии доступа для группы пользователей, сохраняя при
этом администратору баз данных часы, затрачивавшиеся на кропотливую и
неблагодарную работу определения одинаковых привилегий для большого количества
пользователей. Средства кодирования осуществляют секретное кодирование данных.
ORACLE Server. ORACLE Server предоставляет следующие приоритеты администрирования баз
данных: оператор CONNECT позволяет пользователям регистрироваться, оператор
RESOURCE позволяет пользователям создавать таблицы, оператор DBA позволяет
пользователям выполнять команды администрирования базы данных. В ORACLE Server
также используются операто-ры GRANT и REVOKE для определения приоритетов
использования таблиц; администратор базы данных может дать пользователю право
использовать оператор GRANT, децентрализуя обеспечение безопасности и
секретности данных.
SQLBase, SQL Server и XDB-Server. В SQLBase, Server и XDB-Server также используются
операторы GRANT для определения приори-тетов
доступа к ресурсам и таблицам. В XDB-Server есть команды GRANT для таблиц и баз
данных, тогда как в SQLBase и SQL Server команды GRANT используются для таблиц
и ресурсов.
Вершина производительности
Среди факторов, влияющих на производительность систем баз данных, - качество работы
программы управления блокированием (использует ли она намеренное блокирование,
как она обрабатывает ситуации взаимоблокировки), уровни стратегий блокирования
(блокирование таблиц по сравнению с блокированием страниц), оптимизация
операторов SQL, работа операционной системы (система с единственным
процессом/многопоточным режимом по сравнению с мультипроцессированием), и
производительность вычислительной системы.
Потребность ORACLE
Server в блокировании таблиц после каждого обновления может привести к слабой
производительности. Его однопоточные транзакции - наихудший из возможных
сценариев в многопользовательской среде. Однако, средства непротиворечивости
чтения в ORACLE Server и SQLBase обеспечивают наивысшую параллельность среди
транзакций, осу-ществляющих только чтение данных.
Сохраняемые процедуры
SQL Server сокращают взаимодействие между прикладными программами и серверами
баз данных. Эти сохраняемые процедуры и обработка ситуаций "живык"
блокировок и взаимоблокировок резко повышают производительность.
XDB-Server имеет хорошо спроектированную физическую архитектуру и
хороший алгоритм соединения в оптимизаторе, что обеспечивает хорошую
производительность. Он спроектирован специально для среды РС, хотя и был
перенесен в Unix.
Совместимость серверов по отношению к различным операционным системам
Для многих организаций совместимость и переносимость программных
продуктов в другие операционные системы является критичным фактором при
разработке приложений. Разработчикам дополнительного программного обеспечения
может понадобиться сервер баз данных, который может работать под управлением
DOS, OS/2 и Unix. Более крупные организации могут хранить данные на различных
компьютерах, но им тоже необходимо разделять использование данных между
прикладными системами. Например, ком-пания может реализовать систему получения
счетов в локальной вычисли-тельной сети, используя сервер баз данных. Система
может хранить кри-тичные (по объему или по важности) данные , но обновлять
общую бухгалтерскую информацию на мини- или большой ЭВМ. Было бы более предпочтительным
обновлять обе системы в режиме реального времени, по одной транзакции.
SQL Server может
поддерживать обновления в распределенных базах данных, но целостность баз
данных должна контролироваться разработчиком. Разработчики должны хорошо
разбираться в логике блокирования, которая может быть очень запутанной.
Планируется поддержка запросов к распределенным базам данных.
SQL Server является
реализацией в среде OS/2 SQL-сервера баз дан-ных для мини-ЭВМ фирмы SYBASE.
Сервер фирмы SYBASE может работать во многих операционных системах, включая DEC
VAX и Sun. При переносе при-ложений в любой из этих серверов интерфейс прикладных
программ остается таким же, независимо от того, в какой операционной системе
этот сервер работает. SQL Server не совместим с DB2.
SQLNet фирмы Gupta
Technologies может связывать один или более серверов SQLBase в сети и делать их
всех доступными для данной транзакции. Прикладные системы могут получать
доступ к локальным серверам баз данных или удаленным системам управления
данными, таким как DB2. В SQLNet используется расширенный протокол связей IBM
типа програм-ма-программа (advanced-program-to-program-communications (APPC)
protocol). Разработчики обращаются к физической базе данных, а SQLNet
обрабатывает все связи. Для разработчика удаленная база данных выгля-дит как
сервер локальной базы данных. Поскольку SQLBase не поддерживает операции
обновления в распределенных базах данных, программисты мо-гут обновлять только
одну базу данных в данной транзакции.
NetWare SQL, работающий как дополнительный процесс (value-added process (VAP)), под
управлением системы Advanced NetWare, поддерживает несколько серверов в сети
Novell, но удаленные серверы посылают записи по одной, что уменьшает
производительность. Часто используемые данные должны быть помещены на локальный
сервер, а нечасто используемые дан-ные - храниться удаленно. Способность ORACLE
работать на различных мини-ЭВМ полезна для организаций, которые зависят от
разнообразных вы-числительных технических средств. ORACLE Server поддерживает
ограниченные запросы к распределенным базам данных, так что пользователи в
локальной вычислительной сети могут получать доступ к удаленным базам данных в
системах Unix и VAX.
XDB-Server был перенесен в различные среды Unix и VAX. У него нет
удаленных средств протокола APPC, но XDB Systems работает при поддержке
распределенной базы данных с полной целостностью модификации распределенных
данных. В настоящее время пользователи могут инстоллировать несколько серверов
в одной локальной вычислительной сети, но за один раз они могут получать доступ
только к одному серверу.
Выбор сервера баз данных
Похоже, помимо
серверов баз данных, имеющихся в настоящее время, будет выпущено еще небольшое
количество серверов - из-за сложности их разработки. Программные продукты,
описанные в данной статье, плюс ожи-даемые сервер баз данных фирмы IBM для
OS/2, сервер VIA/DRE фирмы VIA Informations Systems, и несколько не-SQL
серверов баз аднных (таких как ZIM фирмы Zanthe) - составляют большую часть
рынка. Главная задача для системных аналитиков - определить, какой из
продуктов наилучшим образом подходит для их организации.
SQL-Server фирм Ashton-Tate/Microsoft
является главным претенден-том. Это мощная система, имеющая средства для работы
с большим набором прикладных систем. С ним могут работать и многие программные
продукты других разработчиков: dBase IV фирмы Ashton-Tate, DataEase фирмы DataEase
International, Paradox фирмы Borland - как и компиляторы языков
программирования компании Microsoft и программное обеспечение электронных
таблиц.
Для организаций с
вычислительными сетями среднего и большого размера SQL Server обеспечивает
гибкие возможности управления и функциональность, которые необходимы для
работы с различными сложными приложениями. Администраторам баз данных
предоставляется превосходная возможность управления средой сервера, и они
могут настраивать систему на поддержку принятия решения или обработку
транзакций высокого уровня. Поскольку SQL Server является прямым портом системы
управления данными фирмы Sybase для мини-ЭВМ, организации могут подключаться к
Sybase, работающей под управлением Unix и VAX. Компания Microsoft, которая яв-ляется
владельцем программ OS/2 Manager и LAN Manager, также легко может настроить
SQL Server для этой операционной среды. Но поскольку на все это затрачиваются
все возрастающие усилия на инстолляцию и администрирование, то для организаций
с маленькими вычислительными сетями SQL Server может оказаться невыгодным.
Когда OS/2 Extended
Edition Database Manager фирмы IBM будет поставляться как файловый сервер, он
можут привлечь внимание компании Fortune 500 и других крупных пользователей
IBM. Фирма IBM увязывает SQL Database Manager со своей операционной системой и
системой для локальных вычислительных сетей, предоставляя покупателям все это
в единой поставке, что весьма привлекательно. Компания IBM также будет вы-пускать
однородные средства управления базами данных, состоящие из DB/2 или SQL/DS для
больших ЭВМ и OS/2 Extended Edition Datadase Manager для РС.
ORACLE Server также
может составить конкуренцию на рынке мощных серверов баз данных, соревнуясь с
SQL Server и сервером баз данных для OS/2 фирмы IBM. Настоящая версия ORACLE
Server требует таких же боль-ших затрат на инстоллирование и администрирование,
как и SQL Server, но не обладает ни его гибкостью, ни силой. Однако,
пользователи ORACLE в среде VAX и Unix могут обнаружить, что совместимость и
переноси-мость ORACLE Server во всех операционных средах перевешивают все его
недостатки.
Для XDB-Server,
SQLBase и NetWare SQL необходимо меньше затрат на администрирование и меньше
машинных ресурсов. Все эти системы имеют версии, работающие под управлением
DOS, и их рабработчики планируют создание версий для OS/2. SQLBase и XDB-Server
имеют высокий уровень совместимости с DB/2, а XDB-Server переносим в Unix.
NetWare SQL привлекателен для крупных учреждений, активно использующих
программу Btrieve, а также для пользователей других программных продуктов фирмы
Novell.
В скором времени серверы баз данных будут доминировать на рынке
многопользовательских сетевых программных продуктов, вытесняя файловые серверы
и бросая вызов большим ЭВМ, являющимся сейчас главной основой разработки для
больших и сложных приложений. Этот процесс будет ускоряться по мере того, как
все больше средств разработки прикладных программ будут использовать
преимущества новых качеств серверов баз данных. Эти системы уже сейчас являются
многообещающими, но скоро они вторгнутся в деловой мир, сочетая качество систем
управления данными больших ЭВМ и экономичность персональных вычислительных
систем.
Ashton-Tate Corporation
20101 Hamilton Avenue
Torrance, CA 90502-1319
800/437-4329;213/329-8000
Microsoft Corporation
16011 N.E. 36th Way
P.O. Box 97017
Redmond, WA 98073-9717
206/882-8080
SQL Server: стоимость 2 495 долл.
Gupta Technologies Inc.
1040 March Road, Suite 200
Menlo Park, CA 94025
800/876-3267; 415/321-9500
SQLBase starter kit (включает
SQL Windows): однопользовательский - стоимость 1 295 долл.,
многопользовательский - стоимость 2 995 долл.
Novell Inc.
Development Product Division
6034 W. Courtyard Drive
Austin, TX 78730
<>512/346-8380
NetWare SQL (за сервер): 595 долл.
Oracle Corporation
20 Davis Drive
Belmont, CA 94002
800/672-2531; 415/598-8000
ORACLE Server: цена не известна
XDB Systems Inc.
7309 Baltimore Avenue, Suite 220
College Park, MD 20740
301/779-6030
XDB-Server: 1 995 >долл.
|