Д.Артемов, Microsoft
Обзор продукта
Сейчас организации становятся все более динамичными. Это необходимо для быстрой реакции на
меняющиеся условия ведения бизнеса. Все более активно идет процесс децентрализации принятия
решений, а стремление повысить продуктивность принятия решений ведет к упрощению процедур
реализации различного рода идей. Для создания средств поддержки подобного рода изменений
организации обращаются к технологиям распределенной обработки информации. Эти технологии
позволяют размещать данные как можно ближе к пользователям, которым информация
необходима для принятия важных решений.
История развития SQL Server | ||||
---|---|---|---|---|
SQL Server 4.21a | SQL Server 6.0 | SQL Server следующие версии | ||
NT Server | NT Server | Cairo | ||
|
|
|
Рис.1
Microsoft SQL Server 6.0 -специально разработана для удовлетворения требований, предъявляемых
системами распределенной обработки данных (таких как тиражирование данных, параллельная
обработка, поддержка больших баз данных (БД) на относительно недорогих аппаратных
платформах, сохраняющая простоту управления и использования). Сервер имеет средства
удаленного администрирования и управления операциями, организованные на базе объектно-
ориентированной распределенной среды управления. Новые возможности, такие как OLE
Automation и средства программирования административных задач на языке Visual Basic for
Applications, обеспечивают интеграцию с приложениями, работающими на ПК. По-прежнему
Microsoft уделяет очень большое внимание соответствию своих продуктов существующим
промышленным стандартам, что отразилось в расширенной поддержке ANSI SQL и ODBC.
Microsoft SQL Server 6.0 входит в состав семейства Microsoft BackOffice, объединяющего пять
серверных приложений, разработанных для совместного функционирования в качестве
интегрированной системы. Она позволяет пользователям повысить производительность процесса
принятия решений средствами систем, базирующихся на архитектуре клиент-сервер. Кроме того,
Microsoft SQL Server 6.0 завершает линию средств разработки, включающих Microsoft Access,
Visual FoxPro®, Visual Basic и Visual C++.
Активное администрирование и объектный интерфейс SQL Server
Центральная административная консоль SQL Server 6.0 заменила собой набор утилит, которые
существовали в предыдущей версии сервера. Из этой консоли, называемой Microsoft SQL
Enterprise Manager, администратор способен выполнять любые действия по администрированию
системы, как бы велика она ни была. На рис. 2 хорошо видны
несколько групп серверов.
Рис. 2. Административная консоль SQL Server
Администратор может создавать новые группы, группировать серверы удобным с
административной точки зрения образом, выполнять манипуляции над объектами (базами данных,
таблицами, хранимыми процедурами, триггерами и т.д.).
К сожалению, когда принимается решение о выборе мощной СУБД масштаба предприятия, из
внимания специалистов, принимающих это решение, часто ускользает то обстоятельство, что ПО
подобного класса обязательно должно включать развитые средства администрирования. В
крупных информационных системах СУБД выполняет не только функции "мясорубки" по
перемалыванию колоссальных объемов информации, но и сложные функции
администрирования.
Microsoft SQL Server 6.0 предлагает "активную" модель администрирования системы. В отличие от
предыдущей версии продукта, администратор получил в свое распоряжение средства,
позволяющие предупреждать неблагоприятное развитие событий вместо того, чтобы, сломя
голову, кидаться исправлять последствия сбоя системы, когда пользователи уже не имеют доступа
к хранящейся в ней информации. SQL Server 6.0 позволяет определять так называемые
предупреждения (alert), которые являются реакцией системы на возникновение того или иного
события.
Как видно из рис.3 , предупреждение срабатывает при возникновении
ошибки с кодом 018 в базе данных master.
Рис.3. Диалог описания предупреждения
Привязка предупреждения к конкретной базе данных дает возможность назначать различную
реакцию системы на события в различных базах данных. Помимо встроенных кодов ошибок
предупреждение может реагировать на пользовательские ошибки, определяемые в коде хранимых
процедур и триггеров. При необходимости может быть вызвана на исполнение описанная
предварительно задача и послано сообщение администратору по электронной почте или на
пейджер.
Конечно, неплохо на каждый "чих" вызывать администратора, но как быть организациям с
разветвленной структурой, не имеющим возможности закрепить за каждым сервером специалиста
высокой квалификации? Что делать, если проблема возникла вечером, в выходные? К счастью,
активная модель администрирования SQL Server очень хорошо проявляет себя именно в таких
сложных ситуациях.
Мы уже упоминали, что к предупреждению можно привязать ту или иную задачу. Задача может
представлять собой:
Рис.4. Диалог описания задачи
Теперь давайте рассмотрим сценарий, по которому могут развиваться события. Ночью произошел
сбой в электросети. Источник бесперебойного питания выработал свой ресурс, потом выполнил
ShutDown сервера, и система прекратила работу. Со временем электропитание было
восстановлено, и компьютер снова включился. Не секрет, что Windows NT способна выполнять
автоматическую, без участия человека, регистрацию в сети. В силу того, что SQL Server и SQL
Executive представляют собой сервисы операционной системы, им можно назначить атрибут
"стартовать автоматически". SQL Server стартовал, и на исполнение была запущена хранимая
процедура, которая также имеет атрибут "автостарт". Такая процедура может, например,
выполнить проверку целостности базы данных. Если проверка прошла успешно, система
продолжает работу в штатном режиме. Если проверка показала, что система неработоспособна,
можно пойти как минимум двумя путями: хранимая процедура генерирует ошибку, вызывающую
предупреждение, которое, в свою очередь, вызывает на выполнение задачу. Можно сразу поднять
тревогу и вызвать администратора.
Но электронная почта пригодна не только для того, чтобы поднимать тревогу, она может
использоваться и для штатной работы. SQL Server 6.0 умеет читать почту и отвечать на письма. В
том случае, когда задержки на прохождение электронного письма не критичны для работы,
пользователь или администратор могут использовать почту для посылки запросов серверу и
получения от него ответа. Это позволяет обращаться к серверу в режиме Off-line практически с
любого компьютера (как известно, клиентское приложение одной из наиболее популярных в
России коммуникационных сетей - Релком - прекрасно работает даже на машинах с процессором
286).
Набор расширенных хранимых процедур SQL Server включает процедуры работы с почтовыми
ящиками. Сервер может получить указание прочесть текущую почту и обработать ее (лучше всего
это задание оформить как периодически выполняемую задачу). В сообщении размещается вызов
хранимой процедуры или набор команд T-SQL. Сервер читает текст сообщения и выполняет
размещенные в нем команды. Результат исполнения присоединяется к письму, посылаемому в
ответ, в виде текстового файла или файла в формате CSV (поля, разделенные запятыми), который
можно непосредственно "взять" в электронную таблицу или импортировать в базу данных.
Естественно, возникает вопрос о предохранении данных от несанкционированного доступа.
Ограничение числа лиц, которые могут получать таким образом информацию, может быть
организовано различным образом, и тут необходимо позаботиться о защите доступа как со
стороны SQL Server, так и со стороны ПО, занимающегося отправкой почты. Для каждого
пользователя, который посылает запросы на сервер, можно завести соответствующий набор прав,
которые смогут эффективно ограничить диапазон действий, позволительных для него.
Как видно из рисунка, каждому пользователю, зарегистрированному на сервере, можно назначать
самые разнообразные права - от права делать выборки из тех или иных таблиц и исполнения
хранимых процедур до права на модификации или выборки из конкретного поля конкретной
таблицы.
SQL Server способен "понять", кто пишет письмо. Можно также ограничить обрабатываемую
почту только письмами, которые имеют определенный текст в разделе Subject. Все это вместе
взятое позволяет утверждать, что если в организации четко соблюдается дисциплина хранения и
назначения паролей, то риск несанкционированного доступа к конфиденциальной информации
может быть сведен до минимума. Кроме того, на электронную почту можно возложить
обязанности по получению/передаче только безобидной информации, доступ к которой не
нуждается в серьезной защите.
Microsoft SQL Server Distributed Management Framework (SQL- DMF)
С появлением SQL Server 6.0 Microsoft предложил на рынке сервер с масштабируемой
архитектурой управления, наиболее оптимальным образом подходящей к быстро меняющимся
задачам, которые встают перед системами архитектуры клиент-сервер. Microsoft SQL Server
Distributed Management Framework (SQL-DMF) имеет трехуровневую объектно- ориентированную
архитектуру, которая предоставляет компоненты, сервисы и инструментарий, необходимые для
управления распределенными серверами в масштабе предприятия.(Рис.5)
Рис.5. Диалог определения прав доступа
Уровень | Компоненты SQL Server 6.0 DMF |
Уровень 1 Представление/Манипуляция | Средство администрирования SQL Enterprise Manager, программирование на Visual Basic или Visual FoxPro |
Уровень 2 Объекты управления | OLE интерфейс для доступа ко всем средствам администрирования и управления SQL Server |
Уровень 3
Реализация/Обработка | Процессор данных SQL Server, сервисы SQL Executive |
Основой SQL-DMF является SQL Executive, исполняемый как сервис операционной системы и
управляющий тиражированием, обработкой событий, предупреждений и диспетчированием
работы компонентов внутри SQL-DMF. SQL Executive работает как "скрытый" оператор или
"интеллектуальный агент", автоматически и постоянно отслеживающий состояние окружения
сервера и любых распределенных служб SQL Server. Разработчики сервера убеждены, что
критические службы, такие как тиражирование, должны быть частью основного продукта, а не
просто "утилитами".
SQL Enterprize Manager | OLE Automation |
---|---|
SQL Server Distributed Manadgement Object (SQL-DMO) | |
SQL Executive | SQL Server |
|
Рис.6. Компоненты SQL-DMF
Ранее существовавшие подходы к системному администрированию приводили к запоздалой
реакции на сбой системы, а администратору отводилась роль "пожарного". С другой стороны,
обработчик событий SQL Executive изначально проектировался для поддержки активной модели
администрирования, позволяющей администратору определять предупреждения и проводить
корректирующие операции до возникновения проблемы. Кроме того, администратор может
заранее определить уведомления, которые будут рассылаться по электронной почте или на
пейджер.
SQL Executive работает как сервис операционной системы и при необходимости может быть
запущен автоматически для загрузки списка задач, хранящегося в таблице SQL Server.
Другим исключительно важным компонентом являются SQL Server Distributed Management Objects
(SQL-DMO). SQL-DMO - OLE Automation интерфейс SQL Server 6.0 открывает объекты, свойства
и методы для всех аспектов деятельности SQL Server по управлению и администрированию SQL
Server. Объектная модель SQL Server включает более 70 индивидуальных объектов и свыше 1500
свойств и методов. Организация объектов значительно упрощает изучение и продуктивное
использование компонентов административного интерфейса SQL Server.
OLE интерфейс поддерживает использование таких средств разработчика, как Visual C++, Visual
Basic и Visual FoxPro для создания специализированных административных сценариев, исполнение
которых организуется средствами диспетчирования SQL Executive. Справа приведены некоторые
из объектов и методов SQL-DMO.
Все функции SQL Server открыты для доступа извне как объекты, свойства и методы. Подобная
модель значительно упрощает работу с административным "слоем" за счет организации функций
управления в терминах объектной модели SQL Server. Основной объект - "SQL Server" - включает
коллекцию объектов "Databases". Объект "Database" включает коллекции объектов "Table",
"View" и "StoredProcedure". Объекты имеют свойства (например, SQLServer.Name =
"SABERTOOTH") и методы (SQLServer.Start или SQLServer.Stop). Свойства и методы
используются для управления SQL Server.
Метод объекта | Действие |
SQLServer.Stop | Останавливает SQL Server |
SQLServer.Start | Запускает SQL Server |
Database.Backup | Выполняет создание страховочной копии |
Index.UpdateStatistics | Обновляет информацию оптимизатора по индексам |
Database.Table.Add | Добавляет таблицу к базе данных |
OLE Automation: написание сценариев на Visual Basic/Visual FoxPro
Мощь административного OLE интерфейса SQL Server становится очевидной, если учитывать
возможность использования языка программирования средств разработчика Microsoft (таких как
Visual Basic или Visual FoxPro) для написания сценариев выполнения административных задач.
Ниже приведен пример кода, используемого для получения служебной информации с SQL
Server.
Как уже говорилось ранее, SQL Server имеет развитый графический административный интерфейс
- SQL Enterprise Manager, - способный обеспечить потребности администратора в
централизованном управлении многими серверами в организации. Административная консоль
использует объекты SQL-DMO для управления всеми аспектами функционирования SQL Server. В
задачи администратора входит администрирование топологии, защиты, событий/предупреждений,
диспетчирование, создание страховочных копий баз данных, конфигурирование и настройка
серверов и тиражирования. SQL Enterprise Manager может также использоваться для создания,
модификации и копирования схем баз данных и таких объектов, как образы и триггеры. Этот
инструмент позволяет охватить всю топологию системы из любого места в сети.
Архитектура SQL-DMF предлагает множество "точек входа" для поддержания конкретных
потребностей администратора. В результате серверы могут управляться посредством доступа к
объектам SQL-DMO или непосредственно. Мы полагаем, что подобная архитектура создает
гибкую среду администрирования, удовлетворяющую требованиям администраторов как мелких,
так и крупных систем, без необходимости принесения в жертву простоты или
мощности.
Рис.7. Структура объектной модели SQL Server
Системы архитектуры клиент-сервер предлагают много новых задач, требующих нового подхода.
Мощные серверы баз данных должны адаптироваться к растущим требованиям динамичной и все
более усложняющейся работы в распределенных средах. SQL Server 6.0, снабженный развитой
средой администрирования распределенных систем, удовлетворяет этим требованиям.
Особое внимание, которое было уделено повышению производительности СУБД, позволило
повысить скорость выполнения некоторых операций почти на 400% на многопроцессорных
компьютерах. Это достигается активным использованием многопроцеcсорной архитектуры
компьютера и многопоточной архитектуры операционной системы. Среди операций,
выполняющихся параллельно, можно назвать сканирование таблиц, загрузку,
создание/восстановление страховочной копии. Все это позволяет обеспечить
высокопроизводительную работу с большими и очень большими базами данных.
Для версии 4.21а очень большой считалась база данных размером 10-15 Гб (хотя некоторые
организации, например, Sprint, работали с базами данных размером 60 Гб и более).
Высокоскоростная параллельная обработка делает возможной поддержку работы с базами данных
размером 100 Гб и более на соответствующим образом конфигурированных системах. Не только
процесс создания страховочных копий выполняется быстрее, но и такие операции, как проверка
целостности базы данных (выполняется командой DBCC), сильно выигрывают от использования
параллельного сканирования и увеличенных блоков ввода/вывода. Возможность сохранения в
страховочной копии (восстановления из копии) индивидуальных таблиц позволяет сократить
время, необходимое на сохранение (восстановление) отдельных таблиц базы данных. Поддержка
распространения баз данных на съемных носителях (таких как CD-ROM) позволяет выпускать
различного рода справочники или информационные материалы. Интересно отметить, что
гибкость SQL Server проявляется и при работе с очень маленькими объемами информации. Так,
для того чтобы базу данных можно было сохранить на дискете, ее минимальный размер снижен до
1 Мб.
Существующая версия SQL Server снабжена мощным языком программирования -Transact-SQL,
позволяющим создавать сложную логику триггеров и хранимых процедур. В новой версии язык
значительно расширен, теперь он соответствует стандарту ANSI-92, и программисты получили
новые возможности (такие как новые, соответствующие ANSI-стандарту, типы данных и
соответствующая стандарту ANSI поддержка декларативной целостности данных). Помимо
перечисленных возможностей, программист может воспользоваться генератором, автоматически
создающим уникальные значения для ключевых полей таблицы, возможностью передавать
идентификаторы и данные типа TEXT и IMAGE как параметры хранимым процедурам и многое
другое. Использование хранимых процедур, которые запускаются автоматически при каждом
старте SQL Server, позволяет создавать системы, способные выполнять различного рода задания
без участия администратора. Наиболее же интересным нововведением являются скроллируемые,
двунаправленные курсоры. Курсоры SQL Server поддерживают все режимы, определенные
расширенными требованиями ANSI, а также и ODBC семантику; они совместимы с
существующими курсорами, поддерживаемыми API в DB-Library.
Microsoft SQL Server 6.0 имеет параллельную архитектуру, интенсивно использующую
многопоточность операционной системы для обеспечения высокой производительности и
масштабируемости на многопроцессорных системах. Все управление задачами SQL Server
организовано вытесняющим для повышения надежности и изолирования возможных сбоев. За счет
динамического распределения нагрузки на процессоры SQL Server достигает автоматической
балансировки загрузки всех ЦП компьютера. Microsoft называет это "симметричной архитектурой
сервера".
Преимущества симметричной архитектуры Microsoft SQL Server 6.0
Симметричная архитектура Microsoft SQL Server предоставляет следующие преимущества:
Усовершенствования, связанные с параллельной обработкой данных в SQL Server 6.0
У SQL Server 6.0 Microsoft еще более расширила возможности параллельной обработки
симметричной архитектуры сервера. За счет параллельного выполнения широкого диапазона
внутренних функций СУБД с использованием множественных потоков операционной системы при
работе на многопроцесорных системах резко возрастает производительность и масштабируемость
многих операций (таких как определенные типы запросов, сканирование таблиц, создание
индексов, создание/восстановление страховочных копий, проверка целостности базы данных и
т.д.).
Создание/восстановление страховочных
копий теперь может выполняться почти на порядок быстрее за счет использования одновременно
до 32 устройств (диски или стриммеры), на которых создается страховочная копия базы данных.
Специалистами Microsoft была достигнута производительность копирования более 20 Гб/час. Это
означает, что при работе с большими и очень большими БД страховочная копия может быть
создана в нерабочие часы. Теперь же использование новых возможностей SQL Server позволяет
работать с базами данных 100 Гб и выше на соответствующим образом конфигурированных
компьютерных системах. Это отвечает требованиям организаций, устанавливающих большие базы
данных на относительно дешевых компьютерных системах.
Параллельное сканирование и асинхронное опережающее чтение повышает на 40 - 400% скорость
выполнения некоторых типов запросов и других операций над базой данных в многопроцессорных
системах. Повышение производительности достигается за счет использования SQL Server 6.0
множественных потоков операционной системы и алгоритмов определения следующего блока
данных, необходимых для вывода в кэш. На приводимом графике показано, как растет время,
необходимое для считывания с диска более 10000 страниц из базы данных (меньшие числа
показывают более высокую производительность). Эта операция типична для длительного запроса
с вычислениями или операции создания отчета. Как видно из графика, по мере роста числа
клиентов, SQL Server 6.0 выполняет операцию не менее чем в 4 раза быстрее за счет использования
параллельного сканирования таблиц и асинхронного опережающего чтения.
Подобная технология обеспечивает резкое повышение производительности для любой операции,
требующей просмотра таблиц, например, SELECT, UPDATE и DELETE с необходимостью
поиска, CREATE INDEX, DBCC, DUMP/LOAD и т.п.
При работе с новой версией SQL Server можно запускать несколько параллельно работающих
копий BCP или SQL Enterprise Manager и выполнять параллельные перекрывающиеся операции
загрузки данных в SQL Server. Подобные возможности оказываются особенно полезными при
необходимости массивного копирования данных в ограниченные сроки.
Одной из наиболее интересных новых возможностей SQL Server 6.0 является тиражирование
данных.
В силу того, что продукт изначально создавался для работы с распределенными данными, СУБД
снабжена надежной и открытой архитектурой, хорошо интегрированной, гибкой и
управляемой.(Рис.8)
Рис.8. Организация тиражирования данных
Конфигурирование и управление процессом тиражирования данных на уровне предприятия
обычно представляет собой сложную и требующую больших затрат времени задачу. В SQL Server
6.0 эта задача выполняется с помощью развитых графических инструментов административного
управления и, таким образом, резко упрощается. Администраторы могут определить все аспекты
процесса создания тиражируемых данных, диспетчирования процессов, установки подписки и
полностью контролировать защищенность тиражируемых данных. Для каждой публикации можно
определить записи или столбцы, входящие в публикацию, и то, какие подписчики имеют право
обращения к каким публикациям. В каждой публикации администратор имеет полный контроль
над доступом к ее данным.
После того как база данных открывается для публикации (это видно по соответствующей
пиктограмме в диалоговом окне среды администрирования), администратор определяет, какие
таблицы или/и части таблиц подлежат тиражированию. Организация
тиражирования данных SQL Server обеспечивает высокую гибкость и позволяет точно
указать, какие элементы базы данных получает тот или иной подписчик.(Рис.9,10)
Рис.9. Диалог настройки тиражирования
Рис.10. Схема тиражирования
Что можно ожидать от следующей версии SQL Server
В настоящее время проходит бета-тестирование SQL Server 6.5 - следующая версия сервера баз
данных Microsoft. Несмотря на то что обсуждение бета-версий дело неблагодарное, давайте
посмотрим на некоторые основные нововведения, которые планируется включить в продукт,
запланированный к выходу во втором квартале текущего года.
Следуя линии поддержки работы с большими объемами данных в SQL Server 6.5 планируется
включить поддержку "хранилищ данных".
Будут добавлены следующие возможности: аналитическая обработка данных в реальном времени
(online analytical processing - OLAP) при запросах, тиражирование в базы данных, производимые
другими компаниями, и поддержка программируемых устойчивых представлений и операций по
группировке данных на нескольких серверах.
Ключевые возможности по организации хранилищ данных, которые были добавлены в Microsoft
SQL Server 6.5, включают:
Требования к системе | Windows NT Server 3.51 или выше, Intel® 386 или выше
(рекомендуется 486 или Pentium), MIPS® R4xxx или системы на базе DEC
Alpha AXP, минимум 16 Mб RAM (минимум 32 Мб RAM, если сервер
конфигурируется как сервер публикаций), 35 Mб на жестком диске, CD-
ROM Кроме того, Microsoft SQL Workstation может работать на Windows NT Workstation версии 3.51 или более поздней | |
Поддерживаемые сети и протоколы | В комплект поставки Microsoft SQL Server входит поддержка практически всех сетевых сред, включая: Novell® NetWare® IPX/SPX, Microsoft Named Pipes (включая Windows NT, Windows® for Workgroups, Windows 95, LAN Manager), TCP/IP sockets, Banyan® VINES®, DECNet, AppleTalk®, сети с мультипротоколами | |
Емкость системы | SQL Server адресует до 2 Гб памяти, до 8 терабайт дискового пространства, поддерживает до 32767 баз данных на один сервер. До 32767 одновременных пользовательских соединений на сервер. Неограниченное число таблиц и пользовательских объектов. Базы данных могут размещаться на нескольких физических дисках | |
Число пользовательских соединений | 32767 15 (один пользователь) | SQL Server SQL Workstation |
Поддерживаемые клиентские платформы | DOS, Windows, Windows NT, UNIX®, OS/2, Macintosh® |