ISAM
| Company type | Software / Data management technique |
|---|---|
| Industry | Computer software, Database management |
| Founded | 1960s |
| Founder | IBM |
| Products | Indexed Sequential Access Method (ISAM) |
| Parent | IBM |
Indexed Sequential Access Method (ISAM) is a technique used for creating, managing, and accessing computer files that allows retrieval of records either sequentially or randomly through one or more key values. By using indexes on key fields, indexed files facilitate rapid data access. Originally developed by IBM for mainframe computer environments, ISAM is now widely supported across various platforms.
The designation ISAM encompasses several related ideas:
- The IBM ISAM product along with its underlying algorithm.
- A type of database system where developers interact with indexes directly via an application programming interface, contrasting with relational databases that rely on a query optimizer to determine index usage.
- An indexing approach that supports both sequential and keyed data retrieval. Modern databases typically employ variants of the B-tree, differing from the initial IBM ISAM and VSAM designs.
- More broadly, any form of database indexing.
Organization
ISAM arranges data into fixed-size records stored in a sequence sorted by key. Auxiliary records known as indexes reference the locations of these records, allowing direct access without scanning the entire dataset. Unlike contemporary navigational database models where pointers are embedded within records themselves, ISAM uses compact indexes that can often be held in memory for swift searching, enhancing performance. Updates affect only the specific tables and their corresponding indexes.
At creation, ISAM index nodes have fixed pointers that do not change during insertions or deletions; only the contents of leaf nodes are modified. When insertions exceed available space, overflow chains form and can grow considerably if insertions outnumber deletions, which may degrade retrieval speed.
Relational databases build upon ISAM by incorporating mechanisms to maintain pointer integrity. Indexed foreign key columns facilitate efficient lookups. Although this method is slower than using direct pointers, it permits rearranging data layouts without needing pointer adjustments.
The straightforward nature of ISAM lies in direct file access; however, each client must handle its own connections, which can lead to conflicts during inserts and inconsistent states. Some ISAM implementations provide locking at either the full-file or individual record level to reduce conflicts; nonetheless, locking multiple records can cause deadlocks unless carefully managed. These challenges are commonly addressed through a client–server architecture that controls request sequencing. Certain client–server ISAM solutions also support comprehensive ACID transaction capabilities—core features of a full-fledged database management system (DBMS) built atop the storage layer.
IBM eventually superseded ISAM with the VSAM. Subsequent advancements include SQL/DS and Db2, IBM’s flagship database management system, which utilizes VSAM as its underlying physical storage method.
OpenVMS
Within the OpenVMS operating system, the Files-11 file system works alongside RMS (Record Management Services), delivering a uniform data organization and access interface compatible with various 3GL and 4GL programming languages. RMS offers four modes of data access: sequential, relative record number, record file address, and indexed access.
Indexed access performs efficiently only when files follow the ISAM structure with predefined keys, enabling exceptionally rapid data retrieval. It supports multiple overlapping keys as well as key compression within hash tables. Tools are available to define or modify keys in existing files. Records can be removed, with "garbage collection" managed separately by dedicated utilities.
Design considerations
IBM engineered the ISAM system with the goal of reducing computer memory consumption, which consequently increased the workload on the Input/Output channel, control unit, and disk subsystems. An ISAM file comprises data records alongside two or three tiers of indexes: the track index (representing the highest key value on each disk track), the cylinder index (indicating the highest key per cylinder and containing the disk address for the track index), and, for larger datasets, an optional master index.
Once data records are stored, they remain fixed in place; any newly inserted records are directed to an overflow area. To locate a record by key, a search is performed through disk indexes using a sophisticated self-modifying channel program, which results in increased utilization of the channel, control unit, and disk resources. With improvements in both physical and virtual memory capacities, this methodology was recognized as suboptimal, prompting the creation of VSAM to better balance memory allocation and disk operations.
The use of self-modifying channel programs in ISAM also posed challenges for CP-67 compatibility with OS/360, since CP-67 would copy entire channel programs into fixed memory during I/O processes and convert virtual addresses into real ones.
ISAM-style implementations
- Advantage Database Server database management system
- Berkeley DB
- Btrieve
- FairCom DB
- C-ISAM
- Proprietary database system DataFlex
- dBase along with associated products like Clipper and Foxpro
- Digital Equipment Corporation's Record Management Services
- Enscribe, HP Tandem's structured file access method
- Extensible Storage Engine
- Access Database Engine (ACE, formerly known as JET), utilized by Microsoft Access
- MySQL, which implements and extends ISAM through its MyISAM storage engine
- Paradox
- pblIsam, an open-source implementation written in C under GPL
- The Superbase database family
- Traditional flat file databases such as dbm