OLAP.ru   Rambler's Top100
Вы находитесь на страницах старой версии сайта. Перейдите на новую версию OLAP.ru
  
Поиск по сайту
Новости
Основы OLAP
Продукты
Business Objects/ Crystal Decisions
Каталог
OLAP в жизни
Тенденции
Download
Яndex
 
 
 
TopList
 
 Business Objects/Crystal Decisions  Oracle  Microsoft  IBM 
 Hyperion  Sybase  Informix  Actuate  SAS Institute  Brio 

Аналитические возможности XML for Analysis


Рас Уитни, SQL Magazine OnLine, #04/2001

Для решения каких задач необходим набор XML for Analysis SDK и в чем состоят особенности его применения.

Вам приходилось слышать о том, что аналитическая служба SQL Server 2000 Analysis Services основана на архитектуре клиент/сервер? Это очень важный факт, потому что данная архитектура ориентирована на работу в локальных сетях, а не в среде приложений для Internet. Архитектура клиент/сервер теряет свою популярность, потому что подавляющему большинству средних и крупных компаний требуются приложения масштаба предприятия, которые легко развертывать и сопровождать и которые поддерживают работу пользователей как через Internet, так и в локальной сети. Это требование наряду с прочими оказывает влияние на общее направление разработки программных продуктов корпорации Microsoft, смещая его к архитектуре .NET, базирующейся на Web-компонентах. Итак, что происходит с Analysis Services в мире .NET? Недавно корпорация Microsoft выпустила спецификацию XML for Analysis, доступ к которой осуществляется с помощью набора для разработчика SDK (Software Development Kit). Эта спецификация призвана связать два типа архитектур - клиент/сервер и .NET.

Analysis Services состоит из двух основных компонентов - серверной части, OLAP Server, и клиентского программного обеспечения под названием PivotTable Service. Клиентский компонент может быть установлен на персональных компьютерах, объединенных в локальную сеть. PivotTable Service предлагает клиентским приложениям, которые обычно размещаются на компьютерах пользователей, два программных интерфейса, ADO MD и OLE DB for OLAP. Как и у других приложений с двухуровневой архитектурой, к сильной стороне этих интерфейсов в первую очередь следует отнести высокую производительность. Используя эти интерфейсы, аналитическая служба Analysis Services может выполнять значительную долю обработки и кэширования на клиентском компьютере, что позволяет снизить сетевой трафик и нагрузку на сервер. Несмотря на то, что нагрузка на сервер невелика, масштабируемость Analysis Services имеет ограничения в силу того, что каждому клиенту обязательно требуется поддерживать постоянное соединение с сервером. Как известно, каждое соединение занимает ценные вычислительные ресурсы сервера. К недостаткам PivotTable Service относятся также и высокие требования к установке и сопровождению. Для установки PivotTable Service необходимо предварительно установить на компьютере Microsoft Data Access Components (MDAC) 2.6. Таким образом, на пользовательские ПК помимо аналитических приложений приходится устанавливать еще и около 14 Мбайт вспомогательного программного обеспечения.

Специалисты корпорации Microsoft спроектировали XML for Analysis как многослойное приложение.

На рисунке 1 показано обычное распределение компонентов в таком приложении.

Служба PivotTable Service обычно размещается на Web-сервере вместе с Microsoft IIS. При этом клиентские приложения получают доступ к объектам XML for Analysis через серверные страницы Active Server Pages (ASP), которые располагаются на коммуникационном сервере IIS. Для связи с XML for Analysis клиентские приложения используют простой протокол доступа Simple Object Access Protocol (SOAP). В протоколе SOAP задействован механизм, действие которого аналогично COM. Он позволяет распределенным программным компонентам обнаруживать друг друга и взаимодействовать через Internet по протоколу HTTP, используя сообщения XML.

