z/OS and Friends: IMS Transaction Manager and Database Manager Support Tens of Thousands of Transactions a Second
This comprehensive overview highlights the exceptional performance and reliability of IMS, explains the hierarchical database model, details the various types of IMS databases and more

I thought that headline would get your attention. How about this—IMS Version 13 demonstrated the ability to process 100,000 transactions a second on a single IMS system. IMS has long had a serious focus on performance both with transaction handling and database processing. In my research, I have found out that over 95% of Fortune 1000 companies use IMS in some capacity. The same is true of all the top five U.S. banks.
It is extraordinary that IMS has been available for over half a century and it is still in use today. When it comes to performance, reliability and availability, around 2,000 clients continue to put their trust in IMS. I am pleased to have had multiple opportunities to work with IMS and explore its features, and to provide support for its automated operation.
CICS, Then IMS
I spent five solid years being a Customer Information Control System (CICS) programmer, first writing applications, then doing system programming. In 1984, I took a job with IBM, and my first assignment was working in the project office for a collection of related projects all being developing to run as IMS applications. In 1984, IBM had a small professional services organization in branch offices doing fee work for customers. However, my new team and its branch office was large and growing.
The team I joined was focused on using the Managing the Application Development Process (MADP) methodology. My manager wrote the course on MADP and delivered the methodology directly with customers on projects. My job was technical communication and special projects. For starters, every two weeks I had to consolidate status reports from a handful of project managers who all used the same methodology.
This turned out to be an important job because the projects were significant in size and scope, and each of the waterfall phases required funding in the hundreds of thousands of dollars. Even a million-dollar phase was not uncommon. Stakeholders were spending significant sums of money, so they expected results on a regular basis.
Planned Versus Actual, Task Starts and Completes
Every status report for the development of the applications had narrative, then task totals. How many tasks did you plan to start in the last two weeks and how many did you (actually) start?
Same for tasks completions. My job was to write an executive summary and to consolidate task information. I still use the task start and task complete method as I find it useful and telling. I learned that it is easier to start a task, then complete one. I also learned that it is a troubling sign when projects have task completions that are often late.

Reading the narrative in the individual status reports, I realized that the applications being developed involved the support and maintenance of airplanes and ships. These were assets that had many components with parts and were very expensive, and if there was a maintenance failure it could be very costly. As I worked with the project managers and software architects, I realized the importance of IMS database design. Significant effort was focused on database design and redesign when shortcomings were discovered in the initial design.
As I became interested in the design efforts, I wondered—what was important and challenging about designing databases? I observed that there were challenges that had to do with keeping data consistent across different parts of the database. Dealing with changing requirements and the relationships between the data elements could be demanding. Ensuring good database performance was also an important goal with the design.
Let’s Take a High-Level Look at IMS Databases
When you examine the considerations for databases, you quickly realize the focus on database performance is helped through rigorous design. You can also appreciate the consequences of poor database design. Bad design could mean data inconsistencies, slow performance and difficulty in retrieving information.
Hierarchical Database Is the Nature of the IMS Database Manager
IBM Information Management System Database Manager (IMS DB) uses a hierarchical database model. This means data is organized into a tree-like structure, where each record, called a segment, has a parent-child relationship. This allows for efficient storage and retrieval of data with defined relationships. As I wrote earlier, IMS DB has a big focus on performance.
Understanding the relationships between segments and their relative importance to the application, you can appreciate why an initial design may require revision after use cases are explored in a comprehensive manner. Changing requirements can also result in database design revisions.
What Are the Main Attributes of IMS DB?
The figure below includes the main elements needed for a discussion about IMS DB, including structure, records (segments), data retrieval language (commands) and access methods. Also, part of the discussion is advantages and a few examples.

