Сервер базы данных

Поделись знанием:
Перейти к: навигация, поиск

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

Архитектура клиент-сервер состоит из клиентов и серверов. Основная идея состоит в том, чтобы размещать серверы на мощных машинах, а приложениям, использующим языковые компоненты СУБД, обеспечить доступ к ним с менее мощных машин-клиентов посредством внешних интерфейсов.





Язык SQL

Большинство СУБД используют язык SQL (Structured Query Language — язык структурированных запросов), так как он удобен для описания логических подмножеств БД.

Назначение SQL:

  • создание БД и таблицы с полным описанием их структуры;
  • выполнение основных операций манипулирования данными (такие как вставка, модификация и удаление данных из таблиц);
  • выполнение простых и сложных запросов.

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

Хранимые и присоединенные процедуры

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

Хранимые процедуры — это предварительно откомпилированные предложения языка SQL, которые сохраняются на сервере базы данных, использующей язык SQL. Клиент запускает хранимую процедуру с помощью команды EXECUTE<имя процедуры>. Таким образом, по сети передаются только два слова. Поскольку эта процедура уже откомпилирована и оптимизирована, серверу не нужно тратить время на компиляцию и оптимизацию.

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

Присоединенные процедуры (триггеры) подобны хранимым процедурам и исполняются в ответ на события, происходящие в БД. Когда с некоторыми приложениями языка SQL связана присоединенная процедура, выполнение этого предложения всегда запускает целую серию команд, входящих в эту процедуру. Присоединенная процедура автоматически выполняет одно или более предложений языка SQL, всякий раз, когда выполняет предложения INSERT, UPDATE или DELETE.

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

Операционная среда серверов

Примеры серверов БД: SQL SERVER (Microsoft), SQL BASE SERVER, Oracle SERVER (Oracle Corporation), IBM DB2, Informix.Каждый сервер БД может работать на определенных типах компьютеров и сетей. Операционными системами серверов могут быть MSDOS, OS/2, Xenix,Unix, Dec VMS/ Рабочие станции пользователей обычно работают под управлением MSDOS, OS/2, Xenix, Unix.

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

Ссылочная целостность реляционных БД

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

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

Ссылочная целостность означает, что ни в одной таблице не допустимы записи-«сироты».

Запись может осиротеть тремя способами:

  1. родительская запись удалена;
  2. родительская запись изменена таким образом, что связь между «родителем» и «потомками» потеряна;
  3. введена дочерняя запись без соответствующей родительской.

Поддержание ссылочной целостности возможно несколькими способами:

  1. Через ключи, хранящиеся в таблицах БД (родительские таблицы содержат первичные ключи, представляющие собой комбинации внешних ключей, которые могут быть найдены внутри каждой из дочерних таблиц).
  2. Использование присоединенных процедур — процедурная ссылочная целостность. Присоединенные программы обеспечивают ссылочную целостность за счет автоматического выполнения предложений SQL всякий раз, когда встречается одно из предложений UPDATE/INSERT или DELETE (либо запрещается удаление родительской записи, либо стираются все дочерние записи).

Транзакции и целостность БД

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

Согласованность чтения

Характерна для многопользовательских СУБД. Для её реализации серверы обладают средствами автоматической блокировки.

Уровни, на которых блокируется таблица во время обновлений:

  • вся таблица;
  • страница (физический блок размером от 1 до 4 Кбайт, содержащий несколько записей).

Тупиковые ситуации

Серверы БД должны иметь средства определения состояния взаимоблокировки (dead lock). При возникновении такой ситуации выполнение одной из транзакций прерывается, выводя другую транзакцию из состояния вечного ожидания. Прерванная транзакция после исключения возможности её блокировки выполняется сначала.

Схемы оптимизации работ на языке SQL

Цель оптимизации состоит в обеспечении как можно более быстрого получения ответа на запрос с минимальным числом обращений к БД

