Вход

MS SQL Server 6.5

Реферат* по программированию
Дата добавления: 23 января 2002
Язык реферата: Русский
Word, rtf, 872 кб (архив zip, 99 кб)
Реферат можно скачать бесплатно
Скачать
Данная работа не подходит - план Б:
Создаете заказ
Выбираете исполнителя
Готовый результат
Исполнители предлагают свои условия
Автор работает
Заказать
Не подходит данная работа?
Вы можете заказать написание любой учебной работы на любую тему.
Заказать новую работу
* Данная работа не является научным трудом, не является выпускной квалификационной работой и представляет собой результат обработки, структурирования и форматирования собранной информации, предназначенной для использования в качестве источника материала при самостоятельной подготовки учебных работ.
Очень похожие работы
Найти ещё больше
41 СОДЕРЖАНИЕ : Введение Архитектура MS SQL Server 6.5 производительность Распределенная среда управле ния SQL-DMO (Distributed Management Objects) Интеграция с электронной почтой Характеристики языка Transact-SQL MS Distributed Transaction Coordinator (DTC) и распределенные транз акции Блокировки Наде жность хранения информации Тиражирование Вопросы безопасности доступа Некоторые во просы использования MS SQL Server в Internet/intranet-приложениях Заключение Список литературы : Введение Коль скоро этот обзор посвящен серверу баз данных , невозможно не упомяну ть о том , что создание машин для хране ния и управления данными является , пожалу й , одним из самых значимых достижений человечества со времени изобретения письменн ости . Как известно , в начале было слово . Слово , ознаменовавшее переход от рефлексии в восприятии окружающего мира к абстрактному мышлению . Возможно , именно этот переворот в с ознании нарушил первозданную гар монию и противопоставил человека природе . Как бы то ни было , при всей ограниченност и и имманентной неполноте вербального общения именно слово служит основным способом пе редачи информации по сравнению , например , с музыкой , т а нцем , живописью , архитект урой и т . д . В рамках той парадигмы , в которой сегодня работает наш мозг , пр едставляется иррациональной возможность просветления , озарения , т . е . мгновенного получения необ ходимых знаний . Остается процесс постепенного познания дей с твительности , и для этого человек вынужден был научиться сохранят ь информацию , полученную на предыдущих этапах . Ключевым моментом стало возникновение знако вого письма , которое , несмотря на большие или меньшие потери , смогло обеспечить должное хранение фор м ализованных знаний . Как утверждают антропологи , за последние неск олько десятков тысяч лет физиологические пара метры homo sapiens практически не изменились - образно г оворя , мы не стали лучше думать или гл убже чувствовать . Единственное , что отличает с оврем е нного человека от его предш ественников - это объем накопленной информации и усовершенствованные способы ее обработки . Именно владение информацией обеспечило прогрес с человеческого общества , позволив каждому по следующему поколению опереться на объем знани й и опыта , собранный предшественниками , и в общем случае не изобретать занов о велосипед. Нелинейный рост во времени совокупной базы знаний цивилизации вызвал к жизни прогрессирующую эволюцию средств хранения , обрабо тки и представления информации как инструме нтов умножения ее интеллектуальной мощи . В этом ряду применение последних достиже ний в области компьютерных технологий сравним о по степени важности с изобретением печа тного станка или даже его превосходит . Наб людается и обратная зависимость : чем более изо щ ренные средства используются д ля обработки информации , чем быстрее растут ее объемы , тем большее значение она при обретает практически во всех аспектах человеч еской деятельности , в частности в экономике . Роль информации , как товара или предмета труда , носи т совершенно особый ха рактер . Информация сравнительно легко копируется без ущерба для своих потребительских сво йств . В отличие , например , от тонны нефти , одна и та же информация может быть потреблена неоднократно , в том числе одноврем енно различными участн и ками товарных отношений . Все мы еще с уроков общест воведения усвоили , что труд является основным источником создания материальных благ . Однак о даже у авторов учения о прибавочной стоимости можно встретить мысль о том , что по мере развития науки главная до л я прироста общественного благосостоя ния будет обуславливаться ускоренными темпами обновления основного капитала в силу роста технического прогресса . Многие современные з ападные экономисты склонны считать , что челов ечество вступило в постиндустриальный пер и од своего развития , основным средством производства в котором будет выступать инф ормация и по отношениям собственности на которую в обществе уже начал определяться новый правящий класс - когнитариат . Можно пр инимать или оспаривать эти выводы , очевидно одн о - в деятельности современного предприятия информация становится одним из важнейших производственных ресурсов , выделяясь в самостоятельный фактор успешного бизнеса из традиционных составляющих , таких как кадры , клиенты , каналы сбыта , технологии . Наконец , и нформация не может потребляться непосредственно : например , чтобы усвоить текст , нужно , как минимум , уметь читать . Отсюда с ростом значения информации возрастает роль средств ее обработки . Если зачастую стоим ость информационной базы корпорации оказывается в ыше производимой ею продукции и услуг , если информация - это всегда деньг и (и в общем-то немалые ), то неудивительно , что рынок СУБД на сегодня оценивается в десятки миллиардов долларов . Хотя предки нынешних СУБД существовали на мэйнфреймах еще до появлени я в 1969 г . знаменитой статьи Э . Кодда , положившей начало теории реляционных баз данных , их поистине массовое распространение и беспреце дентный рост популярности обеспечили "настольные " варианты одновременно с мировой экспансией персональных компьютеров . О днако тр ебования корпоративного доступа к ресурсам и появление локальных вычислительных сетей на базе ПК привели к созданию наиболее многочисленных на сегодня решений на базе технологии "клиент-сервер ". В последнее время необходимость поддержки мультимеди й ных проектов (изображений , видео , звука ) и рабо ты с другими видами неструктурированной бизне с-информации (временные ряды , географические карты ) вызвала к жизни внедрение объектной идео логии в старые добрые реляционные базы не зависимо от того , достигалось л и это полным переписыванием ядра или интегра цией готовых реляционных и объектных баз данных . Классическую же в терминах реляционно й теории СУБД , как известно , в первом п риближении можно описать как комплекс из инструментария для поддержки таблиц и отношен и й между связанными таблицами , пол ьзовательского интерфейса для ввода , поиска д анных и их представления и высокоуровневых средств разработки приложений . Выделение в этой среде своеобразного исполнительного информа ционного центра , принимающего короткие запр о сы от клиентов , отыскивающего опт имальный путь их выполнения и передающего в ответ результирующие множества , приводит к разделению функций СУБД , часть из которы х закрепляется за сервером , а часть - за клиентом . Традиционно на сервер возлагаются обязанност и по оперативному исполнен ию транзакций , поддержке целостности данных , о беспечению безопасности хранения и доступа , о беспечению пользовательских соединений и соблюде нию части логики приложения , большей или м еньшей в зависимости от самого конкретного прилож е ния . Естественно , самая миним альная часть серверной логики должна обеспечи вать проектирование структурной схемы базы вм есте с соответствующими ограничениями . На сто роне клиента у нас , таким образом , остаютс я другая (как правило , все-таки меньшая ) час ть би з нес-логики приложения и поль зовательский интерфейс . Исходя из всего сказа нного выше о значении и цене информации в современном мире не будет большим пр еувеличением сказать , что в серверах баз д анных (во всяком случае , для "большой шесте рки ") воплотились л у чшие достижения в области информационных технологий . Microsoft SQL Server 6.5 явл яется одним из наиболее стремительно развиваю щихся серверов баз данных на рынке корпор ативных СУБД . Разумеется , в рамках данной статьи невозможно подробно остановиться на ха р а ктеристиках этого продукта в то й мере , в какой это хотелось бы сделат ь и какой он , безусловно , заслуживает . Поэт ому мы ограничим нашу задачу рассмотрением хотя бы некоторых базовых возможностей Microsoft SQL Server 6.5 применительно к перечисленным выше ф у нкциям сервера баз данных. Архитектура MS SQL Server 6.5 Симметричная мультипроцессорная архитек тура MS SQL Server предусматривает использование "родных " се рвисов операционной с истемы Windows NT для управл ения потоками (threads), памятью , операциями дискового чтения /записи , сетевыми службами , функциями безопасности , а также для поддержки параллель ного выполнения потоков на нескольких CPU. Испол ьзование потоков Windows NT позволя е т MS SQL Server авт оматически масштабироваться при работе на мно гопроцессорных платформах , что исключает необходи мость дополнительной конфигурации или программно й настройки . Например , на Comdex была продемонстрир ована работа MS SQL Server на платформе Alp h aServer 8400 производства Digital, оснащенным 12 процессорами , 28 Гбайт памяти и 39-ти терабайтным хранилищем . В отличие от большинства распространенных СУБД , вынужденных иметь в своем составе механизмы дублирования ядра операционной системы для обеспечен и я кросс-платформенной пере носимости , MS SQL Server обладает достаточно легковесной про зрачной архитектурой , не перетяжеленной несвойств енными ей функциями . В результате , например , при смене типа процессора не требуется заново приобретать MS SQL Server для новой ап паратной платформы . Он ставится , по определени ю , на все , на чем работает Windows NT (на сегодн я это Intel, Alpha, MIPS и PowerPC). По мере того как Windows NT за воевывает все большее признание и все вед ущие производители СУБД уже выпустили версии с воих продуктов под этой опера ционной системой или уже заявили о своей готовности это сделать в ближайшее время , изначальная ориентированность MS SQL Server 6.5 на тесную интеграцию с Windows NT выступает в качестве одног о из серьезных преимуществ. На каждо е пользовательское соединение в MS SQL Server назначается отдельный рабочий поток (порядка 55К ) в рамках единого серверного процесса . Так как каждый из этих потоков в действительности является потоком Win32, на них распространяются соответствующие функции контроля операционной системы , включа я защиту памяти , правила доступа к оборудо ванию и планирование выполнения потоков во времени (thread scheduling). Это предоставляет улучшенные спос обности к масштабированию при росте числа одновременно работающих польз о вателей , динамическую балансировку при загрузке проц ессоров и повышенную надежность , так как п ользовательские запросы , исполняющиеся на разных потоках , защищены друг от друга . Несмотря на то что пул соединений ограничен 1024 потоками , динамическое управле н ие пол ьзовательскими соединениями и свободными потокам и позволяет увеличить эту величину до 32 767. К роме этого , другие пулы потоков могут испо льзоваться для параллельного выполнения операций сканирования данных , удаления и обновления , резервного копирова н ия , проверки це лостности базы , индексирования , асинхронного опере жающего чтения данных в кэш на основе алгоритмов предсказания , создания и управления курсорами и т . д. Сетевые службы Windows NT обеспечивают MS SQL Server поддержку протоколов TCP/IP, NWLink IPX/SPX, Named Pipes (NetBEUI), Banyan Vines, AppleTalk (ADSP) и DECNet. В вер сии 6.5 к ним добавилась дополнительная сетевая библиотека - multiprotocol network library, которая "умеет слушать " по рты TCP/IP, сокеты SPX или поименованные каналы (named pip e s), которые обычно выбираются динамич ески . Несомненным достоинством multiprotocol является наличи е сетевого сервиса , обеспечивающего взаимодействи е между процессами при помощи вызовов уда ленных процедур , что позволяет , например , испол ьзовать шифрование пр и передаче дан ных. Производительность Многопоточное ядро и интеграция со службами планирования потоков Windows NT обеспечивает высокую производительность MS SQL Server при обрабо тке OLTP- и DSS-запросов , что особенно заметн о при одновременной работе нескольких сотен пользователей . В опубликованных результатах по тестированию MS SQL Server 6.5 на максимальное число од новременно работающих пользователей приводится ц ифра 3500, хотя и звестны реально работаю щие приложения , где нагрузка доходила до 5000 одновременных пользовательских соединений . За пе риод с октября 1995 г . по декабрь 1996 г . прои зводительность MS SQL Server, измеренная по тестам TPC-C (см . http://www.tpc.org), выросла с 2454 до 7521 транзакции в минуту , т . е . более чем в 3 раза . Для сравнения заметим , что ежедневный объем тра нзакций в расчетной системе VISA составляет от 10 до 40 млн . Темп 7,5 тыс . транзакций в минуту означает , что один MS SQL Server способен при режим е р аботы 24х 7 обслужить немногим м енее 11 млн . транзакций в сутки . Существует е ще один параметр , тесно связанный с произв одительностью , который , не являясь в строгом смысле слова техническим , очень популярен н а Западе при оценке возможностей того или иного с е рвера баз данных , так как от него существенно зависит стоимост ь владения продуктом (cost of ownership). Речь идет об уд ельной цене за транзакцию в минуту , иными словами , сколько придется заплатить за до стижение такой скорости обработки запроса . За тот же с амый период , в тече ние которого мы рассматривали рост производит ельности , показатель "цена /производительность " сниз ился с 242 до 65 долл . за транзакцию в мину ту , что говорит о разумной стоимости систе м на базе MS SQL Server при высоких требованиях к скоро с ти обработки. Распределенная среда управления В состав MS SQL Server 6.5 входит свыше 20 граф ических средств управления и утилит командной строки , которые кратко охарактеризован ы в табл .1. Название Краткое описание Интерфейс Исполняемый фа йл SQL Enerprise Manager Мощный центра лизованный инструмент полного управления сервера ми в масштабах предприятия , включая базы д анных , их объекты , предупреждения (alerts), спланированны е во времени задачи , тиражирование и запросы . Графический sqlew.exe SQL Executive Локальный адм инистративный агент для планирования задач , у правления предупреждениями и мониторинга активно сти MS SQL Server. Может быть вызван из SQL Enterprise Manager. Командная строка sqlexec.exe Sqlmaint Определяет план необходимых р утинных действий по поддержке базы данных : регулярная проверка целостности , резервное коп ирование , перестройка индексов и т . Д ., кото рый впоследствии будет выполняться автоматически . Ана логичный мастер включен в SQL Enterprise Manager. Командная строка sqlmaint.exe SQL Service Manager Sqlservr Используется для запуска , останова , приостановки и возобновления деятельности сервера и агента SQL Executive. Сам MS SQL Server может быть за пущен из командной с троки , аргументы которой определяют его текущ ую настройку . Графический , Командная строка sqlmgr.exe sqlservr.exe ISQL/w Средство построения запросов , анализа плана выполнения , просмотра статистическо й информации и одновременного у правления многими запросами в различных окнах. Графический isqlw.exe Isql Средство интерактивного ввода операторов Transact-SQL, вызова системных процедур , запуска скриптов. Командная строка isql.exe SQL Security Manager Управление интегрир ованным режимом безопасности. Графический sqsecmgr.exe SQL Trace Средство мониторинга пользовательской активн ости . Позволяет отлавливать операторы Transact-SQL, вызовы процедур , инициируемые каждым клиентом , в реальном времени или записывать в журнал . Облада ет возм-стями фильтрации. Графическ ий sqltrace.exe SQL Performance Monitor Использует для мониторинг а событий и сбора статистики по MS SQL Server станд артный perfmon.ехе Windows NT на основе предоставляемого им списка объектов и счетчиков. Графический sqlalrtr.exe SQL Alerter Интеграция механизма предупреждений с соответствующими службами Windows NT Performance Monitor. Командная строка SQL Transfer Manager Управление переносом данных и объектов с различных платформ SQL Server. Графический sqlxfr.exe BCP (bulk copy) Пе ренос данных между MS SQL Server и файлами операционной системы (например , текстовыми ). Командная строка bcp.exe SQL Setup Применяется для начальной установки , удал ения , upgrade, инсталляции дополнительных компонентов и измен ения настроек в конфигурации : по ддержки сетевых протоколов , изменения языка , в ыбора кодовой страницы и порядка сортировки , модели безопасности , а также для перестр ойки базы данных master. Графический setup.exe Language installation Установка под держки доп олнительной языковой информации (например , локализованных сообщений ). Используется в setup.exe. Командна я строка langinst.exe Sort order installation Установка кодовой страницы символов , чувс твительности к регистру и отношения порядка над символами . Испол ьзуется в setup.exe. Командная строка charset.exe Check upgrade Используется MS SQL Server во время upgrade для проверки совместимости сущ ествующих пользовательских баз. Командная строка с hkupg65.exe SQL Client Configuration Utility Настройка клиента DB-Library, различных сетевых библиотек и /или пользовательских п оименованных каналов. Графический windbver.exe Makepipe, readpipe Пытаются открыть и использовать поименованный канал между с ервером и клиентом. Командная строка makepipe.exereadpipe.exe Odbcping Проверка правильно сти установки ODBC-соединения с MS SQL Server. Командная строка odbcping.exe Console Используется в месте с оператором DUMP для резервного копирован ия , если устройством является дискета. Командная строка console.exe Printdmp Фор матированный дамп стека для ну жд отладки. Ком андная строка printdmp.exe Таблица 1. Кроме этого , MS SQL Server 6.5 включает Web-assistant - программу-мастер для подготовки публикации на Web-cтраницах данных из базы , SQL Mail - утилиту , обеспечивающую инте грацию с электронной почтой MS Mail или MS Exchange, MS Distributed Transaction Coor-dinator (MS DTC) для проведения распределенных транзакций и некотор ые другие средства . SQL Server, MS DTC и SQL Executive функционируют к ак сервисы операционной системы . С ог ласованная работа этих компонентов достигается благодаря трехуровневой архитектуре SQL-DMF (Dist-ributed Management Frame-work). Легко масштабируемая распределенная среда управления позволяет значительно упростить про цессы централизованного контроля над многим и серверами , которые могут объединяться в группы по соображениям безопасности или с административными целями , и их объектами , к которым относятся : • устройства (devices), на которых физически р асполагаются базы данных ; • резервные устройства , содер жащие страховочные копии баз данных и объектов внутри нее ; • базы данны х : • пользователи и группы пользователей ; • таблицы ; • представления ; • хранимые процедуры ; • правила (rules); • ограничения типа default; • типы данны х , определенные пользователем ; • logins для соединения с сервером . SQL Enterprise Manager интегрирует в себе все функции управления , включая создание баз данных и объектов внутри них , назначение прав доступ а , резервное копирование , тиражирование и т . д . При желании имеется возможност ь автоматизировать процесс составления плана подде ржки базы при помощи специальной программы-по мощника (Data-base Main-tenance Wizard). Различные подходы к системному администрированию зачастую могут содержать ряд малоприятных моментов , например необходим о сть выполнять резервное копирование базы в субботу вечером . По тем же причинам руководитель бывает вынужден командир овать сотрудников в какой-нибудь удаленный фи лиал , где отсутствует должным образом подгото вленный IT-персонал . MS SQL Server 6.5 позволяет р ешить эти проблемы , во-первых , за счет централиз ованного управления удаленными серверами , во-вторы х , за счет наличия мощного средства диспет черизации задач во времени , предоставляемого SQL Executive. Для каждой административной функции может быть назначен временной график ее выполнения . Практически все СУБД содержат р азвитые средства по ликвидации тех или ин ых неблагоприятных последствий . Microsoft SQL Server, помимо этого , предоставляет обширный инструментарий диагности ки , позволяющий своевременно предотв р атить причины сбоев . Утилиты SQL Performance Monitor и Alert Manager могут использоваться для программирования реакции сервера на различные классы событий , возникаю щих в системе , в том числе и на би знес-события . Если , например , уровень заполнения журнала т ранзакций превзошел некотор ое пороговое значение или по корреспондентско му счету возникло "красное " сальдо , MS SQL Server может послать вам (или указанным вами лицам ) п о электронной почте или на пейджер соотве тствующее предупреждение и /или выполнить пред у с мотренный вами скрипт , cmd- или exe-фа йл для устранения ошибки , а также зафиксир овать появление этого события в системном журнале . В целом можно сказать , что расп ределенная среда управления позволяет существенн о упростить жизнь администратора базы данных. SQL-DMO (Distributed Management Objects) В качестве промежуточного слоя в архитектуре распределенной среды управления выступают распределенные объекты управления (DMO), которые играют исключительно важную роль в концепции построения MS SQL Server и потому заслужи вают более тщательного рассмотрения . По мере того как приложения приобретали все мене е централизованный характер , поддержка распределе нных баз данных становилась одним и з самых актуальных вопросов построения с овременных СУБД . Мы уже имели возможность убедиться , что SQL Enterprise Manager позволяет осуществлять удобн ое администрирование распределенных серверов из единого центра , однако наряду с этим хотелось бы иметь возмо ж ность про граммного обращения к административным функциям из высокоуровневых языков . Обычно использова вшимся для этих целей в других СУБД с ценарным языкам типа REXX или PERL недоставало функц иональных возможностей , библиотек классов , отладчи ка и т . д. Поэто му в случае с Microsoft SQL Server был и збран более открытый подход : сервер был ра зработан как cовместно с набором объектов управления , которые могли быть вызваны из любого языка программирования , поддерживающего те хнологию СОМ (Component Object Model). M S SQL Server 6.5 предоставляет интерфейс OLE Automation с более , чем 70 объектами , облад ающими 1500 свойствами. Это означает , что фактически любая из перечисленных нами в предыдущем пункте а дминистративных задач , включая операции над б азами данных , ограниче ниями (constraints), триггерами , таблицами , представлениями , полями , индексами , по льзователями , группами , публикациями и пр ., може т быть оформлена как вызов соответствующего метода соответствующего объекта и выполнена (при наличии прав доступа ) из Visual B asic, Visual C++, Visual J++, Visual FoxPro и т . д . Как и для вся кого OLE Automation Server, при распространении приложения , исполь зующего вызовы SQL-DMO, на клиенте с помощью regsrv32.exe должна быть зарегистрирована библиотека подде ржки объектов sqlole6 5 .dll. Вот , например , ка к можно организовать просмотр содержимого таб лицы MS SQL Server из MS Visual FoxPro 5.0: FoxPro 5.0: oSQLServer=CreateObject("SQLOLE.SQLServer") oSQLServer.Connect("ntalexeysh", "sa") oQueryResults=oSQLServer.Databases("mydb").Execu teWithResults("select * from anytable") ? for each oColumn in oSQLServer. Databases("mydb").Tables("anytable").Columns ?? padc(oColumn.Name,oColumn. Length)+' ' next for i=1 to oQueryResults.Rows ? for j=1 to oQueryResults.Colum ns ?? oQueryResults.GetColumnString(i,j)+' ' next next oSQLServer.Close Объектная модель оказалась настолько мощн ой , полной и гибкой , что даже SQL Enterprise Manager (одна из основных утилит в составе MS SQL Server) был на писан с испол ьзованием DMO. Интеграция с электронной почтой Рассматривая функции администрирования MS SQL Server 6.5, мы упоминали о возможности автоматическ ой отправки сообщений по электрон ной почте в случае возникновения предупреждения , превышения порогового значения одного из пока зателей в SQL Performance Monitor или периодически на основе запланированного графика . В состав сервера входит утилита SQLMail, которая позволяет организовать вз а имодействие с Microsoft Exchange Server для отпр авки и приема сообщений через расширенные хранимые процедуры , использующие вызовы функций MAPI. К этим процедурам относятся xp_startmail и xp_stopmail дл я запуска и остановки SQLMail, xp_sendmail для отправк и сообщения , xp_findnextmsg для поиска следующе го сообщения в почтовом ящике , xp_readmail для чтен ия сообщений и вложенных в них файлов , xp_deletemail для удаления . Все они находятся в б иблиотеке sqlmap60.dll и могут использоваться в скрипт ах на Transact-S Q L, хранимых процедурах , три ггерах и т . д . Например , в триггере на update можно предусмотреть непосредственную отправку сообщения (без вызова raiserror, как это было при работе с Alert Manager), если происходит попытка изменить какие-либо важные значения в базе данных . Приведенная ниже хранимая процедура осуществляет сканирование ящика вход ящих сообщений и запись параметров , поступивш их сообщений в таблицу. create procedure scaninbox as declare @msg_id varchar(64), @originator varchar(255), @recipients varc har(255) declare @cc_list varchar(255), @subject varchar(255), @date_received varchar(255) declare @msg_body varchar(255) truncate table mysqldb..inbox while (1=1) begin exec master..xp_findnextmsg @msg_id=@msg_id output if @msg_id is nul l break exec master..xp_readmail @msg_id=@msg_id, @originator=@originator output, @recipients = @recipients output, @cc_list=@cc_list output, @subject=@subject output, @date_received = @date_received output, @message=@msg_body output, @suppress_attach='true', @peek='false' insert into mysqldb..inbox (msg_id, originator, recipients, cc_list, subject, date_received, msg_bod y) values (@msg_id, @originator, @recipients, @cc_list, @subject, @date_received, @msg_body) end SQLMail может быть сконфигурирован для автом атического запуска одновременно со стартом се рвиса SQLExecutive. Сервис MS SQL Server должен быть стартован под у четной записью пользователя Windows NT (user account), кото рая обладает локальными административными правам и и имеет соответствующие права в домене . Имя данного пользователя , под которым то т входил в Windows NT, должно совпадать с название м почтового ящик а (mailbox name) MS Exchange. Характеристики языка Transact-SQL В основе практически всех вышеп еречисленных утилит лежит код языка Transact-SQL. MS SQL Server 6.5 б ыл первой СУБД , прошедшей сертификационные испытания Правительства США на соответствие входному уровню (entry level) федеральных стандартов о бработки информации (FIPS) 127.2. Эти тесты основываются на известных стандартах ANSI SQL92 и включают допо лнительные требования, в частности по по ддержке трехуровневых архитектур . MS SQL Server 6.5 содержит бо льшое количество черт и функций , относящихся к более высоким уровням стандарта ANSI SQL92 (intermediate и full), например скроллируемые в обоих направлени ях курсоры с абсолют н ым и отн осительным позиционированием . Насколько мне извес тно , ни одна из СУБД на сегодня не достигла полного соответствия уровню ANSI SQL92, более высокому , чем входной. Transact-SQL включает операторы для изменения на строек сервера , пользовательской сесси и , п росмотра и редактирования данных , создания и модификации баз и их объектов . Способы обеспечения целостности данных представлены в табл . 2. В настоящее время в MS SQL Server поддержива ется только строгий (restrict) тип ссылочной целостно сти . Тип целос тн ости Пояснения Механизмы контроля Entity Определяет запись как уникальную для таблицы сущность Primary key, Unique key, Identity Domain Определяет область допустимых значений дл я поля Default, Check, Foreign key Referential Поддержка ссылочно й целостн ости связей Check, Foreign key, Trigger User-defined Все прочие биз нес-правила на уровне столбца и таблицы Trigger, Rule, Stored procedure Таблица 2. Вся информация об ограничениях , наложенны х на таблицу , может быть просмотрена при помощи хранимой проц едуры sp_helpconstraint. Ограничен ия всегда вызываются перед триггерами . Послед овательность обработки выглядит следующим образо м : rules, references, check, referenced by и затем triggers. Подробная характеристика черт Transact-SQL сама по себе могла бы со с тавить отдельную статью или даже несколько статей , поэтому мы ограничимся констатацией лишь некоторых его новшеств по сравнению с предыдущей версией MS SQL Server: • операторы CUBE и ROLLUP для создания аналитических запросов п ри построении систем поддерж ки принятия решений ; • оператор CREATE SCHEMA (создание концептуального ко нтейнерного объекта ); • возможность временной отмены ограничений при тиражировании ; • дополнительные хранимые процедуры для настройки процесса тиражирования ; • возможность тиражи рования данных типа text и image; • возможность резервного копирования и загрузки отдельной таблицы ; • возможность использования операторов DDL вн утри транзакции ; • новые опции DBREINDEX, PROCCACHE, ROWLOCK, UPDATEUSAGE для DBCC; • оператор INSERT-EXEC позволяет осуществить непосредственную вставку результатов выполнения процедуры ; • поддержка распределенных транзакций . Помимо обычных хранимых процедур MS SQL Server пред оставляет возможность динамической загрузки и выполнения функций , кот орые называются расширенными хранимыми процедурами и выполнены в виде dll-библиотек . Пример такой библиотеки , содержащий расширенные процедуры для работы с электронной почтой , мы видели , когда рассматривали интеграцию MS SQL Server с MS Exchange. Расширен н ые процедуры объединены в dll-библиотеки в целях повышения производительности по ср авнению с оформлением в виде отдельных пр оцессов . Кроме расширенных процедур , входящих в Transact-SQL, MS SQL Server позволяет создавать пользовательские ра сширенные процед у ры c использованием к ода на C при помощи MS Open Data Service (ODS) API. MS ODS является мощным средством разработки и применяется также для создания шлюзов к неподдерживаемым шта тно пользовательским ресурсам , программирования з адач аудита , извещения о со б ытиях и пр . Добавление новых расширенных процед ур осуществляется командой sp_addextendedproc 'xp_proc', 'xp.dll', где xp_proc - новая процедура , содержащаяся в библиотеке xp.dll. Удале ние ненужных процедур производит команда sp_dropextendedproc. Так как р а сширенная процедура исполняется в адресном пространстве MS SQL Server, право на ее добавление имеет только системный администратор . Дополнительный уровень защиты обеспечивается обработчиком исключений MS SQL Server, который предотвращает сервер от сбоя в с лучае нарушений защиты памяти в расши ренной процедуре. В версии 6.5 в Transact-SQL вошли хранимые процеду ры для работы с объектами OLE Automation. Таким образ ом , фактически появилась возможность писать р асширенные хранимые процедуры на любом языке программ ирования , поддерживающем создание cерверов OLE Automation: Visual Basic версии 4 и выше , Visual FoxPro 5.х и т . д . Экземпляр соответствующего объекта созда ется непосредственно в коде Transact-SQL при помощи хранимой процедуры sp_OACreate. Доступ к свойств а м осуществляется через sp_OAGet-Property, sp_OASetProperty. Вызов м етода организует процедура sp_OAMethod. sp_ OAGetErrorInfo сообщает инфо рмацию о последней произошедшей ошибке , након ец , sp_OADestroy высвобождает объект после его использо вания. Механизм в ызовов удаленных хранимых процедур (RPC) позволяет организовать межсерверное взаимодействие и является мощным средством построения распределенных баз . RPC означает вызов с одного сервера процедуры , принадлежащей другому серверу баз данных . Клиентское прил о жение может вызывать процедуру н а своем основном сервере , которая неявно д ля клиента может порождать каскад вызовов удаленных хранимых процедур на других серв ерах . RPC представляет собой достаточно удобный способ работы с распределенными данными без необх о димости внесения изменений в клиентскую часть приложения. MS Distributed Transaction Coordinator (DTC) и распределенные транзакции Создание распределенных приложений приводит к тому , что транзакции также приобретают распределенный характер . Структуризаци я приложения в виде многих самостоятельных компонентов способна существенно повысить масш табируемость и повторную используемость , а та кже упростить его разработку . Однако при э то м необходимо иметь в виду , что сбой в работе одного из компонентов ( например , в результате выхода из строя ком пьютера , на котором она была запущена ) не должен сказываться на целостности функционир ования всего приложения в целом , т . е . компонент может време н но выключиться из согласованной работы приложения , но св язанные с ней сообщения должны быть обраб отаны корректно. Участниками распределенной транзакции являют ся приложение , менеджеры транзакций , менеджеры ресурсов и сами ресурсы , затрагиваемые тран закцией. В этой цепочке MS DTC выполняет роль менеджера транзакций . Тот DTC, к первому из которых обратилось приложение , инициировавшее транзакцию , называется первичным В разных источниках он может также называться глобальным (global) или корневым (root). менед жеро м транзакций . Пусть HRESULT hr; ITransactionDispenser *pTxDispenser; тогда hr = DtcGetTransactionManager( NULL, // имя хоста DTC, NULL // означает данный хост NULL, // имя менеджера транзакций IID_ITransactionDispenser, // требу емый интерфейс 0, // зарез ервировано 0, // зарез ервировано (void *)NULL, // зарез ервировано (void **)&pTxDispenser); возвращает указатель на первичный менедже р транзакций . После того как приложение ус тановило соединение с соответствующим DTC-сервисом , все остальные экземпляры DTC, поднявшиеся на хостах менеджеров ресурсов , являются по дчиненными . В ответ на вызов приложения пе рвичный менеджер транзакций создает объект "т ранзакция ", указатель на который можно получит ь как ITransaction *pTx; hr = pTxDispenser->BeginTransaction ( NULL, // управляющий интерфейс ISOLATIONLEVEL_BROWSE, // уровень изоляции 0, // флаги изоляции NULL, // зарезервир овано &pTx); // Ptr на объект "транзакци я " Как видно из примера , приложение начин ает распределенную транзакцию , вызывая метод BeginTransaction объекта "первичный менеджер транзакции ". После этого оно может работать с менеджерами ресурсов . Первое обращение к менеджеру ресу рсов из приложения одно значно идентифицир ует текущую транзакцию . Менеджеры ресурсов , уч аствующие в данной транзакции , должны прописа ться в объекте "транзакция " при помощи мен еджеров транзакций. RETCODE rc; HDBC hSrv1, hSrv2;• rc = SQLSetConnectOption( hSrv1, SQL_COPT_SS_ENLIST_IN_DTC, pTx); rc = SQLSetConnectOption( hSrv2, SQL_COPT_SS_ENLIST_IN_DTC, pTx); После этого все обращения к базам данных от менеджеров ресурсов через устано вленные соединения выполняются от имени транз акции , пока она не завершит свое д ействие . DbExecSQL(hSrv1,"INSERT INTO..."); DbExecSQL(hSrv2,"INSERT INTO..."); ... hr=pTx->Commit(0,0,0);• hr=pTx->Release() Инициация рас пределенных транзакций сервером имеет ряд доп олнительных преимуществ по сравнению с только что рассмотренной инициацией на сторон е клиента . К ним относятся меньшие сетевые затраты при управлении транзакциями , а та кже то , что ошибка на клиенте не "подве шивает " транзакции в состоянии in-doubt. Кроме того , вызовы Transact-SQL достаточно пр о сты в использовании . При явном определении все вызо вы удаленных процедур наследуют контекст расп ределенной транзакции. BEGIN DISTRIBUTED TRANSACTION INSERT INTO ACCOUNTS VALUES (100,20) EXEC RMTBRANCH.ACCOUNTS.DBO.DEPOSIT 100,20 COMMIT TRANSACTION При неявном определении при помощи ус тановок sp_configure "remote proc trans", 1 (уровень сервера ) или set remote_ procedure_transactions on (у ровень сессии ) MS SQL Server по умолчанию рассматривает локальные транзакции , начатые begin transaction, как рас пределенные с подключением DTC, если в них со держатся вызовы удаленных хранимых процедур. Корректное завершение транзакции выполняется при помощи протокола двухфазной фиксации . Когда приложение вызывает метод commit, менеджер тран закций оповещает зарегистрировавшиеся менеджеры ресурсов подготовиться к фиксации д анной транзакции , и , после того как все они известили о своей готовности , менеджер транзакций рассылает широковещательное сообщени е зафиксировать транзакцию . Если хотя бы о д ин менеджер ресурсов не сообщил о готовности фиксировать транзакцию , она повсеместно откатывается . После сообщения о г отовности менеджер ресурсов пребывает в состо янии сомнения (in-doubt) относительно общего исхода . Т ак как менеджеры ресурсов регистрируют с я в транзакции , то менеджеры транзакци й имеют возможность отслеживать все их оп ерации и хранят журналы о решениях фиксир овать или откатить транзакцию . В свою очер едь менеджер ресурсов также ведет у себя такой журнал . Следовательно , если имел ме сто сбой в с ети , то после ег о ликвидации менеджер транзакций связывается с вышестоящим менеджером транзакций и запраши вает его об исходах . После этого менеджер ресурсов идет на свой менеджер транзакци й и получает у него информацию о том , что делать с зависшими транза к циями . Кроме этого , если исход транзак ции известен , DTC предоставляет возможность "ручного " разрешения транзакций , чтобы слишком долго не держать данные блокированными. MS DTC содержит компоненты клиентской и серв ерной настройки . Установка клиентского комп онента требуется только в том случае , если данный клиент будет сам инициироват ь распределенные транзакции , а не использоват ь транзакции , начатые на серверной стороне как begin distributed transaction. MS DTC достаточно легок и удобен в настройке и управле н ии . Он им еет окна : • в разных источниках он может также называться гло бальным (global) или корневым (root); • конфигурации , позволяющее задать темп обновления информации , транзакции какой давност и должны показываться , место и емкость жур нала , статус DTC; • трассировки , отображающие сообщения от DTC; • транзакций , отображающие статус текущих транзакций : • статистики по текущим и суммарным транзакциям . В рассмотренном примере инициации распред еленной транзакции на стороне клиента мы проиллюстрировали и спользование интерфейсов , соответствующих стандарту OLE Transaction. OLE Transaction выгодно отличается от некоторых других распространенных стандар тов тем , что построен на основе объектной модели и поддерживает приложения , работающие одновременно со мног и ми потоками . OLE Transaction обладает улучшенными характеристиками по сравнению с ранее разработанными стандартами , лишенными , например , возможности восстановления (recovery), инициированного менеджером ресурсов . Тем не менее при помощи процесса XA Mapper MS DTC, выполняющего роль переводчика между XA и OLE Transaction, обеспечивается определенное взаимодействие с про дуктами , совместимыми со стандартом X/Open DTP XA. MS DTC может участвовать в транзакциях , координируемых монит орами транзакций Encina, TopEn d и Tuxedo, для кото рых он выглядит как некоторый менеджер ре сурсов . Стандарт OLE Transaction содержит возможности расшире ния для работы с широким спектром транзак ционно защищенных ресурсов , к которым могут быть отнесены документы , образы , очереди соо бщени й и другие виды плохо стру ктурированной информации. Блокировки MS SQL Server использует следующие типы бло кировок : shared - для операций , не изменяющих содержимое данных , наприме р select; update - когда сервер намерев ается изменить данные , во время непосредствен ной записи обновлений этот тип блокировки изменяется на exclusive (для таблиц см .intent); exclusive - при модификации данн ых (insert, update, delete). Совместимость блок ировок различных ти пов приводится в табл . 3. Основными типами я вляются shared и exclusive. Блокировку типа update можно рассма тривать как некий механизм для сочетания первых двух типов блокировок в одной опер ации в целях предотвращения взаимного блокиро ва н ия транзакций (deadlock). Как правило , б ольшинство процессов , модифицирующих данные , состо ят из двух частей : поиск (чтение ) необходим ой информации и внесение изменений . Заметим , что при наличии кластеризованного индекса на таблицу операция вставки тоже от н осится к подобным процессам - сервер д олжен сначала отыскать правильное местоположение новых записей . Разумно во избежание излиш ней конкуренции разрешить другим транзакциям читать данные во время первой фазы такого процесса . Тогда возникает вопрос : зачем в ообще вводить дополнительный тип блокировки и почему нельзя обойтись первым и двумя ? Ответ очевиден , если рассмотреть одновременно несколько таких процессов . Они б удут прекрасно уживаться на стадии поиска , но ни один из них не сможет монопо льно запереть да н ные для записи , так как другие в это время их чита ют . Для исключения взаимной блокировки в MS SQL Server при выполнении первой фазы вводится тип блокировки update, который (см . табл . 3) не допускает аналогичные блокировки на протяжении периода своего дейс т вия по отношению к блокированным им данным. Тип блокировки shared update exclusive Shared OK OK X Update OK X X Exclusive X X X Таблица 3. Уровень блокиров ки может распространяться на : • запись (д ля операций insert); • cтраницу - 2-килобайтный фр агмент да нных или индексов ; • расширение (extent) - 8 последовательных страниц , используется при размещении или высвобождении страниц (например , в командах create/drop или когда операция вставки insert требует выделения новых страниц памяти ); • таблицу , включая все входящие в нее данные и индексы Иногда выделяют еще блокировку intent. Однако intent не является бл окировкой в строгом смысле слова , это м етка в цепочке табличных блокировок , предуп реждающая другие транзакции о том , что текущий процесс намере н произвести эск алацию масштаба блокирования до уровня таб лицы. . В следующей версии блокировка уровня записи будет возможна для всех типов тран закций . Блокировка уровня записи на операции вставки позволяет в первую очередь решит ь задачу уменьшения вероя тности конкуренц ии в OLTP-системах с массированным одновременным вводом информации (типичный пример - операцион ный день банка ), где таблицы содержат толь ко некластерные индексы или кластерный индекс построен по монотонно возрастающему ключу . По умолчанию э та опция выключена . В текущей базе данных ее можно задей ствовать командой sp_tableoption <Имя таблицы или шаблон >, 'insert row lock', 'true'. Существует диалектическое противоречие , с которым наверняка сталкивался каждый администрат ор базы данных или разра ботчик . С одной стороны , хочется уменьшить до минимума вероятность столкновения интересов пользователе й при доступе к одним и тем же ре сурсам и потому блокировать все на как можно более детальном уровне . С другой - очень не хочется перегружать менеджер бл о кировок , который фиксирует информаци ю о том , кто наложил блокировку , какого типа , кто ждет , пока она освободится и т . д . Например , в MS SQL Server 6.5 каждая блокировка обходится в 32 байта . Для разрешения этого п ротиворечия сервер умеет автоматически пов ы шать уровень блокировки в случае , если блокировок предыдущего уровня детализа ции становится слишком много (lock escalation). "Слишком мно го " - это LE Threshold Maximum в настройках конфигурации сервер а , т . е . максимальная пороговая величина чи сла страничн ы х блокировок , при дос тижении которой происходит эскалация до уровн я таблицы . По умолчанию она равна 200. Для этих же целей используется настройка LE Threshold Percentage - в относительном выражении к размеру та блицы (но не меньше , чем LE Threshold Minimum, что полезно для небольших таблиц ). В перспективе возможна обратная стратегия динамической де эскалации уровня блокировки , когда блокируется заведомо больший фрагмент данных , чем тре буется , но , как только появляется транзакция , конкурирующая за данные вну т ри данного фрагмента , уровень первой транзакции будет автоматически уменьшен. Управление уровнем изоляции транзакций на протяжении всего соединения (пользовательской сессии ) осуществляется при помощи установки set transaction isolation level <уровень изоля ции >, где уровень изоляции может принимать значения : read uncommitted соответствует уровню изоляции 0 стандарта ANSI, т . е . просто запрещает различным транзакциям изменять одни и те же данные в одно и то же время , но допускает грязное и неповторяющееся чт ение и фантомы Напомним , что под грязным чтением (dirty read) понимается ситуация , когд а транзакция Т 1 модифицирует запись , транзак ция Т 2 ее читает , Т 1 тем временем от катывает изменения и Т 2 работает с запи сью , которая реально никогда не существовал а . Не повторяющееся чтение (unrepeatable read) возникает в случае , если Т 1 читает запись , Т 2 ее изменяет и Т 1 снова прочитывает т у же запись . Т 1, дважды прочитав одну и ту же запись , фактически видела дв а разных значения . Фантомы : Т 1 читает за писи , удовлетворяю щ ие определенному условию , после этого Т 2 добавляет или удаляет записи . Если Т 1 опять произведет выборку по тому же условию , она м ожет получить множество записей , не совпада ющее с предыдущим. ; read committed (устанавли вается по умолчанию ) соответствует уро вню изоляции 1 стандарта ANSI, т . е . предотвращает грязное чтение ; repeatable read или serializable соответствует уровню 3 по стандарту ANSI - предотвращает грязное чтение , а также гарантирует , что два о ператора select в разных местах одной транзакции буду т возвращать одинаковый результат , т . е . исключает неповторяющееся чтение и ф антомы. Последний , самый надежный уровень защиты транзакций является самым неоптимальным с точки зрения быстродействия , так как за все приходится платить . Для более гибкого управл ения уровнем изоляции для каждог о оператора select может явно задаваться опция настройки ; nolock то же , что read uncommitted , - дает возможность чтения грязных (еще не за фиксированных ) данных , которая перекрывает аналоги чные параметры конфигурации пользова тельской сессии . В операторе select можно также оговори ть продолжительность блокировки данных ; holdlock инструктиру ет сервер держать блокировки до завершения транзакции (по умолчанию блокировки снимаются сразу же по прочтении требуемых данных ; Тип и ур ове нь блокировки : updlock заставляет применить блокировку update вм есто обычной shared, используется , когда следом иде т оператор update, основанный на прочитанных значен иях , чтобы запретить update из других транзакций ; paglock заставляет сервер при любых усло виях использова ть блокировки уровня страницы ; tablock принудитель но блокирует таблицу (shared); tablockx принудитель но блокирует таблицу (exclusive). Просмотр текущих блокировок выполняется п ри помощи хранимой процедуры sp_lock или через включение флага т рассировки 1200 на клиента : dbcc traceon (3604,1200). Также полезным являются флаги 1204 и 1205, которые выдают информацию о ситуациях взаим ной блокировки (deadlocks). MS SQL Server обладает возможностью автом атического обнаружения deadlocks как циклов в ц епочке блокировок . Он находит первый п роцесс , который мог бы разорвать цикл , уби вает его и откатывает все транзакции этог о процесса , находившиеся в стадии выполнения . Как правило , им оказывается тот самый процесс , который запросил блокировку , послуживш ую п ричиной зацикливания . После этог о сервер генерирует сообщение об ошибке 1205. Если клиентское приложение имеет обработчик ошибок , отлавливающий ошибку 1205, то оно может предпринять соответствующие действия по испр авлению ситуации , и конечный пользователь, скорее всего , даже не узнает , что имела место взаимная блокировка. Надежность хранения информации В критических для бизнеса прило жениях , когда сервер СУБД должен быть пост оянно доступен для клиентов , большинство профилактических работ по поддержке базы д анных приходится выполнять фактически в режим е on-line. MS SQL Server обладает возможностями динамического резе рвного копирования данных , т . е . даже когда эти данные используютс я и изме няются клиентами . В случае сбоя оборудования , отключения питания и т . д . механизм а втоматического восстановления MS SQL Server восстанавливает все базы данных до их последнего целостного состояния без вмешательства администратора . Все завершенные , н о не отраженные в базе транзакции из журнала транзакций применяются к базе данных (это фактически то , что происходит при событии chekpoint), а нез авершенные транзакции , т . е . те , которые был и активными на момент сбоя , вычищаются из журнала. Как мы уже отм ечали , говоря о симметричной архитектуре , операции резервного копирования и восстановления могут распараллел иваться на несколько потоков и выполняться одновременно , используя преимущества асинхронного ввода /вывода . На каждое резервное устройс тво отводится свой поток . Параллельное резервное копирование поддерживает до 32 однов ременных резервных устройств (backup devices), что позволяет быстро создавать страховочные копии баз да нных даже очень большой емкости . Возможность резервного копирования и восстановле н ия отдельных таблиц , о чем мы упом инали , рассматривая Transact-SQL, позволяет экономить место и время , не выполняя копирование всей базы ради только некоторых ее объектов . Однако резервное копирование отдельной таблицы требует наложения на нее блокировки e xclusive в отличие от резервного копирования всей базы или журнала транзакций , которые могут выполняться независимо от степени активности пользователей . Резервным копиям может быть назначен предельный срок хранения и ли дата утраты актуальности , до наступл е ния которой место , занятое на устройстве этими копиями , не может использо ваться для размещения других резервных копий при инициализации устройства . В качестве резервных устройств могут также применяться в ременные устройства , не входящие в состав базы и не имеющие записей в си стемной таблице sysdevices: DECLARE @tomorrow char(8) SELECT @tomorrow = CONVERT(char(8), DATEADD(dd, 1, GETDATE()) , 1) DUMP DATABASE pubs TO DISK = '\\ntalexeysh\disk_d\sql_experiments\pubs.dmp' WITH INIT, EXPIREDATE=@tomorrow, STATS Для небольшой базы данных ее журнал транзакций обычно хранится на том же у стройстве , что и сама база , и архивируется вместе с ней . Журналирование транзакций в едется по принципу write-ahead, что означает , что любое изменение сначала отражается в журнале транзакций и лишь потом попадает собственно в базу . В случае нахождения жур нала транзакций на отдельном устройстве сущес твует возможность отдельного резервного копирова ния журнала транзакций . Как правило , резер в ное копирование базы данных орга низуется с меньшей частотой , чем журнала т ранзакций . Например , сохранение журнала транзакций выполняется ежедневно , а страховая копия всей базы может делаться раз в неделю , так как архивирование журнала транзакций п роисходи т значительно быстрее по вр емени и занимает меньше места , чем дамп целой базы . В отличие от резервирования базы данных дамп журнала транзакций очищае т его неактивную часть , т . е . все завер шившиеся (зафиксированные или абортированные ) с момента последнего д а мпа транзакци и , если только не использована опция NO_TRUNCATE. К оманда DUMP TRANSACTION TRUNCATE_ONLY, очищающая журнал транзакций , полез на в случае его переполнения , которое можн о контролировать , например , оператором DBCC SQLPERF (LOGSPACE). Если степень переполнения журнала очень высока , можно при его очистке отказаться от журналирования факта самого этого событ ия : DUMP TRANSACTION NO_LOG. Если резервное копирование транзакций не представляет интереса , можно включить оп цию очистки последних завершенных т р анзакций в базе по наступлению событи я checkpoint. Cмысл механизма checkpoint состоит в периодическо й записи данных из кэша на диск , чтобы не допускать грязных данных . Такого рода события постоянно генерируются MS SQL Server или возни кают по инициативе по л ьзователя . В ключенная опция truncate log on checkpoint гарантирует выполнение с определенной частотой обработчиком события д ействий , приблизительно эквивалентных команде DUMP TRANSACTION TRUNCATE_ONLY. При восстановлении журнала транзакций соо тветствующие транзакции применяются к базе данных . Это означает , что если в начал е недели была сделана резервная копия все й базы , а потом ежедневно архивировались т ранзакции за каждый день , то при необходим ости восстановления поднимается состояние базы на начало недел и и на него последовательно накатываются дампы журнала тра нзакций за все дни , предшествующие моменту восстановления . MS SQL Server 6.5 имеет возможность восстановлен ия данных из журнала транзакций на произв ольный момент времени (разумеется , отраженный в жу р нале ) при помощи команды LOAD TRANSACTION STOPAT или в окне database backup and restore выбором опции until time. Вс е содержащиеся в этом дампе транзакции , от меченные завершившимися после этого момента , будут откачены. Возможность планирования задач ре зерв ного копирования во времени и отсылки соо бщений по e-mail в случае успешного /неуспешного завершения рассматривалась нами при обсуждении SQL Executive. MS SQL Server 6.5 предусматривает возможность зеркалировани я устройств , переключения на зеркальные ус тройства в качестве основных , выключения зеркалирования и уничтожения зеркального уст ройства также "на лету ", т . е . без остано вки штатной работы сервера по обслуживанию пользовательских запросов . Зеркалирование и дуп лексирование устройств для работы с MS S QL Server может быть также выполнено средствам и Windows NT, а также на аппаратном уровне (поддерж ка различных RAID-систем и т . д .). По-видимому , следует предполагать , что реализация первого этапа кластерной технологии WolfPack будет поддержива ть MS SQL Se r ver 6.5 в отказоустойчивых кластерах из двух узлов . Появление следующей версии MS SQL Server должно обеспечить работу серверов в кластере как единого виртуального сервера. Transfer Manager используется для экспорта /импорта объектов и данных БД на MS SQL Se rver между разными аппаратными платформами , например между процессорами Intel и Alpha, а также между разными версиями MS SQL Server, в частности из более ранних в более поздние или между равноценными (имеются в виду 4.х и 6.х ). Очень часто проектирование о бъектов базы ведется с помощью различных графических средств , но проектная документация может требовать стр уктуру объектов с точностью до операторов DDL. Для получения скриптов , описывающих создание отдельного объекта базы данных , можно исп ользовать коман д у transfer из контекстного меню объекта или выбрать соответствующий класс и имя объекта в Transfer Manager. Кроме этого , содержимое данных может быть выгружено /з агружено при помощи утилиты bcp (см . табл . 1). Тиражиро вание Наличие развитого механизма тиражир ования в любой серьезной системе управления базами данных обуславливается необходимостью приближения данных к местам их непосредств енного потребления , что является особенно важ ным фактором при построении витрин да нных в системах принятия решений , разгрузки приложений от избыточных функций чтения /по иска при создании отчетов и т . д . Созда ние распределенных приложений с использованием средств тиражирования положительно сказывается на относительной автономии сайтов , повышении масштабируемости и производительности . Традиционно в построении распределенных систем данных существуют два основных подхода . О дин из них основан на плотной целостности данных (loose consistency) и рассматривал с я нам и в пункте , посвященном MS Distributed Transaction Coordinator. Протокол дв ухфазной фиксации гарантирует идентичность данны х в любой момент времени на всех узла х сети , однако необходимо иметь в виду , что этот подход требует наличия высокоскор остных к а налов передачи данных и постоянной доступности каждого узла . Другой подход , основанный на слабой целостности (loose consistency), допускает , вообще говоря , некоторый временно й интервал между внесением изменений в ор игинал и их отражением в образе . Приложе н ия , основанные на принципе слабой целостности , являются значительно менее чувс твительными к доступности узлов , а также п ропускной способности и надежности каналов пе редачи данных . Тиражирование в MS SQL Server построено н а использовании именно второго под х ода. Основными действующими лицами в процессе тиражирования служат издатель (publisher), дистрибьютор (distributor) и подписчик (subscriber). Поскольку тиражирование явл яется неотъемлемой составной частью MS SQL Server, последний может выступать в роли каж дого и з них . Конфигурирование и управление каждой ролью осуществляется из SQL Enterprise Manager через уже зн акомые нам SQL-DMO или с помощью операторов и хранимых процедур языка Transact-SQL. Репликационной еди ницей в плане распространения и подписки явл я ется публикация (publication). Публикация со стоит из одной или нескольких статей (articles). С татьей публикации называется отдельная таблица или ее вертикальный и /или горизонтальный фрагмент . Вертикальное фрагментирование осуществля ется выбором соответств у ющих полей таблицы , горизонтальное - при помощи условия where или специальной процедуры горизонтальной фильтр ации (CREATE PROCEDURE - FOR REPLICATION). Таблица обязана иметь первичный ключ . Как только на издателе созданы ст атьи , все тиражируемые объекты о т м ечаются специальным признаком в одном из полей системной таблицы sysobjects. Кроме этого , в тиражируемой базе ведется еще три справочные таблицы . Syspublications в отдельной строке хранит ин формацию о каждой новой публикации . Она св язана отношением один- к о-многим с таблицей sysarticles, содержащей информацию о статьях и их принадлежностью публикациям . Наконец , пос ледняя , в свою очередь , связана отношением один-ко-многим с таблицей syssubscriptions, где содержится информация о том , каким подписчикам адресо в ана каждая статья. Тиражирование в MS SQL Server основано на журнале транзакций (log-based). На каждую тиражируемую базу данных на дистрибьюторе запускается процесс п од названием log reader, который читает журнал транзак ций на издателе , выбирает оттуда все завершенные транзакции , помеченные к тиражирова нию и передает их дистрибьютору , на которы й с того момента возлагается вся дальнейш ая ответственность по доведению этих транзакц ий до подписчика . Издатель , таким образом , высвобождается от всякой заботы по р а спространению транзакций и не расходует на это свои ресурсы . Каждый подписчик обслуживается отдельным потоком дистрибьютора . Клиент , первым запустивший sp_replcmds на публикуемой базе данных , рассматривается ею как log reader, все остальные попытки это сд е лать вызовут сообщение об ошибке . Процедура sp_repltrans поз воляет получить список завершенных транзакций базы данных , еще не переданных дистрибьютор у (идентификатор ряда , страница и отметка времени поступления ). sp_replcmds содержит еще информацию о сами х командах , связанных с этой транзакцией , и к какой статье публика ции она относится . Log reader читает эти операции , определяет соответствующие им sql-команды и пише т их в базу данных распространения (distribution database) на дистрибьюторе . База данных ра с п ространения имеет таблицы MSjobs, содержащую информаци ю о транзакциях для тиражирования , связанную как один-ко-многим с таблицей MSjob_commands, которая разбивает каждую транзакцию на отдельные ком анды . Каждая команда должна быть передана определенному п о дписчику , что определ яется в таблице MSsubscriber_jobs. На издателе прочитанные транзакции отмечаются как переданные на распространение , и только после этого они могут быть оттуда уничтожены при резервном копировании журнала транзакций (см . выше ). На приме р , процедура sp_repldone, определяя транзакц ию в журнале базы издателя по ряду и странице , помечает ее как распространенную . Процесс синхронизации (sync task), один на публикацию , всякий раз при появлении нового подписчика создает мгновенный снимок (snapsh o t) дан ных на издателе , подлежащих тиражированию это му подписчику . При этом создаются файлы сх ем данных и , собственно , содержания (bcp-типа ), которые будут переданы подписчику при распрос транении для обеспечения первоначальной идентичн ости данных . На дистр ибьюторе существуют еще д ва вида процесса : распространение и очистка . Задача распространения создается для каждой пары "тиражируемая база /подписавшаяся база ", а задача очистки - для пары "издатель /подп исчик ". Распространение (distribution task) применяет п рочитанные из базы данных распространения sql-ко манды к базе данных подписчика . Процесс оч истки (cleanup task) уничтожает все выполненные работы (т . е . транзакции ) из базы данных распростран ения через некоторый настраиваемый интервал (retention period) по с ле того , как они были доведены до подписчика . Задача очистки может быть создана вручную при помощи sp_addsubscriber, a зад ача распространения - как sp_addsubscription (sp_subscribe). Несмотря на то что организация всего процесса тиражирова ния может быть з а писана в код ах при помощи вызовов специальных хранимых процедур , эта черта используется на практик е крайне редко и главным образом в це лях отладки . В обычных ситуациях настройка и управление тиражированием осуществляются из графической среды SQL Enterpris e Manager и планир овщика задач SQL Executive. Все задачи репликации на дистрибьюторе работают под управлением SQL Executive (msdb...systasks) и под его контекстом безопасности . Процесс выполнения любой из них можно контролировать в окне task history. Допол нительным средством контроля сл ужит SQL Performance Monitor, куда передается необходимая статистич еская информация о тиражировании (sp_replcounters). Соединение дистрибьютора с издателем происходит на основе DB-Library, а с подписчиком - через ODBC. Таким образом , в качестве подписчиков MS SQL Server может выступать широкий спектр ODBC-достижимых ресурсов , к которым , например , относятся дру гой Access, Sybase, Oracle, DB2 и т . д . Тиражирование в MS SQL Server осно вано на интегрированном режиме безопасности ( см . Безопасность ), следовательно , между дистрибьютором и подписчиком должны быть установлены доверительные соединения (trusted connections) с и спользованием поименованных каналов (named pipes) или мульт ипротокола . Если серверы находятся в разных доменах , м ежду доменами должны бы ть установлены двусторонние доверительные отноше ния . В случае небольших объемов тиражируемых данных издатель часто совмещает с дистри бьютором на одном MS SQL Server. Отметим также , что с ерверы , участвующие в тиражировании , должны ис п ользовать одни и те же кодов ые страницы. MS SQL Server обладает обширными возможностями настро йки процесса тиражирования . Мы уже упоминали о горизонтально-вертикальных фрагментах таблиц в качестве статей публикаций . Отметим , что для каждой статьи имеется в озможност ь назначить к тиражированию только необходимы е типы транзакций . Например , можно запретить передачу подписчикам транзакции типа "delete" в р амках данной статьи . Более того , на каждый тип транзакций можно настроить вид польз овательских действий на с тороне под писчика . Например , при поступлении подписчику транзакций вставки и удаления они будут о трабатываться , как обычно , а по приходе тр анзакции типа "update" на подписчике будет вызывать ся некоторая хранимая процедура . Некоторые ог раничения в тиражиру е мых данных б ывает нецелесообразно передавать подписчику . В этом случае они помечаются как not for replication. Процес с синхронизации как самый дорогой в смысл е трафика предусматривает возможность ручного выполнения синхронизации или полного отказа от синх р онизации данных и пере дачу исключительно транзакций . Существует и о братная возможность : подписчику с определенной периодичностью будут поступать только мгновенн ые снимки данных , а не их изменения . В зависимости от административного акцент а MS SQL Server п озволяет организовать подписку на стороне издателя либо на стороне подписч ика . Первый вид подписки (push subscription) используется пр и централизованном распространении , когда подписк и создаются "выталкиванием " статей на те и ли иные серверы-подписчики , ко т орые могут не иметь своих администраторов . Второ й вид (pull subscription) предполагает известную автономию с ервера-подписчика , администратор которого определяет , какие публикации ему принимать . По умолч анию все публикации создаются со статусом безопасност и "неограничено ", они видны и на них могут подписаться любые зар егистрированные серверы подписки . Ограниченная пу бликация может быть выписана только теми серверами , которые имеют на это соответствующ ие права. Вопросы безопасности доступа Как мы уже отмечали , говоря о преимуществах интеграции с операционной сис темой , MS SQL Server использует в своей работе сервисы безопасности Windows NT. Напомним , что Windows NT на сегодня сертифи цирована по классам безопасности С 2/Е 3. MS SQL Server может быть настроен на работу в одном из трех режимах безопасности . Интегрированный режим предусматривает использован ие механизмов аутентификации Windows NT для обеспечения безопасности всех пользовате л ьских соединений . В этом случае к серверу р азрешаются только трастовые , или аутентифицирующи е , соединения (named pipes и multiprotocol). Администратор имеет во зможность отобразить группы пользователей Windows NT на соответствующие значения login id MS SQL Server при помощи утилиты SQL Security Manager. В этом случае при входе на MS SQL Server login name и пароль , переданные через DB-Library или ODBC, игнорируются . Стандартный режим безопасно сти предполагает , что на MS SQL Server будут заводиться самостояте л ьные login id и соответствующие им пароли . Смешанный режим использует инт егрированную модель при установлении соединений по поименованным каналам или мультипротоколу и стандартную модель во всех остальных случаях. MS SQL Server обеспечивает многоуровневую проверку привилегий при загрузке на сервер . Сначал а идентифицируются права пользователя на уста новление соединения с выбранным сервером (login name и пароль ) и выполнение административных функци й : создание устройств и баз данных , назнач ение прав другим по л ьзователям , из менение параметров настройки сервера и т.д . Максимальными правами обладает системный админ истратор . На уровне базы данных каждый пол ьзователь , загрузившийся на сервер , может имет ь имя пользователя (username) базы и права на доступ к объектам внутри нее . Имее тся возможность отобразить нескольких login id на о дного пользователя базы данных , а также об ъединять пользователей в группы для удобства администрирования и назначения сходных приви легий . По отношению к объектам базы данных пользователю м о гут быть назначен ы права на выполнение различных операций над ними : чтение , добавление , удаление , изменени е , декларативная ссылочная целостность (DRI), выполнен ие хранимых процедур , а также права на доступ к отдельным полям . Если этого не достаточно , можно прибегнуть к предста влениям (views), для которых сказанное остается спр аведливым . Наконец , можно вообще запретить пол ьзователю непосредственный доступ к данным , о ставив за ним лишь права на выполнение хранимых процедур , в которых будет прописан весь сцена р ий его доступа к базе . Хранимые процедуры могут создаваться с опцией WITH ENCRYPTION, которая шифрует непосредственный текст процедуры , хранящийся обычно в syscomments. Права на выполнение некоторых команд (создани е баз , таблиц , умолчаний , правил , предста в лений , процедур , резервное копировани е баз и журналов транзакций ) не являются объектно-специфичными , поэтому они назначаются системным администратором сервера или владельц ем (создателем ) базы данных при редактировании базы данных . Администрирование пользо в ательских привилегий обычно ведется в SQL Enterprise Manager, тем не менее в Transact-SQL имеются хранимые процедуры (sp_addlogin, sp_password, sp_revokelogin, sp_addalias, sp_adduser) и операторы (GRANT, REVOKE), которы е позволяют осуществлять действия п о созданию пользователей , назначению и от мене прав при выполнении скриптов . Дополнител ьную возможность администрирования привилегий пр едоставляют рассмотренные нами выше SQL-DMO. Некоторые вопросы использования MS SQL Server в Internet/intranet-приложениях Как мы уже отмечали , SQL-DMO являются одним из наиболее мощных инструментов до ступа к информации , хранящейся на MS SQL Server, и ре шения административных задач из клиентских пр и ложений . Традиционные вопросы клиентского доступа к MS SQL Server достаточно подробно освещались в литературе как по отношению к средст вам разработки Microsoft Visual Tools (по крайней мере применит ельно к Visual C++, Visual Basic, Visual FoxPro), так и к програм мным продуктам фирм Borland, Powersoft и т . д . Программны е модели , основанные на Microsoft Jet Database Engine (Data Access Objects), Remote Data Objects, DB-Library, ODBC API х орошо известны и широко используются . Поэтому мы акцентируем наше внима н ие на способах работы c MS SQL Server 6.5 через Internet. Времена статических страниц объявлений и рекламы миновали - бурное развитие бизнеса в Internet предполагает непосредственное участие клие нта в совершении сделок . Говоря об использ овании MS SQL Serve r при построении активных Internet/intranet-пр иложений , мы снова должны обратиться к пре имуществам его тесной интеграции со всеми продуктами семейства Microsoft BackOffice. На этот раз речь пойдет об Internet Information Server (IIS). Помимо исполнения CGI -скриптов MS IIS предостав ляет разработчикам возможность создания с пом ощью соответствующего прикладного программного и нтерфейса (ISAPI) приложений в виде динамических би блиотек , запуск которых происходит в ответ на команду или выбор линка на Web-страниц е. В отличие от CGI, где каждый скрипт исполняется как иной , нежели Web-сервер , процес с , что быстро "съедает " ресурсы даже достат очно мощной машины при большом количестве заходов на сервер , ISAPI-приложение выполняется в адресном пространстве Web-сервера , ч т о , естественно , повышает скорость работы и существенно экономит машинные ресурсы . В зависимости от сложности сайта и приложе ний , dll могут быть предзагружены одновременно с запуском сервера , либо подгружаться /выгружат ься из памяти по мере необходимости . К наиболее известным средствам разрабо тки приложений на основе ISAPI относятся входящий в состав MS IIS Internet Database Connector (IDC), а также свободно рас пространяемый dbWeb. Microsoft dbWeb представляет собой шлюз между 32-битн ыми ODBC-ресурсами и MS I IS. dbWeb предусматривает созд авание схемы , содержащей описание данных и связанных с ними Web-страниц . Он поддерживает исполнение запросов в реальном режиме вр емени на основе "pull"-модели публикации , позволяя тем самым создавать активные Web-страницы . Mi c rosoft dbWeb структурно состоит из двух основных компонентов : dbWeb Service и dbWeb Administrator. dbWeb Service является типи чным ISAPI-приложением , которое обрабатывает пользоват ельские запросы , направляемые посетителем страниц ы через броузер , и управля е т с оединениями между броузером , ODBC-ресурсом и IIS. К функциям dbWeb Administrator относится создание HTML-страниц , сод ержащих результаты выполнения запросов на осн ове уже упоминавшихся схем , с помощью кото рых осуществляется управление публикуемыми данны м и . Схемы определяют сам запрос и структуру страниц . При этом не требуе тся знания HTML или ISAPI, так как в состав dbWeb Administrator входит интерактивный мастер-построитель схем (Schema Wizard), который в традиционной для любой прогр аммы-мастера манере п о зволяет задать поля поиска по методу Query-by-Example (QBE), выбрать поля для отображения в таблице страницы резул ьтатов и определить переходы из списка за писей в отдельные страницы , содержащие развер нутую информацию по текущей записи . Настройко й соответс т вующих свойств можно р азрешать или запрещать операции вставки , удал ения и редактирования . Для проверки прав п ользователя используется система безопасности то й СУБД , к которой происходит доступ. IDC входит в состав MS IIS. С помощью вызово в функций ODBC API он обеспечивает прямую связ ь между полями HTML-формы и соответствующим ODBC-достижимым источником данных . Для доступа к данным и публикации на Web IDC использует файл ы двух типов - .idc и .htx. Файл с расширением idc (см . пример ) содержит всю не о бходи мую информацию о соединении с источником данных , текст запроса , а также ссылку на соответствующий htx-файл . Файл с расширением htx ( см . пример ) служит шаблоном страницы , на ко торой будут опубликованы данные из базы , а также элементы оформления в виде статического текста , графики , видео и т . п . MS IIS распознает расширение .idc как вызов httpodbc.dll, которая считывает http-заголовки из управляющего блока ISAPI для определения параметров запроса . Httpodbc.dll читает и разбирает idc-файл , указанный в UR L . Имя источника , имя пользователя , пароль и пр . используются для подключения к соответствующему ресурсу ODBC, после чего httpodbc передает на выполнение SQL-запрос и получает результаты . Результаты используются для напо лнения заготовки в виде htx-файла , з а тем полученный HTML-документ MS IIS передает броуз еру. SQL Web Assistant, входящий в состав MS SQL Server 6.5, в отличие от двух только что рассмотренных инструмен тов , не является ISAPI-приложением и работает только с MS SQL Server. Web Assistant имеет инт ерфейс мастера (wizard), т . е . состоит из ряда последовательных форм с вопросами , отвечая на которые , администратор может сэкономить время по выпол нению рутинного HTML-кодирования и получить гото вую (в HTML-кодах ) страницу , содержащую результаты опубликов а ния произвольного запроса к базе . Полученная страница не является активной в строгом смысле этого слова , так как публикуется при помощи push-метода , т . е . обновление происходит по инициативе сервера и не допускает обновления со с тороны клиента . Однако сер в ер може т производить обновление (перегенерацию ) страницы на триггерной основе или на основе р асписаний задач под управлением SQL Executive. Мастер ра ботает только с базами данных MS SQL Server и испол ьзует три хранимые процедуры sp_makewebtask, sp_runwebt a sk и sp_dropwebtask. При необходимости они могут использоваться самостоятельно в кодах Transact-SQL. Предпол ожим , мы имеем каталог товаров или справоч ник курсов валют и хотим , чтобы все из менения в нем автоматически отражались на Web. Для этого мы определ я ем задач у публикации : sp_makewebtask @outputfile = 'c:\ rates.htm', @query = 'select kod, kurs from rates', @procname=web_rates, @resultstitle = 'Ку рсы валют ', @URL = "http://www.microsoft.com", @reftext = 'Microsoft Home Page', @whentype=9, а на соотве тствующую таблицу "веша ем " триггер if exists (select * from sysobjects where id = object_id('dbo.tr') and sysstat & 0xf = 8) drop trigger dbo.tr go create trigger tr on dbo.rates for insert,update,delete as exec sp_runwebtask @procname=web_rates go, который будет вызывать перегенерацию стра ницы всякий раз , как только в таблицу будут вноситься какие-либо изменения. Active Data Objects (ADO) в достаточно грубом приближении служат VB-интерфейсом к OLE DB. Их роль видится о собенно важной в развитии к омпонентного подхода и технологий универсального доступа к данным . В данном случае мы рассмотр им их использование в Microsoft Active Server Pages (ASP). Активные серв ерные страницы представляют собой инструмент для эффективной разработки серверных Web-при л ожений , интегрирующих в своем составе HTML-код , VBScript и компоненты ActiveX. С их помощью в уже существующие наработки легко могут б ыть встроены фрагменты кода на VBScript или JavaScript, а также вызовы соответствующих объектов ActiveX. Пом имо базовых о б ъектов (Application, Request, Response, Server, Session) ASP по ддерживают многочисленные компоненты ActiveX, которые у прощают создание и значительно повышают функц иональность активных Web-страниц . Среди них нас в первую очередь будут интересовать комп онен т ы , позволяющие организовать дост уп к базам данных , т . е . ADO. Например , публ икация результата запроса может быть выполнен а , как : <% set c=Server.CreateObject ("ADODB.Connection") c.Open "rates","sa","" set RS=c.Execute("select * from rates ")%> Курсы валют

Курсы валют

<% do while not RS.EOF %> <% RS.MoveNext loop %>
Код Курс
<%=RS("kod")%> <%=RS("kurs")%>
Интерфейс ADO из данного примера пр а ктически без изменений может быть использован при работе с MS SQL Server из VB, Visual FoxPro и т . д . Та ким образом , с помощью ADO могут быть построе ны пользовательские компоненты для обращения к серверу баз данных как со стороны "т олстого " (Win32), так и со стороны тонког о (броузер ) клиента. Заключение MS SQL Server 6.5 представляет собой мощный по лнофункциональный сервер баз данных , отличающийся высокой производительностью , бы стротой о своения и удобным интерфейсом администрирования . Под его управлением могут работать базы данных в широком диапазоне от уровня среднего звена предприятия до распределенных баз масштаба корпорации . Доступ к MS SQL Server возмо жен из большого числа с редств р азработки клиентских front-end, настольных баз данных и офисных продуктов . MS SQL Server изначально ориентирова н на интеграцию с другими серверами MS BackOffice, ч то позволяет непосредственно охватить решение комплексных задач автоматизации хранен и я и обработки информации , электронной почты и документооборота , построения Internet/intranet приложен ий и т . д . MS SQL Server работает в как в тра диционных клиент-серверных платформах , так и в многоуровневых средах . Одним из основных инструментов при созд а нии распределен ных многокомпонентных приложений является Microsoft Transaction Server. Список литературы : 1. Системы Управ ления Базами Данных #1/97 стр . 30-50. А.В . Шуленин. 2. Microsoft SQL Server 6.5. Комплект документации. 3. MS SQL Server 6.5 Unleashed, by David Solomon, Ray Rankins, et al, ISBN 0-672-30956-4. 4. Microsoft SQL Server 6.5 DBA Survival Guide, by Mark Spenik & Orryn Sledge, ISBN 0-672-30797-9. 5. Hitchhiker's Guide to Visual Basic & SQL Server, by William.R.Vaughn, ISBN 1-55615-906-4. 6. Clustering Support for Microsoft SQL Server. White Paper. 7. Кастер Х . "Основы Windows NT и NTFS", Microsoft Press. "Русская Редакция ", 1996. 8. Transaction Processing,by Jim Gray & Andreas Reuter,ISBN 1-55860-190-2 9. Круглински Д . "Основы Visual C++", части IV-V, Microsoft Press. "Ру сская Редакция ", 1997. 10. Inside COM, by Dale Rogerson, Microsoft Press, ISBN 1-57231-349-8. 11. Шуленин А . "Microsoft SQL Server и активный Int ernet". Материалы Форума "И нформационные Технологии '97". ПРИЛОЖЕНИЕ 1 MicroSOFT ВЫПУСКАЕТ SQL SERVER 6.5 Рекордные пока затели по соотношению "цена— производительность " н а платформе Windows NT Server; новые возможности по поддерж ке Internet и интрасетей (intranet) В апреле на выставке DB Expo в Сан-Франциско компания Microsoft Corp. объявила о выходе Microsoft SQL Server 6.5. Эта СУБД , ориентированная на платформу Windows NT Server, предста вляет собой значительный шаг вперед по ср авнению с Microsoft SQL Server 6.0. Microsoft SQL Server 6.5, клиент-серверная система управления базами данных , предоставляет богатый спектр н овых возможностей , которые облегчают процесс создания , внедрения и управления распределенными клиент-серверными прикладными программами . Основные новые возможности : встроенная поддержка приложений Internet, усовершенствованные механизмы расп ределенных транзакций , тиражирование в разнородны х средах , расширенные распределенные средства управления и новая архитектура динамической блокировки (Dynamic Locking). "Microsoft SQL Server 6.5 представляет собой значительный прор ыв в области клиент-серверных баз данных ", - сказал Джим Оллчин (Jim Allchin), вице-президент Microsoft по настольн ым системам и системам для бизнеса . "Начин ая с версии 6.0, а теперь и в виде версии 6.5, система Microsoft SQL Server всегда являлась одним из базовых компонентов семейства серверных прикладных программ Microsoft BackOffice. Microsoft SQL Server обеспечивает прои зводительность , безопасность и взаимодействие с дру г ими системами , которые так необходимы для организации работы предприятия . В то же время эта система весьма э кономична и проста в управлении , что делае т ее идеальным решением для компаний любо го размера ". Microsoft SQL Server 6.5 является лучшей СУБД для Wi ndows NT Server и тесно интегрируется с Microsoft BackOffice. В Microsoft SQL Server 6.5 п олностью используются такие возможности Windows NT, как механизмы обеспечения защиты , регистрация событ ий , контроль за производительностью , использование потоков и а с инхронный ввод-вывод . Система Microsoft SQL Server 6.5 продемонстрировала беспрецедентную производительность на платформе Windows NT Server. По резу льтатам стандартного тестирования TPC-С Benchmark, которые были объявлены в начале апреля , Microsoft SQL Se rver 6.5 обошел Oracle 7 и Sybase System 11 по пропускной способн ости , продемонстрировав скорость 3,641 транзакций в минуту (tpmC). Таким образом , система заняла перв ое место среди всех баз данных , при ра боте на основе Windows NT Server и на аналогичной а п паратной платформе . СУБД Microsoft SQL Server 6.5 также установила рекорд по показателю "цена - пр оизводительность ", который достиг $147.62 за транзакцию . Таким образом , впервые база данных преод олела барьер в $150 за транзакцию . ПОВЫШЕННАЯ ПРОИ ЗВОДИТЕЛЬН ОСТЬ БЛАГОДАРЯ ДИНАМИЧЕСКОЙ БЛОКИР ОВКЕ Высокую скорос ть работы Microsoft SQL Server 6.5 обеспечивают : усовершенствованный процессор баз данных , расширенные возможности параллельной работы на основе потоков Windows NT, а также новая возможность динамическо й блокировки (Dynamic Locking). Dynamic Locking - это новая технология Microsoft, благодаря которой Microsoft SQL Server может выбирать наиболе е оптимальный уровень блокировки на уровне строки , таблицы или базы данных , что поз воляет максимизировать скорос т ь работ ы . Только Microsoft SQL Server обладает возможностью динамическог о выбора того варианта блокировки , который больше всего подходит для каждого конкретн ого случая . ПРИКЛАДНЫЕ ПРОГ РАММЫ ДЛЯ INTERNET НА ОСНОВЕ БАЗ ДАННЫХ Microsoft SQL Server 6.5 обле гчает создание и управление прикладными программами для внутренних корпоративных сет ей (так называемые "интрасети ") и Internet. Новая у тилита Microsoft SQL Server Web Assistant использует интерфейс , типичный дл я программ-мастеров , и шаг за шагом помога ет а дминистратору базы данных или Web-мастеру помещать данные из Microsoft SQL Server в сети World Wide Web. Таким образом можно легко создавать ин терактивные Web-узлы , основу которых составляют базы данных . При помощи утилиты Web Assistant, Microsoft SQL Ser v er автоматически создает страницы на осно ве гипертекстового языка описания документов (HTML) или заполняет HTML- шаблоны данными из Microsoft SQL Server, при чем это может осуществляться либо каждый раз при изменении данных , либо в установле нные моменты вр е мени . В сочетании Microsoft SQL Server 6.5 и Microsoft Internet Information Server позволяют п ри помощи программ просмотра Web, включая Microsoft Internet Explorer и Netscape Navigator, создавать запросы по данным , хр анящимся на сервере Microsoft SQL Serv er. Используя встро енные возможности ODBC, Microsoft SQL Server и Microsoft Internet Information Server обеспечивают безупречную работу интерактивных Web-узлов , основа нных на базах данных . Кроме того , новые возможности тиражирования данных типа "image" ил и "text" позволяют использовать Microsoft SQL Server в к ачестве мощной платформы для управления инфор мационным наполнением Web-узлов. УПРОЩЕНИЕ РАБОТ Ы С РАСПРЕДЕЛЕННЫМИ ПРИЛОЖЕНИЯМИ БЛАГОДАРЯ УТ ИЛИТЕ DTC Microsoft SQL Server 6.5 включает утилиту Distribut ed Transaction Coordinator (DTC), которая позволяет бол ее легко создавать на нескольких системах Microsoft SQL Server распределенные приложения и обеспечивает их автоматическое обновление . Таким образом г арантируется согласованность и целостность прогр амм, распределенных между несколькими сервер ами . DTC также поддерживает XA- совместимые мониторы обработки транзакций , такие как Encina компании Transarc, Top End компании NCR и TUXEDO компании Novell, что делает возм ожным включение Microsoft SQL Server 6.5 в распределенные , разнородные транзакции . ТИРАЖИРОВАНИЕ В РАЗНОРОДНЫХ СРЕДАХ В Microsoft SQL Server 6.5 за основу взяты возможности тиражирования , предста вленные в версии 6.0. Информацию из Microsoft SQL Server можно теперь тиражировать в базы данных Orac le, IBM DB2, Sybase и Microsoft Access, а также в другие ODBC-совместимые базы данных . Таким образом , Microsoft SQL Server может ле гко функционировать в смешанных средах . ДРУГИЕ НОВЫЕ ВОЗМОЖНОСТИ Дополнительные новые возможности включают усовершенствова нные средства администрирования , повышенную надеж ность и механизмы восстановления , а также расширенную поддержку хранилищ данных. Microsoft SQL Server 6.5 включает усовершенствованный интерфейс администратора SQL Enterprise Manager, который используется дл я управления распределенными системами Microsoft SQL Server. Новая возможность DBA Assistant автоматизирует рутинные задачи по обслуживанию системы , расширенная панель задач и меню позволяют легко ин тегрировать средства управления других компаний , а интег р ированные механизмы пере дачи данных упрощают перемещение информации. Новые возможности по обеспечению помехоус тойчивости и восстановления включают резервное копирование и восстановление отдельных таблиц , а также восстановление БД после сбоя с указанием мом ента времени , по кот орое выполняется восстановление . Помимо этого , Microsoft SQL Server 6.5 является первой базой данных , в которой реализована поддержка системы Compaq Online Recovery Server, которая обеспечивает автоматическое переключение на ре зервный к омпьютер в случае сбоя. К новым возможностям организации хранилищ данных относятся операторы запросов OLAP, утилит ы CUBE и ROLLUP, которые облегчают поиск и выборку многомерных показателей . Новая функциональность под названием "канал данных " ("data pipe") позволя ет Microsoft SQL Server 6.5 программно собирать данные из разно родных источников , включая Microsoft SQL Server и другие базы данных , и объединять их в единое хран илище на основе Microsoft SQL Server. Microsoft SQL Server 6.5 можно бесплатно загрузит ь с FTP- узла Microsoft в России . После загрузки програм му можно будет использовать в течение 120 дн ей . Необходимо набрать http://www.microsoft.com/backoffice/sql/sqlinfo1.htm или http://microsoft.com, а затем выбрать соответствующий продукт - SQL. После ч его пользователя попросят зарегис трироваться и выбрать ближайший сервер в Восточной Европе для загрузки программы . (В России это сервер по адресу ftp://ftp.quarta.msk.ru. Он о бслуживается фирмой Quarta, которая имеет статус Microsoft Solution Provider). И сточ ник : пресс-релиз компании Microsoft ПРИЛОЖЕНИЕ 2 ТЕХНОЛОГИЯ ХРАНЕ НИЯ ДОКУМЕНТОВ В MS SQL SERVER SQL Server позволяет решить большинство проблем при создании распределенных систем обработки документов в архитектуре клиент / сервер . Однако реализуемые с труктуры баз данных несколько отличаются от классических . КОНЦЕПЦИЯ ДОКУМЕ НТА В РЕЛЯЦИОННЫХ БД Любой документ в системе представляет из себя набор записей в одной или нескольких таблицах . Документы не пересекаются и однозначно иде нтифицируются по коду ( номеру ) документа . Это означает , что во всех таблицах БД одним из полей первичного ключа является код документа . Служебная информация о документе хранится в специальной таблице , включающей в себя такие поля как название , дата заведения и последней модифик ации документа и др . Вся прочая информация , составляющая докум ент , хранится в других таблицах . Набор эти х таблиц определяется для каждого из типо в документов на стадии проектирования системы . Документ отличается от простого набора записей в таблицах тем, что может быть обновлен только в ходе одной протяже нной транзакции . Это объясняется тем , что документ имеет свои собственные правила целос тности . Например важна не только корректность ссылок таблиц "Покупатели ", "Заказ " и "Специ фикация заказа ", но и то , ч тобы количество товаров в спецификации заказа б ыло именно то , которое было указано покупа телем . Поддержание целостности документа позволяет произвести денормализацию структуры БД с целью повышения ее производительности . КЛАССИФИКАЦИЯ И АТРИБУТИКА ДОКУМЕ НТОВ Документы разд еляются на типы . Тип определяет , в каких таблицах хранится тело документа . Набор тип ов определяется на стадии проектирования БД . Для того , чтобы не требовалось перепро граммирование при добавлении к документам доп олнительных атрибутов ( полей ), применяется сл едующий механизм . Документы делятся на классы (иерархическое деление ). Для каждого из кл ассов задается набор дополнительных атрибутов , хранящихся в специальной таблице . Как показывает практика , наиболее эффекти вный способ поиска в бо льших массивах информации , структура которой известна польз ователю - способ поиска с уточнением критериев , т.е . поиск по иерархическому справочнику . Для этого применяется механизм , подобный механизму фолдеров (папок ) в файловой сис теме . Для расширения воз можностей системы папок разрешено использование в ней ссыл ок на документы (шорткатов , ярлыков , линков ) ПРИЛОЖЕНИЕ 3 СОПРОВОЖДЕНИЕ , ОПТИМИЗАЦИЯ И НАСТРОЙК А MicroSOFT SQL SERVER На основе этой информации вы сможете сами справляться с большинством задач и решать большинство возможных проблем . 1. Заранее планируйте инсталляцию SQL Server; 2. Уделяйте б ольшое внимание проектированию баз данных , за просов и индексов ; 3. Старайтесь получить как можно больше информации о загрузке ресурсов сервера ; 4. Планир уй те и автоматизируйте регламентные работы ; 5. Управляйте р иском - готовьтесь к возможным сбойным ситуаци ям. ИНСТАЛЛЯЦИЯ MicroSOFT SQL SERVER Инсталляция Microsoft SQL Server в общем случае очень проста . Но к ней надо подойти ответственно , так как во время инсталляции устанавливаются нескол ько параметров , изменить которые в дальнейшем , при уже работающем сервере и внесенной в базы данных информации , бывает непросто . Так что если вы хотите выполнить инс талляцию только один раз , не спешите. SQL Server ин сталлируется при помощи програ ммы setup, которая также используется для замены предыдущей версии SQL Server (например , 4.21) на новую , а также для последующей до-установки некоторых компонент сервера и изменения некоторых параметров . Требования к аппарат уре Вам необходим для работы с Microsoft SQL Server компьютер архитектуры Intel с процессором 486 или Pentium (SQL Server также поставляется в версиях для RISC-процессоров Alpha и MIPS). Минимально необходимый объе м памяти - 16 Мб , рекомендуется начинать с 32 Мб . Если вы соберетесь использовать ваш SQL Server в качестве сервера-распространителя при ти ражировании данных , вам понадобится минимум 16 М б для собственно SQL Server, а ведь еще нужна память собственно для Windows NT Server. Также , естественно , не обходим жесткий диск с 75 Мб свободного места . Это в случае , если вы установите электронную доку ментацию по SQL Server на жесткий диск . Вы можете не устанавливать ее на жесткий диск и читать ее с CD-ROM, что сэкономит вам 15 Мб дисковой памяти . Я рекоменд у ю использовать электронную документацию , т.к . очен ь удобно осуществлять в ней быстрый поиск интересующей вас информации . Ну и , конечно , необходима операционная система Windows NT Server версии 3.5 или выше (рекомендуется 3.51). Перечисленные требования я вляются мин имальными . О том , какая аппаратура нужна , ч тобы добиться оптимальной производительности , мы поговорим в части , посвященной оптимизации и настройке SQL Server. Кодовая страница Выбранная кодовая страница оп ределяет , какие символы будут рассмат рива ться сервером как пригодные для печати и наименования , например , дней недели и мес яцев . Также кодовая страница , совместно с выбранным порядком сортировки , определяет , как будут сортироваться и сравниваться между с обой символьные строки . Очень рекоменд у ется устанавливать на всех клиентах и сервере одну и ту же кодовую страниц у . SQL Server 6.0 позволяет установить страницу № 1251, испол ьзуемую для работы с русским языком в Windows, так что тут никаких проблем нет . Если вы не предполагаете работать с русс к им языком , то можно установить страницу № 850 (многоязычная ) или № 437 (U.S. English). Порядок сортировки Порядок сортировки определяет : 1. Как будут сортироваться записи при использовании в запросе ORDER BY 2. Как будут сравниваться между собой с имвольные строки 3.Скорость выполнения операций сортировки . Существует два основных типа порядков сортировки : двоичный и по словарю. При двоичном символы сравниваются и с ортируются в соответствии с их двоичными кодами . Это самый быстрый порядок сортировки , но он имеет один недостаток . Большие буквы будут в отсортированном порядке идти раньше маленьких , то есть большая буква "Я " - раньше маленькой "а ". Это может породить некоторые проблемы в ваше м конкретном приложении , хотя в некоторых случаях двоичный по рядок оказывается впол не приемлемым . Но если вы хотите , чтобы символы сортировались в более удобном для вас порядке , вам надо использовать один из порядков сортировки по словарю . Их существует несколько , имеет смысл р ассмотреть т.н . регистро-независимый п орядок (Case-Insesitivity), при котором буквы сортируются независимо от того , большие они или маленькие . Им енно он предлагается при инсталляции по у молчанию . При использовании этого порядка опе рации сортировки работают примерно на 20% медлен нее , чем при д в оичном . Сетевые установки Microsoft SQL Server 6.0 может взаимодействовать с клиентами по многим протоколам сеансового уровня . Это : • Named Pipes • NWLink IPX/SPX • TCP/IP Sockets • Banyan VINES • AppleTalk ADSP • DECnet Надо отметить , что работа по о дному протоколу не исключает работы по др угому и сервер может взаимодействовать с клиентами по нескольким протоколам одновременно . Для этого загружаются одна или несколько сетевых библиотек (Net-Libraries). Кроме того , протокол Named Pipes работает над т р емя протоколами транспортного уровня - NetBEUI, IPX/SPX и TCP/IP. Так что он устраивал в большинст ве случаев использования SQL Server 4.2 и устанавливается по умолчанию именно он . Выбор сетевой поддержки при инсталляции не является критическим , т.к . всегд а вы можете добавить или снять какую-нибудь сетевую библиотеку . Выбор сетевой поддержки влияет на выбор режима секретности , о ч ем речь пойдет чуть позже . В версии SQL Server 6.0 появилась новая сетевая библиотека "Multi-Protocol", работающая сразу с тремя протоколами сеансового уровня - Named Pipes, NWLink IPX/SPX, TCP/IP Sockets. Эта сетевая библиотека позволяет кодировать информацию , передаваемую между клиен том и сервером . Режим секретности Существует три режима секретн ости SQL Server: 1. Интегри р ованный с Windows NT; 2. Стандартный ; 3. Смешанный. Интегрированный режим позволяет пользователю , зарегестрировавшемус я в домене Windows NT, подключаться к серверу , не указывая имени и пароля - для определения его прав на SQL Server будет использовано е го регистрационное имя в Windows NT. То есть сущес твует единая регистрация - в домен и на SQL Server. Этот режим возможен при подсоединении п ользователя по т.н . "доверительным соединениям ", которые осуществляются при использовании сетевых библиотек "Name d Pipes" и "Multi-Protocol". По другим соединениям клиенты работать в этом режиме не могут . Стандартный режим требует от пользователя указывать имя и пароль при подключении к SQL Server, независимо от того , под каким имен ем он зарегистрировался в Windows N T. Основное преимущество интегрированного режим а состоит в следующем . Секретность Windows NT имеет такие мощные средства , как устаревание паро ля и ограничение на минимальную длину пар оля . Этих средств нет в SQL Server, но они могу т быть использованы для к онтроля дост упа к SQL Server при использовании интегрированного р ежима секретности . Смешанный режим допускает к SQL Server пользовате лей , подсоединяющихся по доверительным соединения м и не указавших имени и пароля . Если пользователь указал имя , отличное о т своего имени в Windows NT, то он должен указа ть соответствующий этому имени пароль . То же относится к клиентам , подсоединяющимся по обычным , не доверительным соединениям . Имена пользователя для SQLExecutive и SQL Server Сервис , называемый SQLExecutive , вып олняет очень большую работу , связанную с в ыполнением плановых заданий , реакцией на прои сходящие события и тиражированием данных . Каж дый сервис в Windows NT функционирует в т.н . контек сте секретности , определяемом именем , под кото рым он регистрируется в Windows NT. По умол чанию SQLExecutive регистрируется под именем LocalSystem, т.е . как локальный системный сервис . Но для ряда процессов , связанных с соединением вашего SQL Server с другими серверами , в первую очередь для тиражирования , необходимо регист р ировать SQLExecutive под именем , обеспечивающим ему доступ к другим серверам . Это имя дол жно : • относиться к группе администраторов ; • иметь не устаревающий пароль ; • иметь право регистрироваться как сер вис. Вполне возможно (и даже более удобно ) присвоени е сервису SQLExecutive одного и того же имени на разных серверах . Хотя и программа setup и не требует задания имени , под которым буде регистрироваться са м SQL Server, лучше после установки сменить это им я с LocalSystem на "нормальное " имя . Это пригодится при создании резервных копий на же стких дисках других компьютеров , а также п ри работе с Microsoft Exchange. Удаленная и автоматическая инс талляция Есть два способа облегчить себе работу по установке SQL Server. Первый — э то удаленная инсталляция , исполь зуя котор ую вы можете не переходить от компьютера к компьютеру , и при этом установить SQL Server на несколько серверов . Второй способ — автоматическая инсталляция , при кото рой вы заранее создаете текстовый файл , со держащий параметры инсталляции и освобожд ающий вас от необходимости отвечать на во просы программы setup. ПРОБЛЕМЫ ПРИ УСТАНОВКЕ ? Если вы пр оверили соответствие вашего компьютера требовани ям , о которых мы говорили выше , то проб лем , скорее всего , не будет . Но лучше б ыть готовыми ко всему и знать , что делать , если они появятся . Где можно найти информацию о том , что случилось во время инсталляции : 1. Журнал регистрации событий Windows NT. 2. Журнал ошибо к SQL Server (находится в каталоге '\SQL60\LOG\'). 3.Выходные фа йлы инсталляционных скриптов . В директории '\SQL60\INSTALL\ ' вы найдете около 20 файлов с расширен ием '.SQL' (скрипты ) и соответствующих им файлов с теми же именами и расширением '.OUT' (выхо дные файлы ). В процессе инсталляции SQL Server выполня ет скрипты (они же сценарии ) и результ а ты выполнения записываются в вых одные файлы . Просматривая выходные файлы , вы можете обнаружить сообщения об ошибках . ОПТИМИЗАЦИЯ И НАСТРОЙКА MICROSOFT SQL SERVER Применительно к современным системам обработки данных в архитектуре клиент-сервер , вопрос о качест ве той или иной СУБД так или иначе сводится к вопросу о ее производительности . Ибо средства разработки как серверной , т ак и клиентской части позволяют сегодня в ложить в систему практически любую функционал ьность и создать самый удобный пользователь с кий интерфейс , хранить данные люб ых мыслимых объемов . И только одного нельз я гарантировать - приемлемой скорости выполнения запросов . И большая часть усилий разработчи ков сводится к тому , чтобы обеспечить эту самую приемлемую скорость . Поэтому большую час т ь нашего семинара мы посвя тим тому , как спроектировать оптимальное прил ожение и затем настроить SQL Server так , чтобы при ложение работало с достойной вашей фирмы производительностью . Ключи к производительности • Структура базы данных ; • Пути доступа к д анным ; • Аппаратура ; • Физическое распределение данных ; • Настройка параметров среды и SQL Server Проектирование базы данных - фу ндамент производительности Грамотное проектирование баз данных , по мнению многих специалистов и мо ему собственному , является наиболее критичес ким моментом в оптимизации производительности системы , построенной на SQL Server. Если система мед ленно работает - скорее всего , дело в плохо м проектировании структуры таблиц , запросов и индексов . И именно этому следует уделять главное в н имание . Следует принима ть проектные решения , постоянно задаваясь воп росом - как это решение скажется на произв одительности ? И в первую очередь , здесь ва жно оптимальное логическое проектирование баз данных . Логическое проектирование базы данных Оптимальн ое логическое пр оектирование баз данных базируется на примене нии трех основных методологий : 1. Моделирование данных ; 2. Нормализация ; 3. Разумная де нормализация Моделирование данных Для моделирования данных трад иционно применяется методология диаг рамм "Сущность-Связь ", которая позволяет построить закон ченную логическую модель данных , то есть п редставление в виде связанных таблиц . Существ уют различные модификации этой методологии , к ак правило реализуемые фирмами-производителями CASE-и нструментов в с воих продуктах . Базов ая методология построения диаграмм "Сущность-Связь " зафиксирована в стандарте IDEF1X. Некоторые CASE-инст рументы основаны на методологиях , расширяющих возможности этого стандарта . К таким инструме нтам относится , в частности , S-Designo r фир мы Powersoft. Есть и другие методологии , в частности Объектно-Ролевое моделирование , которое позволяет описывать предметную область на более аб страктном уровне , чем моделирование "Сущность-Связь ", по крайней мере базовый вариант последн ей . Объектно-Рол евое моделирование реализовано в CASE-инструменте InfoModeler фирмы Asymetrix. Применение S-Designor и InfoModeler рассмотрено в докладе "Проектирования структ ур баз данных с использованием CASE-инструментов S-Designor и InfoModeler". Нормализация В про цессе построения логической модели осуществляется также нормали зация , т.е . построенная модель удовлетворяет тр ебованиям трех уровней нормализации : 1. Первая нормальная форма - отсутствие мн огозначных полей. 2. Вторая норма льная форма - каждое неключево е поле в таблице должно зависеть от всего первичн ого ключа , а не от какой-либо его части . 3. Третья нор мальная форма - неключевое поле не должно зависеть от другого неключевого поля . В сущности , нормализация приводит к большему количеству более узких табл иц в логической модел и . Соблюдение правил нормализации снижает изб ыточность данных и , соответственно , сложность их обновления и занимаемый ими объем на носителе . Связи между полученными таблицами разрешаются через построение сложных соединяющ их запросов . О птимизатор запросов SQL Server умеет строить эффективные планы выполнения запросов , связывающих высоко нормализованные та блицы . Этому способствует также построение ин дексов , основанное на связи первичных и вн ешних ключей таблиц. CASE-инструменты , как прави ло , строят логическую модель в третьей нормальной фор ме . Денормализация Однако зачастую , разумная , име нно разумная , сознательная денормализация логичес кой структуры может повысить скорость выполне ния определенных запросов . Если проектирование нормализов анной структуры идет , так ска зать , "от данных ", то денормализация идет "от процессов ". То есть , денормализация должна быть основана на знании того , какие дей ствия будут осуществляться с данными при работе с ними клиентских приложений . Вот н есколько практи ч еских советов по денормализации : • Если спроектированная база данных тр ебует связывания в одном запросе 4-х и более таблиц , стоит ввести избыточность , добав ляя поля в таблицы или целые таблицы. • Замените длинные ключи на искусствен но введенные короткие к лючи и текстов ые поля на символьные строки ограниченной длины. • Если определенная группа запросов за трагивает только часть полей широкой таблицы , ее можно разбить на несколько более узких таблиц , продублировав в них первичный ключ исходной таблицы . Это мо жет ум еньшить количество операций ввода-вывода и об легчить одновременную работу разных пользователе й. • Если определенная группа запросов за трагивает только часть строк таблицы большого объема , ее можно разбить по горизонтали на несколько таблиц , особенно если определенные группы пользователей обращаются к разным горизонтальным подмножествам таблицы . Противоречия логического проектир ования Нормализация и денормализация - две диалектически противоречивые стратегии , ко торые необходимо применять при проекти ров ании логической структуры . И это не единст венное противоречие в этом процессе . Например - использование типов данных с переменной длиной приводит , с одной стороны , к сокращ ению занимаемого дискового пространства , к ме ньшему количеству операций чтения и, так им образом , к сокращению времени на чтение таблицы . С другой стороны , обновление так их строк происходит путем удаления старой и вставки новой , в то время , как стр оки с полями фиксированной длины могут об новляться "на месте ", что значительно быстрее . Е щ е один пример - использование большого числа индексов сокращает время выпол нения запросов , соединяющих несколько таблиц и сортирующих полученные строки . Но в то же время , индексы замедляют операцию вста вки новых записей . Приложения по обработке данных мож но условно разделить на два класса : • Системы оперативной обработки транзакций , характеризующиеся большой интенсивностью вставк и и обновления записей. • Системы поддержки принятия решений , х арактеризующиеся сложной обработкой больших объе мов данных . Эти п риложения , как правил о , не обновляют данные , но производят разл ичные суммирования , сортировки и связывают да нные из многочисленных таблиц . Поняв , к какому классу относится ваше приложение , можно делать выбор из противо речивых альтернатив при проектировани и ло гической структуры . Правда , часто приложения д олжны сочетать качества как одной , так и другой системы , так что приходится находи ть компромиссы . В этом случае может выручи ть разделение приложения на две подсистемы , каждая из которых функционирует на св о ем SQL Server'е , и обеспечение информацио нной связи подсистем при помощи тиражирования данных . Проектирование путей доступа Когда создана структура базы данных , можно проектировать запросы , при помощи которых клиентские приложения будут ма нипулировать д анными на сервере , осуществ ляя операции выборки , вставки , изменения и удаления данных . Каждый запрос характеризуется определенным путем доступа к данным . В понятие пути доступа входит : • структура таблицы , к которой обращает ся запрос ; • поля , по которым п роисходит п оиск ; • индексы , которые можно использовать д ля ускорения поиска ; • состав полей , которые обновляются в процессе выполнения запроса. Цель проектирования оптимальных путей дос тупа - минимизация количества операций чтения / записи при выполнении кли ентских запросов . Основа для этого должна быть заложена на этапе проектирования структуры базы дан ных . Оптимизация путей доступа Главный вопрос в оптимизации путей доступа - использование индексов . Если некий запрос выбирает строки в таблице по полю "fi eld1", то при отсутствии индекса по этому полю сервер будет сканировать всю таблицу , что может быть очень "дорог о " в терминах операций чтения . Если по полю "field1" построен индекс , то количество операци й чтения может сократиться в несколько ты сяч раз . Ин д ексы существенны также при операциях соединения таблиц (JOIN) и опер ациях сортировки . Какие еще моменты необходимо учитывать при проектировании путей доступа ? Это • обращение клиента к серверу через SQL-запрос или через вызов хранимой процедуры . Второй в ариант работает немного быст рее , но необходимо учитывать один важный н юанс . План выполнения хранимой процедуры сост авляется при ее первом (после создания ) вы зове и затем хранится в кэше . Этот пла н оптимизируется для набора параметров и индексной статистик и , имевших место именно при первом вызове . При дальнейших в ызовах этот план может оказаться неоптимальны м , то есть может потребоваться перекомпиляция процедуры , например , путем вызова с опцие й "WITH RECOMPILE". • проведение операций обновления "на ме сте " ил и путем удаления с последующей вставкой - обновление "на месте " проходит г ораздо быстрее. • наличие триггеров , срабатывающих на в ставку или изменение записи , может существенн о замедлить соответствующие операции. Очевидно , что в процессе проектирования путе й доступа может возникнуть необход имость пересмотреть решения , принятые при про ектировании структуры данных. Также очевидно , что при разработке кру пных приложений бывает невозможно проанализирова ть все пути доступа . Сосредоточиться нужно на критических пут ях доступа , учитывая размер таблиц , частоту обращений к ним и требования к времени выполнения запроса Аппаратура и производительность Не случайно аппаратура стоит у нас на 3-м месте среди ключей к производительности . Этим я хотел подчеркнуть важность хо рошей структуры и путей доступа . На самом деле , конечно , аппаратура важна не меньше . Прошу простить несколько банальную аналогию , но грамотный проект б азы данных , оптимальные пути доступа и быс трый сервер так важны для производительности системы , как опыт н ые водитель и штурман и мощный автомобиль для побе ды на авторалли . Процессор Процессор , как правило , достат очно интенсивно используется SQL Server'ом . Чтобы хотя бы качественно оценить наг рузку на процессор , необходимо ответить на следующие вопросы : • Будет ли компьютер выделен для SQL Server? • Сколько клиентов будут работать с сервером ? • Каково ожидаемое число транзакций в единицу времени ? • Велика ли доля агрегативных операций ? Количественно оценить загрузку процессора можно , проводя тестовые испы тания и отслеживая параметры производительности при по мощи Windows NT Performance Monitor. Лучше , конечно , не скупиться на процес соре и ограничить свой выбор снизу хотя бы 486/50. Память Память используется SQL Server'ом оче нь интенсивно и многообразно . Память рас ходуется на кэширование данных и процедур , на поддержку подсоединений клиентов , открытых баз данных , открытых таблиц , блокировок т аблиц и т.д . Из всех этих пунктов подро бно остановиться имеет смысл на кэшировании . Все остальные расходы памяти п ри 50 одновременно работающих клиентах и достат очно большом количестве открытых объектов не превышают 3.5 Мб . Вся остальная память , дост упная SQL Server, используется под кэш . Настраиваемый параметр "procedure cache" регулирует соотношение между кэшем дан н ых и кэшем процедур . По умолчанию данные занимают 80% кэша . Приведенная ниже таблица содержит рекомендации по расп ределению памяти между SQL Server и остальной системо й на выделенном компьютере . SQL Server использует памя ть в количестве , отведенном ему на с траиваемым параметром "memory". Machine Memory, (MB) SQL Server Memory, (MB) 16 24 32 48 64 128 256 512 4 6 16 28 40 100 216 464 Не следует выделять SQL Server слишком много памяти (относительно общего объема памяти ком пьютера ), т.к . это может привест и к интенсивному вытеснению страниц оперативной памя ти на диск ("paging"), что резко понижает производ ительность. Диски Эффективность дисковой подсистемы может стать критической для производительнос ти вашей системы , особенно если речь идет об объемах данн ых , значительно превыш ающих объем памяти , отведенной под кэш . Во т какие свойства и компоненты дисковой по дсистемы помогут в повышении производительности : Быстрый интеллектуальный SCSI-2 контроллер Кэш-память на контроллере Bus Master card - процессор н а плате снижает нагрузку на CPU Поддержка асинхронного чтения и записи 32-битные EISA или MCA Аппаратная поддержка RAID Быстрые SCSI-2 диск и Кэширование с опережающим чтением Минимальный рекомендуемый вариант дисковой подсистемы - SCSI-контроллер и два SCSI-диска - один для баз данных и другой для жур нала транзакций. Абсолютно верных рекомендаций быть не может и в каждом конкретном случае нео бходимо учитывать все требования и подбирать оптимальную дисковую конфигурацию . Сеть Так же как и с дискам и , лучше иметь интеллектуальную сетевую карту , которая сэкономит процессорное время и расходы памяти . Вот некоторые рекомендации : • 32-битные EISA или MCA • Bus Master card - процессор на пла те снижает нагрузку на CPU; • Кэш-память на адаптере Физическое р аспределение д анных Распределение баз данных , журн алов транзакций , логических групп таблиц и индексов по различным физическим устройствам должно обеспечить равномерную , и значит , опт имальную загрузку устройств ввода-вывода . При планировании физического р аспреде ления данных следует учитывать следующие реко мендации : • Распределение баз данных и журналов транзакций на разные физические устройства повышает производительность. • Размещение большой таблицы и ее некластеризованного индекса на разных устройства х может повысить производительность. • Распределение большой , активно используем ой таблицы по нескольким устройствам может повысить производительность. • Использование чередования данных в в иде RAID 0 или RAID 5 повышает производительность. Даже хорошо спла нированное физическое распределение данных нуждается в последующем отслеживании реальных нагрузок на физические устройства и корректировке схемы распределен ия . Параметры среды и SQL Server Настройка параметров среды и самого SQL Server - еще один ключ к производ ительности . Однако , он действительно может пом очь лишь в том случае , если правильно подобраны ключи , описанные выше - структура баз ы данных , пути доступа , аппаратура и физич еское распределение данных . Можно ожидать , что оптимальный подбор парамет р ов ср еды и SQL Server даст прирост производительности на 5-10%. Операционная система и произво дительность Вот несколько советов по настройке Windows NT Server для повышения производительности SQL Server: • Установка режима "Foreground and Background Ap plications Equally Response" (Control Panel - System - Tasking). • Установка режима "Maximize Throughput for Network Applications" (Control Panel - Network - Server - Configure). • Размещение файла подкачки "pagefile.sys" на физ ическом диске , не занятом да нными SQL Server. Е ще лучше , если эти диски обслуживаются раз ными контроллерами. • Файловая система может быть любой (FAT или NTFS). Небольшой выгоды можно ожидать , если разместить слабо обновляемые базы данных на NTFS, а журнал транзакций - на FAT. • Жела тельно отключить все ненужны е сервисы Windows NT. Параметры инсталляции и настро йки SQL Server Из всех параметров инсталляци и SQL Server, которые трудно изменить в дальнейшем , на производительность влияет только порядок сортировки , о чем мы уже говорили при обсуждении инсталляции SQL Server. Выбор двоичного порядка сортировки может на 20-30% повысить про изводительность некоторых операций по сравнению с другими порядками , использующими словарный порядок символов . Следующие параметры SQL Server могут повы сить производительность : • 'priority boost' (может понизить скорость выполнения других процессов на сервере ). Чтобы иметь возможность задать этот параметр , следует сначала установить в 1 параметр 'show advanced option' • 'memory' - задает размер памяти , д оступно й SQL Server. Чем больше , тем лучше , но в рекоме ндованных пределах (см . выше ) • 'user connections' - следует избегать неоправданного зав ышения этого параметра , т.к . это уменьшает объем кэша . Увеличение этого параметра на 1 "стоит " примерно • 24 Кбай т памяти для к эша • 'procedure cache' - процент кэша , отведенный по хран имые процедуры . При большом числе используемы х хранимых процедур можно повысить. • 'tempdb in RAM' - может существенно ( иногда в неск олько раз ) повысить скорость выполнения выбор ок , т ребующих сортировки или группировани я строк . Кроме того , определенное влияние на пр оизводительность могут иметь сетевые установки - выбор транспортных и сеансовых протоколов . Замечено , например , что работа по Named Pipes более всего эффективна над TCP/IP. Это связано с тем , что TCP/IP более эффективно наполняет пе редаваемые по сети кадры , что снижает обще е число передаваемых кадров и , соответственно , повышает производительность . Стратегия настройки Под настройкой понимаются изм енения параметров SQL Serv er, операционной системы , аппаратуры , физического размещения данных , путе й доступа и даже логической структуры баз ы данных - то есть всех параметров системы и приложения с целью улучшения производи тельности . Настройка обычно включает в себя следующие шаги : 1. Мониторинг параметров производительности ; 2. Предположение о причине низкой производительности ; 3. Выбор параме тра для изменения ; 4. Изменение вы бранного параметра ; 5. Переход к шагу 1. Очень важно собрать максимум информации , чтобы делать о б основанные предположения о том , что я вляется узким местом в производительности сис темы . Узким местом может быть как аппаратн ый ресурс , так и структура запросов и индексов . Сделав предположение , можно вновь ве рнуться к мониторингу , чтобы собрать уточняющ ую информацию. Следует учитывать , что если SQL Server работает не на выделенной машине , то работа друг их приложений и сервисов может поглощать существенную долю ресурсов машины , отбирая их у SQL Server. В любом случае следует оценивать производительность и за грузку ресурсов всей системы . Мониторинг Собирать информацию о парамет рах , характеризующих производительность SQL Server удобнее всего с помощью Windows NT Performance Monitor, который позволяет отследить более 30 параметров работы SQL Server. Также в аж но наблюдать некоторые параметры Windows NT. Осн овными являются следующие : • Processor: %Processor Time - преобладающее значение выше 80% гово рит о том , что процессор является узким местом . Это может быть вызвано , в частно сти , неоптимальной структурой баз ы данных. • Memory: Pages/sec - должен быть не выше 5-10. Этот п араметр характеризует интенсивность вытеснения с траниц оперативной памяти на диск (paging). • SQLServer: Cache Hit Ratio - (процент нахождения требуемой стр аницы памяти в кэше , а не на диске ); должен быть не ниже 80% • SQLServer: I/O - Page Reads/sec - высокое значение этого параметр а говорит о недостаточном размере кэша. • Physical Disk: Disk Queue Length или Logical Disk: Disk Queue Length - значение выше 2 говор ит о том , что узким местом я вляетс я диск. • Собирать информацию по данным параме трам следует как в среднем за продолжител ьный период времени , так и в моменты п иковой нагрузки . Удобным может оказаться запи сь отслеживаемых параметров в журнальный файл (что позволяет сделать Performance Monitor) с послед ующим анализом в спокойной обстановке . Кроме этого , могут помочь такие предло жения языка Transact-SQL: • DBCC MEMUSAGE - информация об использовании кэша данных и процедур • SET SHOWPLAN ON - просмотр плана выполнения запроса , информаци я об использовании индексов • SET STATISTICS TIME ON - показывает , сколько времени было затрачено на выполнение каждой стадии запр оса • SET STATISTICS IO ON - показывает , сколько операций логиче ского и физического чтения было произведено над каждой таблице й при выполнении запроса . Настройка . Память Если параметр SQL Server: Cache Hit Ratio (процент попаданий в кэш ), доступный для наблюдения через Windows NT Performance Monitor, по величине меньше 80%, то увеличе ние размера кэша должно повысить производит ельность . Оценить необходимый размер кэша для процедур и данных можно , выполняя самые часто встречающиеся запросы и храним ые процедуры и анализируя содержимое кэша при помощи предложения DBCC MEMUSAGE. Следует помнить , что хранимые процедуры в SQL Server н е являются реентерабельными , т.е . если несколько клиентских процессов одновременно вызывают одну и ту же хранимую процедуру , то в кэше окажется несколько ее копий. Если же параметр Memory: Pages/sec постоянно выше 5-10, то памяти не хватает системе в целом и нужно либо остановить какие-либо приложения или сервисы , или добавить памяти в компьютер . Настройка . Запросы и индексы Предположим , у нас есть за прос , который медленно выполняется . Мы собрали информацию о нагрузке на процессор , памят ь , диски и сеть и выяснили , что у зким местом является процессор , т.к . он исп ользуется на 100% при выполнении запроса , а о стальные ресурсы явно недогружены . Можно , коне чно , заменить процессор или перейти на мно гопроцессорную платформу , но сначала мы проан ализируем пути дос т упа. Задав перед выполнением запроса опцию "SET SHOWPLAN ON", мы получим информацию об использовании индексов . В первоначальном варианте запроса индексы не используются . Построив индекс по полю , являющемуся аргументом поиска в зап росе , мы существенно сокра щаем количество операций чтения и , соответственно , время выполнения запроса . Следует учесть , что оптимизатор запросов SQL Server делает вывод об использовании того ил и иного индекса при выполнении запроса на основании статистических данных о распределе нии значений ключей индекса . Эти статист ические данные не обновляются при обновлении данных в таблице . Для обновления статисти ки можно или перестроить индекс , или испол ьзовать предложение "UPDATE STATISTICS". СОПРОВОЖДЕНИЕ MICROSOFT SQL SERVER В последнем р азделе мы рассмотрим задачи , которые приходится выполнять администратору SQL Server в проце ссе ежедневной эксплуатации сервера . Их можно разбить на две основные группы : 1) работы , которые можно и должно план ировать заранее - назовем их регламентными раб от ами 2) обработка различных сбойных ситуаций , которые планировать невозможно , но можно все-т аки быть к ним готовым . Регламентные работы (Планировщик ) В Microsoft SQL Server 6.0 есть все возможности довести выполнение регламентных работ до такой степени а втоматизации , что админи стратор может на них практически не трати ть время - все будет выполнять специальный сервис , который называется Планировщик (Scheduling Engine). Вы можете давать ему задания , которые будут выполняться по расписанию , периодически или однократно в назначенное время и о выполнении которых вы можете узнавать , просматривая историю заданий или получая от Планировщика сообщения по электронной п очте . Планировщик используется , в частности , для поддержки тиражирования данных . Он может выполнят ь несколько типов заданий , из которых нас интересуют два - выполнение послед овательности команд на языке Transact-SQL и выполнение команд операционной системы Windows NT Server. Мы рассмотр им использование планировщика на примере типи чных и наиболее часты х задач - ре зервного копирования и обновления статистики . Резервное копирование Базы данных необходимо период ически копировать - это объяснять не нужно . Копировать нужно как пользовательские базы д анных , так и системные - в SQL Server 6.0 к ним отн осятся , помимо базы "master", еще и появившиеся в SQL Server 6.0, "msdb" и , для серверов-распространителей в процессе тиражирования , - "distribution". Базу данных "master" следует копировать после таких действий , как создание новой базы данных , нового устройств а или сегмента , заведения нового пользователя . Вполне разумн о выполнять ее резервное копирование периодич ески (например , ежедневно ), также как и копи рование пользовательских баз данных или их журналов транзакций . Поэтому имеет смысл поручить это заня тие П ланировщику . Работа с Планировщиком осуществляется при помощи средства SQL Enterprise Manager. Пла нирование резервного копирования можно задать и не в обычном интерфейсе Планировщика , а в специальной форме , для этого предназн аченной . В SQL Server 4.21 тож е можно было с конфигурировать автоматическое резервное копирование , но это было единственное автоматическое действие . Обновление статистики Обновление индексной статистики , как мы уже говорили , может существенно повлиять на производительность сервера . По этому его тоже имеет смысл делать регулярно и поручить Планировщику . Что мы сейчас и сделаем . Создадим задание типа 'TSQL' (выполнение предложения языка Transact-SQL), выполняющее в базе данных 'pubs' вызов хранимой процедуры 'update_all_stats', которая о б новляет статистику по всем таблицам . Пусть статистика обновляетс я еженедельно , по воскресеньям в 3:00. Сообщения о неудачном завершении задания будут запис ываться в системный журнал , а также отправ ляться по электронной почте оператору . Предвидение сбойны х ситуац ий Сбойные ситуации всегда непри ятны , но если вы заботитесь о сохранности ваших данных и работоспособности ваших п риложений , то вы будете выходить из неприя тных положений спокойно . Заранее оцените возм ожные сбойные ситуации , ваш вероятный ущерб пр и этом и , исходя из этих оцен ок , разработайте стратегию резервирования данных и оборудования , составьте план действий п о восстановлению работоспособности системы в случае наступления сбойной ситуации . Основным критерием оценки вашей защищенности от сбоев м ожет служить время восстановления работоспособности системы после наступления сбойной ситуации . Так , например , если вы используете SQL Server в приложении , "жизненно важном " для деятельности вашей фирмы , то вам , скорее всего , нео бходимо будет делать резер вное копировани е баз данных минимум раз в день . Копир овать данные можно на стриммер или на жесткий диск . Кроме того , следует , очевидно , иметь резервный компьютер с установленным на нем SQL Server и конфигурацией баз данных , п олностью соответствующей основ н ому се рверу . Тогда в случае выхода из строя основного сервера можно будет с минимальными потерями времени перевести систему на об служивание резервным сервером . Можно делать р езервное копирование баз данных основного сер вера на жесткий диск резервного серв е ра . Для этого нужно , чтобы сервис SQL Server регистрировался в Windows NT под именем пользователя , который имеет права на запись на это т диск . Менеджер событий Еще один компонент системы управления SQL Server - менеджер событий (Alert Manager), позволяе т запланировать реакцию сервера на вс е возможные сбойные ситуации . События фиксиру ются в системном журнале , менеджер событий постоянно читает этот журнал и , при обн аружении заданного кода сообщения , выполняет запланированное администратором действие . Это д ействие оформляется в виде задан ия планировщику , аналогичного рассмотренному зада нию на обновление статистики , только выполняе тся оно не по расписанию , а "по требова нию ". Конфигурируя реакцию на события , админист ратор указывает , какое задание выполнить в с лучае наступления этого события . Например , при переполнении журнала транзакций можно вызвать задание , которое осуществит рез ервное копирование журнала и тем самым оч истит его . Событие можно настроить на конкретное сообщение об ошибке , а можно на группу ош ибок , относящихся к одному т.н . " уровню серьезности ". Реакция на событие также предусматривает уведомление указанного списка операторов сре дствами электронной почты или пэйджинговой св язи . Для того , чтобы SQL Server мог отправлять и принимать почту , работ ая с Microsoft Exchange, необход имо при конфигурировании SQL Mail указать в качеств е имени пользователя имя профиля ("profile"), а в качестве пароля - сетевой пароль владельца профиля . При этом необходимо , чтобы SQL Server регис трировался в Windows NT не п од именем "Local System", а под именем владельца вышеупомянутого п рофиля . Анализ сбойной ситуации Что делать , если сервер ил и клиентское приложение выдает сообщение об ошибке ? Прежде всего , необходимо собрать максимум точной информации - номер сообщения , поясняющий текст , какое действие произв одилось в момент , когда произошла ошибка . Просмотрите журнал ошибок SQL Server и системный журн ал Windows NT Server. Затем нужно выяснить , какой компонент вашего клиент-серверного приложения вызывает эту ошибку . Ко м поненты нужно расс мотреть следующие : • Клиентское приложение ; • Сеть ; • SQL Server Если вы выяснили , какой запрос привел к сбойной ситуации , то изолировать клиент ское приложение можно , послав этот же запр ос к SQL Server через интерактивную утилиту ISQL/W . Если ошибка повторяется , значит клиентское пр иложение ни при чем . Послав этот же за прос , но не с рабочей станции , а непоср едственно с компьютера , на котором работает SQL Server, можно выяснить , виновата ли сеть . Анализ проблем с блокировками Если вы п редполагаете , что есть проблемы с блокировками , то уд обно выяснить , так ли это , используя SQL Enterprise Manager и , конкретно , режим просмотра текущей активнос ти ("current activity"). В этом режиме наглядно представлена информация о том , какой процесс бло к ирует другие процессы и из-за блокирования каких таблиц происходит конфликт . Вы имеете возможность перестроить запросы так , чтобы они не приводили к конфликта м и , в крайнем случае , "убить " нежелательный процесс.
© Рефератбанк, 2002 - 2024