Архитектура и обработка сборщика данных

Сборщик данных интегрирован с агентом SQL Server и службами Integration Services и широко их использует. Поэтому перед началом работы со сборщиком данных необходимо изучить основные понятия, связанные с этими компонентами SQL Server.

Агент SQL Server используется для планирования и запуска заданий сбора. Обратите внимание на следующие основные понятия:

  • задание;

  • шаг задания;

  • расписание заданий;

  • подсистема;

  • учетные записи-посредники.

Дополнительные сведения см. в разделе Автоматизация задач администрирования (агент SQL Server).

Службы Integration Services (SSIS) используются для выполнения пакетов, собирающих данные от индивидуальных поставщиков данных. Следует ознакомиться со следующими инструментами и понятиями служб SSIS:

  • пакет служб SSIS

  • конфигурация пакета служб SSIS

Дополнительные сведения см. в разделе Пакеты служб Integration Services.

Архитектура сборщика данных

На следующем рисунке показана архитектурная модель сбора и хранения данных.

Архитектура сборщика данных

Как видно из этой иллюстрации, компоненты в модели сгруппированы по следующим категориям.

  • Компоненты хранения — это базы данных, которые содержат информацию о конфигурации и собранные данные.

  • Компоненты выполнения используются для сбора и хранения данных.

  • Компоненты API-интерфейса используются для поддержки взаимодействия между пользовательскими интерфейсами и сборщиком данных.

  • Клиентские компоненты — это пользовательские интерфейсы для сборщика данных.

Следующие подразделы содержат дополнительные сведения об этих категориях и компонентах.

Хранение

Сборщик данных хранит данные в двух местах: в базе данных msdb и хранилище данных управления.

ПримечаниеПримечание

В сборщике данных реализовано отделение пользователей от схем, которое было введено в SQL Server 2005. Дополнительные сведения см. в разделе Отделение пользователей от схем.

Системная база данных msdb

Сборщик данных использует базу данных msdb для хранения данных конфигурации, данных времени выполнения, аудита и журналов сбора. Эта база данных должна присутствовать на экземпляре SQL Server, на котором запущен сборщик данных. Использование базы данных msdb дает следующие преимущества.

  • Все данные, необходимые для настройки и работы со сборщиком данных, хранятся в одном месте.

  • Конфигурация сбора данных может быть развернута на нескольких серверах без необходимости использования файловой системы.

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

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

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

Конфигурация сбора данных

Таблицы и представления, относящиеся к конфигурации, содержат сведения о наборах сбора, типах сборщиков и элементах сбора. В них также хранятся глобальные параметры сборщика данных, например расположение хранилища данных управления. Также здесь хранятся роли базы данных для сборщика и хранилища управляющих данных. Дополнительные сведения о столбцах каждого представления конфигурации сбора данных см. в разделе Представления сборщика данных (Transact-SQL).

Важное примечаниеВажно!

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

Задания агента SQL Server

Сведения о заданиях агента SQL Server хранятся в отдельной схеме базы данных msdb. Эти данные создаются или обновляются каждый раз при добавлении, удалении или изменении наборов сбора. При запуске набора сбора агент SQL Server использует эти данные для выполнения заданий сборщика данных.

Пакеты служб SQL Server Integration Services

Пакеты служб SSIS хранятся в существующих таблицах хранилища служб SSIS в базе данных msdb. Сборщик данных использует эти пакеты для сбора данных и их передачи в хранилище управляющих данных.

Аудит и журналы

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

Хранилище управляющих данных

Хранилище данных управления — это реляционная база данных, содержащая все сохраняемые данные. Эта база данных может располагаться на том же компьютере, что и сборщик данных, или на любом другом.

Выполнение

Компоненты в категории выполнения исполняются в оперативной памяти и отвечают за сбор и хранение данных.

Агент SQL Server

Агент SQL Server содержит компонент времени выполнения сборщика данных. Сбор данных добавляется в расписание как задание агента SQL Server. При запуске это задание вызывает компонент времени выполнения сборщика данных, передавая ему параметры, необходимые для создания и выполнения набора сбора.

Компонент времени выполнения сборщика данных

Компонент времени выполнения сборщика данных содержится в изолированном процессе — Dcexec.exe. Этот компонент управляет сбором данных на основе определений, предоставляемых в наборе сбора, и в качестве входных данных может принимать любые наборы сбора. Компонент времени выполнения сборщика данных отвечает за загрузку и выполнение пакетов служб SSIS, являющихся частью набора сбора.

