VSAM (Virtual Storage Access Method)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 18:19, 11 декабря 2016.

VSAM (англ. Virtual Storage Access) является относительно новым способом организации файлов для пользователей операционных систем IBM OS/VS and DOS/VS[примечание 1]. Записи VSAM могут быть постоянной или переменной длины. Они организованы в виде блоков фиксированного размера, называемых контрольными интервалами, а затем и в более крупные куски, называемыми контрольными областями. Размеры контрольного интервала измеряются в байтах, а размер контрольных областей - в дорожках диска. Контрольные интервалы являются единицами переноса между диском и компьютером, так что в ответ на запрос о чтении будет прочитан один контрольный интервал. Контрольные области являются единицами распределения, поэтому, когда определяется набор данных VSAM, будет выделено целое число контрольных интервалов.

Пользовательские программы могут получить доступ к наборам VSAM данных через операторы определения данных (Data Definition Statements) в Job Control Language (JCL) или через динамическое выделение или в Customer Information Control System (CICS)[примечание 2][ссылка 1]

История

VSAM появился как замена старым методам доступа. Он предназначался для реализации дополнительных функций, для простоты использования большей, чем у предшественников, а также для преодоления проблем производительности и зависимости от других устройств. Он был представлен в 1970 году, когда компания IBM анонсировала операционные системы с виртуальной памятью (DOS / VS, OS / VS1 и OS / VS2) для своей новой системы 370 серии в качестве преемников операционных систем DOS/360 и OS/360, запускающихся на 360 серии. Сохраняя обратную совместимость, предшествующие методы доступа имеют проблемы с производительностью ввиду присутствия трансляции адресов, требующихся для виртуальной памяти.

Метод KSDS был создан на замену ISAM, индексированному последовательному методу доступа. Изменения в устройстве диска привели к тому, что поиск данных методом ISAM стал довольно неэффективным. Также этим методом было трудно перемещать наборы данных, поскольку они содержали указатели на области физического диска, которые становились недействительными при перемещении данных. IBM также предоставила совместимый интерфейс, который позволял программам, нацеленными на работу с ISAM, работать с KSDS.

Метод RRDS был создан на замену BDAM, прямому методу доступа. В некоторых случаях, наборы данных BDAM встроенные указатели, что предотвращает их от перемещения.

Линейные наборы данных были добавлены позже согласно методу VSAM RLS, а затем и Transactional VSAM.

Организация VSAM

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

Организация каталога

Каталог записей хранятся в двух компонентах: базовой структуре каталога (BCS) и томе наборов данных VSAM (VVDS). Отношение между BCS и VVDS один-ко-многим. Это означает, что BCS может указывать на несколько VVDS, и наоборот. Основная функция BCS - указывать на тома, в которых находится набор данных. BCS создается, когда пользовательский каталог определяется использованием AMS (метода доступа к службам). На одном томе может быть несколько BCS, но эти структуры не могут находиться на тех томах, на которых хранятся наборы данных.

Записи в VVDS и BCS состоят из ячеек и подъячеек переменной длины. Два типа ячеек часто называют запись тома VSAM (VVR) запись, не относящаяся к тому VSAM (NVR). Они обе содержаться в VVDS. VVR содержит информацию, касающуюся наборов данных VSAM, а NVS содержит данные о SMS-управляемых наборах данных.

BCS содержит нижеприведенную информацию:

  • Том - тома, с которыми связан набор данных
  • Права владения - дата создания и дата окончания
  • Ассоциации - информация, относящаяся к пути, индексам, названиям каталогов
  • Информация о классе SMS

VVDS содержит:

  • Характеристики наборов
  • Описание расширения - позволяет более 16 расширений
  • Имя каталога
  • Основная информация - например, тип набора
  • Информация о классе SMS

VTOC содержит только описание расширения. Уникальность метода доступа к каталогу в том, что он может быть открыт для каждого пользователя отдельно, то есть в его адресном пространстве. Это привело к ситуации, проиллюстрированной на рисунке 1.

