# IBM Information Management System

The IBM Information Management System (IMS) is a joint hierarchical database and information management system that supports transaction processing. Development began in 1966 to keep track of the bill of materials for the Saturn V rocket of the Apollo program, and the first version on the IBM System/360 Model 65 was completed in 1967 as ICS/DL/I and officially installed in August 1968.
IBM rebranded it IMS/360 in 1969, and ported it to new platforms as they emerged. In 1988, the company claimed that there were 7,000 IMS sites active worldwide. and went on to see extensive use and continual improvement to this day. IMS's most successful year in terms of sales was in 2003, 35 years after it was released. It was in use by over 95% of the Fortune 1000.

## History
### DATE and DL/1

IMS ultimately traces its history to a 1963 contract from NASA to help control the continual list of changes being made to the Apollo command and service module at the North American Rockwell (NAR) plants in Downey, California (Los Angeles area). IBM sent Uri Berman to build an application to track the latest change number for any given part on NAR's IBM 7010 mainframe computer.
Working with Rockwell's Pete Nordyke, they developed a system based on the recently introduced hard disk which could be queried by NAR's network of computer terminals spread through the engineering department. The database stored the parts number and their latest revisions, which ensured that any changes being made by the engineers were being applied to the latest version of any related parts, which they could find by looking up the relationships between the parts in the database.
The resulting system, known as DATE for "Disk Applications in a Teleprocessing Environment", was flexible due to Berman's decision to separate the portions of the system responsible for the physical storage on disk with the portions that handled user interaction. The user interaction side was realized to be a separate concept and began to be known as DL/1, for "Data Language/One". The system was installed on the 7010 in 1965.

### ICS

By the time DATE was running, the 7010 was obsolete and the entire 7000 series was replaced by the System/360 family. NAR selected the IBM System/360 Model 65 as their replacement for the 7010. As part of a port to the 360, IBM proposed an extended version of the DATE concept that could further develop the storage side of the system to allow the data format to be defined separately from the DL/1 side that would query it. This would allow the same system to be used for any sort of data by changing what would today be known as the data definition. Rockwell management was skeptical, but the technical manager, Robert Brown, was a former IBM employee and eventually came to support the concept based on the promise that it would allow it to be more easily ported.
The first formal definition was written in 1966. The team was expanded with twelve people from IBM, ten from NAR, and three from Caterpillar Tractor who also planned to use the system. The new system was known as ICS/DL/I, for "Information Control System and Data Language/Interface" The first version was completed in 1967, and officially installed at NAR on 14 August 1968 when the first "READY" message appeared on an NAR IBM 2740 terminal.

### IMS

The next year, IBM put the product on the market after rebranding it IMS/360. It has been developed and expanded continually since then, as IBM System/360 technology evolved into the current z/OS and IBM zEnterprise System technologies. In 1988, as part of its 20th year of use, IBM announced that IMS was in use at 7,000 locations. In From Airline Reservations to Sonic the Hedgehog, Martin Campbell-Kelly put the number at 30,000 at the end of 1989.
Vern Watts had worked continuously on IMS since the 1960's and was IMS's chief architect for many years. Watts joined IBM in 1956 and worked at IBM's Silicon Valley development labs until his death on April 4, 2009. For his work as the "father of DL/1", Berman received an IBM Outstanding Contribution Award and its associated $100,000.

## Database

IBM Information Management System (IMS) utilizes a hierarchical database model, distinct from IBM's later relational database model as seen in IBM Db2. In IMS, data is organized into segments (known today as records or structs), each comprising multiple fields, structured hierarchically to manage complex relationships effectively. For instance, in a customer database, a root segment at the top of the hierarchy may include fields such as phone number, name, and age. Child segments can be added beneath, such as order segments under each customer segment, representing orders placed by customers, with further child segments for individual items on each order.

## Types of IMS Hierarchical Databases

* Full Function Databases*
- Originating from the Data Language Interface (DL/I) databases developed for Apollo, full function databases support primary and secondary indexes, accessed via DL/I calls similar to SQL calls in IBM Db2 or Oracle. - These databases can be accessed through various methods, with Hierarchical Direct (HDAM) and Hierarchical Indexed Direct (HIDAM) being prominent. Other formats include Simple Hierarchical Indexed Sequential (SHISAM), Hierarchical Sequential (HSAM), and Hierarchical Indexed Sequential (HISAM). - Data in full-function databases is stored using VSAM, a native z/OS access method, or OSAM, an IMS-specific method optimizing I/O for IMS access patterns, particularly benefiting from sequential access (OSAM Sequential Buffering).
* Fast Path Databases*
- Optimized for high transaction rates, Fast Path databases include Data Entry Databases (DEDBs) and Main Storage Databases (MSDBs). - DEDBs employ direct (randomizer) access similar to HDAM in full-function databases, offering enhanced performance through high-performance access methods and asynchronous write after commit. They leverage a Unit of Work (UOW) concept for simplified online reorganization utilities starting from IMS Version 11.
* High Availability Large Databases (HALDBs)*
- Introduced in IMS V7, HALDBs extend the capabilities of full function databases to enhance availability and handle large data volumes effectively. - IMS V9 introduced online reorganization for HALDBs, supporting continuous availability and accommodating data volumes exceeding 40 terabytes.

## Transaction Manager

IMS is a transaction manager, (IMS TM, also known as IMS DC) which interacts with an end user connected through VTAM or TCP/IP, (including 3270 and Web user interfaces) or another application. It can process a business function (such as a banking account withdrawal), and maintain state throughout the process, making sure that the system records the business function correctly to a data store.
IMS TM uses a messaging and queuing paradigm. An IMS control program receives a transaction entered from a terminal (or Web browser or other application) and then stores the transaction on a message queue (in memory or in a dataset). IMS then invokes its scheduler on the queued transaction to start the business application program in a message processing region. The message processing region retrieves the transaction from the IMS message queue and processes it, reading and updating IMS and/or Db2 databases and ensuring proper recording of the transaction. Then, if required, IMS enqueues a response message back onto the IMS message queue. Once the output message is complete and available, the IMS control program sends it back to the originating terminal. IMS TM can handle this whole process thousands (or even tens of thousands) of times per second. In 2013, IBM completed a benchmark on IMS Version 13 demonstrating the ability to process 100,000 transactions per second on a single IMS system.

## Application

IMS TM provides a standard environment for transaction execution. Several Chinese banks had purchased IMS by the late 2000s to support the country's burgeoning financial industry.
IMS complements IBM Db2, IBM's relational database system introduced in 1982. IMS generally performs faster than Db2 for common tasks, but may require more programming effort to design and maintain for non-primary duties.
A relational data warehouse may be used to supplement an IMS database. For example, IMS may provide primary ATM transactions because it performs well for such a specific task.