Обнаружено уже 13 самородков
Появлению новой версии Microsoft SQL Server под названием Yukon, которая увидит свет в конце 2004 — начале 2005 г., предшествовал пятилетний цикл разработки. В продукте реализовано столько новых возможностей, что описать их в рамках одной статьи не представляется возможным. В этой версии SQL Server можно обнаружить 13 ценных находок.
Интеграция CLR
Без сомнения, самым значительным новшеством продукта является интеграция среды Common Language Runtime (CLR), входящей в структуру Windows .NET Framework, с процессором базы данных SQL Server. Это позволяет разработчикам и администраторам баз данных создавать объекты SQL Server, например хранимые процедуры, триггеры, определяемые пользователем функции (UDF) и наборы. Такая интеграция должна помочь исправить один из немногих недостатков, свойственных технологии SQL Server по сравнению с реляционными базами данных, такими как DB2 и Oracle, а именно невозможность использования объектно-ориентированного языка программирования (OOP) для создания объектов баз данных. Yukon для этой цели позволяет задействовать Visual Basic .NET, Visual C# .NET, Visual C++ .NET, Visual J# .NET и любой другой .NET-совместимый язык программирования. Благодаря современному уровню и полной объектной ориентации, .NET-совместимые языки больше подходят для решения сложных проблем бизнеса, чем процедурно-ориентированный язык T-SQL.
Процесс создания объекта базы данных начинается со сборки с использованием нового типа проекта SQL Server, предусмотренного в очередной версии Visual Studio .NET под названием Whidbey (Whidbey планируется выпустить одновременно с Yukon). Сборка загружается в среду Yukon, после чего создается новый .NET-объект базы данных при помощи предложений CREATE PROCEDURE, TRIGGER или FUNCTION расширенной версии T-SQL.
Глубина интеграции такова, что процессор базы данных SQL Server фактически является активным хостом для CLR. Yukon полностью берет на себя управление памятью. Объекты базы данных CLR получают доступ к базе данных SQL Server благодаря использованию обновленной версии ADO.NET совместно с новым поставщиком данных SQL Server .NET Data Provider.
В отличие от сборок T-SQL, не имеющих собственных возможностей обращения к внешним ресурсам, .NET-сборки обладают полным доступом к ресурсам системы и сети. Поэтому особое значение приобретает обеспечение защиты создаваемых .NET-сборок.
В технологии Yukon модель безопасности SQL Server, которая базируется на правах пользователей, интегрирована с моделью безопасности CLR, основанной на разрешениях. Согласно модели SQL Server, пользователь получает доступ только к определяемым его правами объектам базы данных (включая .NET-сборки). Модель CLR усиливает меры защиты за счет обеспечения контроля над системными ресурсами, к которым имеет доступ .NET-код, выполняемый на сервере. Разрешения CLR указываются при создании сборки. В частности, для этого используется оператор WITH PERMISSION_SET предложения CREATE ASSEMBLY. В табл. 1 приведены все разрешения CLR, которые можно назначать объектам SQL Server.
Как показано в табл. 1, разрешение SAFE ограничивает доступ извне. Разрешение EXTERNAL_ACCESS допускает выборочный внешний доступ к ресурсам через управляемые API. При этом Yukon подставляет себя вместо вызывающего абонента. Чтобы создавать объекты с EXTERNAL_ACCESS, необходимо обладать таким разрешением. Объекты с разрешением UNSAFE может создавать только системный администратор, так как это разрешение открывает неограниченный внешний доступ к любым ресурсам, включая файловую систему и реестр.
Расширенные возможности T-SQL
Интеграция CLR с базой данных SQL Server не означает отказ от использования языка T-SQL. Объекты CLR для базы данных обеспечивают идеальное решение в случаях, требующих сложной логики, тогда как язык T-SQL оптимален для доступа к табличным данным. Одним из усовершенствований T-SQL, реализованных в технологии Yukon, является включение полной поддержки технологии IntelliSense, что обеспечивает интерактивную подсказку параметров и интеллектуальное завершение для всех команд T-SQL, редактируемых в среде SQL Server Workbench, как будет показано ниже.
Другое новшество T-SQL относится к оператору TOP. В SQL Server 2000 для этого оператора было предусмотрено использование фиксированных констант — TOP 5 (верхние 5 строк) или TOP 10 (верхние 10 строк). Технология Yukon позволяет привязывать к оператору TOP выражение. Выражение может быть любым в пределах установленных для T-SQL правил, включая использование переменного или скалярного подзапроса. Предложения INSERT, UPDATE и DELETE поддерживают оператор TOP.
Другим важным достижением технологии T-SQL, реализованной в Yukon, является усовершенствованная обработка аварийного прерывания транзакций. Такое прерывание возможно и в SQL Server 2000, однако без сохранения детального контекста прерванной транзакции, что делает невозможным ее полное восстановление. В Yukon язык T-SQL дополнен новыми предложениями «Try...Catch...Finally», использование которых позволяет отслеживать ошибки, вызвавшие прерывание, без потери контекста транзакции, что дает возможность полностью ее восстанавливать.
Поддержка FileStream
Еще одно достоинство Yukon — поддержка FileStream, обогатившая возможности SQL Server, связанные с обработкой больших двоичных объектов (BLOB), больших символьных объектов (CLOB) и прочих больших объектов (LOB). Поддержку FileStream обеспечивает реализованный в Yukon новый тип данных «varbinary(max)». Введение типа данных «varchar(max)» позволяет работать с большими объектами данных как со стандартными строковыми данными. В SQL Server 2000 и более ранних версиях предусматривалось использование совсем другой модели программирования для доступа к данным типа BLOB, CLOB и LOB, хранящимся в базе данных. Поддержка FileStream, которой обладает Yukon, позволяет применять к данным «varchar(max)» ту же модель программирования, что и к стандартным данным «varchar».
Тип данных «varchar(max)» является расширением группы, представленной типами «image», «ntext», «nvarchar», «text», «varbinary» и «varchar». Подобно типам «image», «ntext» и «text», тип «varchar(max)» поддерживает до 2 Гбайт данных. При этом, в отличие от типов «image», «ntext» и «text», тип «varchar(max)» может вмещать как символьные, так и бинарные данные. Самым же важным преимуществом является то, что данные «varchar(max)» хранятся в файловой системе за пределами базы данных SQL Server. Поддержка FileStream осущуествляет связь между объектами, хранящимися в файловой системе, и их ссылками в реляционных таблицах Yukon.
«Зеркало» базы данных
Вероятно, самой значительной новинкой технологии Yukon в области эксплуатационной готовности является поддержка зеркального отображения базы данных (см. рис. 1). Это означает немедленное включение дублирующего резерва в случае сбоя базы данных или сервера. «Зеркало» базы данных обеспечивает отказоустойчивость на уровне базы данных. Если происходит отказ главной базы данных, не более чем через 2-3 секунды вступает в действие ее резервный дубликат. Таким образом, потеря данных сводится к нулю. Зеркальный сервер синхронно отслеживает все действующие транзакции, которые выполняются на главном сервере базы данных.
Рисунок 1. Зеркалирование базы данных. |
Зеркальное отображение можно настроить на автоматический или ручной режим обработки ситуации отказа базы данных. Ручной режим хорош для тестирования, тогда как отказоустойчивость производственных баз данных предпочтительно осуществлять в автоматическом режиме. Функция зеркалирования работает на любом стандартном аппаратном обеспечении. В использовании специализированных систем нужды нет, а главный и зеркальный серверы вовсе не должны быть идентичными. Влияние зеркального отображения базы данных на производительность выполнения транзакций минимально. Кроме того, в отличие от обладающих высокой отказоустойчивостью кластерных решений, отпадает необходимость в совместно используемых средствах хранения, связанных с главным и зеркальным серверами.
В процессе зеркального отображения базы данных участвуют три системы: главный сервер, зеркальный сервер и «свидетель». В роли главного сервера выступает система, обслуживающая базу данных. В зависимости от конфигурации зеркального сервера возможна организация незаметной для пользователя передачи ролей. «Свидетель» выступает в роли независимой третьей стороны, участвующей в определении системы, берущей на себя главную роль. Каждая система получает голос, дающий основание выполнять функции главного сервера; победителя определяют два идентичных голоса. Это важный момент, так как в случае нарушения связи между главным и зеркальным серверами каждый из них мог бы сам себя назначить на главную роль. Таким образом, «свидетелю» принадлежит решающий голос.
Зеркальное отображение происходит путем пересылки журналов транзакций между главным и зеркальным серверами. То есть, по сути, зеркалирование является приложением для пересылки журналов транзакций в реальном времени. Функцию зеркального отображения можно настроить на обслуживание одной или нескольких баз данных.
Запрос, посылаемый клиентской системой главному серверу, вначале регистрируется в журнале транзакций и лишь затем записывается в файл данных, так как в технологии Yukon используется упреждающая регистрация. После этого главный сервер отправляет регистрационную запись о транзакции на зеркальный сервер, который регистрирует эту запись в своем журнале транзакций и возвращает на главный сервер уведомление о ее принятии. Таким образом, оба сервера располагают идентичными данными в своих журналах. В случае выполнения операций фиксации транзакций (COMMIT) главный сервер ждет подтверждения и лишь затем посылает клиенту ответ о завершении операции.
Инициализация зеркального отображения начинается с создания дубликата базы данных на главном сервере и восстановления этого дубликата на зеркальном сервере. Это обеспечивает развертывание данных и логической структуры основной базы данных по местам. Непрерывное восстановление (т. е. извлечение данных из журнала и обновление файла данных) поддерживает своевременное обновление информации на зеркальном сервере.
Функция Transparent Client Redirect
Новая функция перенаправления Transparent Client Redirect действует в сотрудничестве с функцией зеркального отображения базы данных. Эта технология, реализованная в новой версии Microsoft Data Access Components (MDAC), обеспечивает автоматическую переадресовку клиентских систем на зеркальный сервер, когда главный сервер становится недоступным. Никаких изменений в клиентские приложения или приложения на уровне данных вносить не требуется.
Новая функция работает следующим образом. Технология MDAC располагает информацией о главном и зеркальном серверах. MDAC получает имя зеркального сервера при первом подключении к главному серверу. В случае нарушения связи с главным сервером MDAC вначале предпринимает попытку ее восстановления. Если попытка оказывается безуспешной, MDAC автоматически переадресует вторую попытку установления связи на зеркальный сервер. Как и в случае кластеризации, если связь в середине транзакции прерывается, приложение обеспечивает ее возврат в исходное состояние. После установления связи клиента с зеркальным сервером приложение должно обеспечить повторное выполнение прерванной транзакции.
MARS
В технологии Yukon реализована поддержка технологии Multiple Active Result Sets (MARS). В предыдущих версиях SQL Server существовало ограничение — один активный набор результатов на одно подключение. Хотя объектно-ориентированные технологии ADO и OLE для баз данных позволяют приложениям работать с несколькими результирующими наборами, эта возможность на деле означает порождение новых подключений от имени пользователя для обработки дополнительных команд.
Помимо расширения возможностей ADO.NET, MARS позволяет задействовать несколько активных команд за одно подключение. Пользователь может подключиться к базе данных, выполнить первую команду, обработать часть результатов, затем выполнить вторую команду и обработать результаты. После этого можно вернуться к первой команде и обработать другую часть результатов.
MARS и новая версия ADO.NET позволяют свободно переходить от одной активной команды к другой. При этом команды совместно используют одно подключение к базе данных. Таким образом, MARS значительно повышает производительность и масштабируемость приложений ADO.NET. Технология MARS предполагает использование расширенных возможностей базы данных Yukon и не работает с предыдущими версиями SQL Server.
SQL Server Workbench
В Yukon существенно изменен инструментарий административного управления. Server Manager, SQL Server Enterprise Manager и SQL Query Analyzer остались в прошлом. Им на смену пришла новая рабочая среда SQL Server Workbench (см. экран 1), по сути представляющая собой специализированный вариант интегрированной среды разработки (IDE) Visual Studio .NET. SQL Server Workbench используется для управления SQL Server и создания запросов. Новая технология может работать с предыдущими версиями SQL Server, тогда как Enterprise Manager или Query Analyzer не могут применяться для управления сервером Yukon.
Экран 1. Интерфейс SQL Server Workbench |
Среда управления SQL Server Workbench объединяет все функциональные возможности Enterprise Manager и Query Analyzer в единый инструментарий. Окно Registered Servers в левом верхнем углу экрана открывает список доступных систем SQL Server. Двойной щелчок клавишей мыши обеспечивает подключение к выбранному серверу и открывает окно проводника Object Explorer в левом нижнем углу экрана, где можно получить доступ ко всем объектам базы данных. В отличие от утилиты Enterprise Manager, предполагающей обязательную нумерацию всех объектов базы данных, SQL Server Workbench обладает более мощным интеллектом и выдает список только тех объектов, которые пользователь раскрывает в древовидной схеме. Такая организация обладает лучшей реактивностью при работе с базами данных, вмещающими большое число объектов. На правой панели экрана пользователь может создавать и отлаживать запросы T-SQL.
В SQL Server Workbench реализована возможность составления сценариев для выполнения административных действий. Сценарии можно сохранять и воспроизводить для повторного выполнения одних и тех же функций управления. Модель SQL Distributed Management Objects (SQL-DMO) на базе компонентных объектов (COM) замещена новым пользовательским интерфейсом SQL Management Objects (SMO).
Выделенное соединение администратора
В технологии Yukon реализовано выделенное соединение к SQL Server, не зависящее от текущей рабочей нагрузки сервера. Это обеспечивает администратору возможность получать доступ к серверу и удалять процессы, которые выходят из-под контроля. Для работы с данной возможностью используется новый инструмент командной строки Sqlcmd.
Интеграция с XML
Yukon поднимает на новый уровень унификацию хранения данных XML и реляционных данных. Введен новый тип данных XML, который, помимо поддержки собственных запросов XML, обеспечивает строгий контроль типов за счет привязки типа XML-данных к описанию XML Schema Definition (XSD). Кроме того, Yukon предусматривает двустороннее соответствие между реляционными данными и XML-данными. Поддержка XML интегрирована в процессор реляционной базы данных Yukon, что позволяет задействовать триггерные схемы по XML-данным, выполнять резервное копирование и массовую загрузку XML-данных, а также расширяет возможности доступа к данным по протоколу Simple Object Access Protocol (SOAP).
Новый тип XML-данных можно задавать как столбец в таблице либо как переменную или параметр в хранимой процедуре. Данные XML-столбца, для которых отсутствует схема описания XSD, считаются данными без контроля типов. Если XML-столбец имеет ассоциированную схему XSD, выполняется проверка соответствия данных, содержащихся в столбце, описанию схемы. В любом случае перед сохранением документа Yukon выполняет проверку данных, хранимых как тип XML-данных, удостоверяющую правильность составления сохраняемого документа. Этот тип XML-данных способен поддерживать максимум 2 Гбайт данных.
Еще одна относящаяся к XML новинка — удобное визуальное средство проектирования XQuery Designer в рабочей среде SQL Server Workbench. Этот инструмент позволяет задействовать язык запросов XML Query Language (XQuery) для поиска XML-документов, хранящихся в столбцах XML, в виде самостоятельных XML-документов и реляционных данных.
Полностью переделана служба DTS
В Yukon служба преобразования данных Data Transformation Services (DTS) полностью переделана и представлена в виде управляемого .NET-кода. Специалист в области DTS должен подготовиться к освоению нового инструмента разработки. Новая служба использует новую объектную модель, обладает более высокой надежностью и масштабируемостью. В DTS реализована высокоэффективная конвейерная обработка данных. При этом сохранена способность поддержки любого источника данных, совместимого с OLE для баз данных, и источников данных, отличных от SQL Server.
Экран 2. Интерфейс DTS Designer |
Помимо внутренней перестройки, DTS имеет новый инструмент проектирования DTS Designer (см. экран 2). Подобно другим инструментам Yukon, DTS Designer работает в среде SQL Server Workbench. Для доступа к DTS Designer нужно открыть новый проект SQL Server Workbench Project, выбрать элемент Data Transformation Project и добавить в проект пакет DTS Package. Панель View обеспечивает просмотр доступных задач DTS. Для интерактивного построения пакета DTS требуется сначала выбрать задачу, а затем на панели инструментов Data Flow Items выбрать нужный элемент Data Flow. В Yukon значительно увеличено число элементов Data Flow. Для соединения элементов Data Flow используются специальные стрелки. Построив пакет DTS, его можно выполнить и отладить, пользуясь элементами меню SQL Server Workbench.
Система SQL Service Broker
Новая подсистема-брокер SQL Service Broker обеспечивает поддержку асинхронной очереди. Асинхронная очередь присутствует во многих приложениях, обладающих высокой степенью масштабируемости, например в подсистемах ввода/вывода операционных систем, Web-серверах и даже во внутренних операциях процессора базы данных SQL Server.
Асинхронная организация очереди является важным фактором обеспечения масштабируемости, поскольку позволяет программам отвечать на большее число запросов, чем данная платформа физически способна обрабатывать. Например, если 10 000 пользователей одновременно запрашивают ресурсы Web-сервера, не обладающего асинхронной очередью, сервер может не справиться с формированием цепочки обработки всех приходящих запросов. Асинхронная организация позволяет фиксировать все запросы в виде очереди. При этом сервер обрабатывает приходящие из очереди запросы максимально эффективно. Асинхронная очередь позволяет серверу обрабатывать намного больше пользовательских подключений. Брокер SQL Service Broker дает возможность встроить аналогичный тип асинхронной масштабируемости в приложения баз данных.
Служба Notification Services
Первоначально появившаяся в виде Web-редакции для SQL Server 2000, служба оповещений Notification Services является одной из базовых подсистем Yukon. Данная служба обеспечивает программную среду для создания приложений по отправке уведомлений на различные устройства в ответ на события, задаваемые разработчиком. Подобно многим другим возможностям технологии Yukon, служба Notification Services построена на основе управляемого .NET-кода.
Составляющие элементы приложения Notification Services — абоненты, события, подписки и оповещения. Абонентами являются пользователи, которым необходимо сообщать о наступлении тех или иных событий. Под событием понимается изменение конкретной части информации, в которой заинтересован абонент. Подписка определяет информацию, отправляемую абоненту, а оповещение представляет собой сообщение, получаемое абонентом в случае наступления события.
Служба Reporting Services
Служба Reporting Services заполняет большой пробел, присутствующий в предыдущих версиях SQL Server, а именно неспособность генерировать отчеты по базе данных. Новая технология позволяет мгновенно создавать отчеты по реляционным данным SQL Server и других совместимых с OLE DB баз данных, а также по данным кубов OLAP.
Служба Reporting Services охватывает все аспекты процесса отчетности — от проектирования отчетов до их развертывания и доставки. Для составления отчета используется графический конструктор с интегрированным графическим компоновщиком запросов. Внутренний процесс работы конструктора предполагает создание документа на языке Report Design Language (RDL). Основанная на XML технология RDL представляет собой новый язык описания отчетов. Процесс развертывания обслуживается с использованием нового менеджера отчетов Report Manager на базе Web-служб, обеспечивающего загрузку отчетов на сервер. По завершении процесса развертывания служба Reporting Services сохраняет описания отчетов в базе данных SQL Server. Report Manager также управляет доставкой отчетов. Пользователь может назначать полномочия, определяющие, кто имеет право работать с конкретным отчетом. Можно также выполнять настройку, определяющую формат отчета и модель подписки.
Золотая россыпь Yukon
Хотя ждать появления технологии Yukon предстоит еще долго, в ней уже реализовано множество важных возможностей. Кроме описанных здесь основных достоинств продукта, есть еще немало других, например восьмиузловая кластеризация, поддержка неоднородной памяти Non-Uniform Memory Access (NUMA), новая модель безопасности на базе схемы, встроенный сервер HTTP и способность работать с базами данных SQL Server 2000 Windows CE Edition. Таким образом, Yukon подарит нам настоящую «золотую россыпь» новых возможностей.
Примечание редактора. Данный материал частично позаимствован из готовящейся к выходу книги SQL Server «Yukon» New Features (Новые возможности «Yukon» SQL Server), издательство Мак-Гроу Хилл.
Майкл Оти — старший технический редактор Windows & .NET Magazine и президент компании TECA. С ним можно связаться по адресу: mikeo@teca.com