ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП |
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы. |
Развитие серверов баз данных Р. Финкельштейн АННОТАЦИЯ. Будущее обработки данных уже близко. Персональные компьютеры скоро будут наделены мощными средствами использования дан- ных в режиме коллективноого пользования, что недавно было прерогативой только больших вычислительных машин. Ключом к этому будущему являются основывающиеся на 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/ Gupta Tech- Oracle Cor- XDB Фирма Microsoft nologies Novell 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 1.0+ DOS 3.1+ ная система OS/2 (Мин.)объем 30 Мбайт 10 Мбайт 10 Мбайт 10 Мбайт 10 Мбайт жесткого диска (только для сервера 4,5 Мбайт (Мин.)объем оперативной 6 Мбайт 640 Кбайт 512 Кбайт 640 Кбайт, 640 Кбайт памяти 896 Кбайт рас- ширения Сетевая MS LAN NETBIOS NetWare NETBIOS NETBIOS поддержка Manager 1.0 и совм. и совм. и совм. --------------------------------------------------------------------- Первые серверы баз данных, появившиеся на рынке персональных компьютеров, работают на вычислительных машинах, оснащенных микропро- цессорами 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 Database Manager в 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 є ЗДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¶ є Во всех из расматривавшихся здесь серверах баз данных имеются є є системные каталоги - системные таблицы, в которых хранится инфор- є є мация о компонентах баз данных, таких как таблицы, столбцы, и о є є приоритетах доступа к ним. В большинстве каталогов также содержит- є є ся информация о представлениях, синонимах, базах данных и ключах. є ИННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННј В 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 имеют развитые системы управления є є блокированием, которые поддерживают режимы повторяющегося чтения и є є стабильности курсора. є ИННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННј Поскольку при блокировании отношений только один пользователь в данный момент времени может получить доступ ко всему отношению, то примение блокирования ограничивает параллельность. Хотя блокирование на уровне записей кажется наилучшим вариантом, оно может уменьшить производительность по сравнению со страничным блокированием. При помо- щи страничного уровня можно осуществлять блокирование многих записей за один раз и наилучшим образом обеспечить баланс соотношения парал- лельности и производительности. Такое блокирование позволяет админист- ратору решать, какие отношения будут блокироваться и на каком уровне. Как у 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, SQL 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 долл. ------------------------ |