Набор сбора выполняется в одном из следующих режимов сбора и загрузки.

  • Без применения кэширования. Сбор и передача данных выполняются по общему расписанию. Пакеты запускаются, собирают и передают данные с заданной частотой и выполняются до успешного завершения. После завершения они выгружаются из памяти.

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

ПримечаниеПримечание

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

Компонент времени выполнения служб SSIS

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

Две важнейшие задачи пакетов служб SSIS — это сбор и передача данных, которые выполняются отдельными пакетами.

  • Пакет сбора собирает данные от поставщика данных и помещает их во временное хранилище. При наличии соответствующих настроек этот пакет также добавляет к собранным данным дополнительные, например время моментального снимка или сведения об источнике данных.

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

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

Временное хранилище

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

API

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

Библиотека классов

Сборщик данных имеет собственное пространство имен и не зависит от управляющих объектов SQL Server.

Хранимые процедуры и представления

Хранимые процедуры и представления предоставляют доступ на создание, чтение, обновление и удаление к данным конфигурации сборщика данных и хранилищу управляющих данных.

Клиент

Среда SQL Server Management Studio и интерфейс командной строки Windows Powershell™ используются в качестве клиентов настройки и использования сборщика данных. С помощью среды SQL Server Management Studio можно делать следующее:

  • настраивать сбор данных с помощью мастера настройки сбора данных в обозревателе объектов;

  • включать или отключать сбор данных с помощью обозревателя объектов;

  • запускать и останавливать конкретный набор сбора с помощью обозревателя объектов;

  • просматривать и настраивать свойства сбора данных или набора сбора с помощью обозревателя объектов;

  • просматривать отчеты, основанные на данных журналов, хранимых в хранилище управляющих данных. Эта база данных может быть расположена как на локальном экземпляре, так и на другом сервере. Рекомендуется второй вариант.

С помощью интерфейса командной строки Windows Powershell можно выполнить:

  • запуск или остановку набор сбора;

  • добавление или удаление набора сбора;

  • изменение доступных для редактирования свойств набора сбора.

Взаимодействие компонентов и обработка

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

Компонент

Компонент

Описание

SQL Server Management Studio

API-интерфейс сборщика данных

Клиент обменивается данными с API-интерфейсом с целью настройки сборщика данных.

SQL Server Management Studio

Хранилище данных управления

Клиент имеет доступ для чтения к хранилищу данных управления и может получать собранные данные.

Среда SQL Server Management Studio, клиент консоли

API-интерфейс сборщика данных

Оба клиента могут настраивать сборщик данных программным образом с помощью API-интерфейса.

API-интерфейс сборщика данных

Хранимые процедуры и представления

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

База данных msdb — определение заданий

Агент SQL Server

Агент SQL Server может читать определение заданий. В определении заданий содержатся расписание задания и сведения о конфигурации задания.

Агент SQL Server

Исполняемый компонент сборщика данных

На основе данных определения заданий агент SQL Server вызывает сборщик данных.

Исполняемый компонент сборщика данных

База данных msdb — пакеты служб SSIS

Сборщик данных загружает пакеты служб SSIS и может использовать службы SSIS для выполнения этих пакетов.

Исполняемый компонент сборщика данных

База данных msdb — аудит и журналы

Сборщик данных обладает доступом для записи к этой части базы данных msdb, чтобы записывать события, сформированные при сборе данных.

SSIS

Хранилище данных управления

Пакет служб SSIS имеет доступ для записи к хранилищу данных управления для передачи собранных данных.

SSIS

Временное хранилище

В процессе сбора службы SSIS могут создавать, использовать и удалять любые необходимые временные хранилища.

База данных msdb — конфигурация сбора данных

База данных msdb — определение заданий

Сведения из конфигурации сбора данных сопоставляются с определением заданий. Дополнительные сведения см. ниже, в разделе «Сопоставление набора сбора и задания».

Сопоставление набора сбора и задания

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

Набор сбора — это группа элементов, являющихся экземплярами типов сборщиков, определенных с помощью пакетов служб SSIS. Как экземпляр, существующий в памяти, каждый набор сбора имеет свой собственный срок жизни. Он будет обсуждаться далее в этом разделе. Каждый набор сбора выполняется компонентом времени выполнения сборщика данных после поступления вызова от задания SQL Server. В следующих примерах демонстрируется сопоставление наборов сбора и заданий.

Наборы сбора

Пример 1

