Открыть сервис

Virtual Storage Access Method

Virtual Storage Access Method (VSAM) — это метод доступа к данным и система управления файлами, разработанная корпорацией IBM для своих мейнфреймов, работающих под управлением операционных систем z/OS, OS/390 и предшествующих им (MVS, OS/VS2). VSAM обеспечивает эффективное хранение, организацию и извлечение записей в прямом и последовательном порядке, используя виртуальную память для оптимизации операций ввода-вывода. Система была впервые представлена в начале 1970-х годов и с тех пор остаётся одной из ключевых технологий для управления данными в корпоративных мейнфреймовых средах, особенно в банковской сфере, страховании и государственных учреждениях.

История

Разработка VSAM началась в конце 1960-х годов как часть проекта IBM по созданию новой операционной системы OS/VS2 (MVS). Основной целью было заменить устаревшие методы доступа, такие как ISAM (Indexed Sequential Access Method) и BDAM (Basic Direct Access Method), которые имели ограничения по производительности и гибкости. Первая версия VSAM была выпущена в 1973 году вместе с операционной системой OS/VS2 Release 2.

В 1980-х годах VSAM был интегрирован в систему управления базами данных IBM IMS/VS и получил поддержку транзакционной обработки. В 1990-х годах, с появлением z/OS, VSAM был расширен для работы с 64-битной адресацией и улучшенной производительностью. В 2000-х годах IBM внедрила поддержку шифрования данных на уровне VSAM и интеграцию с системами резервного копирования.

Основные типы наборов данных VSAM

VSAM оперирует четырьмя основными типами наборов данных (data sets), каждый из которых предназначен для определённого сценария использования:

Key Sequenced Data Set (KSDS)

KSDS — это индексно-последовательный набор данных, где записи хранятся в порядке возрастания ключа. Ключ — это уникальное поле фиксированной длины в начале каждой записи. KSDS поддерживает:

Entry Sequenced Data Set (ESDS)

ESDS — это последовательный набор данных, где записи хранятся в порядке их поступления. Каждая запись имеет уникальный адрес (Relative Byte Address, RBA), который может использоваться для прямого доступа. ESDS не имеет индекса по содержимому, но может быть дополнен альтернативными индексами.

Relative Record Data Set (RRDS)

RRDS — это набор данных с фиксированной длиной записей, доступ к которым осуществляется по номеру записи (Relative Record Number, RRN). Записи могут быть как фиксированными, так и переменной длины, но в классическом RRDS используется фиксированная длина.

Linear Data Set (LDS)

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

Организация хранения и управления

VSAM использует концепцию кластеров (clusters) — логических единиц хранения, которые объединяют данные и метаданные. Каждый кластер состоит из двух основных компонентов:

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

Физически данные хранятся в контрольных интервалах (Control Intervals, CI) — блоках фиксированного размера (от 512 байт до 32 Кбайт). Несколько контрольных интервалов объединяются в контрольные области (Control Areas, CA). Размер CI и CA задаётся при создании набора данных и влияет на производительность.

При вставке или обновлении записей VSAM автоматически управляет свободным пространством, распределяя записи по CI и CA. Если CI переполняется, VSAM выполняет сплитразделение данных на два новых CI. Аналогично, при переполнении CA выполняется сплит на уровне контрольных областей. Этот механизм обеспечивает динамическое расширение набора данных без необходимости ручной реорганизации.

Доступ к данным и операции

VSAM поддерживает несколько режимов доступа к данным:

  • Последовательный доступ — чтение записей в порядке их физического расположения (для ESDS и RRDS) или в порядке ключа (для KSDS).
  • Прямой доступ — чтение записи по ключу (KSDS), RBA (ESDS) или RRN (RRDS).
  • Динамический доступ — комбинация последовательного и прямого доступа, когда приложение может переключаться между режимами в рамках одного вызова.

Операции с данными включают:

  • Чтение (READ) — получение записи.
  • Запись (WRITE) — добавление новой записи.
  • Обновление (UPDATE) — изменение существующей записи.
  • Удаление (DELETE) — удаление записи (только для KSDS и RRDS).

Для работы с VSAM в z/OS используется язык управления заданиями (JCL) с операторами DEFINE CLUSTER, DEFINE ALTERNATEINDEX, LISTCAT и другими. Программы на языках COBOL, PL/I, Assembler и C могут обращаться к VSAM через стандартные макросы (например, OPEN, CLOSE, GET, PUT).

