Subject XML support in database
Author Nickolay Samofatov
Hello, All !

I analysed the need for XML support inside of database. Here are the
results.
There are four common business uses for DMBS now (this is from my
experience).

I. OLTP (this includes all main modules of CRM and ERP applications)
Modern design of such applications assumes that database stores relational
data here (more or less normalized). Application Servers are usually used.
Business objects are defined using some convention (Java, IDL or XScheme)
and special framework maps objects to relational database and XML.
Firebird is already feature-ready for this task.

II. DSS (this includes analysis modules or CRM and ERP applications).
Database stores denormalized (but still relational) data here.
In general, Firebird is capable to manage small data warehouse now (up to
~100GB I think).
But it lacks some features to make building of larger and complex warehouses
easy.
I can identify some of them.
1. incremental backup - this is most important one for this class of
applications
2. materialized views
3. rollup and cube queries
4. parallel query execution (when single query is broken to parts and
executed
on several processors in parallel)
5. full-text search - this is least important for this class of
applications,
but still sometimes used
XML support inside of database is not needed for this class of applications.

III. Content store system (Web Portal module of common ERP applications)
This class of systems appeared quite recently. In general, content for this
systems
is prepared in different DSS and OLTP modules and stored in XML format
inside of the
content store database. Corporate/govermental Web portals access this
content database
and present it to the user. XML documents stored inside the database are
converted
to XHTML using web server facilities (such as JSP). Documents are more or
less static
inside of the database, but often need arises to extract some specific data
from them
or convert them to different format. This task can be eased if database
supports
XML natively. Firebird lacks some features useful for this class of systems:
1. full-text search!
2. native XML datatype
3. XQuery support in SQL
4. XML transformations support in queries (for example, using XSL)
5. DOM support in stored procedures

IV. General document flow system
Documents are presented in XML format in such systems and are modified
often.
In general, needs for XML support from databases in this class of systems is
simular to content store systems, but priorities are different.
1. native XML datatype
2. indexing of XML documents based on their content
3. DOM support in stored procedures
4. XQuery support in SQL
5. full-text search

In general, I can design and implement any of the mentioned features,
but now I work on OLTP systems and small data warehouses. I already
added all the features I needed to make my systems work fine. I'm
planning to do some internal changes to Firebird after 1.5 release to
improve its stability, scalabity and performance. I have no plans for
XML support yet. If somebody wants to sponsor XML support inside of the
engine (and he has real need for it) I can take part in this work.
AFAUI, first thing that is needed to be done in this direction is a
clear specification of features to be implemented. I can write it and
open it for discussion. Suggestions ?

Nickolay Samofatov