Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Программы Обои   Экспорт RSS E-Books
 
 

   Базы данных -> SQL -> Спецпроцессор базы данных


Спецпроцессор базы данных

Ван-Нейм М.Л., Кечингс Б.

Спецпроцессор базы данных (database server) имеет множество преимуществ по сравнению с традиционными системами баз данных на автономных микрокомпьютерах. Наибольшим его достоинством является, по-видимому, одновременная поддержка данных множества пользователей; но центра-лизация данных в локальной сети имеет также и другие преимущества.

Благодаря хранению единственной копии каждой порции информации в спецпроцессоре базы данных исключаются избыточность и противоречивость данных. Для сравнения рассмотрим случай использования нескольких автономных систем на одном предприятии. При хранении одних и тех же данных (например, фамилий и адресов служащих) в нескольких местах изменение какого-либо элемента данных в одном месте вызовет противоречивость данных. Хранение же единственной доступной для всех копии данных исключает необходимость избыточных копий. При внесении изменения его ре-зультат становится доступным сразу всем пользователям.

Компромисс эволюции

В сущности, спецпроцессор базы данных представляет собой компро-мисс эволюции между современными системами баз данных на автономных компьютерах и централизованными системами баз данных на больших ЭВМ и миникомпьютерах. Традиционно микрокомпьютерные базы данных поддерживали данные одного пользователя на одной машине. Микрокомпьютер выполнял весь объем работы: от запросов к базе данных из пользовательских прикладных программ до организации ввода-вывода на экран. В случае необходимости разделения данных с кем-либо еще пользователю требовалось либо производить смену дисков, либо соблюдать очередность при использовании одной и той же системы.

В противоположность этому, централизованные системы баз данных на больших ЭВМ и миникомпьютерах позволяли большому количеству пользова-телей одновременно разделять данные на одной машине. Центральная ЭВМ выполняла всю обработку базы данных и прикладных программ, а пользова-тель сидел за терминалом ввода-вывода.

Архитектура пользователь - спецпроцессор сочетает оба эти подхо-да. Она использует центральную обслуживающую машину, выполняющую всю обработку базы данных. Подобно миникомпьютерам и большим ЭВМ спецпро-цессор поддерживает единственную копию базы данных и предоставляет ее всем пользователям. Спецпроцессор, однако, не выполняет реальные при-ложения базы данных или другие пользовательские программы. Решение этих задач остается за микрокомпьютерами, выступающими в роли пользо-вателей центральной обслуживающей машины. Каждый микрокомпьютер выпол-няет свои собственные прикладные программы и обрабатывает свой экран и клавиатуру ввода-вывода. Если прикладной программе требуются данные из базы данных, она использует локальную пользовательскую библиотеку для составления запроса к базе данных, который она посылает по локальной сети в спецпроцессор. После отыскания спецпроцессором требуемых данных или выполнения требуемых операций он посылает данные обратно по сети пользователю.

Такая архитектура предполагает распределение обработки между пользователем и обслуживающей машиной, однако она не предполагает рас-пределения самих данных. Системы баз данных, хранящие свои данные в нескольких местах и обеспечивающие целостность этой совокупности дан-ных, называют распределенными базами данных.

Перед спецпроцессором единственной централизованной базы данных стоит более простая задача, по сравнению с системой распределенных баз данных, потому что ему нет необходимости беспокоиться о координации данных, размещенных в различных местах.

Требования, выдвигаемые спецпроцессором

Спецпроцессор базы данных выдвигает существенные требования к не-которым основополагающим технологиям. Во-первых, требуется, чтобы цен-тральная машина обладала достаточной мощностью для обработки много-пользовательской базы данных. Микрокомпьютеры старшего поколения, нап-ример, IBM PC XT, первые модели фирмы Macintosh, не обладали достаточ-ной мощностью для поддержки сложных спецпроцессоров, а новые компьюте-ры предлагают намного большие возможности обработки. Фактически, цент-ральные процессоры на базе микропроцессоров Intel 80386 и Motorola 68030 обеспечивают мощность, сопоставимую с мощностью миникомпьютеров.