Альтернативные индексы

Для KSDS и ESDS VSAM поддерживает создание альтернативных индексов (Alternate Index, AIX). Альтернативный индекс — это дополнительный индексный компонент, который позволяет обращаться к записям по вторичному ключу (не обязательно уникальному). AIX создаётся на основе существующего набора данных и может быть как уникальным, так и неуникальным.

Процесс создания AIX включает:

  1. Определение пути (PATH) — логической связи между базовым кластером и альтернативным индексом.
  2. Построение индекса — сканирование базового набора данных и создание индексных записей.
  3. Активация индекса — включение его в систему.

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

Производительность и управление

Производительность VSAM зависит от нескольких факторов:

  • Размер контрольного интервала — большие CI уменьшают количество операций ввода-вывода при последовательном доступе, но увеличивают время сплита.
  • Коэффициент свободного пространства (Freespace) — процент незаполненного пространства в CI и CA, который задаётся при создании набора данных. Оптимальное значение (например, 10-20%) снижает частоту сплитов.
  • Буферизация — VSAM использует пул буферов в виртуальной памяти для кэширования CI. Размер пула настраивается через параметры JCL или макрос BUFND/BUFNI.

Для мониторинга и оптимизации VSAM используются утилиты:

  • IDCAMS — основная утилита для создания, удаления, копирования и реорганизации наборов данных VSAM.
  • LISTCAT — вывод каталога наборов данных с информацией о размере, свободном пространстве и состоянии.
  • DFDSS — утилита для резервного копирования и восстановления.

Применение

VSAM является основой для многих корпоративных систем, работающих на мейнфреймах IBM. Основные области применения:

  • Банковские системы — хранение счетов, транзакций и клиентских данных.
  • Страхование — управление полисами, заявками и выплатами.
  • Государственные системы — обработка налоговых деклараций, пенсионных выплат и регистрационных данных.
  • Системы управления базами данных — VSAM используется как базовое хранилище для IMS/VS и DB2 (в некоторых конфигурациях).
  • Пакетная обработка — последовательная обработка больших объёмов данных в ночных циклах.

По оценкам IBM, на 2023 год более 60% всех транзакций в крупных банках мира обрабатываются с использованием VSAM. Несмотря на развитие облачных технологий и распределённых систем, VSAM остаётся востребованным благодаря высокой надёжности, производительности и совместимости с унаследованными приложениями.

Критика и ограничения

Несмотря на широкое распространение, VSAM имеет ряд недостатков:

  • Сложность управления — реорганизация наборов данных (например, после множества сплитов) требует ручного вмешательства с использованием утилит.
  • Ограниченная гибкость — VSAM не поддерживает сложные запросы, реляционные связи или транзакционную логику, что требует использования дополнительного ПО (например, CICS).
  • Зависимость от мейнфреймов — VSAM не может быть напрямую перенесён на платформы x86 или ARM без эмуляции или миграции данных.
  • Отсутствие встроенного шифрования — в ранних версиях шифрование не поддерживалось; современные версии z/OS добавляют эту возможность, но она требует дополнительной настройки.

Интересные факты

  • VSAM был одной из первых систем, реализовавших концепцию виртуального хранения, когда данные отображаются в виртуальную память, а физический ввод-вывод выполняется прозрачно для приложения.
  • Максимальный размер набора данных VSAM в z/OS может достигать 128 терабайт (при использовании Extended Addressability).
  • В 1990-х годах IBM выпустила версию VSAM для OS/2, которая позволяла работать с наборами данных на персональных компьютерах, но она не получила широкого распространения.
  • VSAM используется в системах резервного копирования IBM Tivoli Storage Manager (TSM) для хранения метаданных.

Источники

  • IBM Corporation. z/OS DFSMS: Using Data Sets. — IBM Redbooks, 2021.
  • IBM Corporation. VSAM Demystified. — IBM Redbooks, 2003.
  • Ranade, J. VSAM: Performance, Design, and Fine-Tuning. — McGraw-Hill, 1992.
  • IBM Corporation. z/OS V2R5 DFSMS: Access Method Services. — IBM Knowledge Center, 2023.
  • Книга «Основы z/OS и VSAM» (под ред. А. В. Смирнова), 2019.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →