Blog

Which DB2 drivers should I use?

  • 7 January 2022
  • 3 replies
  • 911 views
Which DB2 drivers should I use?
Userlevel 7
Badge +11

The Thinkwise Platform provides extensive, out-of-the-box support for the DB2 for IBM i database management system for many years already. That is why we have a large number of customers that successfully use the Thinkwise Platform to modernize their legacy DB2 application landscape. This is also recognized by IBM, who named Thinkwise as Best IBM Business Partner of the Year in Europe in 2009, and awarded one of our customers with the Most Innovative IBM i User of the Year award because it used the Thinkwise Platform.

However, IBM did (and still does) not make things easy for us.

When we started, IBM was still in the process of replacing their Classic Query Engine (CQE) with the much faster and more powerful SQL Query Engine (SQE), and we have been in regular contact with IBM about bugs in these query engines that nearly drove us insane. With the necessary adjustments and bug fixes by IBM and some workarounds in the Thinkwise Platform, we were able to solve these problems, and the Thinkwise Platform now offers the fastest, most powerful and flexible solutions to get rid of RPG legacy while still being able to use your existing IBM i databases. This is a huge advantage and often even a hard requirement, given the investments that many companies have made in IBM hardware.

It's all about the drivers

Back in 2007, our Java Desktop and Web user interfaces used the IBM Java database drivers, and for .NET applications IBM offered the .NET Data Provider as part of the iSeries (later IBM i) Access for Windows bundle. Since 2019, this .NET driver has been included with the Windows Application Package of the successor to the IBM i Access for Windows, IBM i Access Client Solutions.

Besides the fact that the .NET Data Provider driver does not seem to be actively developed anymore, there are also two other problems with it:

  1. The driver must be installed separately on the system and cannot be provisioned with just the binaries as part of the Indicium application tier. This limitation makes it impossible, or at least a lot more difficult, to use in managed cloud solutions on, for example, AWS, Azure, and Google. Using virtual machines or preferably Docker containers is of course possible, but then you miss out on a number of benefits of managed services in terms of performance and scalability, security and more.
     
  2. The driver is not compatible with the latest, cross platform version of .NET – .NET Core – so it cannot be used natively with the Thinkwise Indicium application tier. This means that the Thinkwise Indicium application tier must fall-back to the older .NET version for use with these DB2 drivers, which lacks a lot of the benefits of the .NET Core like the far better performance. For more information about the differences between the two .NET implementations, see this page: https://docs.microsoft.com/en-us/dotnet/standard/choosing-core-framework-server
     

Fortunately, sometime after .NET Core was released, IBM also provided new .NET Core-compatible DB2 drivers. These drivers are available for multiple platforms and most importantly, they no longer require to be installed separately. They can be packaged together with the Indicium runtime, making them perfectly suited for use with the Thinkwise Platform in managed cloud services.

But there is a catch. A big catch…

You can use the DB2 .NET [CORE] provider to access all supported Db2® database servers and Informix® database servers.

To connect to Db2 for z/OS® and IBM Db2 for IBM i servers, you require the Db2 Connect Server license.

Source: https://www.ibm.com/docs/en/db2/11.5?topic=adonet-data-server-provider-net

 

So, to connect to IBM DB2 for IBM i, you now need an additional DB2 Connect Server license when using the latest drivers. And it will cost you: the price for a DB2 Connect Server license can be up to $20,000 per year per server. IBM requires you to pay extra to access your own data on a DB2 server you already own.

Various Thinkwise customers have already contacted IBM about the additional DB2 Connect license required to use the new drivers, but unfortunately it does not appear that IBM will offer a solution for this anytime soon. Fortunately, Thinkwise does provide an alternative.

Using the license-free drivers

To save our customers the additional licensing costs of a DB2 Connect license, we invested in supporting the existing, license-free drivers with the latest .NET Core version of the Thinkwise Indicium application tier ourselves. It works by establishing a custom developed communication layer between the .NET Core Indicium application and the .NET Framework DB2 drivers.

This solution does induce some performance degradation compared to using the driver directly, but it allows you to use the latest Thinkwise Indicium without additional IBM license fees for on-premises deployments or Docker containers. Managed cloud services are unfortunately not supported because the driver still needs to be installed separately.

Please refer to the Thinkwise documentation for installation instructions and limitations.

Try out the .NET Core drivers

We still recommend using the new .NET Core driver instead of the old iSeries driver because of the vast performance improvements, especially if you own a DB2 Connect license, even though this new driver also have some minor drawbacks that you should be aware of,