Некоторые разработчики сетей, например, фирма Novell, делают свои локальные сети открытыми и для миникомпьютеров, так что в качестве спецпроцессора базы данных в микрокомпьютерной локальной сети с успе-хом может использоваться миникомпьютер. Роль спецпроцессора может так-же выполнять большая ЭВМ; например, фирма IBM планирует обеспечить для расширенной версии подсистемы управления базами данных в OS/2 (OS/2 Extended Edition Database Manager) возможность поиска данных из базы данных DB2 на большой ЭВМ.

Мощный процессор - это, конечно, не единственное требование, выд-вигаемое спецпроцессорами. Для них требуются также жесткие диски, ем-кость и скорость которых достаточны для поддержания баз данных, по объему сопоставимых с хранимыми в системах на базе миникомпьютеров и больших ЭВМ. Для спецпроцессоров требуются также операционные системы, такие как Unix и OS/2, которые наиболее полно используют преимущества таких процессоров и дисков. Эти операционные системы обеспечивают мультизадачный режим и объем памяти, требующийся для развитых систем баз данных. Хотя и возможно построить спецпроцессор базы данных на ос-нове операционной системы DOS, но ограничения однопроцессорной обра-ботки и 640 Кбайт памяти делают DOS слабым фундаментом для спецпроцес-сора.

Кроме того, локальная сеть должна быть достаточно мощной, для то-го чтобы обрабатывать передачу запросов и ответов между множеством пользователей и спецпроцессором. Многие существующие локальные сети обеспечивают производительность, необходимую для поддержки множества одновременно работающих пользователей.

Наконец, система баз данных должна поддерживать многопользова-тельский режим, обеспечивая разумные уровни производительности, защиты и целостности. Так как системы баз данных на миникомпьютерах уже долж-ны были столкнуться с этими проблемами, многие из современных спецпро-цессоров уходят корнями в мир миникомпьютеров. Фирмы Oracle и INGRES предлагают спецпроцессоры на базе своих миникомпьютерных версий; фирма Sybase разработала одну из первых своих версий спецпроцессора Sybase/Microsoft/Ashton-Tate SQL для VAX.

Пока еще рано говорить, насколько важной будет роль OS/2 в этой области. Она действительно предоставляет услуги, требуемые спецпроцес-сорами и поэтому имеет шансы стать важной основой для спецпроцессоров базы данных. В настоящее время OS/2 не может использовать преимущества некоторых особых характеристик процессора 80386, таких, как, например, подкачка памяти. Поставщики и пользователи с надеждой ожидают версию OS/2 для процессора 80386.

Несмотря на упомянутый недостаток OS/2, многие поставщики объяви-ли о спецпроцессорах базы данных на основе OS/2. Фирма IBM отметила даже, что разработанная ею расширенная версия подсистемы управления базами данных в OS/2, возможно, сможет выступать в роли спецпроцессора базы данных в локальной сети. В настоящее время уже есть такие систе-мы, как Oracle фирмы Oracle Corp., SQL Server фирм Sybase/Microsoft/Ashton-Tate, SQL-Base фирмы Gupta Technology и др. Эти и другие подобные им программные продукты могут подтвердить право OS/2 на существование, в чем она так нуждается.

Основные функции спецпроцессора

Основной причиной того, что большинство спецпроцессоров основаны на миникомпьютерных системах баз данных, является сложность задач, ко-торые должен обрабатывать спецпроцессор. Многие существующие системы баз данных не обладают необходимыми средствами для поддержания много-пользовательского режима. Мультипользовательская система выдвигает та-кие требования, с которыми редко сталкиваются в автономной среде.

Спецпроцессор базы данных должен быть прозрачным для пользовате-лей. У большинства пользователей микрокомпьютеров есть полюбившиеся базы данных. В структуре пользователь - спецпроцессор пользователь ис-пользует привычную пользовательскую прикладную программу, но при этом эта программа получает данные от спецпроцессора, а не с локального диска. Многие разработчики баз данных поспешно добавляют эту возмож-ность в свои программные продукты. Такие лидеры, как Ashton-Tate (dBase IV) и Borland (Paradox) уже объявили и поставляют средства для внутренних спецпроцессоров на базе языка SQL.

