Набір даних (англ. data set) у термінології IBMфайл з організацією у вигляді записів[en]. Використання цього терміну почалося з появою системи OS/360, і у 21-му столітті все ще використовується її нащадками (а саме, системою z/OS). У документації на ці операційні системи традиційно використовується поняття data set («набір даних») замість звичного зараз «файл».

Як правило, набір даних зберігається на «пристрої збереження даних з прямим доступом» (такому, як дисковий накопичувач), або на «пристрої з послідовним доступом» (наприклад, стримері).[1] Втім, ввід-вивід наборів даних може здійснюватися і на старіших пристроях для вводу-виводу записів, таких як зчитувачі перфокарт[en], перфоратори, і рядкові принтери.[2]

Набори даних не є неструктурованими потоками байтів, вони структуровані у вигляді записів (англ. record),[3] а також «блокових структур», що у операційних системах IBM визначаються параметрами DSORG (англ. data set organization), RECFM (англ. record format), і іншими. Ці параметри вказуються під час «виділення» (англ. allocation) набору даних — термін, що у IBM означає «створення файлу» (наприклад, за допомогою операторів DD мови JCL). Всередині завдання параметри зберігаються всередині блоку керування даними (англ. data control block), що є структурою даних і потрібен для доступу до набору даних (зокрема, так званими методами доступу (англ. access methods).

ОрганізаціяРедагувати

У OS/360 параметр DSORG блоку DCB визначає спосіб організації набору даних. Записи можуть бути фізично послідовними (PS, англ. physically sequential), послідовними з індексацією (IS, англ. indexed sequential), розбитими на розділи (PO, англ. partitioned), або з прямим доступом (DA, англ. Direct Access). На магнітній стрічці доступ може бути лише послідовним (DSORG=PS). На інших носіях вибір організації залежить від того, яким буде доступ до даних і як записи будуть оновлюватися.

Програмний компонент для доступу до даних називається методом доступу.

Формат записів (RECFM)Редагувати

Незалежно від організації, всередині набору даних фізична структура кожного запису є однаковою і уніфікованою. Структура вказується у DCB-параметрі RECFM:

  • RECFM=F означає записи фіксованої довжини, що задається параметром LRECL.
  • RECFM=V вказує, що записи мають різну довжину. На початку V-записів додається так зване «слово опису запису» (англ. Record Descriptor Word, RDW), що містить довжину запису (ціле число) і спеціальні біти прапорів.
  • За допомогою RECFM=FB і RECFM=VB кілька логічних записів можна згрупувати у один фізичний блок[en] на магнітній стрічці чи на пристрої DASD. «FB» означає fixed-blocked, а «VB» — variable-blocked.
  • Записи RECFM=U (невизначено, англ. undefined) також мають змінну довжину, але довжина запису визначається довжиною блоку а не значенням керуючого поля.

Параметр BLKSIZE визначає максимальну довжину блока. Також можна вказувати RECFM=FBS[4], що означає fixed-blocked standard, тобто усі блоки крім останнього повинні мати довжину BLKSIZE. RECFM=VBS, або variable-blocked spanned, означає, що логічний запис може простягатися на два або більше блоки; поле прапорів RDW показує, чи сегмент запису продовжується у наступний блок, і/або чи є він продовженням попереднього.

Даний механізм усуває необхідність використання «розділювача» записів. Таким чином дані можуть бути будь-якого типу, включно з двійковими (цілі або з рухомою комою) і символьними, без ризику включення хибного символу «розділювач записів».

Набір даних, розбитий на розділиРедагувати

Набір даних, розбитий на розділи (англ. partitioned data set, PDS) — набір даних, який містить у собі декілька елементів (англ. members), кожен з яких у свою чергу містить інший набір даних (концепція, схожа на каталог у сучасних файлових системах).[5] Такий тип набору даних часто використовується для «модулів завантаження» (англ. load modules, двійкові файли програм старого формату), бібліотек програм у початкових кодах (особливо макропакети мовою асемблера), означення для Job Control Language. PDS можна умовно порівняти з форматом ZIP.

PDS може розташовуватися лише на одному томі пристрою DASD і мати максимальний розмір 65535 доріжок. PDS не може розташовуватися на магнітних стрічках.

Крім елементів, PDS також містить каталог, що полегшує доступ до окремих елементів набору. Коли за допомогою каталогу точне розташування елементу у наборі відоме, доступ до нього здійснюється як до звичайного набору даних з послідовним доступом (PS, англ. sequential data set).

При видаленні елемента з PDS місце, яке він займав, стає непридатним для зберігання інших даних. Аналогічно при «перезапису» елемента створюється новий слот наприкінці PDS, залишаючи невикористане місце усередині. Щоб позбутися таких порожніх місць потрібна часта компресія,[6] яка здійснюється за допомогою утиліти IEBCOPY[7]. Ця утиліта переміщує всі елементи ближче до початку і вивільняє всі невикористані «слоти» (у сучасному жаргоні така операція часто називається дефрагментацією або збиранням сміття; «стиснення даних» у сучасній термінології означає зовсім інше, значно складніше поняття).

Вдосконаленням цієї схеми є так звані PDS/E (англ. extended, «розширені», інколи також називаються просто «бібліотеками»), що вперше з'явилися у DFSMSdfp для систем MVS/XA і MVS/ESA. Бібліотека PDS/E може містити об'єктні файли або інші елементи, але не водночас. Метод BPAM не може обробляти бібліотеки PDS/E з об'єктними файлами.[уточнити]

Структура PDS/E схожа на PDS і використовується для зберігання таких самих типів даних. Втім, набори PDS/E мають покращену структуру каталога, яка не вимагає попереднього резервування блоків у момент створення PDS/E (і таким чином уникає ситуації нестачі блоків для каталогу). Також PDS/E автоматично зберігає елементи таким чином, що дефрагментація стає непотрібною.[6] Файли PDS/E також можуть розміщуватися лише на DASD.

ДжерелаРедагувати

  1. What is a catalog?. Архів оригіналу за 1 листопада 2018. Процитовано 20 листопада 2018. «Cataloging of data sets on magnetic tape ...» 
  2. IBM Knowledge Center - Home of IBM product documentation. publib.boulder.ibm.com. 
  3. What is a data set?. Архів оригіналу за 1 листопада 2018. Процитовано 20 листопада 2018. «data set .. a file that contains one or more records.» 
  4. Example: Record format VBS. Архів оригіналу за 28 травня 2019. Процитовано 28 травня 2019. «Variable-length, blocked, spanned (VBS)» 
  5. z/OS DFSMS Using Data Sets Version 2 Release 3. October 2, 2018. SC23-6855-30. Архів оригіналу за 29 травня 2019. Процитовано 29 травня 2019.  Проігноровано невідомий параметр |section= (довідка); Проігноровано невідомий параметр |mode= (довідка)
  6. а б Stephens, David (Oct 2008). What On Earth is a Mainframe?. Lulu.com. с. 52. ISBN 978-1-4092-2535-5. Процитовано 11 травня 2018. 
  7. z/OS DFSMSdfp Utilities Version 2 Release 3. IBM Corporation. 17 липня 2017. SC23-6864-30. Архів оригіналу за 29 травня 2019. Процитовано 29 травня 2019. «A partitioned data set will contain unused areas (sometimes called gas) where a deleted member or the old version of an updated member once resided. This unused space is only reclaimed when a partitioned data set is copied to a new data set, or after a compress-in-place operation successfully completes. It has no meaning for a PDSE and is ignored if requested.»  Проігноровано невідомий параметр |mode= (довідка); Проігноровано невідомий параметр |section= (довідка)