Структура системного объекта

На рисунке 5.6 изображен формат системного объекта в одноуровневой памяти. Первые 32 байта содержат заголовок, предоставляющий информацию о самом сегменте. Далее следует заголовок EPA (Encapsulated Program Architecture). ЕРА была создана для спецификации внутренней структуры инкапсулированных объектов System/38, а затем та же внутренняя структура была перенесена в AS/400. Заголовок ЕРА содержит атрибуты (свойства) общие для всех системных объектов, независимо от типа. Заголовок сегмента и заголовок ЕРА вместе занимают первые 256 байтов всякого системного объекта.

Структура системного объекта - student2.ru


Рис. 5.6. Структура системного объекта

Каждый тип объекта содержит свойства, присущие только ему: свойства программы уникальны по сравнению с областью данных, и наоборот. Эти индивидуальные свойства содержатся в специфическом заголовке (customized header) объекта, следующем после заголовка ЕРА.

После трех заголовков следуют компоненты, составляющие данный объект: например, за специфическим заголовком программы размещается последовательность команд. Так как все системные объекты имеют пространственную часть, пространственный компонент присутствует всегда. В MI он называется ассоциированным пространством. Конкретный набор компонентов и порядок их следования зависят от типа объекта.

Типов системных объектов слишком много, для того чтобы подробно описывать специфические заголовки и компоненты объектов. Однако некоторые примеры мы рассмотрим.

Многосегментные объекты

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

На рисунке 5.7 показан системный объект, занимающий два сегмента, при этом системный указатель ссылается на базовый сегмент. Обратите внимание, что у каждого сегмента — свой заголовок. Заголовок сегмента содержит информацию о сегменте, а не о содержащемся в нем объекте. В заголовке сегмента также содержатся адреса, связывающие сегменты друг с другом. Заголовок ЕРА содержится только в базовом сегменте. За заголовком ЕРА, также только в базовом сегменте, следует специфический заголовок объекта.

Структура системного объекта - student2.ru


Рис. 5.7. Многосегментные объекты

Выделение сегментов происходит при создании системного объекта посредством команды "Create xxx", где "xxx" — тип создаваемого объекта. На рисунке 5.8 показаны исходные параметры и результаты команды "Create" на уровне MI. Эта команда использует пространственный указатель для доступа к шаблону объекта, содержащегося в пространственном объекте. Читателю следует иметь в виду, что команды "Create xxx" MI — это не то же самое, что и команды "CRTxxx" OS/400. Например, команда OS/400 "CRTRPGPGM" должна выполнить ряд предварительных шагов, прежде чем дело дойдет до заключительного прохода компиляции программы — вызова "Create" в MI. Исполнение этой команды на уровне MI приводит к созданию в одноуровневой памяти базового и вторичных сегментов.

Структура системного объекта - student2.ru


Рис. 5.8. Создание объекта

Для отражения наличия нового объекта обновляются различные справочники, поддерживаемые SLIC. Компоненту управления памятью нужен доступ к сегменту, поэтому выполняется обновление одного из справочников компонента. Если объект создается в библиотеке (аналогичный термин ниже MI — контекст), то туда также нужно внести его имя и местоположение. Если библиотека не задана, то объект помещается в текущую библиотеку задания, вызвавшего команду "Create" (одна библиотека из списка для каждого задания всегда обозначается как текущая). Аналогично, следует обновить профиль пользователя или группы, чтобы обозначить владельца нового объекта. Заключительный этап — создание системного указателя на объект и возвращение его пользователю, запросившему о создании.

Содержимое заголовков

Структура системного объекта - student2.ru

Теперь, после рассмотрения структуры системных объектов и их отображения на сегменты памяти можно перейти к рассмотрению содержимого заголовков сегмента и ЕРА. Как мы видели на рисунке 5.6, заголовок сегмента занимает первые 32 байта каждого сегмента, составляющего системный объект. Заголовок ЕРА присутствует только в базовом сегменте системного объекта.

Заголовок сегмента

Структура системного объекта - student2.ru

Заголовок сегмента содержит следующую информацию:

  • байт типа;
  • биты флагов:
    • существования (постоянный или временный);
    • авторасширения;
    • наличия в сегменте тегов;
    • другие;
  • число выделенных для него страниц;
  • адрес базового сегмента объекта;
  • адрес ассоциированного пространства объекта.

