IIUG Insider (Issue #136) October 2011

Highlights: IBM is ahead of Oracle

Welcome to the International Informix Users Group (IIUG) Insider! Designed for IIUG members and Informix user group leaders, this publication contains timely and relevant information for the IBM Informix community.

Contents:

 


Editorial Back to top

The IIUG Board of Directors held a two day meeting at the IOD conference. It was a good and productive meeting and we hope it will have a good effect on Informix and the Informix user community.

Informix is doing better. We all want more much more. But we cannot ignore the progress that is being made. I have unhappy circumstances that make it very difficult to concentrate in my daily job. I will not elaborate. But as a result this Insider will be shorter than usual.

I hope to be back on track as soon as possible.

Gary Ben-Israel
IIUG Insider Editor


Highlights Back to top

IBM is ahead of Oracle 

It is of course Informix that is ahead,
but this goes without saying.

 

Photo taken by JGP – Las Vegas, October 2011

IBM Informix Growth Edition Warehouse V11.7

At a glance

IBM Informix Growth Warehouse Edition:

  • Provides fast and predictable query response times on analytical workloads
  • Can help lower overall operating costs by significantly reducing requirements for database tuning
  • Significantly improves performance of analytical queries running on IBM Informix without requiring application changes
  • Enables mixed workloads (OLTP and OLAP)

To order, contact your IBM representative, an IBM Business Partner, or the Americas Call Centers at 800-IBM-CALL. Reference: YE001

Overview

IBM Informix Growth Warehouse Edition is a high-performance offering for delivering dramatically faster analytic query responses transparently to users when compared to an existing Informix environment without the capabilities available with the Informix Growth Warehouse Edition. It integrates into an IBM Informix data warehouse environment, providing high-performance query software that is based on advanced in-memory technology at an affordable price.

IBM Informix Growth Warehouse Edition consists of the following components:

  • IBM Informix Growth Edition
  • IBM Informix Warehouse Accelerator

IBM Informix Growth Warehouse Edition V11.7 provides:

  • Faster query response times on unpredictable and long-running query workloads
  • Help in lowering operating costs by reducing database tuning efforts
  • Improved performance on analytical queries compared to your existing Informix environment
  • The ability to run mixed workloads

To accomplish these results, IBM Informix Growth Warehouse Edition does not require changes in the business intelligence or data warehouse application or the application framework in an existing Informix environment. Informix Growth Warehouse Edition remains the query engine and will offload the specific query to the Informix Warehouse Accelerator.

The IBM Informix Growth Warehouse Edition can be deployed on a physical server that has 16 cores or less. The Informix Warehouse Accelerator can be configured for a maximum of 48 gigabytes of memory. The Informix Warehouse Accelerator component compresses data in memory and can, therefore, potentially hold up to 250 gigabytes of raw table data.

Informix Growth Warehouse Edition is designed to help mitigate database administration costs while significantly speeding up the performance of typical data warehouse or OLAP-specific workloads, in many cases, by an order of magnitude. The Informix Growth Warehouse solution enables selected Informix query workloads to be redirected to another processing entity, namely the Informix Warehouse Accelerator. The Informix Warehouse Accelerator is designed as a logical extension to the Informix engine for quick offloading and processing. The implementation and administration of the IBM Smart Informix Growth Warehouse Edition is supported by graphical tooling within the IBM Smart Analytics Studio. This allows for a simple initial deployment, assisted by graphical tools followed by largely administration-free operations.

Read the IBM Software Announcement here:

/news/announcements/ENUS211-502.pdf


Conference corner Back to top

2012 IIUG Informix Conference San Diego, California

Call for Speakers – Submit a proposal to present at the 2012 International Informix Users Group (IIUG) Conference.

The IIUG Conference Planning Committee is ready to accept presentation proposals for the 2012 IIUG Conference which is to be held April 22 – 25, 2012 at the San Diego (CA) Marriott Mission Valley, USA.

Do you have experience with Informix or Informix related products? Do you have real-case studies related to Informix solutions? Have you discovered any Informix hints or tips? Are you interested in sharing your Informix knowledge and skills with the Informix User community? If the answer is yes to any of these questions the IIUG CPC invites you to submit a proposal to speak at the 2012 Conference.

The 2012 Conference will be comprised of more than 80 technical/user sessions, a series of hands-on-labs and 1 day of comprehensive tutorials intended to reinforce the power of Informix. Presentation proposals should be brief, but more than 250 words, highlighting the Informix technical solutions, real world experiences or trade tips you will include in your presentation. Multiple presentations are encouraged.

If sharing your knowledge is not enough, conference speakers (non IBM employees) are provided with a complimentary pass providing access to conference sessions, meals and conference related networking events. Use /conf/speakers to register your proposal. The deadline for submitting 2012 IIUG Conference proposals is November 15, 2011. For your convenience, speaker logins have been retained for those who submitted a 2011 IIUG Conference proposal. Don’t delay — submit your proposal and biography today for consideration.

See you in San Diego!

The 2012 IIUG Informix Conference Team
www.iiug.org/conf
conference@iiug.org

IOD 2011 – Recap

The 2011 IOD seemed bigger in number of attendees and of sessions. These huge conferences make you feel lost sometimes. It seems as if you and the crowds are heading in opposite directions. I guess this is a price you have to pay for having a big conference. In spite of all this I kept bumping into familiar faces of Informix users in the corridors and at the Informix sessions. And of course there was the traditional Informix party where I found out quite a few Informix users made it to the IOD.

Now that the IOD 2011 is behind us and the IOD 2012 is still far ahead it is time to plan for the IIUG 2012 conference in San Diego. These two conferences are so different that they are not competing. So no matter if you attended the IOD or not, save the date for the IIUG conference and stay tuned. We would like to meet as many of you as possible.

Gary Ben-Israel


Sponsors corner Back to top

Advanced DataTools Informix Remote DBA/Support Offering

Remote Technical and DBA support from Advanced DataTools helps small, medium and enterprise installations maximize their IBM Informix database performance and uptime while minimizing costs and overhead. We can help resolve and/or prevent the worst technical problems you could imagine!

Advanced DataTools’ staff of highly experienced, certified IBM Informix consultants are well trained in all levels of database performance and optimization. This allows us to offer our customers IBM maintenance and support contracts on most versions of Informix Dynamic Server, on any platform/operating system.

Top experts in the field, Art Kagel and Lester Knutsen, manage and support our team of certified IBM Informix consultants. Art and Lester each have over 28 years of Informix DBA experience and both have received the IIUG Directors Award, and the Inaugural Data Champion award by IBM.

For more information: http://www.advancedatatools.com/Solutions/Support.html


Developer corner Back to top

Informix Chat with the Lab

Topic: Implementing Data Encryption With IBM Informix
Speaker: Mark Jamison
Date: Thursday, Nov 17, 2011
Time: 8:30 AM Pacific
10:30 AM Central
11:30 AM Eastern
4:30 PM London
5:30 PM Frankfurt, Paris
10 PM India

With the growing regulatory requirements for privacy regarding Health insurance, it is becoming increasingly necessary to encrypt data “at rest”. In this chat, we will discuss the reasons why IBM DEEE + Informix is an excellent choice and the ways to implement this solution.

For questions about this event, contact the host at: mckeithe@us.ibm.com.

New in DeveloperWorks

Accelerate Hibernate and iBATIS applications using pureQuery, Part 1: Enable static SQL and heterogeneous batching for Hibernate applications
/url/pureQuery.html
When extended with the downloadable IBM Integration Module, the IBM Optim pureQuery Runtime simplifies the process of generating DB2 static SQL for Hibernate and iBATIS applications. It does this without requiring changes to your application code or gathering SQL from production workloads. The Optim pureQuery Runtime also enables Hibernate and iBATIS applications that access DB2 or Informix to benefit from the heterogeneous batching feature in pureQuery. This article is part one of a four-part series about using the IBM Integration Module with Hibernate applications. This article includes a downloadable sample application that illustrates how you can easily enable static SQL and heterogeneous batch functions with Hibernate applications. The article also provides informal elapsed time performance measurements. Part 2 focuses on iBATIS applications.

Also available in: Chinese Korean Portuguese

21 Oct 2011

IIUG user view: News you can use
http://www.ibm.com/developerworks/data/library/dmmag/DMMag_2011_Issue4/IIUG/index.html
IIUG president Stuart Litel talks about how Informix is used in mission-critical applications and how social media is connecting the IIUG community in new ways.

21 Oct 2011

Informix DBA: Every last drop
http://www.ibm.com/developerworks/data/library/dmmag/DMMag_2011_Issue4/InformixDBA/index.html
Getting the best performance out of limited resources was the theme of the recent Fastest Informix DBA contest, held at the 2011 IIUG Informix Conference. In this article, see how the contestants answered the challenge.

21 Oct 2011

Introduction to IBM Informix database software
http://www.ibm.com/developerworks/training/kp/dm-kp-introtoinformix/index.html
This is an introductory Knowledge Path that will introduce you to the different features and offerings from IBM Informix. Informix is an exceptional relational database that offers outstanding performance, reliability, scalability and manageability for businesses, ISVs and OEMs of all sizes. Learn how you can reduce costs and increase productivity with near-zero administration for small to highly-distributed environments regardless of platform

07 Oct 2011

For more information go to DeveloperWorks – Informix: /url/devworks.html


Informix news Back to top

Ecologic Analytics Boosts Meter Data Management with IBM Informix Software

BLOOMINGTON, Minn. – October 4, 2011: Ecologic Analytics, a leading provider of meter data management (MDM) solutions for electric, natural gas and water utilities, announces plans to extend the Ecologic MDM solution to include IBM Informix software as a data management option for customers. This solution will allow utilities to store and retrieve data from smart metering systems and other monitoring devices more efficiently and streamline operational processes, such as time-of-use billing, load forecasting, and outage management.

An ever increasing population of smart meters is creating larger, more complex sets of time sequenced data, also known as interval data, for utilities organizations throughout the world. This increase in data generated by smart meters creates data storage challenges as well as performance challenges for analytics that utilize that data. With the right meter data management technology, utilities can better locate and diagnose pain points, monitor and reallocate electric loads and reduce outages.

IBM Informix software, with its TimeSeries feature, enables utilities to cost-effectively and efficiently manage the interval data produced by smart meters using a scalable database architecture. IBM’s Informix TimeSeries can dramatically accelerate data load and process times, decrease data storage requirements and improve both operational and analytical performance. Additionally, the software offers high availability and security to ensure data is easily and quickly accessed without being compromised.

“We are very pleased to be working with IBM to introduce Informix TimeSeries technology into the solution,” said David Hubbard, chief technology officer and co-founder of Ecologic Analytics. “We feel that the Informix TimeSeries technology lends itself extremely well to the performance characteristics, data types and high-volume processing required for the next generation of smart metering and smart grid applications.”

Informix TimeSeries software enables customers to cut storage requirements by as much as 66 percent, with data load and processing times reduced from hours to minutes. Ecologic Analytics and IBM will work in parallel to enable support for the Informix database technology within the Ecologic MDM application.

“As the deployment of smart meters and sensors increase, so too will the amount of data generated. To keep business operations running smoothly while minimizing costs, utilities require technology that will store, retrieve and help them to analyze massive amounts of data efficiently and accurately,” said Jerry Keesee, Director of Informix Development, IBM. “The combination of Informix and Ecologic Analytics can help utilities accelerate the time-to-value gained from smart meter data, delivering benefits throughout their value chain from suppliers to consumers.”

For more information on the Next Generation Ecologic MDM platform on Informix technology, please contact Ecologic Analytics via email to info@ecologicanalytics.com.

http://www.ecologicanalytics.com/news/pr_support_Informix.html


Support corner Back to top

Generate Query Plan in XML Format

The EXPLAIN_SQL is a routine available within Informix Server that prepares a query and returns a query plan in XML format. This feature is also known as called Visual Explain, since it can be used by other tools to show a graphical representation of the query plan. You can use the IBM Data Studio Administration Edition to use the EXPLAIN_SQL routine to obtain a query plan in XML format, interpret the XML, and render the plan visually.

You can use the following steps for generate query plan in XML format:

1) Set the environment for Java and Informix server. Make sure you have the Informix JDBC driver included in your CLASSPATH. For example:

export INFORMIXDIR=/export/home/informix/prod/11.50.FC7W1

export INFORMIXSERVER=sanjitc1150fc7

export ONCONFIG=onconfig.sanjitc1150fc7

export PATH=$INFORMIXDIR/bin:$PATH

export INFORMIXSQLHOSTS=/export/home/informix/sqlhosts

export JAVA_HOME=/usr/java

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=$INFORMIXDIR/jdbc/lib/ifxjdbc.jar:$INFORMIXDIR/jdbc/lib/ifxjdbcx.jar:.

2) Create smart blob space:

onspaces -c -S sbspace1 -p /export/home/informix/data/sbspace1150fc7 -o 0 -s 2000

3) Specify a default sbspace name in configuration file:

SBSPACENAME sbspace1

4) Bounce the Informix server takes effect the new configuration changes:

onmode -ky

oninit

5) In this example, you will use “stores_demo” database. If you don.t have a .stores_demo. database, you can use following command to create one:

dbaccessdemo7 stores_demo -log

6) Create a file called “xmlins”, which contains the query for which the query plan will be provided. You need to have the “xmlins” file in your current directory. The following sample “xmlins” file will generate query plan for

select * from customer where customer_num = 101; statement:


<?xml version="1.0" encoding="UTF-8"?>