Со стороны спецпроцессора все обстоит намного сложнее. Во-первых, спецпроцессор должен обрабатывать запросы в форме, подходящей для пе-редачи по сети. Для достижения разумной производительности спецпроцес-сор должен минимизировать трафик сети. Это обычно означает, что должен быть язык манипулирования данными, позволяющий пользователям работать с несколькими записями одновременно. Неудивительно, что почти все име-ющиеся спецпроцессоры представляют собой реляционные системы баз дан-ных, использующие для манипулирования данными язык SQL (см. приложение

1). Пользовательские системы оформляют свои запросы на языке SQL, а спецпроцессор интерпретирует эти запросы и выбирает разумную стратегию для их выполнения (см. приложение 2).

Более сложные проблемы возникают из-за необходимости одновремен-ной поддержки нескольких пользователей. Пока речь идет только о считы-вании данных, проблемы не возникает: спецпроцессор легко может позво-лить многим пользователям одновременно считывать одни и те же данные. Но в случае модификации данных спецпроцессор должен обеспечить функции блокирования файлов и записей в целях корректного обслуживания каждого пользователя. Корректность обслуживания в случае спецпроцессоров осно-вывается на понятии логической единицы работы, называемой транзакцией.

Атомарные транзакции

Транзакция представляет собой последовательность связанных опера-ций, которую система баз данных считает атомарной, т.е. система гаран-тирует, что операции в конкретной транзакции будут либо все успешно выполнены, либо все отвергнуты. Рассмотрим, например, транзакцию, ко-торая пересылает деньги с одного счета на другой. Атомарная природа транзакции обеспечивает, что ее компоненты - снятие с одного счета и перечиление на другой счет - либо обе будут выполнены, либо обе будут отвергнуты.

Большинство систем баз данных, использующих понятие транзакции, следуют трем основным правилам. Во-первых, они поддерживают два спосо-ба завершения транзакции. Транзакция может завершиться нормально (опе-рация "выполнение" - "commit") или аварийно (операция "откат" - "rollback"). Аварийное завершение означает отказ от всех операций, входящих в транзакцию.

Во-вторых, спецпроцессор должен гарантировать, что любые измене-ния базы данных, производимые транзакцией T, являются невидимыми для других транзакций до тех пор, пока транзакция T не выполнит эти изме-нения. Если же транзакция T оказывается возвращаемой, для базы данных это означает, что этой транзакции и не было. Следуя этому подходу, спецпроцессор предотвращает доступ к изменениям, производимым транзак-цией T, со стороны других транзакций в случае аварийного завершения транзакции T.

И, наконец, в-третьих, спецпроцессору приходится считаться с тем фактом, что различные транзакции могут начинаться и завершаться в лю-бой момент времени, в том числе и в середине других транзакций. Такие транзакции называют перемежающимися (intervealed transactions). Спец-процессор базы данных должен выполнять перемежающиеся транзакции таким образом, что результаты их выполнения появляются последовательно; дру-гими словами, что результат должен быть эквивалентен выполнению этих же самых транзакций по одной в каждый момент времени в некоторой пос-ледовательности.

Кроме того, спецпроцессор должен выполнять эти требования таким образом, чтобы обеспечить разумную итоговую производительность. Блоки-рование всего файла, выполнение транзакций по одной, принцип "первым пришел - первым обслужился", - все это, конечно, соответствует вышеу-помянутым правилам транзакции, но это не обеспечивает одновременности работы пользователей. Спецпроцессор базы данных должен автоматически находить правильное соотношение между блокированием таблицы (или фай-ла), блока и записи, чтобы не только удовлетворять правилам транзак-ции, но и максимизировать число пользователей, одновременно разделяю-щих имеющиеся данные.

Так как все данные хранятся в одном месте, спецпроцессор должен также гарантировать целостность данных другими способами. Он должен обеспечить средства для резервного копирования данных и восстановления их в случае краха системы или разрушения базы данных. Проблемы могут возникать самые разные: от простых, например, в случае отказа машины пользователя в середине транзакции до разрушения диска, на котором хранятся все данные спецпроцессора.