Архитектура XML for Analysis обладает рядом преимуществ по сравнению со стандартной двухслойной архитектурой Analysis Services. Одно огромное преимущество состоит в том, что протокол, применяемый клиентскими приложениями для доступа к Web-серверу, не использует понятие статуса. Это означает, что Web-серверу не требуется запоминать состояние клиента в промежутке между отдельными запросами. Поэтому отпадает необходимость в поддержке соединения базы данных для каждого клиента. Вместо этого Web-сервер формирует пул из соединений базы данных и многократно использует его для обработки отдельных запросов клиентов. Уменьшение числа активных сессий снижает накладные расходы на сопровождение при работе с большим количеством клиентов. Еще одним достоинством XML for Analysis является отсутствие необходимости в установке на клиентском компьютере специального программного обеспечения. Все, что требуется от клиентского приложения, - это способность применять протокол SOAP для взаимодействия с XML. При этом не нужны драйверы баз данных, ни ADO, ни OLE DB. Даже самые простые приложения, такие как страница HTML со встроенным сценарием, могут использовать SOAP для работы с XML for Analysis.

Самым большим недостатком XML for Analysis можно считать некоторое снижение производительности. При двухслойной конфигурации Analysis Services в клиентском компоненте PivotTable Service в кэше хранятся метаданные куба, что позволяет быстро отвечать на многочисленные вопросы приложений, касающиеся метаданных. Например, на вопросы "Какие размерности используются в данном кубе?" или "Какие подчиненные члены имеются у заданного члена размерности?" в конфигурации, использующей XML for Analysis, для ответа на каждый подобный вопрос приходится обращаться к серверу. Кроме того, сообщения XML, которыми обмениваются между собой клиентское приложение и Web-сервер, отличаются большими размерами. По моим оценкам они приблизительно в 10 раз больше, чем эквивалентные бинарные сообщения, используемые в OLE DB for OLAP. Эти сообщения получаются такими большими не только потому, что информация в них упакована в виде строки (по аналогии с HTML), но еще и потому, что каждая порция информация окружена открывающим и закрывающим тэгами XML. Когда приложение обращается к PivotTable Service через СОМ, метаданные плотно упакованы в бинарные буферы

Однако эти ограничения не являются непреодолимо высокими. Если их учесть при проектировании приложения, то можно найти способы справиться с ними. К примеру, чтобы снизить интенсивность трафика, поступающего на сервер, часть метаданных куба можно хранить в кэше приложения. Кроме того, любое аналитическое приложение масштаба предприятия содержит множество профилей пользователей, с учетом которых можно настроить разрабатываемое аналитическое приложение. Как правило, самая большая группа пользователей на предприятии предъявляет самые низкие требования к аналитическим приложениям. Потребности этих пользователей легко удовлетворяются фиксированными отчетами или же простыми настраиваемыми отчетами с параметрами. На предприятии может существовать небольшая группа искушенных пользователей, которые предъявляют повышенные требования к производительности и функциональным возможностям аналитических средств. Потребности такой группы пользователей можно удовлетворить при помощи приложения, построенного по традиционной архитектуре клиент/сервер и работающего в среде Intranet (или по VPN). Наконец, промежуточные группы пользователей обычно просят предоставить им определенные возможности для исследования данных, и в то же время свободу доступа через Internet. Для этих групп пользователей лучше всего подходит XML for Analysis.

Применение XML for Analysis SDK

Теперь поговорим о том, как устанавливать и использовать XML for Analysis SDK. Я начал с установки Windows 2000 Professional и Analysis Services, то есть серверного и клиентского компонентов. После них следует установить синтаксический анализатор Microsoft XML Parser (MSXML) 3.0, который можно загрузить по адресу http://msdn.microsoft.com/xml/general/xmlparser.asp. Закончив инсталляцию этих программ, установите сервер IIS. Он представляет собой необязательный компонент Windows 2000. IIS устанавливается через панель управления Control Panel. Выбрав пункт установки и удаления компонентов операционной системы, Add/Remove Windows Components, перейдите к установке и удалению программ, Add/Remove Programs.

Наконец, нам понадобится набор аналитических программ XML for Analysis SDK. У меня была ранняя версия этого продукта, а читатели могут загрузить его с сайта http://www.microsoft.com/data.

Моя копия SDK включает четыре каталога. Один содержит презентации, в другом находятся примеры, в третьем хранится программа установки XML for Analysis, а в последнем, четвертом, каталоге размещается программная спецификация. Если запустить программу установки из каталога первоначальной установки, то будет создан каталог, в котором будут находиться все требуемые для работы XML for Analysis файлы ASP и библиотеки DLL. Эта исполняемая часть SDK устанавливается по умолчанию в каталоге C:\Program Files\XML for Analysis SDK. 