Рис.1. Активность в адресном пространстве пользователей, связанная с набором данных

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

С ее введением запрос к функции каталога, который обычно проходит как вызов SVC, передается в CAS с использованием сервисов памяти OS/390. На 2 рисунке показано, как изменился подход к доступу к каталогу с появлением CAS.

Рис.2. Доступ с использованием CAS

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

  • Оператор ввел команду на закрытие каталога
  • Адресное пространство CAS уничтожается или перезагружается оператором
  • Максимально возможное количество открытых каталогов достигнуто

В целях дальнейшего повышения быстродействия были введены два типа кэш-памяти:

  • Внутренний кэш каталога (ISC)
  • Кэш данных каталога (CDSC)

ISC задан по умолчанию и кэширует в пределах адресного пространства CAS, а CDSC кэширует в пространстве данных, связанным с CAS с помощью виртуальной функции VLF.

Организация данных

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

VSAM организует данные по ключу, относительному количеству или относительным байтовым адресам. Используется VSAM для прямой или последовательной обработки фиксированных или переменных длин записей в DASD. VSAM кластеры и компоненты находятся в каталогах для облегчения поиска. VSAM поддерживает 5 кластеров:

  • Индексированная организация (KSDS)
  • Последовательная организация (ESDS)
  • Относительная организация (RRDS): с фиксированной длиной (RRDS) и переменной длиной (VRRDS)
  • Линейная организация (LDS)
  • Иерархическая файловая система (HFS)[ссылка 2]

Индексированная организация (KSDS)

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

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

  • Во всех записях длина ключа должна быть одинаковой и варьироваться от 0 до 255 байт
  • Во всех записях смещение ключа должно быть одинаковым относительно начала записи
  • Значение поля ключа должно быть уникальным
  • После установки значение ключа не может быть изменено. Однако вся запись может быть удалена
  • Если вся запись должна быть сжата, то поля только справа от поля ключа сжимаются
  • В сцепленной записи это поле должно быть расположено полностью в первом контрольном интервале

Схема ниже иллюстрирует структуру этого типа организации данных.

Рис.3. Структура KSDS

Доступ к набору данных может быть получен тремя способами:

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

Последовательная организация (ESDS)

Для него можно определить индекс, чтобы можно было получать доступ к данным по ключу. Записи при такой организации хранятся в той последовательности, в которой они были записаны по адресам. Записи загружаются независимо от их содержания, и их адреса не могут быть изменены. Доступ к ним может быть получен последовательно, то есть в том порядке, в котором они были записаны. Это означает, что в случае попытки получения доступа к конкретной записи этот процесс будет включать в себя просмотр всех записей с самого начала и до тех пор, пока не найдет нужную запись.Также для доступа можно использовать относительный физический адрес (Relative byte address, RBA), то есть набор байтов от начала файла для начала чтения. Ключ в этом типе роли не играет.

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

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

Доступ к записи можно получить последовательно или через RBA несколькими способами:

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

Ниже представлена структура этой организации.

Рис.4. Структура ESDS

Пустое пространство не используется (Unused space).

Относительная организация (RRDS)

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

Поскольку слот может содержать данные или быть пустым, запись может быть вставлена или удалена без влияния на позицию остальных записей. RDF показывает, занят ли слот или свободен. Свободное пространство не предоставляется, так как весь набор данных разделен на слоты фиксированной длины. Также могут быть и пустое пространство, называемое неиспользуемым. Оно является результатом CI внутренней фрагментации. Этот тип позволяет делать выборку записей по их номеру: запись 1, запись 2 и так далее. Это обеспечивает возможность произвольного доступа. Такой тип используется компьютерной системой хранения данных. Концепция этого способа схожа с последовательной организацией данных, однако здесь нет возможности получения доступа по ключу.

