Since I work for a native XML database company, you might not consider my advice to be valid… but I’m going to give it anyways ;->
I have customer story after customer story where the first thing they tried was Oracle or DB2 or SQL Server for storing their XML. It was a natural thing for them to try as they already had those products installed. They came to eXcelon primarily because they failed at making an RDBMS handle XML in a way that was useful. One of our customers, for example, had Oracle consultants create a benchmark on Oracle 9i against our consultants using eXcelon. Oracle was unable to complete the benchmark and we won the deal… and these were top-notch Oracle consultants.
A couple of questions that will quickly let you know that an RDBMS is not going to work:
1) Are you dealing with XML data whose schema is not necessarily consistent from document to document or the schemas change often? The key advantage of using XML as a data model is extensibility: you lose that advantage when you store it in an RDBMS.
2) Do you need to update this data often? All current RDBMS implementations (except for a beta utility available for Microsoft for SQL Server) do not allow incremental document updates. You must replace entire documents when you need to make a change as all of the RDBMS systems store the data as BLOBs. Most of our competitors in the XML DB world also do not allow incremental updates. This is very important should data need to change fairly often.
3) Is performance and scalability important to you? We’ve tried both Oracle and DB2 with over 100,000 documents, which is a relatively small amount. Oracle fails the benchmark, and DB2 goes very slow. Why? They have to parse the data on the fly to do anything with it: query, index, anything. eXcelon XIS stores the data in parsed form so we eliminate this overhead PLUS our caching technology is distributed and works like an in-memory database to give you really fast access.
4) Do you have data that comes from business partners or from systems where you really do not have much control over the schema? Does that data need to be integrated into your common XML data model? If so, keeping that all coordinated in an RDBMS is very difficult. This is the problem that has afflicted most of our customers and a primary reason why they failed in using an RDBMS.
5) How many nodes wide and how many nodes deep is your XML data? If you decide to go the mapping route (which is the only way to avoid having it stored as a BLOB), the mappings will fail or become immensely complex the wider and deeper the XML data gets
6) The RDBMS systems are absolutely atrocious at XML indexing. Their approach to XPath indexing is to index every possible XPath that matches criteria rather than the one you’re really going to be querying on the most. This makes queries quite inefficient compared to native XML DB implementations. For example, eXcelon XIS is up to 20x faster on indexed queries than Oracle 9i. XIS does indexing at the node level and is very efficient. Very few native XML DB implementations can even claim that.
You’re welcome to try to make an RDBMS work if your data does not change often, all of your data is your own and you have complete control over the schemas, and you don’t have that many documents (although it sounds like you do). Our customers have tried and failed, and these are Global 2000 companies with all of the consultants in the world to throw at the problem. Maybe you’ll succeed where they failed ;->
thx for ur reply.
I have already looked into the mapping tables mechanism. That is too painful and will not work for me.
Now this question keeps coming into my mind; (if you read all the messages in this thread) There are companies like excelon, Ipedo, Software Ag(tamino), IXIASFOT which offer a native xml server (where xml is stored in native format as against tabular format in typical RDBMSs)
I wonder what does it take to MS-SQL server, oracle, db2 guys to do just the same. Is that too difficult?
What would it take to them to do what tamino, ipedo, excelon does?