· Mar 5, 2021

Transition and transfer from Caché database to Iris database.

Transition and transfer from Caché to Iris databas. I have a question about import-export from Caché to Iris. Someone will tell you how to do this with a regular one, i.e. using standard procedures from Caché itself or Iris? I am asking in connection with the planned transition from Caché to the new IRIS DBMS.

Product version: IRIS 2020.1
Discussion (15)1
Log in or sign up to continue

First of all I would recommend reading these two documents available on WRC (Software Distribution - Docs):

  • InterSystems IRIS Adoption Guide
  • InterSystems IRIS In Place Conversion Guide

First one explains the differences between Cache and InterSystems IRIS and the second one is about automated in-place conversion from Cache to InterSystems IRIS.

I would recommend the following steps:

  • upgrade to 2016.2
    • This is the place to uplift your application - on the one hand it's still Cache so upgrade is simple, on the other the code, even with the new 2016.2 features would probably run fine on InterSystems IRIS
    • if you're using SQL - start using frozen plans
    • if you're using JSON - new JSON features become available here (dynamic objects)
  • upgrade to 2018.1 (latest micro)
  • perform in-place conversion to the latest InterSystems IRIS

upgrade to 2016.2

What is the reason of this step? If OP's Cache version allows direct upgrade to 2018.1, it can be easily omitted.

OS Compatibility can be a stop factor for in-place conversion. E.g., preparing IRIS instance for a prospect, we faced a small problem with it: Cache 2017.2 (our App's supported version) turned to be incompatible with Ubuntu 18, which was chosen as on OS for IRIS.

@Alexey Maslov
I had a similar experience with "InPlace".
This may work if your applications are as simple as in SAMPLES:
[ "nome est omen" SAMPLES => Simple]
Just a few $ZU() or other %z* stuff may break you, or file references containing *CACHE*.
Or some $ZF() functions with c-binding, ....

Therefore I designed my "2 worlds" approach using ECP as a data bridge: 
Using ECP across IRIS and Caché

@Robert Cemper

Agree with you, "in-place conversion" is not of great aid in real cases. Its pathos name sounds a bit confusing, isn't it?

During my first tries to transfer our Caché APP to IRIS I took an approach similar to yours, although I preferred not to use ECP as it was possible to avoid running both instances concurrently.

The funny thing I noticed: if one creates a database in Caché, renames it to IRIS.DAT, stops Caché, and starts IRIS, it will be mountable, but the reverse is wrong: renaming IRIS.DAT has been created in IRIS to CACHE.DAT doesn't make it compatible with Caché.

upgrade to 2016.2

What is the reason of this step?

This is a first version with Frozen Plans. If this feature is not needed then upgrade to 2018.1 directly (provided OS compatibility - you're absolutely right about it).

Cache 2017.2 (our App's supported version) turned to be incompatible with Ubuntu 18, which was chosen as on OS for IRIS.

What's the official way to upgrade in that case? I usually just power down an instance, remove it from autostart, upgrade OS to the version supported by a new release, upgrade instance to a new version.

This way Cache/IRIS never runs on unsupported OS. Do you have a case with WRC on this topic?

The first, but not the last one, so still not getting the idea of having this intermediate upgrade point.

Sure, but you can start freezing on 2016.2. There's no point in freezing if you jump to latest version from pre 2016.2

Sorry, on which topic? Everyone knows that Cache/IRIS never runs on an unsupported OS.

Upgrade path between Cache/IRIS versions where OS for old and new Cache/IRIS versions must be different.