As a Db2 consultant and regular blogger I often receive questions about technical things, but also on strategy and industry trends. I try to help but I always make it clear when answering that I cannot predict the future, only make educated guesses... So with that introduction out of the way, one of the regular questions that I get involves comparing IMS
to Db2, or helping to determine if it makes sense to convert from IMS to Db2.
Here is the text of a recent question that was posed to me:
"My customer is wondering about the
possible advantages of converting his IMS DB/DC system to IMS DC/Db2. The
application currently performs well with an internal response time of less than
.5 seconds on average. Even with an arrival rate of 425 full-function transactions
per second, the queue count rarely goes above 10. This system typically peaks
at 12.5 million transactions per twelve-hour day against HDAM and HIDAM
databases totaling close to 1 terabyte. The application itself is currently a
bit over seven million lines of code. Can you comment on the relative cost vs.
advantage of moving an existing application from IMS DB to Db2 along with
relative CPU capacity requirements?"
Here is my response:
Well, the main advantages of
converting from IMS/DB to Db2 would be the better support for ad hoc query,
support of standard SQL (instead of non-standard DL/1) for writing queries and
a deeper pool of talent to support the Db2 environment. There are many more skilled Db2 developers out there than there are IMS techies these days.
The primary benefit of sticking
with IMS is the good and predictable performance you currently enjoy. And, of course, there would be no need to
convert the database structures or the more difficult-to-achieve rewriting the necessary application code.
So, the high-level metric to keep in mind as you make your decision comes down to this: a well-designed IMS application will perform very fast, perhaps faster than a well-designed Db2 application (but that does not mean that Db2 is slow). On the other hand, it will be easier to develop applications for Db2, especially when data needs to be accessed multiple ways and in an ad hoc manner.
I guess it boils down to this: How
happy are you with the current application, are you able to support it properly
and how many other IMS/DB databases do you support? If this is the last IMS/DB
database and you are looking to convert away in order to rid yourself of the IMS license,
then it makes sense to consider converting. But you should do a project plan and
cost/benefit analysis before making your final decision (conversion can be very
costly). If you have a lot of other IMS/DB databases, then don't convert to Db2
unless you cannot support the needs of your end users (management, ad hoc
support, etc.) using IMS.
In terms of CPU requirements, Db2
will consume more CPU than IMS. Db2 optimizes queries internally whereas IMS
programmers construct access paths to data. This additional requirement will
cause Db2 to consume more CPU. But, of course, that additional CPU brings with
it the enormous benefit of database optimization and better ad hoc query
support.
Furthermore, if you do decide to
convert from IMS to Db2, be sure to use Db2 as it was intended to be used. In
other words, don't just convert segments to tables and be done. Make sure that
you normalize your design and come up with a good "relational" Db2
database design. Also, be sure to train your programmers to write SQL queries.
That means changing mindsets from the record-at-a-time processing of IMS to the
group-at-a-time processing of Db2 and SQL.
For example, if you have master file processing
logic it needs to be re-examined in Db2. Instead of open file, read record from
file, use key to read record from database... you should be joining tables
and reading from the join. This requires a different mindset and coding technique.
As an additional consideration, keep in mind that Db2 is a much "newer" database technology than the hierarchical infrastructure used by IMS. So it stands to reason that newer capabilities and features will likely be implemented in Db2 before they are implemented in IMS; for example, AI and machine learning capabilities. That does not mean that IMS is obsolete, it isn't; IBM still maintains and upgrades IMS (at the time of writing, the current version is IMS 15.2 which was released for GA in March 2020).
Summary
Of course, this answer has been
necessarily brief. I encourage you to read up on Db2 and understand its many
differences with regard to IMS before jumping into a "go"/"no
go" decision. Best of luck...