Data set (IBM) (Data set (IBM))
Data set (рус. Набор данных, также иногда используется транслитерация «Датасет») — термин, используемый для файловой системы мейнфреймов от IBM; коллекция из логических записей, хранящихся в виде кортежа. Набор данных можно сравнить с файлом, но в отличие от файла набор данных является одновременно и каталогом, и файлом файловой системы, и не может содержать в себе другие наборы.
На практике часто можно встретить написание в одно слово (dataset), что, строго говоря, неправильно, но допустимо. Такая практика возникла из-за того, что слово приходится использовать в контексте имени самого набора, которое не поддерживает пробелы между символами.
Описание
[править | править код]Файловая система мейнфрейма ориентирована на хранение записей (англ. records), которые являются неделимыми единицами хранения. Множество записей объединяются в группы, которые и называются наборами данных. Вне какого-либо набора запись хранится не может. Записи в наборах данных используются приложениями, например, как входные данные, либо приложение может порождать записи как продукт своей работы. Так, записями набора данных могут быть текстовые данные (например, исходные коды программ), объектные файлы, загружаемые модули, записи с конфигурационными переменными и т.д.
К набору данных можно обратиться, указав точное место его хранения, либо, если ранее для набора было зарезервировано имя в файловой системе, по имени. Наборы данных с уникальными именами, называются каталогизированными (англ. Cataloged). Наборы данных не могут вкладываться друг в друга, поэтому для имен используется система квалификаторов: имя составляется из восьмисимвольных квалификаторов отделенных друг от друга точкой, при этом имя набора не может превышать 44 символов, например USER.MYDIR.PROJ.SOURCE
. Физически наборы могут хранится на разных типах носителей (магнитные диски или ленточные кассеты), кроме того наборы могут быть размещены в виртуальной памяти.
В мейнфреймах для устройств хранения, поддерживающих прямой доступ к данным, используется термин DASD (англ. Direct Access Storage Device). DASD-устройство логически делится на тома (англ. Volumes), которые хранят разные типы наборов. Для того чтобы система знала, какие наборы хранятся на данном DASD-устройстве, она ведет специальный «мастер-каталог», или другими словами перечень каталогизированных наборов.
Сам набор данных не только объединяет записи, но и определяет правила для этих записей (формат хранения). К параметрам формата хранения относятся размер блока записи (тип блока), максимальный размер одной записи набора. Также должен быть определен тип самого набора данных, от которого зависит как он будет представлен логически (в виде непрерывной последовательности записей, в виде отделённых друг от друга членов (англ. Members) и др.).
Способы размещения наборов
[править | править код]В томах одного DASD-устройства может быть размещено множество наборов разного типа. В пределах одного устройства хранения имена наборов должны быть уникальными. Каждый том на устройстве делится на дорожки (англ. tracks). В нулевой дорожке, нулевого цилиндра хранится метка DASD, которая указывает на местоположение VTOC-оглавления тома (англ. Volume Table of Contents) — некоторый аналог MBR и GPT одновременно. VTOC хранит в себе имена всех хранящихся в томе наборов, номера дорожек, с которых каждый набор начинается, размеры и ограничения в доступе. Так как наборы привязаны к своим томам, то, при поиске набора, операционная система сначала просматривает список видимых томов, а затем, когда нужный том найден, обращается к его VTOC.
Наименьшей единицей набора, как было ранее сказано, является логическая запись, ограниченная размером LRECL
. Смежные дорожки тома, на который приходится один набор, образуют экстент. Обычно контроллер устройства хранения старается размещать наборы экстентами, так как это ускоряет доступ к ним. Чтобы эта стратегия была возможна, в VTOC ведутся записи о смежных свободных дорожках.
Файловая система мейнфрейма при чтении набора данных не ориентируется на байты самих данных, а использует информацию о формате набора (RECFM
). Формат определяет сколько байт данных может быть записано в один блок набора размером BLKSIZE
. В мейнфреймах IBM используются следующие форматы:
- F (Fixed) — фиксированный, при котором один физический блок соответствует одной логической записи, т.е.
BLKSIZE = LRECL
. - FB (Fixed Blocked) — фиксированный, блочный, при котором n логических записей объединяются в один физический блок (
BLKSIZE = n · LRECL
). - V (Variable) — переменный, при котором один физический блок соответствует одной логической записи, но при этом первые четыре байта блока зарезервированы для его описания. Два байта из четырех кодируют размер блока, благодаря чему размер каждой записи набора
LRECL
может изменяться в пределах от 4 до 32 760 байт (LRECL = 4 + <размер данных>
). - VB (Variable Blocked) — переменный, блочный, при котором несколько логических блоков переменной длины размещаются в одном физическом, или другими словами физический блок хранит несколько V-блоков. Чтобы описать размер физического блока для V-блоков, для него также резервируется 4 байта под описание (
BLKSIZE = 4 + n · LRECL
). - U (Undefined) — неопределенный, при котором переменной длины как логические записи, так и физические блоки. Такой формат используется, например, в исполняемых модулях.
Записи наборов, которые отображаются в виртуальную память (так называемые VSAM-наборы), также хранятся на DASD-устройстве, но отдельно от не VSAM-наборов, в экстентах, называемых «контрольными интервалами» (англ. Control Intervals, CI), и каталогизируются отдельно. CI устроен немного сложнее и является аналогом блока: он представлен областью, в которой друг за другом размещаются записи, после которых идут RDF поля по количеству записей (англ. Record Definition Fields) и одно CIDF поле (англ. Control Interval Definition Field). Между первым RDF полем и последней записью может быть незаполненное пространство. RDF поля описывают записи набора по отдельности, а CIDF описывает контрольный интервал в целом. VSAM-наборы используются внутри приложений.
Организация набора
[править | править код]Другой характеристикой набора является его организация DSORG
, которая подсказывает порядок его чтения и обновления. Различают следующие типы организации:
- PS (Physical Sequential) — записи размещаются последовательно и читаются последовательно. Такая организация характерна для наборов, хранящихся на магнитных лентах.
- PO (Partitioned Organization) — набор может фрагментироваться на носителе на множество частей, к каждой из которых можно обратиться по отдельности.
- DA (Direct Access) — записи набора могут располагаться в любом порядке. Доступ к каждой записи осуществляется по относительным адресам.
- IX (Indexed Sequential) — записи в наборе записываются и извлекаются по ключу.
Для каждого типа организации применим один или несколько методов доступа, которые предоставляет операционная система. Например для наборов с организацией PS применимы BSAM (Basic sequential access method) и QSAM (Queued sequential access method) методы доступа; для PO-наборов используется BPAM (Basic partitioned access method), а для DA-наборов — BDAM (Basic direct access method) метод.
С появлением виртуальной памяти, появились наборы организованные специально под неё, например KSDS, LDS, RRDS и др., для которых используется свой метод доступа — VSAM (Virtual storage access method).
Литература
[править | править код]- Mike Ebbers, John Kettner, Wayne O'Brien, Bill Ogden. Введение в современные мейнфреймы: основы z/OS = Introduction to the New Mainframe: z/OS Basics. — 2011. — P. 792. — ISBN 0738435341.
- z/OS DFSMS: Применение наборов данных = z/OS DFSMS: Using Data Sets. — 2017. — P. 704.