Friday, February 10, 2012

What is "Db2 for i"?

I am often in discussions where there is confusion about what constitutes "DB2". This occurs even among long time users of the product. I usually start by stating: DB2 is not DB2 is not DB2.  Let me explain...

Db2 is the name of a family. It is also considered a long time IBM brand name. Simply put, there are three major Db2 family members. Each is based on a specific hardware architecture and the various operating systems that support that hardware. Each has it's own history. Each can be called "DB2".

More formally, they are known as:

Db2 for z/OS - the code base that runs on what is traditionally known as the mainframe.

Db2 for Linux, UNIX and Windows - the code base that runs on distributed systems, both 32 bit and 64 bit.

Db2 for IBM i - the code base that runs within IBM i, running on IBM Power systems.

While all the family members share the Db2 badge and support a very similar set of ANSI standard SQL statements, they also have some important differences.

One of the more disconcerting items is the version/release numbering. The current version of Db2 for z/OS is 11.1. For Db2 for LUW it's 11.1, and for DB2 for i it's 7.3.  That means that z/OS has the latest and greatest stuff, and IBM i has the oldest right?  Of course not. Each Db2 family member is on a different release schedule and sports their own version/release numbering scheme. This is based on history and packaging. In terms of delivering features and functions, each Db2 family member can be first, second, third or "not at all" depending again on underlying architecture and user requirements.

In yet another major example, all of the Db2 family members have a different query optimizer and different database engine, each capable of approaching an SQL request using their corresponding system attributes. In other words, they are built to take advantage of their respective hardware and software strengths while meeting their user's requirements.

Now, Db2 for i we could say is rather unique in that it is part of the IBM i object based operating system - built in, top to bottom. It is not a separate piece of software that must be acquired, installed and configured. Within IBM i, relational database is a native file system running in the microcode. I often like to say, we know how to store rows and columns on disk! The high degree of seamless integration translates into many technical advantages. It also results in an easy to own, easy to use attitude by the multitude of users around the world. By the way, the integration also explains why the current version of DB2 for i is 7.3 - it is the same numbering as the current version of IBM i!

Kent Milligan has a more in depth discussion of the Db2 family relationship here.

When approaching and making use of "DB2", it is vitally important to recognize which family member you are considering and/or working with. When coming from another relational database management system, be it Db2 or any other RDBMS product, it is absolutely critical to understand the specific attributes, capabilities and nuances of Db2 for i. It is important to know your tools and techniques.

And for the many thousands of RPG and COBOL programmers writing programs to access physical files and logical files in IBM i... yes, you too are using "DB2"!

1 comment:

  1. Mike, thank you for writing this post about DB2 for IBM i, which is common ground for the IBM i community, whether people use RPG, COBOL, or web technology such as PHP.