ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.


промокод ламода май 2018 http://promocodix.ru/lamoda/

 

Развитие серверов баз данных

                                                  Р. Финкельштейн
                                 
     АННОТАЦИЯ.  Будущее  обработки  данных  уже  близко. Персональные
компьютеры скоро будут наделены мощными средствами использования  дан-
ных в режиме коллективноого пользования, что недавно было прерогативой
только  больших вычислительных машин. Ключом к этому будущему являются
основывающиеся на 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 долл.
     ------------------------


?????? ???????????