McXML: A native XML Data Management System

McXML is a  native XML database system with a focus on supporting updates and transaction management:

Query Execution:

McXML has as main logical data model a tree based main-memory structure that provides the DOM interface. Hence, any XQuery execution engine based on DOM can be plugged into McXML. Furthermore, McXML has its own query execution engine. This engine supports as a subset of the XQuery langauge and a set of XQuery update statements that were proposed as an extension to XQuery.  The current execution engine uses standard DOM navigation with some extra index structures. McXML provides full transaction management and concurrency control .

Storage Manager:

McXML has a page-based storage manager. XML documents are split into subtrees which are stored in records  placed on fixed-width pages. Pages are the basic unit for transfer between disk and main memory.  Loading is done in a lazily, i.e., records are only loaded into memory and the corresponding subtree (DOM model) extracted when a query might need to access this part of the tree. When updates change the logical tree model, only the changed parts of the tree are written back to disk. That is, only the pages with records that contain chainged subtrees are written back to disk.

Transaction Manager:

McXML has a full-fledged transaction management in place. Several queries can be bundled to a transaction. All changes performed by a transaction are written back to disk at commit time. If a transaction aborts, its changes are automatically undone. McXML offers two snapshot based concurrency control methods, one providing optimistic concurrency control, the other a multi-version concurrency control providing snapshot isolation. Additionally, a hierarchical locking scheme is implemented.