Существует два типа оптимизации на языке SQL

  • оптимизация по синтаксису;
  • оптимизация по затратам;

Оптимизация по синтаксису использует тот факт, что в языке SQL эффективность запроса зависит от того, как он сформулирован. В данном случае оптимизация зависит от квалификации программиста.

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

Преимущества метода оптимизации по затратам: задача определения наилучшего способа выполнения запроса перекладывается с пользователя на процессор БД.

Недостаток: нахождение оптимального метода само по себе может занять много времени.


Напишите отзыв о статье "Сервер базы данных"

Отрывок, характеризующий Сервер базы данных

– Хороши! Так и течет с них! Гостиную нашу не замочите.
– Марьи Генриховны платье не запачкать, – отвечали голоса.
Ростов с Ильиным поспешили найти уголок, где бы они, не нарушая скромности Марьи Генриховны, могли бы переменить мокрое платье. Они пошли было за перегородку, чтобы переодеться; но в маленьком чуланчике, наполняя его весь, с одной свечкой на пустом ящике, сидели три офицера, играя в карты, и ни за что не хотели уступить свое место. Марья Генриховна уступила на время свою юбку, чтобы употребить ее вместо занавески, и за этой занавеской Ростов и Ильин с помощью Лаврушки, принесшего вьюки, сняли мокрое и надели сухое платье.
В разломанной печке разложили огонь. Достали доску и, утвердив ее на двух седлах, покрыли попоной, достали самоварчик, погребец и полбутылки рому, и, попросив Марью Генриховну быть хозяйкой, все столпились около нее. Кто предлагал ей чистый носовой платок, чтобы обтирать прелестные ручки, кто под ножки подкладывал ей венгерку, чтобы не было сыро, кто плащом занавешивал окно, чтобы не дуло, кто обмахивал мух с лица ее мужа, чтобы он не проснулся.
– Оставьте его, – говорила Марья Генриховна, робко и счастливо улыбаясь, – он и так спит хорошо после бессонной ночи.
– Нельзя, Марья Генриховна, – отвечал офицер, – надо доктору прислужиться. Все, может быть, и он меня пожалеет, когда ногу или руку резать станет.
Стаканов было только три; вода была такая грязная, что нельзя было решить, когда крепок или некрепок чай, и в самоваре воды было только на шесть стаканов, но тем приятнее было по очереди и старшинству получить свой стакан из пухлых с короткими, не совсем чистыми, ногтями ручек Марьи Генриховны. Все офицеры, казалось, действительно были в этот вечер влюблены в Марью Генриховну. Даже те офицеры, которые играли за перегородкой в карты, скоро бросили игру и перешли к самовару, подчиняясь общему настроению ухаживанья за Марьей Генриховной. Марья Генриховна, видя себя окруженной такой блестящей и учтивой молодежью, сияла счастьем, как ни старалась она скрывать этого и как ни очевидно робела при каждом сонном движении спавшего за ней мужа.
Ложка была только одна, сахару было больше всего, но размешивать его не успевали, и потому было решено, что она будет поочередно мешать сахар каждому. Ростов, получив свой стакан и подлив в него рому, попросил Марью Генриховну размешать.
– Да ведь вы без сахара? – сказала она, все улыбаясь, как будто все, что ни говорила она, и все, что ни говорили другие, было очень смешно и имело еще другое значение.
– Да мне не сахар, мне только, чтоб вы помешали своей ручкой.
Марья Генриховна согласилась и стала искать ложку, которую уже захватил кто то.
– Вы пальчиком, Марья Генриховна, – сказал Ростов, – еще приятнее будет.
– Горячо! – сказала Марья Генриховна, краснея от удовольствия.
Ильин взял ведро с водой и, капнув туда рому, пришел к Марье Генриховне, прося помешать пальчиком.
– Это моя чашка, – говорил он. – Только вложите пальчик, все выпью.
Когда самовар весь выпили, Ростов взял карты и предложил играть в короли с Марьей Генриховной. Кинули жребий, кому составлять партию Марьи Генриховны. Правилами игры, по предложению Ростова, было то, чтобы тот, кто будет королем, имел право поцеловать ручку Марьи Генриховны, а чтобы тот, кто останется прохвостом, шел бы ставить новый самовар для доктора, когда он проснется.
– Ну, а ежели Марья Генриховна будет королем? – спросил Ильин.
– Она и так королева! И приказания ее – закон.
Только что началась игра, как из за Марьи Генриховны вдруг поднялась вспутанная голова доктора. Он давно уже не спал и прислушивался к тому, что говорилось, и, видимо, не находил ничего веселого, смешного или забавного во всем, что говорилось и делалось. Лицо его было грустно и уныло. Он не поздоровался с офицерами, почесался и попросил позволения выйти, так как ему загораживали дорогу. Как только он вышел, все офицеры разразились громким хохотом, а Марья Генриховна до слез покраснела и тем сделалась еще привлекательнее на глаза всех офицеров. Вернувшись со двора, доктор сказал жене (которая перестала уже так счастливо улыбаться и, испуганно ожидая приговора, смотрела на него), что дождь прошел и что надо идти ночевать в кибитку, а то все растащат.
– Да я вестового пошлю… двух! – сказал Ростов. – Полноте, доктор.
– Я сам стану на часы! – сказал Ильин.
– Нет, господа, вы выспались, а я две ночи не спал, – сказал доктор и мрачно сел подле жены, ожидая окончания игры.
Глядя на мрачное лицо доктора, косившегося на свою жену, офицерам стало еще веселей, и многие не могла удерживаться от смеха, которому они поспешно старались приискивать благовидные предлоги. Когда доктор ушел, уведя свою жену, и поместился с нею в кибиточку, офицеры улеглись в корчме, укрывшись мокрыми шинелями; но долго не спали, то переговариваясь, вспоминая испуг доктора и веселье докторши, то выбегая на крыльцо и сообщая о том, что делалось в кибиточке. Несколько раз Ростов, завертываясь с головой, хотел заснуть; но опять чье нибудь замечание развлекало его, опять начинался разговор, и опять раздавался беспричинный, веселый, детский хохот.


