[ZODB-Dev] CMS on top of ZODB

Dieter Maurer dieter@handshake.de
Mon, 10 Feb 2003 20:02:30 +0100


Chris McDonough wrote at 2003-2-10 09:11 -0500:
 > I am curious whether you think there is an opportunity here to develop a
 > "standardized" XML-to-Zope-object serialization of large SGML/XML
 > documents.  ParsedXML doesn't really fit the bill, as it doesn't do
 > anything special to break nodes across database records.    XMLDocument
 > probably doesn't have enough features, and I don't even know whether it
 > works or not anymore.
I am not sure whether our solution will be general:

  We would replace a solution implemented in C++ which is
  considered too slow and too disk hungry.
  Implementing the replacement with Python is thus a challenge
  as Python objects are bigger than corresponding C++ ones and Python
  is usually slower than C++.
  To cope with this challenge, I think of a highly optimized
  and specialized implementation.

Our documents are split into components according to a
publication specification (pubspec). The pubspec defines a set of
component elements (i.e. SGML/XML tags) that should become
independent database objects; they have associated meta data,
workflow state and can be independently edited and shared.

The pubspec also defines link elements (similar to XLINK).
Such elements, too, become independent database objects
with special behaviour (link resolution).

We know that the remaining content of a component will be read/written
atomically. Thus, it is not worth to split it further.
We will use a microDOM (non persistent) structure which
is like minidom but removes "parentNode", "nextSibling", "previousSibling"
(to avoid cycles) and redundant attributes for "nodeName" and "nodeValue"
(to save space in the pickles).
  

When this approach is interesting, I think, I will be able to provide
the relevant code.


 > I am also wondering whether you think you might be able to use the
 > application level version control system written by Brian Lloyd at
 > http://cvs.zope.org/Products/ZopeVersionControl/  instead of hacking
 > ZODB to do this.

I just learned yesterday about it (from a post sent by Casey).
I will have a look at it. Although, the ZODB does precisely
what we need, with the exception of the packing...


Dieter