Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

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

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

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

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

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

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

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

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

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

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

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

2.9. Организация тиражирования данных

Схема издатель-подписчик

Репликация данных в SQL Server строится на достаточно простой схеме издатель-подписчик (схема приведена на рисунке 6.15). Что это значит:

  • сервер, который предоставляет свои данные для распространения, является издателем (publisher) или сервером публикаций;
  • статья (article) - минимальная единица публикации, состоит из данных, содержащихся в некоторой таблице;
  • публикация (publication) - набор из одной и более статей; наличие фазы начальной синхронизации гарантирует непротиворечивость данных, содержащихся в статьях одной публикации;
  • сервер, запрашивающий публикацию у издателя, является подписчиком (subscriber);
  • дистрибутором (distributor) называется сервер, на котором расположена служебная база репликации данных (distribution database); дистрибутор получает копию изменений данных издателя и рассылает согласно заданным правилам эти изменения подписчикам.

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

Любой SQL Server может выступать в любой из трех ролей (рисунок 16).

Гибкие условия репликации

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

  • Избирательная подписка на публикации. Сервер подписки может принимать любое подмножество публикаций, предоставляемых ему издателем;
  • Избирательная подписка на статьи. Подписчик может выбирать какие статьи из публикации он будет получать (рисунок 19);
  • Защищенные публикации. По умолчанию новая публикация доступна всем желающим на неё подписаться и имеет статус незащищенной (unrestricted), однако для публикации можно ограничить круг подписчиков, явно указав имена серверов, которым подписка разрешена. В этом случае публикация считается защищенной (restricted, рисунок 20);
  • Выборочная публикация данных. Из таблицы могут выбираться только данные из указанных столбцов и/или строк, отвечающих особому условию (рисунок 17).

Рис. 15. Схема репликации данных SQL Server

Рис. 16. Схема репликации все всем

Рис. 17. Выборочная публикация

Компоненты SQL Server, отвечающие за репликацию

Следующие компоненты SQL Server обслуживают процесс репликации:

  • log reader process - процесс, выполняющий мониторинг журнальных файлов баз данных, являющихся источниками данных, на сервере публикаций на предмет появления транзакций, маркирует их и выполняет перемещение этих транзакций в базу данных дистрибуции;
  • synchronization process - выполняет операции начальной синхронизации данных издателя и подписчика; задания начальной синхронизации помещаются в рабочий каталог на дистрибуторе; начальная синхронизация может выполняться автоматически, вручную (например, когда сервера связаны медленным каналом доступа и требуется передать большое количество данных) и не выполняться вообще, если данные уже были синхронизированы;
  • distribution database - база данных, используемая для приема, промежуточного хранения и передачи транзакций от издателя подписчикам;
  • distribution process - перемещает задания начальной синхронизации и транзакции из базы данных дистрибуции непосредственно на сервера подписки.

Все три указанных процесса являются подмножеством SQL Executive. Схема взаимодействия компонентов поясняется на рисунке 6.18.

Мгновенные снимки

Репликация на основе мгновенных снимков (snapshots) реализуется как регулярный процесс полной синхронизации без последующей досылки транзакций. Этот режим выбирается при настройке сервера подписки.

Передача данных

Реплицируемые данные могут передаваться в двух форматах:

  • формат bulk copy - родной бинарный формат SQL Server; выгрузка и загрузка данных идет быстрее; объем, занимаемый промежуточными файлами меньше;
  • формат ASCII - стандартный текстовый формат данных с разделителями, воспринимаемый любым сервером баз данных и большинством бизнес приложений; единственный формат, возможный при репликации с использованием ODBC.

Рис. 18. Компоненты процесса репликации

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

Средства администрирования

Управление всем процессом репликации выполняется из SQL Enterprise Manager.

На рисунке 19 приведен пример создания защищенной публикации, на рисунке 20 - пример избирательной подписки на публикаций.

Административная консоль имеет специальное окно, называемое Replication Topology (топология репликации), в котором графически изображается схема репликации, в которой данный сервер является издателем, со всеми подписчиками. На рисунке 21 приведен внешний вид окна топологии репликации. Добавление новых подписчиков возможно методом "перетащи и оставь".

Рис. 19. Создание защищенной публикации

Рис. 20. Избирательная подписка на публикаций

Рис. 21. Окно топологии репликации