В третьем часу еще никто не заснул, как явился вахмистр с приказом выступать к местечку Островне.
Все с тем же говором и хохотом офицеры поспешно стали собираться; опять поставили самовар на грязной воде. Но Ростов, не дождавшись чаю, пошел к эскадрону. Уже светало; дождик перестал, тучи расходились. Было сыро и холодно, особенно в непросохшем платье. Выходя из корчмы, Ростов и Ильин оба в сумерках рассвета заглянули в глянцевитую от дождя кожаную докторскую кибиточку, из под фартука которой торчали ноги доктора и в середине которой виднелся на подушке чепчик докторши и слышалось сонное дыхание.
– Право, она очень мила! – сказал Ростов Ильину, выходившему с ним.
– Прелесть какая женщина! – с шестнадцатилетней серьезностью отвечал Ильин.
Через полчаса выстроенный эскадрон стоял на дороге. Послышалась команда: «Садись! – солдаты перекрестились и стали садиться. Ростов, выехав вперед, скомандовал: «Марш! – и, вытянувшись в четыре человека, гусары, звуча шлепаньем копыт по мокрой дороге, бренчаньем сабель и тихим говором, тронулись по большой, обсаженной березами дороге, вслед за шедшей впереди пехотой и батареей.
Разорванные сине лиловые тучи, краснея на восходе, быстро гнались ветром. Становилось все светлее и светлее. Ясно виднелась та курчавая травка, которая заседает всегда по проселочным дорогам, еще мокрая от вчерашнего дождя; висячие ветви берез, тоже мокрые, качались от ветра и роняли вбок от себя светлые капли. Яснее и яснее обозначались лица солдат. Ростов ехал с Ильиным, не отстававшим от него, стороной дороги, между двойным рядом берез.