IIUG Conference 2018

Looking forward to meeting in Washington DC next October!

Monday, October 30, 2017

New features in Informix 12.10.xC9

I am stoked! HCL has released the first update to Informix Dynamic Server developed under their auspices. There are two significant new features in the .xC9 release, one is an enhancement to how time series and spatial data work together that adds significant performance and utility to that feature and the other is a completely new feature that users have been asking for for years. I will cover them in order:

Track Location and Time Together

STS_SubtrackCreate() function which creates the "subtrack" table over which the spatiotemporal  index is created. That done the STS_SubtrackBuild() function populates the subtract table and builds the initial index contents. Spatiotemporal indexes are relatively static, however you can configure the Timeseries such that it automatically updates the index when data elements are added to the Timeseries record.

The biggest change in the .xC9 release is improved time granularity of the spatiotemporal data making it easier to search and locate allowing new searches that answer "When was an object in a specified area?" "What objects were in this area at this time?" "At what time were there some objects in this area?"

Applications to Receive Asynchronous Notice of Data Changes 

Client applications can now create Smart Triggers that register them to receive notification when there are changes in a data set. The API uses SELECT statements and WHERE clauses to identify which specific data each application is interested in, and an application can register to receive push data from multiple source tables. Once registered the server will push new and modified data from the server to those clients interested in those specific rows. 

Because the client applications do not have to poll the server looking for new data, greater scaling and responsiveness is achieved by those apps. At the same time the database server's parallel architecture can feed the data to all clients by asynchronously reading logical log file changes. This design lets client applications scale linearly without adding significant overhead to the database server. Since the changes are scraped from the logical logs asynchronous to the session threads actually modifying the data, by using the Enterprise Replication log scraping threads, there is no performance effect on the OLTP applications that are making the changes to the database.

Previously you might have emulated this behavior using insert, update, and delete triggers on the tables that called to a C or JAVA library function, but the process of trapping the trigger and sending data synchronously would slow down the front-end transactions causing potentially serious scaling and concurrency problems for applications.Registering is fairly straight forward and is documented in the Enterprise Replication Guide. Basically you call a registration function passing in a BSON record containing fields defining the table you are registering for, a SELECT statement with an appropriate WHERE clause to filter the rows you are interested in, a label you want to use to distinguish data blocks from one table from those originating from another, a timeout setting, the number of elements you want to receive in each message, how many messages to allow to queue up, and the earliest transaction time you want to receive data updates from.I am particularly stoked about this one because I think it will be key to the success of a new project I am working on for a client. Perhaps when it is all finished I will be able to get permission to talk about it.

Going Forward

There has been a long gap since my last post. I apologize. I have not been ignoring the community nor have I given up on Informix as some have suggested and gone off to do other things. On the contrary, the main reason for my silence is that the past year has been my busiest in a long time. If I ever entertained fears that Informix is dying this year would have put those to bed for me for sure. I have seen one client upgrade their servers to the latest releases three times. Two clients implement IWA successfully. One going from Proof of Concept to production in four months and in the process saving over a million dollars over the alternative free "open source" solution while exceeding the predicted performance the "other" solution promised! The other implemented a new vertical product for the industry that it serves that will allow their customers to perform more detailed analytics in less time with fewer resources.

I have spent several months helping another client expand their use of Informix throughout their organization through which effort they were able to improve the timeliness and reliability of the services they provide to their customers and so to their customers customers among whom are counted many reading this post (including me). So, you are welcome. 

One of my current projects, mentioned in passing above, is very different for me and has me excited because it is allowing me to do some database design. That's one of the more fun things I do. Recently performance tuning, installations, training, and feature implementation have taken up my time and I haven't had the opportunity to work on a design project in a while. Enjoying the change. 

IIUG Update

I just returned from the IIUG Board of Directors fall meeting. This year we met for the first time formally with HCL executives and development management. Some of you may have been dismayed by the Editorial in the recent IIUG Insider. I have to report that the feedback from HCL in response to Gary's concerns was overall heartening. It seems that mostly HCL didn't think it was important to keep the IIUG informed. There are new things in the queue that the Board members will be able to discuss publicly as soon as some outside hindrances to roll out are overcome. There is exciting news pending for market segments that previously could not take advantage of Informix. That's about all I can say for now, but hopefully the news will be released in time for the next Insider. Although Murphy is probably working hard to cause it to miss Gary's deadline by a day B^(

Stay tuned there is lots happening in the Informix world. And don't forget to start working on getting permission to attend the IIUG World 2018 conference in Washington DC in October 2018!


  1. You missed this .... beyond useful :-)

    You can rename a system-generated index that implements a primary-key or foreign-key constraint. When you rename a system-generated index, the index is not automatically dropped if you drop the corresponding constraint. The name of a system-generated index consists of a white space, a number, an underscore, and a number. Omit the white space at the beginning of the system-generated index name in the RENAME INDEX statement

  2. Great feature, but it came in with 12.10.xC8 along with the ability to specify that a CHECK constraint added using an ALTER statement should not validate existing rows (the NOVALIDATE option).