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
A couple of questions that will quickly
let you know that an RDBMS is not going to work:
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.
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.
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.
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.
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
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
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
What would it take to
them to do what tamino, ipedo, excelon does?