[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)