SQL Server 2005

Часть 5. Сценарии использования. Практические примеры

Алексей Федоров

Задача 1. Управление складом

Задача 2. Система резервирования билетов

Задача 3. Управление web-сайтом

Задача 4. Модернизация системы управления счетами

Заключение

 

Об авторе. Алексей Федоров — сотрудник отдела стратегических технологий российского представительства компании Microsoft (alexeif@microsoft.com).

В предыдущих номерах были рассмотрены различные сценарии применения SQL Server 2005. Мы рассказали о возможных вариантах использования разных сервисов, входящих в состав SQL Server 2005: нотификационных сервисов, SQL Server Service Broker и Web-сервисов, а также о некоторых сценариях применения других компонентов SQL Server 2005: средств создания отчетов, интеграционных сервисов, SQLXML, средств репликации, а также SQL Server Agent и Database Mail.
В этой части мы представим практические примеры выбора компонентов SQL Server 2005 для решения задач, связанных с переносом приложений на новую версию системы управления базами данных.
Начнем с рассмотрения трех сценариев, отражающих различные бизнес-задачи, и для каждого из них предложим варианты использования некоторых компонентов SQL Server 2005, с основными характеристиками которых мы ознакомились в предыдущих частях данного цикла.

Задача 1. Управление складом

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

Компании требуется новая складская система, которая должна осуществлять заказ компонентов и управлять всем производством, отвечая следующим требованиям:

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

Подход к решению. Выше были сформированы четыре основных требования, предъявляемых к создаваемой системе управления складом. Как эти требования могут быть реализованы на верхнем уровне с помощью функциональности SQL Server 2005, показано в табл. 1.

 

Таблица 1

Таблица 1

В начало В начало

Задача 2. Система резервирования билетов

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

Требуется внести ряд изменений в систему, чтобы она отвечала следующим требованиям:

  • агенты должны получить возможность отсылки заказов в любое время, по мере их поступления;
  • должна увеличиться скорость обработки заказов. Оптимальное время — в течение часа после получения заказа от агента. Результаты обработки (подтверждение или отказ) должны посылаться агентам сразу же после обработки.

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

 

Таблица 2

Таблица 2

В начало В начало

Задача 3. Управление web-сайтом

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

Планируется расширить функциональность этого web-сайта таким образом, чтобы:

  • на сайте могла отображаться информация о региональных встречах коллекционеров. Посетители сайта хотят получать информацию о встречах, проводимых в их регионе;
  • производителям должна быть обеспечена возможность использовать данный web-сайт для рекламы их продукции;
  • владелец сайта хочет создать его копию у провайдера (Internet Service Provider, ISP), находящегося в другом регионе. Требуется, чтобы копия сайта содержала ту же информацию, что и оригинальный web-сайт.

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

 

Таблица 3

Таблица 3

Мы уже рассмотрели несколько примеров того, как реализовать бизнес-требования, выдвигаемые при модернизации существующих приложений, с помощью некоторых сервисов, входящих в состав SQL Server 2005, — нотификационных сервисов, позволяющих посылать уведомления при возникновении каких-либо событий в базе данных; Service Broker для организации асинхронной обработки информации, встроенной поддержки web-сервисов для предоставления фукциональности SQL Server через стандартные протоколы и сервисов репликации для копирования и синхронизации данных между копиями баз данных.

В начало В начало

Задача 4. Модернизация системы управления счетами

В этом примере мы рассмотрим более комплексную задачу, связанную с модернизацией существующей системы. Как вы увидите, для решения поставленной задачи нам потребуется использовать несколько сервисов из состава SQL Server 2005.

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

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

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

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

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

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

Подход к решению. Для снижения нагрузки на сервер баз данных в центральном офисе добавим еще один сервер (SQL Server 2), а также web-сервер, на котором будет выполняться приложение ASP .NET. Это приложение позволит клиентам в режиме онлайн просматривать счета, обновлять информацию, запрашивать новые сервисы. Web-приложение будет использовать HTTP Endpoints для регистрации обновлений и запросов в базе данных WebDatabase. Помимо этого web-приложение будет применять HTTP Endpoints для получения информации о клиентах, хранящейся в базе данных LocalAccount в региональных офисах. Извлечение информации из баз данных в региональных офисах позволит уменьшить нагрузку на сервер баз данных в центральном офисе.