If you want to try out the new driver: we have a trial license available at Thinkwise that you can use for testing purposes. You don't even actually need to install DB2 Connect, just copy the license file to the appropriate folder of the Indicium application tier as described here.

Please contact your Thinkwise representative for more information. We are happy to support you.


3 replies

Userlevel 6
Badge +10

Let me add some (frustrating) experiences from a customer-perspective with above described DB2 driver options, hope this helps others make better informed decisions for their situation!

Our Use Case & Infrastructure

  • We are replacing our Legacy system which runs on DB2 with the Thinkwise Platform
  • The Thinkwise Platform is hosted on AWS RDS/ElasticBeanstalk the way it is described in the Docs
  • We are using the Phased replacement of modules as described in this Thinkwise blog (p.s. instead of having this blog on your website only, it might help the findability if it would be added to the Community too)
    • Due to this approach we are in need of data integration between the Legacy DB2 and the Thinkwise database. For some (temporary) scenarios the Legacy DB2 is still the Single Source of Truth, and we wish to ensure data is replicated in the Thinkwise Product database.
    • We use the Upcycler functionality Deriving tables and columns as a means to allow Indicium to retrieve data from the Legacy DB2 driver. The result is Synchronized to IAM as a separate Application (without an underlying database)
    • We call the Indicium API to this IAM Upcycler Application in order to retrieve data from the original DB2 database directly and then store it in our Thinkwise Product database (MS SQL)
  • We are able to directly reach the On-Premise DB2 database from our AWS environment

DB2 driver experiences

To keep the Infrastructure as simple and stable as possible we intended to have the AWS ElasticBeanstalk-hosted Indicium talk directly to the On-Premise DB2 database, effectively skipping the Thinkwise RPG interface application setup (middle part in below image).

Image from blog “4 Scenarios for replacing your core RPG applications”
  • We got this working with the DB2 Core trial license from Thinkwise, but ran into trouble trying to arrange our own license:
    • Our IBM partner should simply download/arrange a license file from the IBM Passport Advantage portal, but didn't understand a thing about DB2 Core driver licenses
      • They kept confusing it with the legacy DB2 driver, suggesting we wouldn't need an additional license
      • They kept complicating things with documentation about what we would have to install, while all we need was a simple license file
      • IBM kept pointing to the partner, the partner kept pointing to IBM for support
      • When we finally got a price indication it was way too high for our Use Case that only interfaces a little bit of data
  • So we went for alternative 1: package the Legacy DB2 driver as MSI and deploy on AWS ElasticBeanstalk using .ebextensions (also mentioned in the Crystal reports blog from Anne Buit)
    • We had both Thinkwise ánd our AWS Consultant put in a lot of effort, even decompiling the entire java code of the driver.
      • Unfortunately the effort stranded at some unexplained errors when trying to silently install the driver on ElasticBeanstalk (manually). So we never got to the part that we actually packaged the driver and could deploy it as part of the ElasticBeanstalk ZIP file / .ebextensions
  • After all we settled for setting up an additional Indicium, hosted On-Premises on a regular Windows Server VM with the Legacy DB2 driver installed (indicated with (2) in the above image). As suggested in the blog in the first place…
    • Since we only retrieve data using backend System Flows, we don't experience performance issues with the legacy DB2 driver.
    • We don't use the DB2 database (indicated with (1) in the above image).
    • Instead, the result of the Upcycler is only Synchronized to IAM as a separate SF Project / IAM Application. This effectively results in Indicium APIs through which we can retrieve data from the Legacy DB2 Database.

 

Conclusion: after a lot of trial and error, we got the Use Case covered…

I hope this post will save other customers the frustrations we had.

P.s. what we haven't tried, but might potentially work, is running Indicium/Universal on AWS ElasticBeanstalk using a Docker container that includes the Legacy DB2 driver. If anyone has this infrastructure up and running, please let me know!

Userlevel 5
Badge +16

@Jasper any real experiences on IBM Mainframe z System, does it work there or just on the i-Series?

Userlevel 7
Badge +11

Hi @Freddy,

We have no experience with Db2 on z/OS, but I don't expect it to be compatible with Db2 for IBM i as the Db2 wiki page states the following:

In 1994, IBM renamed the integrated relational database of the OS/400 to DB2/400 to indicate comparable functionality to DB2 on other platforms. Despite this name, it is not based on DB2 code, but instead it evolved from the IBM System/38 integrated database. The product is currently named IBM Db2 for i.

We have looked into supporting Db2 for LUW (Linux, Unix, Windows) in the past, but the feature set and SQL syntax differ too much from Db2 for IBM i.

Reply