Последние два адреса не следует путать с системным указателем и пространственным указателем на системный объект. Они представляют собой 64-разрядные адреса, используемые SLIC.

Байт типа определяет, что это за сегмент. Есть две категории типов сегментов: входящие в состав объектов MI, и используемые только SLIC ниже MI. Ранее мы говорили только о сегментах для объектов MI. Однако, есть целая категория сегментов для структур данных SLIC, которые не являются частью системных объектов MI. Эти сегменты, в отличие от объектов, не рассматриваются как единое целое.

Мы уже рассмотрели два типа сегментов, входящих в состав системного объекта: базовый и сегмент ассоциированного пространства. Всего же в состав различных системных объектов MI могут входить сегменты более дюжины других типов. О некоторых из них мы поговорим в следующих лекциях.

Примерно 40 типов сегментов используются только SLIC. Все его элементы, начиная от таблиц управления памятью до рабочей области, используемой транслятором, имеют свои типы сегментов. Обсуждение этих типов сегментов также имеет смысл пока отложить. На данный момент важно лишь то, что эти сегменты существуют, и что они создаются и управляются аналогично сегментам, используемым для системных объектов.

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

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

Бит наличия тегов указывает на присутствие в сегменте указателей MI. В лекции 2 мы рассматривали расширения архитектуры PowerPC и в том числе и этот специальный бит. Напомню, что он связан с каждым адресом MI (16-байтовым указателем) и предотвращает несанкционированное изменение адреса. Биты тега входят в состав основной памяти AS/400, но не видимы программам MI. При перемещении страницы на диск, компонент управления памятью должен также переместить туда скрытые биты тега. Бит наличия тегов сообщает компоненту управления памятью, придется ли тому выполнять обработку тегов для этого сегмента. Подробнее биты тегов рассматриваются в лекции 8.

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

Обратите внимание, что адреса, используемые ниже MI в заголовках и где-либо еще — 64-разрядные аппаратные. В MI адреса всегда содержатся внутри указателя и занимают 128 бит (16 байтов). Указатели защищают хранящиеся в них адреса от несанкционированного изменения и использования, а также помогают обеспечить независимость MI от технологии. Ниже MI нет ни такой защиты, ни аппаратной независимости. Именно по этой причине все пользователи MI, включая саму OS/400, не допускаются ниже уровня MI.

Заголовок EPA

Заголовок ЕРА содержится в базовом сегменте всякого системного объекта и содержит следующую информацию об объекте:

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

Атрибуты объекта содержатся в начале заголовка ЕРА. Содержимое байта атрибутов проверяется всякий раз, когда системный указатель используется для обращения к объекту. Первый атрибут указывает, является ли объект постоянным или временным. Этот атрибут, значение которого также задано битом существования в заголовке сегмента, повторяется здесь для облегчения проверки.

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

При разрушении постоянного объекта его адресное пространство повторно не используется, что устраняет необходимость поиска всех указателей на удаленный объект, чтобы пометить их как недействительные. Это снимает также проблемы защиты и целостности, которые возникают в тех случаях, когда на место удаленного объекта распределяется новый, а у какогонибудь пользователя сохранился указатель на старый объект. В других системах применяются сложные схемы "сборки мусора" для поиска указателей на удаленный объект. В AS/400 это не нужно1). При этом дисковое пространство, за исключением занятого заголовками удаленного объекта, очищается.

Можно выделить два вида повреждения объекта: жесткое и мягкое. Жесткое означает, что объект невозможно использовать по назначению — он поврежден безвозвратно, его лучше удалить. В случае мягкого повреждения из объекта все же можно извлечь некоторые данные. При обнаружении такого повреждения OS/400 начинает процесс восстановления.

Бит поврежденности используется для индикации проблем с объектами в MI. Один из основных определителей повреждения — компонент управления памятью. Источник повреждений — плохие сектора на диске. Если компонент управления памятью не способен считать сектор, он сообщает об этом установкой бита повреждения.

Другие биты заголовка ЕРА указывают на наличие группового доступа к данному объекту, на выполнение трассировки объекта и участие его в транзакции. Подробнее эти атрибуты будут рассмотрены в лекции 6.