<plist version="1.0">

<dict>

<key>MAJOR_VERSION</key>

<integer>1</integer>

<key>MINOR_VERSION</key>

<integer>0</integer>

<key>REQUESTED_LOCALE</key>

<string>en_us.8859-1</string>

<key>RETAIN</key>

<string>N</string>

<key>TRACE</key>

<string>N</string>

<key>SQL_TEXT</key>

<string>select * from customer where customer_num = 101;</string>

</dict>

</plist>

7) The following Java program; .exp_sql.java. will read the query from “xmlins” file and generate the query plan in XML format:


import java.sql.*;

import java.sql.Blob;

import java.io.*;

import com.informix.jdbc.*;


public class exp_sql

{

    public static void main (String[] args)

    {

        exp_sql sample = new exp_sql();

        try

        {

            Connection conn = sample.getConnection();

            if (conn == null)

            {

                System.out.println("Failed to connect the server ...");

                return;

            }

            sample.testProc(conn);

            conn.close();

        }

        catch (Exception e)

        {

            if (e instanceof SQLException)

                System.err.println("SQLException, errorcode : " +

                               ((SQLException) e).getErrorCode ());



            e.printStackTrace();

        }

    }



    public Connection getConnection () throws Exception

    {

        Connection myconn = null;

        try

        {

            Class.forName("com.informix.jdbc.IfxDriver");



            // ##### Change the connection information #####

            myconn = DriverManager.getConnection(

                "jdbc:informix-sqli:darwin.lenexa.ibm.com:9094/stores_demo:" +

                "INFORMIXSERVER=sanjitc1150fc7_csm;user=informix;" +

                "password=1RDSRDS1;");

        }

        catch (ClassNotFoundException e)

        {

            System.out.println("Failed to load Informix Driver\n" +

                              e.getMessage());

        }

        catch (SQLException e)

        {

            System.out.println("Failed to connect the database\n" +

                              e.getMessage());

        }



        return myconn;

    }



