Content deleted Content added
NapoliRoma (talk | contribs) Adding local short description: "IBM disk file programming interface", overriding Wikidata description "IBM disk file storage access method" |
used -> supported |
||
(10 intermediate revisions by 5 users not shown) | |||
Line 18:
Both [[IMS/DB]]{{fact|date=April 2021}} and [[IBM Db2|Db2]]<ref name="demystified"/>{{rp|41}}<ref>{{cite web
|url=https://www-01.ibm.com/servers/resourcelink/svc00100.nsf/pages/izodav110sc279034/%24file/azk1b100.pdf
|title=User's Guide|date=16 February 2024 }}</ref> are implemented on top of VSAM and use its underlying [[data structure]]s.
==Files==
The physical organization of VSAM data sets differs considerably from the organizations
A VSAM file is defined as a cluster of VSAM components, e.g., for KSDS a DATA component and an INDEX component.
Line 35:
===Sequential organization===
An '''entry-sequenced data set''' ('''ESDS''') is a type of [[data set (IBM mainframe)|data set]] organization supported by VSAM.<ref name="demystified"/>{{rp|5}} Records are accessed based on their sequential order, that is, the order in which they were written to the file;<ref>{{cite web|url=https://walton.uark.edu/enterprise/IBM/systemZ/downloads/module3/VSAM-Introductory.ppt|title=VSAM: introductory}}</ref><ref>{{cite web |title=Server Functionality |url=https://supportline.microfocus.com/documentation/books/tps62/mafunc.htm |quote=Sequential (VSAM ESDS – Entry Sequenced Dataset)}}</ref><ref>{{cite web|url=http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.469.8853&rep=rep1&type=pdf|quote=An ESDS VSAM data set contains records in the order in which they were entered|title=ABCs of z/OS System Programming Volume 3|citeseerx=10.1.1.469.8853}}</ref> which means that accessing a particular record involves searching all the records [[Sequential access|sequentially]] until it is located, or by using a relative physical address (''Relative byte address'', RBA), i.e. the number of bytes from the beginning of the file to start reading.<ref name="demystified"/>{{rp|28}}
While an ESDS has no key), alternate indexes (AIXs) may be defined to permit the use of fields as keys.<ref>{{cite book
| first1 = P.
▲ |title=ABCs of z/OS System Programming Volume 3|citeseerx=10.1.1.469.8853
| last1 = Rogers
▲ }}</ref> Records are loaded irrespective of their contents and their byte addresses cannot be changed.
| first2 = G.
| last2 = Capobianco
| first3 = D.
| last3 = Carey
| first4 = N.
| last4 = Davies
| first5 = L.
| last5 = Fadel
| first6 = K.
| last6 = Hewitt
| first7 = J.
| last7 = Oliveira
| first8 = F.
| last8 = Pita
| first9 = A.
| last9 = Salla
| first10 = V.
| last10 = Sokal
| first11 = Y. F.
| last11 = Tay
| first12 = H.
| last12 = Timm
| date = April 2000
| page = 108
| section = 1.19.11 Entry sequenced data set (ESDS)
| section-url = https://www.redbooks.ibm.com/redbooks//pdfs/sg245653.pdf#page=128
| quote = Although an entry-sequenced data set does not contain an index component, alternate indexes are allowed. You can build an alternate index to keep track of these RBAs.
| ISBN = 9780738416182
| publisher = International Technical Support Organization [[IBM]]
| series = Redbooks
| url = https://www.redbooks.ibm.com/redbooks//pdfs/sg245653.pdf
| access-date = July 6, 2025
}}▼
</ref> An alternate index is itself a KSDS.
<!-- Replace with most recent? LCCN? OCLC? -->
===Indexed organization===
A '''key-sequenced data set''' (KSDS) is a type of [[data set (IBM mainframe)|data set]] supported by VSAM.<ref name="demystified"/>{{rp|5}} Each record in a KSDS data file is embedded with a unique key.<ref name="demystified"/>{{rp|20}} A KSDS consists of two parts, the data component and a separate [[index file]] known as the index component which allows the system to physically locate the record in the data file by its key value.<ref name="demystified"/>{{rp|13}} Together, the data and index components are called a cluster.<ref name="demystified"/>{{rp|15}}
Records can be accessed randomly or in sequence and can be variable-length.
As a [[VSAM]] data set, the KSDS data and index components consist of control intervals<ref name="demystified"/>{{rp|10}} which are further organized in control areas.<ref name="demystified"/>{{rp|12}} As records are added at random to a KSDS, control intervals fill and need to be split into two new control intervals, each new control interval receiving roughly half of the records. Similarly, as the control intervals in a control area are used up, a control area will be split into two new control areas, each new control area receiving roughly half the control intervals.<ref name="demystified"/>{{rp|17}}
While a basic KSDS only has one key (the primary key), alternate indices may be defined to permit the use of additional fields as secondary keys.<ref name="demystified"/>{{rp|15}} An alternate index
The data structure used by a KSDS is nowadays known as a [[B+ tree]].<ref>{{cite web|url=https://patents.justia.com/patent/9043295|title=US Patent for Providing record-level alternate-index upgrade locking}}</ref><ref>{{cite web|url=https://www.wisegeek.com/what-is-vsam.htm|quote=This index is called a B+ tree.|title=What is VSAM?}}</ref>
===Relative organization===
A '''relative record data set''' (RRDS) is a type of [[data set (IBM mainframe)|data set]] organization supported by VSAM.<ref name="demystified"/>{{rp|5}} Records are accessed based on their ordinal position in the file (''relative record number'', RRN).<ref name="demystified"/>{{rp|29}} For example, the desired record to be accessed might be the 42nd record in the file out of 999 total. The concept of RRDS is similar to [[sequential access]] method, but it can access with data in [[random access]] and dynamic access.{{huh|date=April 2021}}
An RRDS consists of data records in sequence, with the record number indicating the record's logical position in the data set.<ref name="demystified"/>{{rp|29}} A program can access records randomly using this positional number or access records sequentially.<ref name="demystified"/>{{rp|30}} But unlike a [[Key Sequenced Data Set]], an RRDS has no keys, so the program cannot access records by key value.
=== Linear organization ===
A '''linear data set''' (LDS) is a type of [[data set (IBM mainframe)|data set]] organization supported by VSAM.<ref name="demystified"/>{{rp|5}} The LDS has a control interval size of 4096 bytes to 32768 bytes<ref>{{cite manual|title = z/OS 2.5 DFSMS Using Data Sets|id = SC23-6855-50| section = Linear Data sets| section-url = https://www-01.ibm.com/servers/resourcelink/svc00100.nsf/pages/zOSV2R5sc236855/$file/idad400_v2r5.pdf#page=126|page = 91|date = September 30, 2021|url = https://www-01.ibm.com/servers/resourcelink/svc00100.nsf/pages/zOSV2R5sc236855/$file/idad400_v2r5.pdf|publisher = IBM}}</ref> in increments of 4096.<ref name="demystified"/>{{rp|31}} A LDS does not have embedded control information, because it does not contain control information, the LDS cannot be accessed as if it contained individual records.<ref>{{Cite web|title=IBM Knowledge Center|url=https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.1.0/com.ibm.zos.v2r1.idad400/d4261.htm|access-date=2021-02-07|website=www.ibm.com| date=27 March 2014 |language=en-US}}</ref>
Addressing within an LDS is by Relative Byte Address (RBA), which allows it to be used by systems such as [[IBM Db2]] or the Operating system.{{huh|date=April 2021}} The benefit of this is that systems such as the OS can access multiple disk spindles and view it as a single storage implementation. The limitations of this, though, is that this does not make this particularly useful to higher level abstraction levels.{{or|date=April 2021}} Data In Virtual{{sfn|ASMGUIDE|loc=Chapter 14. Data-in-virtual|pp=[https://www.ibm.com/servers/resourcelink/svc00100.nsf/pages/zOSV2R5sa231368/$file/ieaa600_v2r5.pdf#page=253 225-248]}} (DIV) and Window services{{sfn|ASMGUIDE|loc=Chapter 17. Window Services|pp=[https://www.ibm.com/servers/resourcelink/svc00100.nsf/pages/zOSV2R5sa231368/$file/ieaa600_v2r5.pdf#page=321 293-310]}} provide an alternative method to direct use of VSAM to access an LDS with a CI size of 4096.
== Data access techniques ==
Line 86 ⟶ 120:
==History==
VSAM was introduced as a replacement for older access methods<ref>{{cite manual|title = OS/Virtual Storage 1 Features Supplement |id = GC20-1752-0| date = August 1972|edition = First|url = http://bitsavers.org/pdf/ibm/370/OS_VS1/GC20-1752-0_OS_VS1_Features_Supplement_Aug72.pdf| publisher = IBM}}
▲ | id = GC20-1752-0
▲ }}
</ref> and was intended to add function, to be easier to use and to overcome problems of performance and device-dependence. VSAM was introduced in the 1970s when IBM announced [[virtual memory|virtual storage]] operating systems (DOS/VS, OS/VS1 and OS/VS2) for its new System/370 series, as successors of the [[DOS/360 and successors|DOS/360]] and [[OS/360 and successors|OS/360]] operating systems running on its System/360 computer series. While backwards compatibility was maintained, the older access methods suffered from performance problems due to the address translation required for virtual storage.
Line 109 ⟶ 136:
* [[Record Management Services]], a similar system developed by [[Digital Equipment Corporation]]
* [[Enscribe]], a similar system developed by [[Tandem Computers]]
* [[Berkeley DB]]
== Notes ==
Line 117 ⟶ 145:
* [http://www.redbooks.ibm.com/abstracts/sg246105.html?Open VSAM Demystified]
* [https://www-304.ibm.com/servers/resourcelink/svc00100.nsf/pages/zOSV2R3SC236877/$file/idat100_v2r3.pdf DFSMStvs Overview and Planning Guide]
==Further reading==
*{{cite manual|title = z/OS 2.5 MVS Programming: Assembler Services Guide|id = SA23-1368-50|date = September 30, 2021|url = https://www.ibm.com/servers/resourcelink/svc00100.nsf/pages/zOSV2R5sa231368/$file/ieaa600_v2r5.pdf|ref = {{sfnref|ASMGUIDE}}| publisher = IBM}}
*{{cite web|url=http://www.mvsforums.com/techfaqsvsam.html|title=MVS Forums - Technical FAQ's - VSAM|website=Mvsforums.com|accessdate=12 December 2017}}
==External links==
*[https://web.archive.org/web/20051023212932/http://www.lascon.co.uk/d002303.htm Lascon.co.uk]
*[https://web.archive.org/web/20070311021954/http://www.redbooks.ibm.com/redbooks/SG246105/wwhelp/wwhimpl/js/html/wwhelp.htm Redbooks.ibm.com]
*https://web.archive.org/web/20051013071230/http://www.jaymoseley.com/hercules/vstutor/vstutor.htm
*http://www.mvsforums.com/techfaqsvsam.html
*https://web.archive.org/web/20070311021954/http://www.redbooks.ibm.com/redbooks/SG246105/wwhelp/wwhimpl/js/html/wwhelp.htm
{{Mainframe I/O access methods}}
|