Для идентификации объекта в заголовке ЕРА зарезервировано три поля. Одно из них содержит тип объекта, а другое — подтип. Тип объекта — один из типов системных объектов MI. Поле подтипа определяется пользователем, при этом программисты OS/400 рассматриваются как пользователи системных объектов MI. Только для некоторых типов объектов (таких как пользовательское пространство) подтипы могут определяться за пределами Рочестера. Третье поле — поле имени, оно содержит имя объекта в контексте.

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

Некоторые поля заголовка ЕРА содержат адреса. Наиболее важны из них: адрес пользовательского профиля владельца и создателя, адрес контекста, содержащего имя объекта, адрес группы доступа (если объект входит в нее), и адрес специфического заголовка объекта. Заголовок ЕРА содержит и другую информацию, а также адреса, используемые компонентами системы, которые еще будут обсуждаться.

Примеры объектов

На рисунке 5.9 приведено четыре примера системных объектов. Простейшим системным объектом является пространство, занимающее лишь один сегмент. У него есть только заголовки сегмента и ЕРА и пространство для данных пользователя.

Пример объекта, занимающего два сегмента — независимый индекс, обычно называемый просто индексом. Его основное назначение — поддержка пользовательского индекса OS/400. Базовый сегмент индекса содержит заголовки сегмента и ЕРА, заголовок (специфический) индекса и двоичное дерево. В следующей лекции мы увидим, как двоичное дерево используется в AS/400 для реализации индексов. Второй сегмент индекса — сегмент ассоциированного пространства, то есть байт типа в заголовке этого сегмента указывает, что это ассоциированное пространство. Этот сегмент также содержит пользовательские данные для индекса.

Кроме того, на рисунке 5.9 показаны два примера объектов, занимающих три сегмента.

Структура системного объекта - student2.ru


Рис. 5.9. Примеры объектов

Первый из них — программа. Базовый сегмент программы содержит заголовки сегмента и ЕРА, заголовок (специфический) программы, последовательность команд и код инициализации программы. Второй сегмент занят ассоциированным пространством, содержащим пользовательские данные для программы. Третий — это сегмент таблицы определения материализации MDT (materialization definition table), содержащий шаблон и карту объектов программы, необходимые для материализации программы. При удалении пользователем шаблона программы, третий сегмент исчезает, и программа занимает только два сегмента.

Последний объект на рисунке — индекс области данных. Как всегда, базовый сегмент содержит заголовки сегмента и ЕРА, заголовок (специфический) индекса области данных, альтернативную таблицу сортировки для этого индекса, таблицы индекса и двоичное дерево. Второй, как обычно, — сегмент ассоциированного пространства. Третий — сегмент отложенной коррекции. Для индекса области данных можно запросить отложенную коррекцию. В этом случае изменения, такие как добавление или удаление ключа, не вносятся в индекс немедленно. Вместо этого, информация о них записывается в сегмент отложенной коррекции до момента следующего открытия файла. Отложенная коррекция позволяет не ждать завершения операции коррекции, пока индекс используется. Однако прежде чем индекс используют в следующий раз, изменения будут внесены.

Выводы

Объекты предоставляют средства управления и защиты системных ресурсов AS/400. Правила именования и адресации практически всех элементов системы привязаны к объектам. То же самое можно сказать и о защите. Объекты также используются для эффективного разделения информации между пользователями системы. Благодаря инкапсуляции и строгому определению набора возможных операций над объекта ми, в AS/400 обеспечен такой уровень целостности и независимости от технологий, о котором нельзя и помыслить в других системах.

Объекты — основа AS/400. Они не были добавлены поверх существующей системы, как это часто бывает. Объекты были частью AS/400 с самого начала.

Многие из объектов, представленных в этой лекции, используются компонентами системы, описанными в оставшейся части книги. В следующей лекции, мы рассмотрим интегрированную базу данных AS/400. В состав этой базы данных входят многие объекты, с которыми мы уже познакомились.

Машины баз данных

Интегрированная база данных

В этой лекции мы рассмотрим все возрастающую роль баз данных и то, как AS/400 удается держать первенство в этой области. Мы остановимся также на истории DB2/400 и на том, как она интегрирована в AS/400.

Структура системного объекта - student2.ru

Структура системного объекта - student2.ru

В сегодняшнем бизнесе конкуренция постоянно усиливается. Чтобы достичь успеха приходится производить больше продукции за меньшую стоимость и быстрее, чем раньше. В нашем стремительном мире остановиться — значит проиграть. Как сказал, однажды американский философ Йоги Берра (Yogi Berra), "рано быстро становится поздно".