    public void testProc (Connection conn)

    {

        Statement stmt = null;

        int n, ret = 0;

        File file, outfile, xml_out_outfile, msg_out_outfile;

        FileInputStream fin;

        FileOutputStream fout, xml_out_fout, msg_out_fout;

        IfxBblob outmsg_b = null;

        IfxBblob b;



        try

        {

            System.out.println("Calling {call explain_sql(?, ?)}");



            CallableStatement cstmt2 = conn.prepareCall(

                "{call informix.explain_sql(?, ?, ?, ?, ?, ?, ?)}");



            // set up the parameters

            cstmt2.registerOutParameter( 1, Types.INTEGER );

            cstmt2.registerOutParameter( 2, Types.INTEGER );

            cstmt2.setString(3,null);



            cstmt2.setNull( 5, Types.BLOB );                  // Filter

            cstmt2.registerOutParameter( 6, Types.BLOB );     // XML_OUTPUT

            cstmt2.registerOutParameter( 7, Types.BLOB );     // XML_MESSAGE



            try

            {

                file = new File("./xmlins");

                fin = new FileInputStream(file);

            }

            catch(java.io.FileNotFoundException e)

            {

                System.out.println("Can't find the file xmlins! It must be in the current directory.\n");

                return;

            }



            byte[] buffer = new byte[1200];



            IfxLobDescriptor loDesc = new IfxLobDescriptor(conn);

            IfxLocator loPtr = new IfxLocator();

            IfxSmartBlob smb = new IfxSmartBlob(conn);



            int loFd = smb.IfxLoCreate(loDesc, smb.LO_RDWR, loPtr);

            System.out.println("A smart-blob has been created ");



            try

            {

                n = fin.read(buffer);

                if (n > 0) n = smb.IfxLoWrite(loFd, buffer);

            }

            catch (java.io.IOException e)

            {

                System.out.println("Can't read file xmlins!\n");

                return;

            }



            IfxBlob ifxblob = new IfxBlob(buffer);

            Blob blobdata = ifxblob.toBlob();



            smb.IfxLoClose(loFd);

            System.out.println("Wrote: " + n +" bytes into it");

            System.out.println("Smart-blob is closed " );

            Blob blb = new IfxBblob(loPtr);

            cstmt2.setBlob(4, blb); // set the blob column



            System.out.println("Executing query ");

            ResultSet rs = cstmt2.executeQuery();



            int outmajver = cstmt2.getInt(1);

            int outminver = cstmt2.getInt(2);



            System.out.println("Major version is " + outmajver);

            System.out.println("Minor version is " + outminver);



            while (rs.next())

            {

                byte[] buf = new byte[800000];

                System.out.println("Reading data now ...");

                System.out.println("Get a row!\n");

                b = (IfxBblob) rs.getBlob(1);



                if (b != null)

                {

                    IfxLocator loptr = b.getLocator();

                    IfxSmartBlob smbl = new IfxSmartBlob(conn);

                    int lofd = smbl.IfxLoOpen(loptr, smbl.LO_RDONLY);

                    System.out.println("The Smart Blob is opened for reading ..");



                    try

                    {

                        outfile = new File("./out.xml");

                        fout = new FileOutputStream(outfile);

                    }

                    catch(java.io.FileNotFoundException e)

                    {

                        System.out.println("Failed to create file out.xml!\n");

                        return;

                    }



                    int size = smbl.IfxLoRead(lofd, fout, 800000);

                    System.out.println("write total " + size + " bytes");

                    smbl.IfxLoClose(lofd);

                    System.out.println("Smart Blob closed..");

                    smbl.IfxLoRelease(loptr);

                    System.out.println("Locator is released ..");

                }

            }



            outmsg_b = (IfxBblob)cstmt2.getBlob(7);

            if (outmsg_b == null)

            {

                System.out.println("outmsg_b is null");

            }

            else

            {

                IfxLocator xml_msg_loptr = outmsg_b.getLocator();

                IfxSmartBlob xml_msg_smbl = new IfxSmartBlob(conn);

                int msg_out_lofd = xml_msg_smbl.IfxLoOpen(xml_msg_loptr, xml_msg_smbl.LO_RDONLY);

                System.out.println("The XML MSG Smart Blob is Opened for reading ..");



                try

                {

                    msg_out_outfile = new File("./xml_msg.xml");

                    msg_out_fout = new FileOutputStream(msg_out_outfile);

                }

                catch(java.io.FileNotFoundException e) {

                    System.out.println("Failed to create file xml_msg.xml!\n");

                    return;

                }



                int xml_msg_size = xml_msg_smbl.IfxLoRead(msg_out_lofd, msg_out_fout, 800000);

                System.out.println("write total " + xml_msg_size + " bytes");

                xml_msg_smbl.IfxLoClose(msg_out_lofd);

                System.out.println("Smart Blob closed ..");

                xml_msg_smbl.IfxLoRelease(xml_msg_loptr);

                System.out.println("Locator is released ..\n");

            }



            IfxBblob outxml_b = (IfxBblob)cstmt2.getBlob(6);



            if (outxml_b == null)

            {

                System.out.println("outxml is null");

            }

            else

            {

                IfxLocator xml_out_loptr = outxml_b.getLocator();

                IfxSmartBlob xml_out_smbl = new IfxSmartBlob(conn);

                int xml_out_lofd = xml_out_smbl.IfxLoOpen(xml_out_loptr, xml_out_smbl.LO_RDONLY);

                System.out.println("The XML Smart Blob is Opened for reading ..");



                try

                {

                    xml_out_outfile = new File("./xml_out.xml");

                    xml_out_fout = new FileOutputStream(xml_out_outfile);

                }

                catch(java.io.FileNotFoundException e)

                {

                    System.out.println("Failed to create file out.xml!\n");

                    return;

                }



                int xml_out_size = xml_out_smbl.IfxLoRead(xml_out_lofd, xml_out_fout, 800000);

                System.out.println("write total " + xml_out_size + " bytes");

                xml_out_smbl.IfxLoClose(xml_out_lofd);

                System.out.println("Smart Blob closed ..");

                xml_out_smbl.IfxLoRelease(xml_out_loptr);

                System.out.println("Locator is released ..");

            }



            cstmt2.close();

        }

        catch (SQLException e)

        {

            System.out.println("Failed {call proc1(?, ?)}");

            e.printStackTrace();

            System.exit(1);

        }

    }

}