Работающий на web-сервере web-сервис, созданный средствами ASP .NET, позволит сторонней компании посылать уведомления об обработке платежей. Web-сервис будет использовать HTTP Endpoints для сохранения результатов в базе данных WebDatabase.

На новом сервере баз данных — SQL Server 2, установленном в центральном офисе, — будут находиться две базы данных: WebDatabase и Subscriptions. В базе данных WebDatabase будут храниться данные о запросах по предоставлению новых сервисов, информация о клиентах, а также изменения, вносимые клиентами через web-приложение. Помимо этого в базе данных WebDatabase будут храниться результаты автоматической обработки платежей, произведенные сторонней компанией. В нерабочее время новый сервер баз данных будет отсылать всю необходимую информацию серверу в центральном офисе, который будет выполнять ее обработку. Информация будет отсылаться через сообщения Service Broker.

База данных Subscriptions будет использоваться для хранения всей информации о подписках, требующейся для рассылки клиентам уведомлений после завершения обработки запросов. SQL Server 2 будет применять нотификационные сервисы для отсылки сообщений клиентам. Доставка сообщений будет происходить асинхронно — после того как SQL Server 2 получит результаты обработки запросов от центрального сервера баз данных.

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

Клиентское приложение AccountApp использует в своей работе базу данных Accounts. Оно управляет всеми счетами клиентов и вызывает web-сервис для автоматической обработки оплаты счетов, предоставляемый сторонней компанией.

В региональных офисах база данных ReportServer будет использоваться для поддержки сервисов отчетов (Reporting Services), которые должны облегчить распечатку счетов. В базе данных LocalAccounts будет храниться информация о счетах региональных клиентов. Эта база данных будет применяться для извлечения данных через web-приложение на основе ASP .NET посредством механизмов HTTP Endpoints. Приложение LocalAccountsApp — это клиентская программа, используемая для управления счетами региональных клиентов. В целях синхронизации между центральным и региональными офисами применяются механизмы репликации (merge replication).

Таким образом, мы выбрали следующие решения и технологии:

  • механизмы HTTP Endpoints, защищенные через web-сервис на базе ASP .NET, позволяют клиентам выполнять автоматическую оплату счетов. По соображениям безопасности механизмы HTTP Endpoints никогда не должны выставляться в Интернете напрямую;
  • web-сервис на базе ASP .NET обеспечивает компании возможность получать уведомления о результатах процесса оплаты;
  • web-приложение на базе ASP .NET позволяет клиентам запрашивать новые сервисы, просматривать счета, обновлять контактную информацию и т.п. При необходимости оно может использовать механизмы HTTP Endpoints для доступа к базам данных;
  • Service Broker для обработки запросов на предоставление новых сервисов и обновления клиентской информации. Применение этого сервиса позволяет разделить процесс обработки запросов на две фазы:

    - Service Broker регистрирует клиентские запросы и немедленно отвечает клиентскому приложению, используемому клиентами;

    - в соответствии с определенными бизнес-правилами Service Broker может запустить на обработку сами запросы, что может занять значительное время;

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

Заключение

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

КомпьютерПресс 4'2006

Наш канал на Youtube

1999 1 2 3 4 5 6 7 8 9 10 11 12
2000 1 2 3 4 5 6 7 8 9 10 11 12
2001 1 2 3 4 5 6 7 8 9 10 11 12
2002 1 2 3 4 5 6 7 8 9 10 11 12
2003 1 2 3 4 5 6 7 8 9 10 11 12
2004 1 2 3 4 5 6 7 8 9 10 11 12
2005 1 2 3 4 5 6 7 8 9 10 11 12
2006 1 2 3 4 5 6 7 8 9 10 11 12
2007 1 2 3 4 5 6 7 8 9 10 11 12
2008 1 2 3 4 5 6 7 8 9 10 11 12
2009 1 2 3 4 5 6 7 8 9 10 11 12
2010 1 2 3 4 5 6 7 8 9 10 11 12
2011 1 2 3 4 5 6 7 8 9 10 11 12
2012 1 2 3 4 5 6 7 8 9 10 11 12
2013 1 2 3 4 5 6 7 8 9 10 11 12
Популярные статьи
КомпьютерПресс использует