Saturday, April 30, 2011

Schema and Data comparison between two databases

I have been looking into an interesting new requirement.

1) Consider there are two host machines - Host_A and Host_B. An older version of our product is installed in Host_A. And a newer version of our product is installed in Host_B. From a Data tier perspective, there are lots of schema differences between old and new version of our product. Also, there could be lots of instance data persisted in the databases of each product installation. I am looking at writing a tool which would migrate instance data from the older instance of the product into the newer instance of the product.
2) In the first test case, the databases in old product instance and new product instance are same. (Homogeneous database comparison for schema and data). Later, this would be extended to consider heterogeneous databases - ie, the database types could be different in the old and new product instances.

Eg: Old product instance uses Oracle database. New product instance uses Microsoft SQL Server.

As a first step, we would require a tool which would do the following:
1) compare schema between older product instance and the newer product instance
2) compare data between older product instance and the newer product instance

I evaluated quite a few products that are currently available. They are DBDiff, Red Gate and TOAD. I am yet to evaluate Golden Gate.

The tools that I have evaluated were great so far. At the end of the comparison, the tools produce a SQL script which could be used to migrate from the old to the new produce instance.

So far, all these tools are Windows tools. That is, they run on Windows platforms. I am looking for Linux tools. If I find anything, I'll update this post.

The Future of Java programming language ?!

Recently I happened to see a tech talk by one of the core scientists in the original Java language development team of Java (now Oracle). The burning question now is about the future of Java programming language.

What would happen to Java as a language? Would the language development eventually stop after few releases? Or would it continue forever ? Would the language disintegrate?

After looking at the road map of Java programming language, it looks like there would be at least a couple of releases in the future. This might play out for 5 years. But after that, who knows about the full-fledged continuation of Java programming languages ?

The good news is, Oracle has predicted this one too. Meaning, they know that Java development effort would be winding down in the future. And in its place, there would be a plethora of other programming languages which would co-exist.

James Gosling had some where mentioned that everything that is needed is already in the JVM! Meaning, there could be multiple languages co-existing in future systems. But all these languages are capable of running inside the JVM. Building a system that way would be the most performant and efficient way. This is because, lots of optimization effort (which have stood the test of time!) has already been engineered into the JVM!

To paraphrase it differently, for a multi-language system, if all the languages are run inside the JVM, then that would be the best solution which is performant and efficient. The other approaches which dont make use of the JVM, would not be performant.

The future of Java seems to lie in its JVM! At present there seems to be a plan for the future of Java programming language! We shall see what we shall see!

Semantic SOA Governance and BPM

I would like to write about some of the research that we have been doing in the area of Semantic SOA Governance and BPM. I would like to write this as a series of posts. Please check back later!