Ниже представлена структура этой организации.

Рис.5. Структура RRDS

Доступ может осуществляться последовательно, непосредственно, или третьим способом:

  • Последовательный способ схож с последовательным способом в ESDS. Пустые слоты автоматически пропускаются
  • Прямой доступ может быть реализован применением RRN в качестве ключа. Вычисляется RBA и получается доступ к соответствующей записи.
  • Третий способ схож с предыдущим за исключением поддержки позиции. Записи обрабатываются в порядке возрастания RRN.

Относительная организация (VRRDS)

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

Поскольку записи имеют произвольную длину, здесь не может быть использован поиск по RBA. В некотором смысле, такой тип организации данных является типом KSDS, в котором обрабатывается вместо ключа RRN. Индекс и данные образуют кластер. Аргументом поиска является RRN, указывающий на RBA соответствующей записи в наборе данных. Вы можете определить свободное место для вставки записей и увеличение длины записи. Такая организация используется редко.

Линейная организация (LDS)

Линейная организация (LDS) - этот тип не имеет структуры и, по сути, является байтовым потоком набора данных, и такая форма является единственной в обычных файлах z/OS. Ряд функций этой операционной системы активно используют такой формат, но прикладными программами он используется редко. Линейный набор данных содержит данные, доступ к которым может быть получен как к строкам с байтовой адресацией в виртуальном хранилище. Это - набор данных VSAM с размером контрольного интервала, умноженным на 4096 байт. LDS не имеет встроенной контрольной информации в CI. Все LDS байты - это байты данных. Логические записи должны блокироваться и разблокировываться программой. В каком то смысле, LDS - набор данных не VSAM с некоторыми средствами VSAM.[ссылка 3][ссылка 4]

Структура линейной организации данных

Инструменты доступа к данным

Существует 4 типа инструментов доступа к данным VSAM:

  • Локальные общие ресурсы (LSR) - оптимизирован для случайного или прямого доступа. Доступа к LSR легко добиться от CICS.
  • Глобальные общие ресурсы (GSR)
  • Закрытые ресурсы (NSR) - оптимизирован для последовательного доступа. NSR доступ был исторически легче в использовании, чем LSR для пакетных программ
  • Распределенное управление файлами (DFM) - реализация сервера распределенной архитектуры управления данными, позволяет программам на удаленных компьютерах создавать, управлять и получать доступ к VSAM файлам

Примечание

  1. Disk Operating System, операционная система для мейнфреймов IBM, в свое время была широко используема
  2. Customer Information Control System, - это программа обработки транзакций в режиме онлайн, которая сформировала в течение последних нескольких десятилетий наиболее распространенный набор инструментов для создания приложений транзакций клиентов

Источники

  1. Википедия [Электронный ресурс]: Virtual Storage Access Method — материал из Википедии — свободной энциклопедии: Версия 729349068, сохранённая в 16:09 UTC 11 июля 2016. / Авторы Википедии // Википедия, свободная энциклопедия. — Электрон. дан. — Сан-Франциско: Фонд Викимедиа, 2016. — Режим доступа:https://en.wikipedia.org/wiki/Virtual_Storage_Access_Method
  2. IBM Knowledge Center [Электронный ресурс] : What is VSAM? / Дата обращения: 11 декабря 2016 - Режим доступа: https://www.ibm.com/support/knowledgecenter/zosbasics/com.ibm.zos.zconcepts/zconcepts_169.htm
  3. edwardbosworth [Электронный ресурс] : Virtual Storage Access Method / Дата обращения: 11 декабря 2016 - Режим доступа: http://www.edwardbosworth.com/My3121Textbook_HTM/MyText3121_Ch28_V01.htm
  4. IBM [Электронный ресурс] : VSAM Demystified / Дата обращения: 11 декабря 2016 - Режим доступа: http://www.redbooks.ibm.com/redbooks/pdfs/sg246105.pdf