Как показано на рисунке 2, после установки файлов ASP и DLL, необходимо создать в IIS виртуальный каталог под названием XOLAP, который будет указывать на каталог XML for Analysis SDK. Теперь у нас есть все необходимое для создания приложения с применением XML for Analysis.

Если разрабатывать приложение на языке Visual Basic (VB) 6.0, который применяет XML for Analysis, то, возможно, вам захочется воспользоваться входящей в состав SDK учебной библиотекой DLL, которая называется SoapClient. В эту библиотеку входят два опубликованных метода, Discover и Execute, которые соответствуют методам спецификации XML for Analysis. Пользуясь этими двумя методами, можно получить доступ ко всем функциональным возможностям XML for Analysis. При помощи метода Discover извлекаются метаданные OLAP и информация о поставщике OLAP (к примеру, о службе PivotTable Service). Метод Execute можно применять для исполнения предложений MDX , таких как запросы или оператор обратной записи в куб.

Чтобы приступить к созданию нового проекта VB 6.0, сначала зарегистрируйте компонент SoapClient.dll в каталоге Samples. Затем в VB добавьте для проекта ссылки на библиотеки Microsoft XML, v3.0 и SoapClientLibrary. Теперь мы готовы к написанию кода VB, который будет пользоваться методами Discover и Execute, и можно начинать строить аналитическое приложение.

Помните о том, что каждый метод Discover или Execute является модульным; то есть XML for Analysis не поддерживает информацию о соединении или состоянии между вызовами метода. Поэтому каждый вызов метода XML for Analysis необходимо снабжать всей информацией о соединении. В этом заключается отличие от программирования с использованием интерфейса ADO. При работе с ADO устанавливается соединение с сервером, которое многократно используется различными командами, прежде чем будет разрушено. Но поскольку. XML for Analysis не хранит информацию о статусе, у него имеется возможность распределять ресурсы, и тем самым поддерживать работу множества клиентов. Но в некоторых ситуациях большое значение приобретает возможность поддерживать сессию. К примеру, если необходимо создать вычисляемый член или набор, а затем использовать этот член или набор в последующих запросах MDX. Возможно, еще более драматичный сценарий разворачивается при выполнении обратной записи в куб. Несколько операций обратной записи могут войти в состав одной транзакции, так что их придется группировать вместе, чтобы воспользоваться одним оператором фиксации транзакции. Для разрешения таких ситуаций в XML for Analysis предусмотрен режим работы с использованием статуса. Команда BeginSession возвращает идентификатор сессии SessionID, который клиент может использовать при выполнении нескольких последующих команд, прежде чем отдать команду окончания сессии EndSession.

Рассмотрим простой пример запроса метаданных из программы DemoSoap, которая поставляется вместе с XML for Analysis SDK. В этом примере использован метод Discover для запроса перечня названий размерностей, на которых строится куб FoodMart 2000 Sales:

ЛИСТИНГ 1: Ограничение числа возвращаемых размерностей только теми, которые используются в каталоге пищевых продуктов FoodMart 2000 и в кубе с информацией о продажах Sales.

  <Restrictions>
  <Restriction>
<RestName>CATALOG_NAME</RestName>
<RestValue>Foodmart 2000</RestValue>
                      </Restriction>
<Restriction>
<RestName>CUBE_NAME</RestName>
<RestValue>Sales</RestValue>
   </Restriction>
</Restrictions>

Последний параметр, Properties, идентифицирует контекст, в рамках которого приложение осуществляет вызов метода Discover. Поскольку обычно XML for Analysis работает в режиме без использования информации о статусах, посредством этого параметра серверу передаются сведения о том, какие настройки он должен установить и поддерживать в заданном соединении. В листинге 2 содержится пример текста XML, который приложение передает в качестве параметра Properties.

ЛИСТИНГ 2: Пример текста XML, используемого в качестве параметра Properties.