В этом примере набора сбора («Основные данные производительности») содержатся отдельные пакеты для сбора и передачи, что позволяет выполнять их независимо друг от друга и по собственным расписаниям.

Набор сбора: имя = «Основные данные производительности»

Элемент сбора: имя = «SQL_RE_Active_Requests_History»

Пакет сбора: ARH_Collect.dtsx

Пакет передачи: ARH_Upload.dtsx

Частота сбора: 1 секунда

Элемент сбора: имя = «SQL_RE_Wait_Statistics»

Пакет сбора: WS_Collect.dtsx

Пакет передачи: WS_Upload.dtsx

Частота сбора: 15 секунд

Элемент сбора: имя = «SQL_RE_Performance_Counters»

Пакет сбора: PC_Collect.dtsx

Пакет передачи: PC_Upload.dtsx

Вход: счетчик — блокировки: текущие ожидания кратковременных блокировок

Частота сбора: 15 секунд

Элемент сбора: имя = «WIN_OS_Performance_Counters»

Пакет сбора: OS_PC_Collect.dtsx

Пакет передачи: OS_PC_Upload.dts

Вход: счетчик — обработка: % процессорного времени

Частота сбора: 15 секунд

Расписание передачи: Каждые 30 минут

Пример 2

В этом примере набора сбора («Данные конфигурации сервера») содержится одиночный пакет, который создает основанные на Transact-SQL моментальные снимки и без задержки передает их в хранилище данных управления.

Набор сбора: имя = «Данные конфигурации сервера»

Элемент сбора: имя = «SQL_RE_TSQL»

Пакет сбора и передачи: TSQL_Upload.dtsx

Вход: запрос Transact-SQL относительно размеров баз данных

Частота сбора: <нет>

Элемент сбора: имя = «SQL_RE_TSQL»

Пакет сбора и передачи: TSQL_Upload.dtsx

Вход: запрос Transact-SQL относительно параметров конфигурации

Частота сбора: <нет>

Расписание передачи: Каждые 24 часов

Задания

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

  • Сбор данных разными наборами сбора выполняется как отдельные задания.

  • Наборы сбора, использующие режим сбора с кэшированием, планируются как задания, которые начинают выполняться при запуске агента SQL Server. Эти задания выполняются непрерывно и управляются компонентом времени выполнения сборщика данных.

  • Наборы сбора, использующие режим сбора без кэширования, планируются как обычные задания агента SQL Server. Эти задания используют расписание агента SQL Server, соответствующее расписанию, определенному в наборе сбора. Реальная продолжительность их выполнения может быть настроена пользователем.

В следующих примерах демонстрируются задания, использующие приведенные выше правила. Эти задания могут выполнять представленные примеры наборов сбора.

Задания для примера набора сбора 1

Для обработки данного набора сбора используются два задания: одно для сбора, другое для передачи.

Задание 1, имя: «Сбор основных данных производительности»

Категория: «Сборщик данных»

Шаг задания 1:

Набор сбора: имя = «Основные данные производительности»

Режим сбора: только сбор, непрерывное выполнение

Запущенные пакеты: ARH_Collect, WS_Collect, PC_Collect, OS_PC_Collect

Расписание: при запуске агента

Задание 2, имя: «Передача основных данных производительности»

Категория: «Сборщик данных»

Шаг задания 1:

Набор сбора: имя = «Основные данные производительности»

Режим сбора: только передача, однократное выполнение

Запущенные пакеты: ARH_Upload, WS_Upload, PC_Upload, OS_PC_Upload

Расписание: каждые 30 минут, начиная с 12:00 дня по тихоокеанскому времени

Задание для примера набора сбора 2

Для обработки данного набора сбора создано одно задание.

Задание 3, имя = «Данные конфигурации сервера»

Категория = «Сборщик данных»

Шаг задания 1:

Набор сбора, имя = «Данные конфигурации сервера»

Режим сбора: сбор и передача, однократное выполнение

Запущенные пакеты: TSQL_Upload, TSQL_Upload

Расписание: каждый день в 12:00 дня по тихоокеанскому времени

ПримечаниеПримечание

В каждом из вышеперечисленных примеров для задания указывается режим сбора. Эти сведения используются для управления процессами сбора и передачи во время работы набора сбора.

Сборщик данных и наборы сбора

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

Допустимые состояния

Сбор данных можно включить или отключить. Чтобы произвести изменение, влияющее на общие параметры сборщика, например изменение строки соединения хранилища данных управления, необходимо вначале отключить сбор данных.