Все операции по настройке процесса репликации могут быть выполнены как из хранимых процедур сервера, так и при помощи SQL-DMO.

2.10. Организация распределенных вычислений, MS DTC

В версию SQL Server 6.5 была впервые добавлено средство, автоматизирующее обработку распределенных транзакций в среде Windows NT и Windows95 - Microsoft Distributed Transaction Coordinator (MS DTC).

MS DTC является одним из первых примеров реализаций архитектуры Distributed Common Object Model. Он обеспечивает прикладным программам возможность использовать механизм OLE для манипуляции локальными и сетевыми объектами с автоматическим поддержанием распределенных транзакций на пространстве этих OLE объектов.

MS DTC в составе SQL Server 6.5 поддерживает подмножество OLE-DB для работы с данными, хранимыми на сервере, и управления самим SQL сервером.

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

  • Atomicity, неделимость - либо все изменяемые данные переходят в новое состояние (фиксация), либо все изменения отменяются (откат);
  • Consistency, целостность - после изменения данные остаются непротиворечивыми;
  • Isolation, изолированность - состояние незавершенной транзакции не зависит от изменений, и состояния других незавершенных транзакций;
  • Durability, долговечность - после завершения транзакции, её результаты сохраняются даже при выходе системы из строя.

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

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

Рис. 22. Схема взаимодействия в распределенной транзакции

Для выполнения согласованной фиксации или отката транзакции необходимо наличие координатора. Координатор порождает объект, представляющий распределённую транзакцию, и следит за согласованным выполнением операций ведомыми менеджерами транзакций и сохраняет статус текущей транзакции до момента её завершения.

В SQL Server распределенная транзакция может быть инициирована явно, командой BEGIN DISTRIBUTED TRANSACTION, либо неявно, в момент вызова удаленной хранимой процедуры. В процессе исполнения прикладная задача может конкретно указать имя компьютера, DTC которого будет выполнять роль координатора. Если имя координатора не задано, то берется имя из реестра локальной станции, задаваемое в процессе настройки клиентской рабочей станции. Программа настройки входит в комплект клиентской части SQL Server и регистрирует себя в контрольной панели. Если и здесь имя не задано, в роли координатора выступает DTC сервера, к которому прикладная программа обратилась. Если распределённая транзакция инициируется неявно, методом вызова удаленной хранимой процедуры, координатором всегда становится локальный DTC.

Кроме MS DTC для выполнения операций над распределенными данными может использоваться любой монитор, совместимый со стандартом TP-XA, к примеру TUXEDO, ECINA или TOPEND. Настройки SQL Server для использования с мониторами транзакций третьих фирм не входят в программу курса и далее не рассматриваются. За более подробной информацией следует обращаться к руководству по SQL Server, технической библиотеке Tech-Net и документации по конкретному XA-совместимому монитору.

Настройка серверной компоненты DTC выполняется в SQL Enterprise Manager. Администратор может установить уровень отладочных сообщений в журнале регистрации распределенных транзакций, разрешить или запретить трассировку, просмотреть историю исполнения транзакций, просмотреть список незавершенных транзакций, их текущее состояние и принять решение о принудительной фиксации или откате.

2.11. Средства интеграции с Internet, SQL Web Assistant

В состав SQL Server 6.5 входит графическая утилита, называемая SQL Web Assistant, позволяющая на основании данных сервера генерировать файлы в формате HTML 3.0, известные также как Web-страницы, которые могут быть просмотрены любым Internet-браузером. HTML-файлы могут быть переданы серверу Internet для организации доступа к ним внутри организации или для всеобщего обозрения в World Wide Web. Web Assistant использует для работы как операторы Transact-SQL, так и набор системных и расширенных хранимых процедур. Вследствие использования "родного" метода доступа данный способ генерации WWW-страниц имеет лучшие показатели быстродействия и масштабируемости, по сравнению, например, с методом, используемым в Common Gateway Interface. Однако область применения этого способа ограничена в основном неинтерактивными запросами к базе данных. Типовая схема применения Web Assistant приведена на рисунке 23.

Рис. 23. Типовая схема применения Web Assistant

Используя Web Assistant, генерацию HTML-файлов можно выполнять:

  • в заданные моменты времени, на основании задания SQL Executive;
  • по запросу прикладной программы;
  • автоматически при изменении данных в таблицах, за счет использования механизма триггеров.