Очень часто выжить в условиях острой конкуренции помогают оперативные данные. Многие бизнесмены понимают теперь, что информация — возможно, самое ценное, что у них есть. Часто выборка, обновление и сохранение данных повседневной деятельности выполняются некоторой прикладной программой, например, бухгалтерской или приема заказов. Мы, специалисты, обычно, называем программы такого типа приложениями оперативной обработки транзакций OLTP (online transaction processing). Приложение OLTP часто интерактивно, то есть обновление данных происходит в процессе оперативных транзакций. Для легкого и быстрого доступа к оперативной информации сегодня ее обычно хранят в реляционной базе данных.

Компьютерная революция позволила легко собирать и дешево хранить большие объемы оперативных данных. Многие компании хранят свои данные за многие годы, веря, что это может когданибудь пригодиться. Но у большинства из них остается вопрос: "Мы знаем, что внутри этих данных скрыта бесценная информация о наших рынках сбыта, товарах, услугах и клиентах. Но как извлечь эту информацию?" Традиционно, анализ данных в поисках необходимой информации выполнялся вручную. Но в последние несколько лет стало очевидно, что автоматизация анализа данных не только значительно облегчает этот процесс, но и экономически выгодна. Часто ПО анализа данных называют системами поддержки принятия решений (decisionsupport), и говорят о преобразовании данных сначала в информацию, а затем в знания.

Словосочетания складирование данных (data warehousing) и разработка данных1) (data mining), еще несколько лет назад известные лишь узким специалистам, стали частью повседневного словаря делового человека. Рассказы в прессе о компаниях, которым с помощью этих технологий удалось выйти на передовые позиции в своей отрасли, побудили многие фирмы следовать тем же путем. Хранилища данных, где накапливается информация из собранных оперативных данных, — возможно, одна из наиболее быстро распространяющихся информационных технологий для бизнеса. Некоторые консультанты предсказывают, что в следующие несколько лет примерно треть всех расходов на информационные технологии будет связана с ней.

Какое отношение все это имеет к AS/400? Вероятно, в ближайшие несколько лет с помощью AS/400 будет реализовано больше хранилищ данных, чем с помощью какой-либо другой системы. Причина проста: именно DB2/400 — база данных AS/400 — наиболее широко используемая многопользовательская база данных во всем мире, и именно под ее управлением сосредоточен наибольший объем оперативных данных. Обычно, этот факт удивляет даже в заказчиков AS/400. IBM не продает DB2/400 как отдельный продукт, поэтому многие просто не знают о ее позициях на рынке и часто считают наиболее широко распространенными базы данных от Oracle, Sybase или Microsoft. Очень немногие знают о DB2/400.

Учитывая объем данных, хранящихся в базах DB2/400, можно представить, сколь много хранилищ данных будет создано на AS/400. По оценке IBM более 60 процентов заказчиков AS/400 в следующие несколько лет станут использовать те или иные системы поддержки принятия решений. В этой лекции мы рассмотрим все возрастающую роль баз данных и то, как AS/400 удается держать первенство в этой области. Мы остановимся также на истории DB2/400 и на том, как она интегрирована в AS/400. Но сначала, давайте разберемся, что такое DB2/400?

База данных без имени

Много лет назад мы решили интегрировать мощную реляционную базу данных в каждую System/38. Затем эта идея перекочевала и в AS/400. Мы считали, что способность полнофункциональной системы управления базой данных (СУБД) эффективно и надежно обрабатывать большие объемы информации, станет хорошей основой всех приложений для бизнеса. Вместо того, чтобы делать базу данных отдельным продуктом, мы просто встроили ее, даже не побеспокоившись об отдельном имени. Незаметно для глаз многие годы безымянная база данных тихо делала свое дело. В результате, даже не все наши заказчики (40 процентов, как показали проведенные несколько лет назад исследования) знают, что на них ежедневно работает такая мощная база данных.

Это и хорошо, и плохо. Хорошо, что многие заказчики не предпринимали никаких специальных усилий для управления своей базой данных, а просто пользовались, не испытывая при этом никакой потребности в помощи администратора базы данных. (Этим база данных AS/400 отличается от некоторых других, для управления которыми требуется персонал).