Атомарные транзакции часто играют определенную роль в этом про-цессе резервного копирования и восстановления. Периодически следует делать полные резервные копии базы данных спецпроцессора. Спецпроцес-соры сами обычно поддерживают системные журналы с регистраций завер-шенных транзакций. Когда одна пользовательская транзакция срывается до своего завершения, спецпроцессор должен вернуть все в состояние, пред-шествующее ее началу. В случае аварии спецпроцессор может использовать последнюю полную резервную копию базы данных и свой системный журнал регистрации транзакций для восстановления базы данных. Спецпроцессор сначала загружает резервную копию, а затем использует журнал регистра-ции транзакций для внесения обновлений из всех завершенных транзакций; эта операция носит название "выход из аварийного состояния" (fallforward).

Достоинства спецпроцессоров

Централизованное хранение данных облегчает резервное копирование базы данных. Вместо того, чтобы выполнять резервное копирование на многих машинах, эта процедура выполняется только спецпроцессором. Пользователи освобождены от забот об этом.

Централизация может также упростить решение проблемы защиты дан-ных. Защита данных в случае автономного микрокомпьютера часто означает отыскание способов для ограничения доступа к самому микрокомпьютеру, связывая пароль со всей базой данных или удаляя базу данных, если она не используется. Большинство спецпроцессоров баз данных предлагают бо-лее мощные функции защиты. Язык SQL, например, включает операторы, позволяющие точно специфицировать, какие пользователи могут выполнять операции, какие именно операции и на каких частях базы данных.

Архитектура пользователь - спецпроцессор также имеет потенциаль-ные возможности использовать преимущества множества различных архитек-тур технического и программного обеспечения. В качестве пользователь-ских машин можно использовать машины с MS-DOS и фирмы Macintosh, а также все связанное с ними прикладное программное обеспечение. Жела-тельно, по-видимому, чтобы спецпроцессор был мощной системой (напри-мер, миникомпьютер или микрокомпьютер на базе микропроцессора 80386). Спецпроцессор может также использовать более сложную операционную сре-ду по сравнению с пользовательскими машинами, т.к. только у админист-раторов данных возникает потребность непосредственно использовать спецпроцессор. Таким образом, программное обеспечение спецпроцессора может выполняться на миникомпьютере под системой Unix.

Хотя спецпроцессоры базы данных во многом сходны с распределенны-ми системами баз данных, они имеют некоторые преимущества. Главное из них заключается в том, что в настоящее время имеется в продаже нес-колько различных спецпроцессоров базы данных и имеются они уже в тече-ние некоторого времени, тогда как настоящие распределенные системы баз данных только начинают появляться. Спецпроцессоры базы данных также менее сложны и требуют меньших коммуникационных затрат, чем распреде-ленные системы баз данных, причем существенно меньших, т.к. спецпро-цессору не приходится управлять данными и обепечивать их целостность на множестве абонентских пунктов.

Недостатки спецпроцессоров

Имеются, конечно, и некоторые недостатки у спецпроцессоров базы данных. В силу своих особенностей они забирают функции управления у пользователей индивидуальных компьютеров и передают их в руки админис-траторов спецпроцессоров. Спецпроцессоры, таким образом, представляют собой отступление от независимости микрокомпьютеров и шаг назад к цен-трализованному управлению миникомпьютеров и больших ЭВМ. В отличие от спецпроцессоров, и автономные и распределенные системы баз данных предполагают хранение данных по месту их использования.

Помещая все данные в одно место, архитектура пользователь - спец-процессор делает центральный спецпроцессор критическим ресурсом: поте-ряв его, можно потерять доступ ко всем данным. Так как база данных включает ключевые данные для всех пользователей, потеря их может быть дорогостоящей. Если даже спецпроцессор выходит из строя только лишь на некоторое время, это останавливает все зависящие от базы данных прик-ладные программы.

Спецпроцессоры базы данных представляет собой сложные программы, требующие присутствия администраторов с особой подготовкой. Даже не-подготовленные пользователи микрокомпьютеров зачастую могут управлять своими локальными базами данных, но администратор спецпроцессора базы данных должен разбираться в вопросах проектирования баз данных, целос-тности и защиты данных, резервного копирования и восстановления, регу-лирования производительности. Это такие же задачи, с которыми прихо-дится сталкиваться на миникомпьютерах и больших ЭВМ.