Ниже перечислены типичные сферы применения Web Assistant:

  • автоматическое обновление прайс-листов при изменении цен и/или номенклатуры товаров;
  • регулярная публикация отчетов и статистики по различным областям деятельности компании;
  • публикация информации о статистике использования сервера, блокировках, транзакциях и конкретных пользователях согласно расписанию;
  • выполнение расширенной хранимой процедуры с целью перевода результатов ее исполнения в формат HTML;
  • создание страниц, содержащих таблицу ссылок на сервера Internet.

Web Assistant позволяет использовать достаточно гибкую схему подготовки задания на генерацию страниц HTML, а именно:

  • построить запрос по таблице визуально, выбрав базу данных, таблицу, столбцы и указав дополнительное условие (рисунок 24);
  • ввести текст запроса на T-SQL и указать в контексте какой базы данных будет исполняться запрос;
  • указать имя хранимой процедуры, которая генерирует запрос к базе данных;
  • задать схему исполнения задания:
  • немедленный запуск;
  • отложенный запуск с указанием даты и времени;
  • запуск в указанные дни недели;
  • запуск на регулярной основе с указанием расписания;
  • запуск при изменении данных с указанием набора опорных таблиц.
  • указать имя выходного файла в том числе в формате UNC;
  • указать имя шаблона; шаблон - страница в формате HTML, содержащая поле <%insert_data_here%>, вместо которого производится подстановка результатов;
  • задать заголовок выходной страницы и заголовок собственно результатов запроса;
  • поместить на выходную страницу ссылку URL или список ссылок, из таблицы SQL Server;
  • указать минимальный набор параметров форматирования текста:
  • тип HTML-заголовка;
  • тип шрифта;
  • начертание шрифта;
  • включить в заголовок страницы данные о времени и дате исполнения запроса;
  • включить в заголовок результатов запроса названия колонок;
  • ограничить число строк результата, помещаемых на выходной странице.

На рисунке 25 приведен пример страницы, созданной с помощью Web Assistant.

Кроме Web Assistant для получения тех же результатов можно использовать следующие хранимые процедуры:

  • sp_makewebtask - системная процедура для подготовки задания, преобразующего результаты запроса в файл HTML;
  • sp_runwebtask - запускает созданное sp_makewebtask задание;
  • sp_dropwebtask - удаляет созданное sp_makewebtask задание.

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

Сама программа Web Assistant может исполняться только на процессорах Intel, но может создавать задания на любой из поддерживаемых SQL Server платформе, так как все хранимые процедуры, вызываемые программой, там присутствуют.

Рис. 24. Пример создания запроса в Web Assistant

Рис. 25. Пример очень простой страницы, созданной при помощи Web Assistant

2.12. Средства разработки расширений, ODS

Microsoft Open Data Services (ODS) представляют собой набор интерфейсов (API) для создания:

  • специализированных серверов;
  • расширения функциональности самого SQL Server.

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

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

Расширенные хранимые процедуры создаются на языках C/C++ в виде динамических библиотек, установка, регистрация и назначение прав на запуск выполняется пользователем с правами SA.

Как работает ODS

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

После получения запроса от клиента ODS определяет тип этого запроса и переадресует его соответствующему обработчику событий (event handler). Результат обработки ODS возвращает клиентскому приложению.

В ODS определены три основных вида событий:

  • соединение (connection event) - возникает всякий раз, когда пользователь устанавливает новое соединение с ODS-сервером; перехват этого события позволяет реализовать специализированную схему проверки прав на подключение к серверу;
  • команда (language even) - возникает всякий раз, когда пользователь передает ODS команду на исполнение; обработка этого события целиком лежит на разработчике;
  • удаленный вызов процедуры (remote stored procedure event) - возникает всякий раз, когда пользователь или SQL Server запрашивают выполнение удаленной процедуры на сервере ODS.

Кроме указанных, существуют события, связанные с изменением статуса соединения с клиентом и его активности, что позволяет серверу ODS адекватно реагировать на эти изменения (например, закрывать неактивные соединения через заданный промежуток времени). На рисунке 26 приведена схема взаимодействия клиентов с сервером ODS.

Рис. 26. Взаимодействие клиентов с ODS сервером

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

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

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

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

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

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

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

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

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

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

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

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

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

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