Чтобы изменить конфигурацию набора сбора, необходимо вначале остановить этот набор сбора.

Если при отключении сбора данных выполнялись наборы сбора, они будут приостановлены до тех пор, пока сбор данных не будет опять включен. После этого все наборы сбора продолжат выполнение. Те наборы сбора, которые не были запущены при отключении сбора данных, останутся неактивными. Любой набор сбора можно запустить при отключенном сборе данных. Однако этот набор сбора не будет выполняться, пока не будет включен сбор данных.

Время жизни набора сбора

После запуска набор сбора проходит несколько стадий. Эти стадии, а также действия, происходящие за их период, включают следующее.

  1. Построение

    • Объект набор сбора создается в памяти.

    • Все его свойства могут свободно задаваться и изменяться.

  2. Добавление типа сборщика

    • В набор сбора добавляется новый элемент сбора.

    • Набор сбора проверяет, все ли элементы сбора ссылаются на один и тот же целевой корневой каталог.

  3. Удаление типа сборщика

    • Существующий элемент сбора удаляется из набора сбора.
  4. Создание

    • Набор сбора проверяет, содержится ли в нем по крайней мере один элемент сбора.

    • Сведения о всех элементах сбора и их свойствах, частоте обновления и всех свойствах набора сбора заносятся в хранилище настроек сборщика данных.

    • В начальном состоянии набор сбора неактивен.

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

    • В начальном состоянии задания агента SQL Server неактивны.

  5. Пуск

    • Набор сбора переводится в состояние выполнения.

    • Включаются связанные с ним задания агента SQL Server.

    • Если задание настроено на запуск при включении агента, оно запустится немедленно.

  6. Стоп

    • Набор сбора переводится в состояние останова.

    • Все выполняющиеся задания набора сбора останавливаются и отключаются.

    • Все задания, связанные с набором сбора, устанавливаются в неактивное состояние.

  7. Удаление

    • Все задания, связанные с набором сбора, удаляются из памяти.

    • Все объекты, связанные с набором сбора (элементы сбора, сам набор сбора), удаляются из конфигурации сборщика данных.

Обработка времени выполнения

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

Шаги выполнения сбора и передачи данных

Сбор данных

На предыдущем рисунке все шаги процесса сбора данных имеют префикс «С». Далее приводятся шаги обработки.

  1. Хранимая процедура запускает набор сбора. Состояние набора сбора в базе данных msdb изменяется на «Running». Это изменение состояния приводит к включению заданий агента SQL Server, связанных с набором сбора.

  2. Агент SQL Server запускает задание следующим образом:

    • Если установлен режим набора сбора с применением кэширования, то задание сбора запустится немедленно.

    • Если используется режим набора сбора без кэширования, то задание сбора запустится в соответствии с настройками расписания.

  3. Когда задание запускается, оно создает процесс, который будет исполнять компонент времени выполнения сборщика данных (Dcexec.exe), и дает ему команду выполнять пакет сбора, связанный с набором сбора.

  4. После запуска компонент Dcexec.exe считывает конфигурацию сборщика данных в базе данных msdb, чтобы выяснить, какой режим сбора необходимо использовать (с кэшированием или без).

  5. Компонент времени выполнения сборщика данных использует компонент времени выполнения служб SSIS для выполнения пакетов сбора, заданных для набора сбора.

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

    ПримечаниеПримечание

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

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

На предыдущем рисунке все шаги процесса передачи данных имеют префикс «U». Далее приводятся шаги обработки.

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

  2. Агент SQL Server запускает задание следующим образом:

    • При подаче пользователем запроса на передачу данных по требованию передача данных начинается немедленно.

    • Если запросов на передачу данных по требованию нет, то задание передачи запустится в соответствии с настройками расписания набора сбора.

  3. Когда задание запускается, оно создает процесс, который будет исполнять компонент времени выполнения сборщика данных (Dcexec.exe), и дает ему команду выполнять пакет передачи, связанный с набором сбора.

  4. После запуска процесс Dcexec.exe считывает конфигурацию сборщика данных в базе данных msdb, чтобы понять, как управлять передачей (например, указывает строку соединения с хранилищем данных управления или выполняет любую необходимую обработку данных).

  5. Компонент времени выполнения сборщика данных использует компонент времени выполнения служб SSIS для выполнения пакетов передачи, заданных для набора сбора.

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

  7. После окончания передачи процесс завершается, но состояние набора сбора не изменяется. Следующая передача запускается в соответствии с расписанием набора сбора.