Oracle 9i Release 2 XML DB
I've been planning to write an in depth review of Oracle 9i Release 2 XML DB for some time now, but the time just isn't emerging. So for now I just want to write a short piece to give my initial perspective on the new version of Oracle.
I've spent a fair amount of time in the last couple weeks studying the new Oracle XML features and I have to say I'm very impressed. Going in, I was highly skeptical of the hybrid approach that they were taking, but after actually using the product I believe they have a real solution. We'll ignore the fact that Oracle is massive with a 1.5GB download and a minimum 512MB RAM requirement and focus on the functionality.
Oracle 9i is now by every definition that I know of, a native XML database. And in my opinion is also the most complete and powerful native XML database around. It allows you many options for how XML is stored in the database. It can be stored in CLOBs, mapped to tables or any combination thereof that may be necessary for an application. Regardless of how the XML is stored it appears to SQL as an XMLType. This enables XMLType as a type within the relational model and opens the full richness of relational manipulation to XML data. They've provided some extension functions to SQL to enable accessing data within XMLType instances and then using that data within SQL queries. I expected this to be very cumbersome, and I guess it is, but the familiarity of SQL makes it surprisingly comfortable to use. Something I can't say about XQuery. In fact, I really have to question why Oracle would even want to add XQuery given how their SQL extensions work. There just isn't any need for it. Hell, with their SQL method you can even update XML, something XQuery can't do at all.
There are definitely flaws of course, for instance it apparently doesn't handle DTDs and they need to work on the updateXML function some more. But to me these aren't fatal and the reuse of the mature relational engine with full constraints, triggers, views and all the rest is pretty powerful. As is the ability to easily intermix data stored relationally and data stored as XML. The use of CLOB storage isn't great either, but there's absolutely no reason that other storage methods can't be provided in the future.
At this point I have to say there's little reason for products like Software AG Tamino to exist anymore. Even if there is some speed advantage to Tamino and brethren, it's simply lacking in almost every other regard. This is especially damning given that Tamino and brethren will cost more for most simple implementations. There's plenty of room for native XML databases to play in smaller apps and for apps requiring DTDs, but when it comes to large corporate repositories of data, there's really no reason now to go away from the existing relational databases. I expect IBM and Microsoft to be coming out with products of similar power in the near future.
Hopefully, someday I'll get around to writing a more detailed look at the XML features in Oracle 9i, but for now I'll say if you need to store XML it's definitely worth giving it a look.
5:35:14 PM
|