<Properties>
<Property>
	<PropertyObject>InitializeDatasource</PropertyObject>
	<PropertySet>DBPROPSET_DBINIT</PropertySet>
	<PropertyName>DBPROP_INIT_PROVIDERSTRING</PropertyName>
	<PropertyValue>Provider=MSOLAP;Data Source=local</PropertyValue>
	</Property>
  <Property>
	<PropertyObject>Datasource</PropertyObject>
	<PropertySet>DBPROPSET_DATASOURCE</PropertySet>
	<PropertyName>DBPROP_CURRENTCATALOG</PropertyName>
	<PropertyValue>Foodmart 2000</PropertyValue>
	</Property>
  <Property>
	<PropertyObject>XMLForAnalysis</PropertyObject>
	<PropertySet>FORMAT</PropertySet>
	<PropertyName>RESULTSET_FORMAT</PropertyName>
	<PropertyValue>Multidimensional</PropertyValue>
	</Property>
  <Property>
	<PropertyObject>XMLForAnalysis</PropertyObject>
	<PropertySet>FORMAT</PropertySet>
	<PropertyName>RESULTSET_CONTENTS</PropertyName>
	<PropertyValue>SchemaData</PropertyValue>
	</Property>
</Properties>


На рисунке 3 показан фрагмент результата обработки запроса размерностей MDSCHEMA_DIMENSIONS. 

Как и в любом тексте XML, возвращаемом XML for Analysis, в начальной части ответа содержится определение схемы дальнейших событий. Подобная схема помогает клиенту разобраться в том, какую информацию включать в результирующий набор и как ее следует организовать. Для лаконичности я включил в рисунок 3 только одну из строк размерностей (размерность заказчиков Customers).

Применение метода Execute для передачи на выполнение команд в XML for Analysis во многом аналогично вызову метода Discover. У метода Execute имеются два входных параметра, команда Command и свойства Properties. Командный параметр Command представляет собой строку MDX, а параметр Properties содержит такую же информацию, какую он передает в методе Discover. Вызов метода Execute эквивалентен вызову метода ADO cellset.Open. Результат обработки любого запроса MDX также представляет собой текст XML, но он значительно сложнее, чем в примере с размерностями.

Следует отметить одну принципиально важную особенность исполнения запросов MDX, возвращающих большие результирующие наборы данных. При использовании ADO в среде клиент/сервер, служба PivotTable Service вычисляет только часть запрошенного приложением результирующего набора. Поэтому в тех случаях, когда приложение выводит на экран лишь часть результатов, следует запрашивать именно такие порции данных. Подобный подход поможет сэкономить много времени в процессе выполнения запросов с применением ADO. При работе с XML for Analysis такого рода оптимизация возможна, но реализовать ее сложнее. Если до начала исполнения запроса будет известно, что понадобится только такая часть результатов, которая умещается на одном экране, можно воспользоваться свойствами BEGIN_RANGE и END_RANGE. При помощи этих свойств задаются начальный и конечный порядковые номера диапазона строк, которые желательно вывести на экран. В дальнейшем, когда пользователь захочет просмотреть остальные строки, приложение сможет запустить тот же самый запрос, сдвинув при этом диапазон номеров строк. Таким образом, если в ответ на запрос MDX ожидается получить около 100,000 строк, предложенный подход поможет не только сэкономить память, но и существенно повысить производительность.

XML for Analysis представляет собой важную часть аналитической службы Analysis Services. Он позволяет применять Analysis Services в масштабируемых многослойных системах, проектируемых для работы с Internet-приложениями. Помимо этого, XML for Analysis может помочь использовать Analysis Services для построения сетевых служб с архитектурой .NET. Более подробную информацию о XML for Analysis можно найти в пресс-релизе по адресу http://www.microsoft.com/presspass/press/2000/dec00/xmlbasedprotocolpr.asp. Кроме того, читатели могут присоединиться к группе новостей microsoft.public.data.xmlanalysis.

Об авторе

Рас Уитни rwhitney@knosysinc.com возглавляет исследовательское отделение в компании Knosys, руководит разработкой клиентского инструментария OLAP. Является членом совета директоров компаний Knosys и Distributed Database Consulting (DDBC).

 Обсудить на форуме   Написать вебмастеру 

© 2001 Interface Ltd