[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Proposal: New XML Storage Engine




Hi all ozonies,

some days ago we announced the rework of the current XML storage engine of
ozone. We have written down our first ideas to share with you and to get feedback
from all of you.

Lars
-- 
___________________________________________________________________
Lars Martin                                 mailto:lars@smb-tec.com
SMB GmbH                                     http://www.smb-tec.com

Author
------
Falko Braeutigam <falko@smb-tec.com>
Lars Martin <lars@smb-tec.com>


Status
------
Working-Draft 2000-08-07


Abstract
--------
This document describes a more effective and more efficient storage of XML/DOM in
the OZONE data base. The presented technology is based on the production of node
clusters for the pooling of individual nodes. It is to replace the past technology
MONSTERDOM.


Introduction
------------

  Origins
  -------
  With the increased use of OZONE as XML storage engine it became indispensable to
  revise this fundamental technique available since the 0.3 release. Special
  problems with the past version of the XML storage engine occurred, if one has
  many particularly XML nodes in its documents. 

  General Goals
  -------------
  In the following the principal purposes of this technology are summarized:

    1. it should be independent of special XML implementations (Xerces, SunXML, JDOM)
    2. it should be better adapted on the fundamental technology of OZONE
    3. persistent storage should be more efficient 
    4. that is to enable a faster loading and storing of XML/DOM


Design
------
  The philosophy of this new technology is based on forming pools of many individual
  XML nodes.

  NodeCluster
  -----------
  A node cluster is a pool of for example 1024 individual DOM node.  The nodes to be
  stored in this cluster are the nodes of the respective assigned and used XML
  implementation. The node cluster implements the W3C DOM Level 1 or better Level 2
  interface. So all method calls of the cluster are passed on to the native nodes
  stored in the cluster. For faster access these nodes of the cluster are stored in
  an Array or a Hashtable. If a document should have more nodes which can be store in
  a cluster, a new cluster is created. The connection of a cluster to the next will
  be implemented by a proxy link. Thus it is guaranteed that each cluster can be
  serialized and deserialized independently. This optimizes the use of ozone. The node
  cluster is implemented as OZONE objects - so there exist a proxy class and a database
  object.

  NodeWrapper
  -----------
  A node wrapper is a substitute for the nodes stored in the cluster. The connection
  between this node wrapper and the appropriate node stored in the cluster is enabled
  over its known cluster proxy and the index where the node is stored in the cluster
  array. Otherwise a node wrapper is a simple Java object which implements the W3C DOM
  Level 1 or Level 2 interface. A node wrapper exists only at run-time of the client
  application and are produced with DOM method calls, like node.getNextSibling().


  The next picture will illustrate the described architecture.

                                             _____________________________________
                                             |                                   |
    __________________                       |        Ozone Server     __________|
    |                |   NodeClusterProxy/   |  _________________      | <Node> ||
    |     Client     |     ClusterIndex      |  |               |<---->|________||
    |                |                       |  |               |      _____|____|
    |  <NodeWrapper> |<----------------------|->|               |      | <Node> ||
    |                |                       |  | <NodeCluster> |<---->|________||
    ------------------                       |  |               |      _____|____|
                                             |  |               |      | <Node> ||
                                             |  |_______________|<---->|________||
                                             |         ^                    |    |
                                             |         |                    |    |
                                             |         v               _____|____|
                                             |  _________________      | <Node> ||
                                             |  |               |<---->|________||
                                             |  |               |      _____|____|
                                             |  |               |      | <Node> ||
                                             |  | <NodeCluster> |<---->|________||
                                             |  |               |      _____|____|
                                             |  |               |      | <Node> ||
                                             |  |_______________|<---->|________||
                                             |___________________________________|


Conclusion
----------
  Problems step on with the implementation of the node cluster. Many DOM implementations
  use direct access of members instead of using W3C DOM interface to modify members.
  Without this ozone is unable to store these changes persistently. JDOM could create
  remedy for this problem. A test environment for the confrontation of DOM and JDOM would
  create clarity about this.


Feedback and contribution
-------------------------
  Feedback on this paper and contribution is very welcome at ozone-users@ozone-db.org.


References
----------

  [ozone] - The ozone data base project (http://www.ozone-db.org)
  [dom] - Document Object Model Level 2 (http://www.w3.org/TR/DOM-Level-2/)
  [jdom] - Java Document Object Model (http://www.jdom.org)
  [xerces] - The Xerces-J XML Parser (http://xml.apache.org/xerces-j)