Наконец, тогда как производительность автономной микрокомпьютер-ной системы баз данных предсказуема заранее, производительность спец-процессора изменяется в широком диапазоне, в зависимости от объема трафика в сети. Низкая производительность сети или спецпроцессора мо-гут создать серьезную проблему. Хотя большинство спецпроцессоров пред-лагают некоторые возможности варьирования производительности, но огра-ничения спецпроцессора и скорость сети устанавливают граничное значе-ние производительности.

Разделение функций

Различные спецпроцессоры базы данных могут быть по-разному спро-ектированы, но для всех них характерно разделение функций между поль-зователем и спецпроцессором. Такая архитектура будет становиться все более привычной по мере распространения локальных сетей и осознания необходимости хранения разделяемых данных. Спецпроцессоры базы данных заимствуют лучшие черты централизованного хранения данных, в большой мере сохраняя преимущества независимости индивидуальных пользователей.

Приложение 1

Большинство спецпроцессоров базы данных поддерживают язык SQL (произносится "sequel") - язык, который уже на протяжении длительного времени фактически является стандартом для реляционных систем баз дан-ных. Благодаря развивающемуся стандарту ANSI и поддержке фирмы IBM язык SQL, вероятно, в течение некоторого времени будет основным языком базы данных для спецпроцессоров.

Возможности языка SQL

Достоинством SQL является то, что он позволяет прикладным прог-раммам, работающим с базой данных, выдавать спецпроцессору запросы, относящиеся ко множеству записей. Четыре основных оператора манипули-рования данными в SQL - SELECT, INSERT, UPDATE, DELETE - могут рабо-тать в каждый момент времени с группами записей. Прикладная программа может, например, выдать следующий оператор

SELECT NAME FROM EMPLOYEE WHERE CITY = "St. Louis"

для нахождения фамилий всех сотрудников, живущих в St. Louis. Оператор

поступает в спецпроцессор как один запрос и спецпроцессор выполняет все необходимые действия для нахождения соответствующих записей.

Хотя спецпроцессор мог бы передать пользователю сразу все отоб-ранные записи, такая передача создала бы проблему для большинства прикладных программ, т.к. традиционные языки программирования предназ-начены для работы только с одной записью в каждый момент времени, а не с группой записей. Поэтому регламентированный стандартом ANSI SQL-ин-терфейс обеспечивает операции, позволяющие пользователям получать тре-буемые записи по одной в каждый момент времени. Такой подход очевидно увеличивает сетевые расходы и свидетельствует в пользу манипулирования сразу группами записей. Расширения некоторых версий SQL позволяют программам находить группы записей при одном обращении.

SQL также обеспечивает функции COMMIT и ROLLBACK, позволяющие программам управлять транзакциями. Кроме того, SQL является также язы-ком описания данных, с помощью которого можно определять структуру баз данных. Он предоставляет команды для описания таблиц и полей базы дан-ных, а также возможности управления защитой этих элементов данных.

Некоторые недостатки

Хотя SQL вряд ли будет вытеснен, он, конечно, не лишен недостат-ков. Одна из проблем заключается в том, что нет по крайней мере двух таких версий (включая три версии фирмы IBM), которые бы в точности совпадали.

В SQL также отсутствуют некоторые возможности, которые многими считаются важной частью реляционной модели. Например, SQL не предос-тавляет непосредственной поддержки для первичных ключей (групп из од-ного или более полей, которые должны быть уникальными в каждой записи данного типа). Можно использовать SQL для введения ограничений для первичных ключей, но соответствующее понятие в языке отсутствует. Это вызывает особые неудобства, т.к. многие виды приложений используют уникальные идентификаторы записей.

Бесспорное лидерство

Несмотря на эту и другие проблемы SQL несомненно является в нас-тоящее время языком спецпроцессоров базы данных. Все основные извест-ные на сегодняшний день спецпроцессоры базы данных поддерживают SQL. Благодаря своим техническим достоинствам, а также силам, поддерживаю-щим его на рынке, язык SQL, по-видимому, сохранит свое лидирующее по-ложение в течение многих лет.