Плохо же то, что некоторые пользователи в один прекрасный день решили добавить на свои AS/400 базу данных, не зная, что она там уже есть. Действительно, пользователи почти всех современных компьютерах, включая ПК, отдельно покупают и интегрируют в систему реляционные базы данных. Поэтому, решили такие заказчики, несомненно, стоит потратиться и установить реляционную базу данных и на AS/4002).

Кроме того, нам, сотрудникам IBM, было трудно объяснить, где собственно находится база данных AS/400, так как она не сосредоточена в одном месте. Интегрированная природа системы ведет к тому, что база распределена по всей системе. С другой стороны, обычные базы данных — это отдельные программные компоненты, работающие поверх ОС. Чтобы добраться до обычной базы данных, программе необходимо пройти через ОС или использовать совершенно отдельный интерфейс.

Между тем, интегрированная частично над MI, и частично в SLIC, база данных AS/400 более эффективна, чем базы, построенные поверх существующих систем. База данных AS/400 тесно связана с другими компонентами системы и взаимодействует с ними способами, недоступными обычным базам.

В 1994 году мы решили дать своей базе данных имя, выбрав "DB2 для OS/400" в отражение того, что наша база данных — часть семейства реляционных баз данных IBM DB23). Фамильное сходство заключается, в основном, во внешних утилитах и поддержке распределенных баз данных. Внутренне каждый продукт реализован посвоему. Но имя DB2 все помогает устранить впечатление, что у AS/400 нет современной, надежной базы данных.

Интегрированная база данных AS/400 решает проблемы бизнеса с помощью новейших информационных технологий. Рост популярности хранилищ данных и средств их обработки среди заказчиков AS/400 — доказательство мощности этой системы. Не приходится удивляться, что среди прочих новых технологий многие пользователи предпочитают именно ее.

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

Хранилища данных

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

Следует ясно понимать, что хранилище данных — это концепция, а не конкретный продукт. Это набор средств для систематизации информационных данных, их хранения и анализа для принятия решений. Хранилище данных AS/400 состоит из четырех основных компонентов, а именно:

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

Преобразование оперативных данных в информационные

Создание хранилища данных требует преобразования оперативных данных в информационные. Для этого используются так называемые средства трансформации (transformation tools) или средства преобразования (propagation tools). Их задача — не просто извлечь данные из одной или нескольких оперативных баз, но и преобразовать их в форму, подходящую для хранения.

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

Программа может проанализировать собранные данные для прогноза потребностей в товарах, или для оценки доходов по сравнению с прошлым годом. Для анализа такого типа — быстрого выявления тенденций и потенциальных проблем — данные должны быть преобразованы. Аналитической программе нужна сводка информации из оперативной базы. Средства преобразования периодически собирают с компьютеров оперативные данные, трансформируют их в сводный формат и помещают в хранилище данных. Обратите внимание, что большинству аналитических программ не требуется постоянная синхронизация данных в хранилище и оперативных. Автоматическое обновление хранилища данных осуществляется с разной периодичностью: раз в неделю, раз в день или каждые 10 минут. Есть много программ как IBM, так и других производителей, позволяющих выбирать данные из баз (DB2 или других) и импортировать их непосредственно в склад данных AS/400.

Серверы баз данных

Несколько лет назад IBM представила специальные модели AS/400, названные серверными. Они созданы для работы в качестве серверов баз данных, серверов коммуникаций и пакетной обработки. В эти модели внесены улучшения, специально предназначенные для приложений хранилищ данных. Мы еще вернемся к серверным моделям, а сейчас давайте, подробней поговорим об улучшениях в DB2/400.

Итак, два важнейших аспекта поддержки хранилищ данных — параллельная обработка и многомерные базы данных (MDD).

Параллельная обработка

Различные приемы параллельной обработки позволяют базе данных полностью задействовать все аппаратные возможности. Выборка и анализ больших объемов информации может требовать очень больших ресурсов. По счастью, при обработке базы данных доступ к ней может осуществляться параллельно, после чего собранные данные можно анализировать независимо и также параллельно. Обработка баз данных — один из примеров практического использования массового параллелизма, который мы вкратце затронули в лекции 2.