8) Compile the Java program:

javac exp_sql.java

9) The Java program will create an XML output file named “out.xml” in your current directory. Run the Java program as follows:

java exp_sql

Sanjit Chakraborty


Informix resources Back to top

Informix blogs and things


Calendar of events Back to top

November – 2011
Date Event Location Contact
1-3 Informix 11.7 Technical Bootcamp Kuala Lumpur, Malaysia IBM
8-10 Informix Genero Workshop Paris, France
10 2011 Informix Community Event London, UK Sandra Rye
15 Informix Warehouse Accelerator Bootcamp Warsaw, Poland
16 Informix TimeSeries Bootcamp Warsaw, Poland

 


Useful links Back to top

/quicklinks.html


Closing and credits Back to top

The International Informix Users Group (IIUG) is an organization designed to enhance communications between its worldwide user community and IBM. The IIUG’s membership database now exceeds 25,000 entries and enjoys the support and commitment of IBM’s Data Management division. Key programs include local user groups and special interest groups, which we promote and assist from launch through growth.

Sources: IIUG Board of Directors
IBM Corp.
Editors: Gary Ben-Israel

For comments, please send an email to gary@iiug.org.

Published
Categorized as Insider

By Vicente Salvador

Board member since 2014, a user since 1989 and Informix fan. I'am software architect which allow me to combine technical and business skills.