Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
VPS в 21 локации

От 104 рублей в месяц

Безлимитный трафик. Защита от ДДоС.

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

2.2. Архитектура SQL Server, взаимодействие компонентов

Архитектура

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:

  • собственно сервер, который может быть запущен как сервис MSSQLServer или как приложение с командной строки (Sqlservr.exe), в обоих случаях можно указать параметры запуска (через registry или в командной строке);
  • компонент SQL Executive - сервис SQLExecutive, обеспечивающий выполнение на основе расписания таких операций, как репликация данных, запуск заданий; кроме того на него возлагается контроль за наступлением событий и оповещение администраторов и/или операторов;
  • компонент Distributed Transaction Coordinator - сервис MSDTC, отвечающий за выполнение распределенных транзакций;
  • компонент SQL Mail, обеспечивающий интеграцию SQL Server в почтовую систему организации и позволяющий отправлять запросы и получать результаты их выполнения по почте. Для SQL Mail отдельный сервис отсутствует, так как старт почтового клиента осуществляет SQL Executive;

Административные графические утилиты:

  • SQL Enterprise Manager - интегрированная административная консоль; позволяет управлять любым количеством серверов одновременно;
  • SQL Web Assistant - мастер, позволяющий создавать для SQL Executive задания, результатом исполнения которых является страница в формате HTML;
  • SQL Trace - утилита, позволяющая протоколировать сеанс работы пользователя и собирать по нему статистику;
  • ISQL/W - утилита, позволяющая интерактивно вводить и выполнять предложения и сценарии на языке SQL (с последующей записью на диск при необходимости), просматривать результаты и статистику исполнения;
  • MS Query - простое, но весьма эффективное средство визуального составления запросов и ввода данных в таблицы SQL Server;
  • SQL Service Manager - очень простое и наглядное средство слежения за состоянием сервисов на серверах SQL и управления ими (старт/стоп/пауза).

Каждый из компонентов ядра может выступать одновременно как клиент и как сервер RPC и OLE, и эти интерфейсы активно используются для взаимодействия компонентов между собой и средствами управления сервером. Кроме того, библиотека типов OLE объектов, доступных пользователю, входит в состав клиентской части SQL Server, что дает возможность применять для манипуляции данными и выполнения административных функций средства типа Visual Basic и Excel и в большинстве ситуаций обойтись без программирования на языке SQL. Для обозначения множества объектных интерфейсов ядра SQL Server используют термин SQL-DMO (Distributed Management Objects).

2.3. Сервер баз данных, базовые понятия

Имя сервера

Каждый 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). Прежде чем база данных будет создана, должно быть создано устройство для неё. На каждом устройстве может храниться более одной базы данных и каждая база данных может размещаться более чем на одном устройстве.

При установке сервера создаются следующие устройства:

  • устройство MASTER, содержащее служебные базы master, model, tempdb и, как правило, pubs (демонстрационная база);
  • устройства MSDB и MSDBLog, содержащие базу данных msdb и её журнал транзакций; msdb используется сервисом SQL Executive;
  • устройство резервных копий DISKDUMP, ассоциированное с системным устройством NUL.

Устройства баз данных (database devices) могут размещаться в дисковых файлах или на неразмеченных разделах жестких дисков (RAW partitions), устройства резервных копий (dump devices) могут быть ассоциированы с дисками, съемными накопителями, устройствами записи на магнитные ленты и именованными каналами (для систем распределенного резервного копирования). Для устройств баз данных может применяться режим "горячего зеркала" собственными средствами SQL Server. При этом на лету создаётся полностью работоспособная копия как данных, так и журналов. Устройства базы данных MASTER также может быть дублировано.

Правом создавать, модифицировать и удалять устройства обладает только SA.

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

Базы данных (data base) являются непосредственными хранилищами пользовательских данных и хранимых процедур. Каждая база данных, допускающая режим записи, должна иметь ассоциированный с ней журнал транзакций, который может располагаться как на отдельном устройстве, так и делить устройство с базой данных. По мере необходимости базы и журналы могут быть перемещены на другие устройства, расширены и/или урезаны.

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

Специальное значение имеют следующие базы данных:

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

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

Рис. 2. Устройства и базы данных

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

В любой базе данных существует, как правило, следующие три сегмента:

  • SYSTEM, сегмент для хранения служебных таблиц;
  • LOGSEGMENT, сегмент для хранения журнала транзакций;
  • DEFAULT, сегмент, где по умолчанию создаются пользовательские объекты и хранятся данные.

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

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

Объекты базы данных:

Под объектами базы данных понимают:

  • таблицы (table) - собственно хранилища данных; вся системная информация также хранится в таблицах, соответственно, системных;
  • представления (view) - объекты, ведущие себя во многом как таблицы, за исключением того, что они представляют не всю исходную таблицу, а её подмножество или результат объединения нескольких базовых таблиц; представление всегда основывается на SQL-запросе;
  • хранимые процедуры (stored procedure) - средство реализации обработки данных на сервере, сценарии на языке SQL, исполняющиеся на сервере; хранятся как в исходном, так и прекомпилированном виде; используются самим SQL-сервером для выполнения всех административных акций;
  • расширенные хранимые процедуры (extended stored procedure) - хранимые процедуры, написанные на языке C/C++; не имеют прямого доступа к данным, однако могут принимать и возвращать параметры; служат для выполнения заданий в операционной системе;
  • правила (rule) - при добавлении поля или его изменении проверяют допустимость данных; правило может быть связано (bind) с полями нескольких таблиц или типами данных в базе;
  • умолчания (defaults) - значения, которые принимают при добавлении в таблицу, поля определенного типа, если они явно не инициализируются; созданное умолчание может быть связано (операция bind) с полями нескольких таблиц или типами данных в базе;
  • пользовательские типы данных (user-defined data types) - как упоминалось ранее, строятся на основе базовых типов данных, их описание хранится и доступно в текущей базе данных.

Адресация баз данных и объектов

Чтобы иметь возможность осуществлять доступ к объектам, расположенным в различных базах данных, в SQL Server используется следующая схема адресации:


       [[database.]owner.]object_name,

где
database - имя базы данных;
owner - имя владельца; имя владельца может быть опущено, когда указано имя базы данных (например mybase..mytable);
object_name - название объекта (таблицы, представления или хранимой процедуры).

Для хранимых процедур может дополнительно указываться имя сервера, на котором эта процедура находится и где она будет исполняться:


      [[server.][database.]owner.]object_name

Удаленное исполнение процедур

SQL Server поддерживает режим, при котором программа, исполняемая на одном сервере, может осуществлять доступ к данным на другом или других удаленных серверах. Происходит это посредством вызова удаленных хранимых процедур (remote procedure call). Для этого между серверами должны быть предварительно установлены доверительные отношения и описаны правила отображения пользовательских идентификаторов. Схема взаимодействия серверов при удаленном вызове процедур приведена на рисунке 3.

Рис. 3. Вызов удаленной процедуры в SQL Server

За счет поддержки каналов данных (data pipes), результаты исполнения удаленной хранимой процедуры могут быть помещены в таблицу на локальном сервере.

2.4. Система разграничения доступа и защита данных

Защита данных в SQL Server реализована на нескольких уровнях:

  • проверка права пользователя устанавливать соединение с сервером;
  • проверка права пользователя осуществлять доступ к конкретной базе данных;
  • проверка права пользователя манипулировать объектами в базе данных;
  • шифрование трафика между клиентом и сервером.

Право устанавливать соединение

SQL Server поддерживает три модели проверки права пользователя устанавливать соединения с сервером:

  • integrated - интегрированная модель, при которой регистрация пользователя производится на основе его текущего доменного идентификатора, соответственно, при таком доступе могут использоваться только trusted-протоколы;
  • standard - стандартная модель, когда сервер самостоятельно проверяет право пользователя на установление соединения по его имени и паролю;
  • mixed - смешанная модель, когда допускается использование обоих механизмов. В этом случае, если имя пользователя не задано, или совпадает с текущим сетевым именем, используется интегрированная модель, иначе - стандартная.

Выбор конкретной модели производится на этапе установки и затем может быть изменён через 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.

Назад | Содержание | Вперед

VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...