- Hierarchical Structure: Data is structured into segments, with a root segment at the top and other segments branching out from it. Each segment typically has multiple fields, and the relationships between segments are defined by the ordered structure.
- Segments: These are the basic units of data in IMS DB. Segments are like records that are used in other systems.
- Data Language/I (DL/I): IMS DB uses DL/I as its data manipulation language for accessing and managing the hierarchical data structure. DL/I commands are a procedural language for data access, data retrieval and data manipulation.
- Database Types: IMS DB supports various types of databases, for example, Data Entry Database (DEDB), Generalized Sequential Access Method (GSAM), Hierarchical Direct Access Method (HDAM), Hierarchical Indexed Direct Access Method (HIDAM) and Hierarchical Indexed Sequential Access Method (HISAM), among others. These databases and their supporting access methods determine how data is stored and retrieved. A complete list of IMS databases and access methods used is explored later in this article.
If you take apart the acronym names, you will recognize echoes of pre-VSAM methods like Sequential Access Method (SAM), Direct Access Method (DAM) and Indexed Sequential Access Method (ISAM). These are the bread-and-butter access methods. There once was a four-and-a-half-day day workshop focused on the SAM and DAM access methods for Assembler Language Programmers. It was eye-opening to use the interfaces and see what you could achieve by using their straightforward built-in function.
- Root Segment: Each database record begins with a root segment which acts as the main entry point for accessing the data within that record.
- Advantages: Hierarchical models offer advantages for certain applications where data relationships are clearly defined and follow a tree-like structure. Simplicity, speed, intuitive structure and efficient data retrieval are some of the main advantages of the hierarchical model.
- Example: In a customer database, the root segment would typically contain basic customer information like name, address, city and state, whereas child segments might represent customer orders, payment history or other details related to a specific customer.
What Exactly Are the Types of IMS DBs?
This is where the discussion gets detailed and close to the OS. Table 1 below lists the name and type of DB. It also includes why you use a specific kind of database and the z/OS access method that is employed. The language can sometimes be confusing. Are we talking about a name or a type or an access method? What kind of access method?
It might be helpful to think of it this way. IMS DB supplies a layer of software that is used to support its hierarchical model. For example, statements are used to define databases, including DATABASE, DBDGEN, and CREATE DB. The DATABASE statement is used to declare online databases to the IMS control region. DBDGEN is the utility that generates the Database Description (DBD) which contains all the database information needed by application programs. The CREATE DB command is used to dynamically define databases. These are just a few examples of how this layer of IMS supports the hierarchical model.
After definitions are in place, another element of IMS employs access methods that are native to z/OS, like QSAM and BSAM (early types) or VSAM (exploits virtual storage). The access method does the “heavy lifting.” This layered approach to getting things done is common today. Machines are so fast that they easily overcome the overhead of this layered approach to developing products. Perhaps “overhead” is not the best word to use for this smart and proven way of doing things.
The databases listed in Table 1 are divided into two categories—Full-Function database types and Fast Path database types. DEDB and MSDB are the only two Fast Path database types. All other databases in the above table are considered full-function database types.
Table 1. Types of IMS databases and their z/OS access methods.
Name and Type of IMS Database | Why Use It? | Operating System Access Methods That Are Utilized |
Data Entry Database (DEDB) | DEDBs enables you to have very large databases with high availability. Other benefits are here. Note: For Database Control (DBCTL), available only to Batch Message Processing program (BMPs) | Virtual Storage Access Method (VSAM) Entry Sequenced Data Sets (ESDSs) |
Generalized Sequential Access Method (GSAM) | GSAM makes it possible to treat sequential OS/390 data sets as IMS databases allowing batch applications to access them. It’s a way to provide basic database capabilities in IMS batch environments using standard sequential files. Other details are here. | Queued Sequential Access Method (QSAM)/Basic Sequential Access Method (BSAM) or VSAM |
Hierarchical Direct Access Method (HDAM) | HDAM is used for applications that require both direct and sequential access to data. It allows for efficient random access to any database record and can also handle sequential processing when needed. Additional details are here. | VSAM or Overflow Sequential Access Method (OSAM) |
Hierarchical Indexed Direct Access Method (HIDAM) | HIDAM is used when both direct and sequential access to database records, and random access to paths of segments within those records are needed. More details are here. | VSAM or OSAM |
Hierarchical Indexed Sequential Access Method (HISAM) | With HISAM databases (also with HSAM databases) segments in each database record are related through physical adjacency in storage. Unlike HSAM, however, each HISAM database record is indexed, allowing direct access to a database record. More details can be found here. | VSAM |
Hierarchical Sequential Access Method (HSAM) | HSAM should be used when you need to store and access data in a hierarchical, sequential manner, particularly when you are only performing sequential read operations and not updates. More details here. | BSAM or QSAM |
Main Storage Database (MSDB) | MSDBs are used within IMS to store and provide access to frequently used data, especially in applications with high parallelism like those in the banking industry. More details are here. Note: Not applicable to DBCTL | N/A |
Partitioned Hierarchical Direct Access Method (PHDAM) | PHDAM is used to efficiently manage large, hierarchical data structures by dividing them into smaller, independent partitions. This approach offers several advantages including improved performance, increased availability and enhanced manageability for large databases. More details here. | VSAM or OSAM |
Partitioned Hierarchical Indexed Direct Access Method (PHIDAM) | PHIDAM is used when you need both direct and sequential access to data, especially when you have a hierarchical structure where you frequently access segment paths within database records. More details here. | VSAM or OSAM |
Partitioned Secondary Index (PSINDEX) | PSINDEX is used to improve the performance and manageability of databases, especially when dealing with large or complex datasets. More information here. | VSAM |
Simple Hierarchical Sequential Access Method (SHSAM) | SHSAM should be used when you need to access data in a sequential order, specifically when dealing with root segments. SHSAM databases are often used when converting a non-database system to IMS or passing data between applications. More details are here. | BSAM or QSAM |
Simple Hierarchical Indexed Sequential Access Method (SHISAM) | SHISAM should be used when you need to efficiently access data in a hierarchical structure with indexed sequential access, particularly when converting non-database systems to IMS or passing data between applications. It’s a cost-effective choice because SHISAM databases require less space than HISAM, HIDAM or PHIDAM databases due to the absence of segment prefixes and the use of only one data set. More details here. | VSAM |
This table helps answer the question—why are there so many types of IMS databases? There is some overlap in the functionality of the different types, but the subtle differences offer opportunities to find the perfect match for your needs.
What is Next?
IMS Transaction Manager is the other important component of IMS. I’ll discuss this in detail in my next article. I’ll also explain the items that appear in this big-picture chart that helps to explain the IMS product in 2025:
