Архитектура
SQL Server построен на принципах, так называемой "истинно параллельной" архитектуры баз данных, когда сервер для выполнения большинства операций использует родной механизм сред операционной системы, что позволяет достичь высокой производительности и масштабирования на системах с несколькими процессорами.
За счет активного использования нитей ядром сервера обеспечивается параллельное выполнение операций сканирования таблиц, параллельной загрузки данных в базы и таблицы, параллельное резервное копирование и восстановление данных, асинхронные операции работы с дисковыми устройствами и асинхронное опережающее чтение.
Принудительное переключение нитей исполнения (preemptive scheduling) обеспечивает более гладкое исполнение заданий, возможность параллельного выполнения ряда операций и изоляцию сбоев в процессе исполнения. За счет механизма динамического распределения сред по процессорам, осуществляется автоматическая балансировка нагрузки. Поддержка в SQL Server маски использования процессоров, позволяет явно указывать на каких CPU будет исполняться сервер.
На рисунке 1 приведена схема реализации типичного SQL сервера и схема реализации SQL сервера Microsoft, названная Symmetric Server Architecture (симметричная архитектура сервера).
Рис. 1. Схема реализации типичного SQL сервера и симметричного сервера Microsoft
Сетевой доступ
Как уже упоминалось, SQL Server поддерживает весьма широкий набор сетевых протоколов. Для каждого из них поддерживается режим прямого доступа с использованием "стандартных" для каждого протокола средств (например, Sockets для TCP/IP или IPS/SPX; Named Pipes для NetBios), что дает возможность обращаться к серверу не только из среды Windows и OS/2, но и с платформ Mac и Unix. Набор компонентов, обеспечивающих доступ к серверу с клиента, называют также сетевой библиотекой (network library).
Дополнительно для протоколов TCP/IP, IPX/SPX и Named Pipes поддерживается доступ через защищенные вызовы RPC. Данный тип соединений называют trusted connection, или доверительные соединения, а протокол, соответственно, trusted protocol. Указанные типы соединений поддерживаются только на Windows платформах. Для поддержки trusted протокола в комплект поставки сервера входит сетевая библиотека Multi-Protocol Network Library.
Протоколы уровня приложений
Как и большинство серверов баз данных, SQL Server имеет собственный низкоуровневый протокол доступа, называемый Tabulated Data Stream (TDS). Интерфейс TDS к средствам разработки называют DB-Library. Существуют версии библиотек для языков C/C++ и Visual Basic. Средствами TDS могут выполняться любые операции на сервере, однако использование его целесообразно только в тех случаях, когда применение SQL неэффективно. Как правило, TDS используют приложения, выполняющие чисто административные функции. Для непосредственного доступа к данным, Microsoft рекомендует использовать драйверы в стандарте ODBC, так как родной драйвер ODBC для SQL Server по утверждению самой Microsoft, имеет те же показатели по функциональности и производительности, что и DB-Library.
Основные компоненты
Как принято для серверных приложений Windows NT, ядро SQL Server реализовано в виде набора сервисов, для управления которыми используются административные утилиты.
Компоненты, образующие ядро SQL Server:
Административные графические утилиты:
Каждый из компонентов ядра может выступать одновременно как клиент и как сервер RPC и OLE, и эти интерфейсы активно используются для взаимодействия компонентов между собой и средствами управления сервером. Кроме того, библиотека типов OLE объектов, доступных пользователю, входит в состав клиентской части SQL Server, что дает возможность применять для манипуляции данными и выполнения административных функций средства типа Visual Basic и Excel и в большинстве ситуаций обойтись без программирования на языке SQL. Для обозначения множества объектных интерфейсов ядра SQL Server используют термин SQL-DMO (Distributed Management Objects).
Имя сервера
Каждый SQL Server имеет уникальное имя, как правило, совпадающее с именем компьютера, на котором он исполняется.
Язык программирования
Версия языка SQL, используемого SQL Server, называется Transact-SQL, или T-SQL, в память о том, что в именно этом в диалекте SQL появились операторы управления транзакциями. В T-SQL поддерживаются все операторы стандарта ANSI SQL-92, включая оператор CASE, декларативную целостность (Declarative Reference Integrity, или DRI) и описание объединений (joins).
Дополнительно T-SQL позволяет указывать оптимизатору запросов порядок выполнения операций и используемые индексы. Наличие оператора EXEC, способного воспринимать в качестве входного параметра символьную строку, дает возможность динамически формировать и исполнять предложения SQL.
Пользователь SA
Как и в большинстве, если не во всех, серверах баз данных, в SQL Server существует пользователь, наделенный всеми административными полномочиями - это System Administrator или SA. После начальной установки сервера пароль SA пуст, поэтому первое действие администратора SQL Server - назначение этого пароля.
Устройства, Базы данных, Сегменты
Устройством (device) в SQL Server называется множество файлов операционной системы, используемых для хранения баз данных и/или журналов транзакций (database and log device) или их резервных копий (dump device). Прежде чем база данных будет создана, должно быть создано устройство для неё. На каждом устройстве может храниться более одной базы данных и каждая база данных может размещаться более чем на одном устройстве.
При установке сервера создаются следующие устройства:
Устройства баз данных (database devices) могут размещаться в дисковых файлах или на неразмеченных разделах жестких дисков (RAW partitions), устройства резервных копий (dump devices) могут быть ассоциированы с дисками, съемными накопителями, устройствами записи на магнитные ленты и именованными каналами (для систем распределенного резервного копирования). Для устройств баз данных может применяться режим "горячего зеркала" собственными средствами SQL Server. При этом на лету создаётся полностью работоспособная копия как данных, так и журналов. Устройства базы данных MASTER также может быть дублировано.
Правом создавать, модифицировать и удалять устройства обладает только SA.
Все операции по созданию устройств и баз данных могут выполняться как через графический интерфейс административной консоли, так и при помощи хранимых процедур.
Базы данных (data base) являются непосредственными хранилищами пользовательских данных и хранимых процедур. Каждая база данных, допускающая режим записи, должна иметь ассоциированный с ней журнал транзакций, который может располагаться как на отдельном устройстве, так и делить устройство с базой данных. По мере необходимости базы и журналы могут быть перемещены на другие устройства, расширены и/или урезаны.
Правом создавать, модифицировать и удалять базы данных и журналы транзакций изначально обладает SA, он может делегировать права другим пользователям.
Специальное значение имеют следующие базы данных:
На рисунке 2 приведена схема, поясняющая взаимосвязь устройств и баз данных.
Рис. 2. Устройства и базы данных
Сегмент (segment) - именованная часть базы данных, предназначенная для раздельного хранения и доступа к объектам, разделенным по функциональному признаку, либо по типу. Механизм сегментов применяется например для разделения таблиц и некластерных индексов и разнесения их по разным физическим дискам системы для увеличения быстродействия.
В любой базе данных существует, как правило, следующие три сегмента:
Для создания дополнительных сегментов используются системные хранимые процедуры. При последующем создании объектов можно явно указывать, какой сегмент будет использоваться для хранения этого объекта.
Наличие механизма сегментов позволило реализовать в SQL Server корректную поддержку баз данных на сменных носителях и дисках, доступных только для чтения. В случае использования такой базы, системный и журнальный сегмент создаются на устройстве, допускающем запись, что позволяет администратору назначать права пользователям на доступ к данным, а сами данные находятся на сменном или защищенном от записи носителе в сегменте по умолчанию.
Объекты базы данных:
Под объектами базы данных понимают:
Адресация баз данных и объектов
Чтобы иметь возможность осуществлять доступ к объектам, расположенным в различных базах данных, в SQL Server используется следующая схема адресации:
[[database.]owner.]object_name,где
Для хранимых процедур может дополнительно указываться имя сервера, на котором эта процедура находится и где она будет исполняться:
[[server.][database.]owner.]object_name
Удаленное исполнение процедур
SQL Server поддерживает режим, при котором программа, исполняемая на одном сервере, может осуществлять доступ к данным на другом или других удаленных серверах. Происходит это посредством вызова удаленных хранимых процедур (remote procedure call). Для этого между серверами должны быть предварительно установлены доверительные отношения и описаны правила отображения пользовательских идентификаторов. Схема взаимодействия серверов при удаленном вызове процедур приведена на рисунке 3.
Рис. 3. Вызов удаленной процедуры в SQL Server
За счет поддержки каналов данных (data pipes), результаты исполнения удаленной хранимой процедуры могут быть помещены в таблицу на локальном сервере.
Защита данных в SQL Server реализована на нескольких уровнях:
Право устанавливать соединение
SQL Server поддерживает три модели проверки права пользователя устанавливать соединения с сервером:
Выбор конкретной модели производится на этапе установки и затем может быть изменён через SQL Enterprise Manager. Кроме этого, в приложениях, осуществляющих доступ через библиотеку DB-Library или ODBC-драйверы, можно принудительно установить использование интегрированной модели, вне зависимости от установленной в этот момент на сервере.
SQL Security Manager, позволяет для интегрированного и смешанного режимов определить какие пользователи и/или группы домена будут обладать правом подключения к серверу с обычными привилегиями или привилегиями SA.
После того, как соединение с сервером установлено, каждому пользователю, независимо от принятой модели, ставится в соответствие идентификатор (login ID). С каждым идентификатором ассоциирован пароль.
В случае применения стандартного режима, login ID и пароль должны быть заданы для каждого пользователя. В случае интегрированного или смешанного режимов, пользователям, которым подключение разрешено, но идентификаторы не созданы, ставится в соответствие идентификатор пользователя по умолчанию (default login ID), конкретное значение которого задаётся при начальной установке сервера и может быть позднее изменено через SQL Enterprise Manager. По умолчанию используется имя guest.
Хорошей практикой при задании прав подключения через SQL Security Manager является выбор опции генерации идентификаторов для членов группы и непустого группового пароля для них. Это позволит сэкономить время при перемещении пользователя из группы в группу, тонко настроить набор привилегий каждого конкретного члена группы и, наконец, выполнять регистрацию на сервере в стандартном режиме, в случае необходимости.
Права на доступ к базе данных
Факт установления соединения ещё не даёт пользователю права осуществлять манипуляции с объектами сервера.
Для каждой базы данных SQL Server хранит независимый набор имен пользователей и групп, в которые они входят. По умолчанию в каждой базе существует группа public, к которой принадлежат все имена пользователей этой базы. Каждое имя пользователя может дополнительно принадлежать ещё какой-либо одной группе.
Чтобы конкретный пользователь имел доступ к базе данных, его идентификатор (login ID) должен быть ассоциирован с каким либо именем пользователя (username) в этой базе данных. С каждым именем пользователя может быть ассоциировано более одного пользовательского идентификатора. В этом случае имя пользователя выступает как псевдоним (alias) для всех дополнительных пользовательских идентификаторов.
На рисунке 4 дается пояснение как взаимосвязаны сетевое имя пользователя, его login ID и username в SQL Server.
Рис. 4. Взаимосвязь атрибутов пользователя в SQL Server.
В каждой базе данных существует специальное имя пользователя - Data Base Owner (DBO), т.е. владелец базы данных. Пользователь, создавший базу автоматически становится её владельцем, хотя эти права могут позднее быть делегированы другим пользователям. DBO может выполнять любые манипуляции объектами и назначать права другим пользователям (рисунок 5).
Рис. 5. Установка прав доступа на базу данных
Поле Create DB определено только в базе данных master и дает право пользователю создавать новые базы данных.
Права манипулировать объектами
Пользователь, создавший объект в базе данных, автоматически становится его владельцем, и никто, включая DBO и SA не могут использовать этот объект, пока владелец не назначит им права на него. Правда, как SA, так и DBO могут выдать себя за владельца объекта при необходимости.
На рисунке 6 приведен пример назначения прав на объекты пользователям.
Рис. 6. Установка прав доступа на объекты базы данных
Из рисунка видно, что система назначения прав весьма гибкая. В частности на таблицы права могут назначаться вплоть до отдельных колонок.
Шифрование трафика
Шифрование всего трафика возможно только при доступе к серверу через сетевую библиотеку Multi-Protocol. Поддерживаются как 32-х, так и 16-и битные Windows-клиенты, может применяться любой метод доступа. Признак шифрования устанавливается на клиенте путем внесения изменений в файлы конфигурации для ОС MS Dos и Windows 3.1x или в registry для Windows95 и Windows NT.
Назад | Содержание | Вперед