Приложение 2

Система NetWare SQL представляет собой спецпроцессор базы данных фирмы Novell. Она может выполняться на любом спецпроцессоре Netware. Хотя когда-то Netware был ограничен исследованием микропроцессоров, более новые его версии допускают использование в качестве спецпроцес-соров машин VAX и других миникомпьютеров. На пользовательских машинах могут использоваться DOS, OS/2 или Mac OS.

При использовании NetWare SQL пользовательская прикладная прог-рамма, работающая с базой данных, размещается в верхней части неболь-шого стека пользовательского программного обеспечения базы данных. Прикладная программа может быть специально написана для выполнения с Netware SQL или же существующая программа может быть модифицирована с учетом требований спецпроцессора. Имеется несколько пользовательских интерфейсов, в их числе dBXL и Quicksilver фирмы WordTech Systems, R&R фирмы Concentric Data Systems, Lotus 1-2-3 и другие.

Прикладная программа формирует свой запрос, используя XQL - программный интерфейс для Netware SQL. XQL в действительности предоставляет два различных интерфейса прикладного программирования: XQLM и XQLP.

Интерфейс XQLM - подсистема управления SQL (SQL Manager) - пре-доставляет версию программных функций SQL на базе стандарта ANSI SQL. Интерфейс XQLP предоставляет набор частных, низкого уровня функций ба-зы данных (фирма Novell называет их реляционными примитивами - relational primitives).

XQL использует запросный интерфейс NSREQ для передачи своих зап-росов спецпроцессору. NSREQ передает запросы в стандартную оболочку Netware, которая их пересылает по сети спецпроцессору. Под управлением DOS интерфейс NSREQ выполняется как часть резидентной программы, в случае OS/2 - это динамически подсоединяемая библиотека.

Спецпроцессор Netware SQL использует для обработки запросов раз-личные процессы Netware. Один из таких процессор - NW$SQL. Имеется по одному процессу NW$SQL для каждого активного пользователя. Он выполня-ет некоторую обработку базы данных, но в основном для управления запи-сями он использует систему Btrieve фирмы Novell.

Процесс NW$SQL взаимодействует с программой BROUTER (маршрутиза-ция сообщений в Btrieve). BROUTER представляет собой программу межпро-цессной связи, которая посылает запросы из процесса NW$SQL в процесс Btieve в том спецпроцессоре, где хранятся данные. В локальной сети с одним спецпроцессором эта функция очевидно не является необходимой, но в случае множества спецпроцессоров она может быть критичной.

Собственно спецпроцессор Btrieve представляет собой программу BSERVER. BSERVER обрабатывает основные операции чтения и записи данных и использует систему отслеживания транзакций, являющуюся компонентой Netware, для поддержки одновременной работы пользователей. К сожале-нию, Btrieve автоматически блокирует таблицы полностью, если в прик-ладной программе не задано явно блокирование записи. При таком подходе блокирование может составить серьезную проблему.



 

 
Интересное в сети
 
10 новых программ
CodeLobster PHP Edition 3.7.2
WinToFlash 0.7.0008
Free Video to Flash Converter 4.7.24
Total Commander v7.55
aTunes 2.0.1
Process Explorer v12.04
Backup42 v3.0
Predator 2.0.1
FastStone Image Viewer 4.1
Process Lasso 3.70.4
FastStone Image Viewer 4.0
Xion Audio Player 1.0.125
Notepad GNU v.2.2.8.7.7
K-Lite Codec Pack 5.3.0 Full


Наши сервисы
Рассылка новостей. Подпишитесь на рассылку сейчас и вы всегда будете в курсе последних событий в мире информационных технологий.
Новостные информеры. Поставьте наши информеры к себе и у вас на сайте появится дополнительный постоянно обновляемый раздел.
Добавление статей. Если вы являетесь автором статьи или обзора на тему ИТ присылайте материал нам, мы с удовольствием опубликуем его у себя на сайте.
Реклама на сайте. Размещая рекламу у нас, вы получите новых посетителей, которые могут стать вашими клиентами.
 
Это интересно
 

Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.