IBM несколько модифицировала AS/400 и DB2/400, что позволило применить массовый параллелизм при работе с базой данных. Впервые поддержка параллельной обработки ввода-вывода появилась в V3R1, что позволило воспользоваться возможностями аппаратной архитектуры AS/400, имеющей как основные процессоры, так и вспомогательные, и ввести параллельную обработку на уровне процессора ввода-вывода (IOP) для одного задания. Мы подробно рассмотрим IOP в лекции 10, а сейчас, забегая вперед, скажу, что в мощной AS/400 их может быть установлено несколько сотен, причем к разным IOP подключают множество дисковых накопителей. Параллельный ввод-вывод позволяет обрабатывать пользовательский запрос к базе данных несколькими IOP одновременно. Таким образом, устраняется одна из самых серьезных проблем, мешающих многим системам достичь высокой производительности: задержки при выполнении ввода-вывода.

В лекции 2 мы говорили о поддержке SMP в AS/400, когда все основные процессоры работают параллельно с общей памятью. При большинстве видов обработки отдельные задания выполняются на разных процессорах, при необходимости используя общие области памяти. При обработке запросов к базе данных каждый основной процессор может обрабатывать часть задачи. Именно так работает средство параллельной обработки DB2/400. Запрос разбивается на отдельные, независимые подзапросы, которые выполняются параллельно несколькими основными процессорами, что позволяет значительно сократить время обработки. Задать использование нескольких процессоров при обработке запроса можно с помощью соответствующей опции команды "CHGQRYA" (Change Query Attribute).

Данный метод повышает производительность таких запросов, как поиск в таблице, группирование (groupby), поиск в индексе и соединение (join). Поддержкой параллельной обработки базы данных на системах SMP пользуются также некоторые внутренние функции SLIC, например, построение индекса (подробно об этом мы поговорим в разделе "Машинный индекс"). Параллелизм присутствует на всех системах версий 3 и 4, но параллельное построение индекса — только на RISC-системах.

AS/400 также поддерживает конфигурации MPP. При этом несколько систем AS/400 с помощью высокоскоростных линий соединяются друг с другом в кластер. Один из способов такого соединения — через волоконнооптический кабель с помощью продукта OptiConnect. Для объединения машин серии AS/400е подходит также соединение SAN, позволяющее достичь еще больших скоростей. Распределение базы данных по дискам всех систем кластера позволяет создавать очень большие базы, с которыми параллельно работают несколько сотен процессоров.

IBM называет такую конфигурацию MPP слабо связанной параллельной системой базы данных, в связи с отсутствием разделения памяти за пределами отдельной системы в кластере. Здесь используется подробно обсуждавшийся в лекции 2 подход sharednothing, похожий на тот, что применяется в SP2. Различие в том, что узлы кластера AS/400 находятся в разных физических корпусах, но, несмотря на это, для пользователя кластер выглядит как единая база данных.

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

Приложение, выполняющееся на любом компьютере кластера, может работать с базой так, как если бы она полностью размещалась на этом компьютере. Распределенность базы по узлам кластера делает DB2/400 прозрачной как для приложений, так и для конечного пользователя. Для задания имен системам в группе узлов в CL были введены новые команды, к некоторым командам были добавлены новые параметры для поддержки распределения файлов базы по узлам. После рассредоточения по узлам, файл при выполнении операций вставки, обновления и удаления выглядит как локальный.

Главное преимущество слабо связанных параллельных систем — отсутствие верхнего предела количества узлов, что означает практически неограниченный рост производительности и емкости. Возможности расширения концепции кластеров AS/400 в будущем мы рассмотрим в лекции 12.

Многомерные базы данных (MDD)

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

AS/400 поддерживает многомерные структуры данных непосредственно в самой базе данных DB2/400 или с помощью продуктов, разработанных бизнес-партнерами. Преимущество многомерных структур данных состоит в возможности быстро получить ответ на поставленный вопрос в виде среза данных по любому измерению или прохода сквозь структуру для получения данных новых уровней. Поскольку время ответа на запросы обычно очень мало, такой многомерный анализ часто называют оперативной аналитической обработкой OLAP (online analytical processing).

Иногда различным подразделениям одной организации требуются информационные данные в разных формах. Внутри MDD можно создавать специализированные хранилища данных (data mart), которые содержат информационные данные, соответствующие потребностям конкретного отдела или рабочей группы. В этом случае хранилище данных всей организации состоит из набора таких специализированных хранилищ для отдельных структурных единиц4).

Наши рекомендации