
Copyright (c) 1999-2004 The dbXML Group, L.L.C.  All rights reserved.

See LICENSE for The dbXML License


Table of Contents
=================
   Introduction
   Avoiding Confusion
   Target Platforms
   Release Notes
   Authors
   Acknowledgments


Introduction
------------
dbXML is a Native XML Database (NXD). NXDs are databases that store XML
using an internalized format for faster overall processing. dbXML was
developed using the Java 2 Standard Edition version 1.4, and should
operate properly on all platforms to which J2SE 1.4 has been ported.


Avoiding Confusion
------------------
dbXML is *not* to be confused with Berkeley DB XML which is currently
being developed by Sleepycat Software.  Berkeley DB XML is relatively
new, written in C/C++, leverages Berkeley DB, and is meant to operate
as an embedded XML database.  dbXML was started in 1999, is written
in Java, and can operate both in embedded and client/server modes.

Some people have taken to calling Berkeley DB XML the name "BDB XML".



Target Platforms
----------------

The dbXML code base is written in Java, and requires JDK 1.4.1 or
higher to operate.  It utilizes Java's New I/O system, which isn't
supported in JDK versions lower than 1.4.  The following is a list
of tested platforms and the JDK version that was used:

   Platform    Java VM Used
   =========== ========================
   Mac OS X    Apple's Java 2 SDK 1.4.2
   Solaris     Sun's Java 2 SDK 1.4.2
   Linux       Sun's Java 2 SDK 1.4.2
   Windows     Sun's Java 2 SDK 1.4.2


Release Notes
-------------

Version 2.0
===========
This is the official production release of version dbXML 2.0.
A lot of work has gone into this release, and I'm very pleased
to see it finally available in its final form.

Between the first release candidate and now, only a few minor
bugs were found.

- Newer versions of Xerces are strict about parsing the "]]>"
  sequence when it doesn't belong to a CDATA section.  Labrador
  serialized that sequence incorrectly and was causing parsing
  problems.  This problem has been resolved.

- The latest version of Xalan had a method return value that was
  not class-compatible with the older version.  This was causing
  the XUpdate engine to fail with a ClassCastException.  This
  problem has been resolved.

- Collections weren't removing their Labrador context when
  being dropped or otherwise disposed of, which would result in
  a phantom Collection if one were to connect to the Collection
  directly.  This has been resolved.

- Because the getInformation RPC method was exposed by both
  CollectionProxy and ContentProxy, attempting to connect a
  CollectionClient to a Document (or vice versa) would result
  in a Null Pointer Exception.  This has been resolved.


Version 2.0 (Release Candidate 1)
=================================
This is the first, and hopefully the only, Release Candidate
for dbXML 2.0.

- dbXML has now been built and tested with the Java 2 SDK version
  1.4.2 on both Solaris and Mac OS X.  There may now be
  compatibility issues  with dbXML and the version of Xalan that
  is included in the Java 2 SDK 1.4.1 or earlier, so Java 2 SDK
  1.4.2 is recommended.

- Previous Betas used Java's Memory Mapped I/O facilities to
  perform paging for the database.  This led to many performance
  and behavioral inconsistencies between Windows and UNIX, and
  so the paging system has reverted to standard Java I/O.

- Replaced the database bootstrap system with a more
  self-contained mechanism that works better with various
  versions of Windows.

- UTF-8 was not fully functional in Beta 3, it only appeared so.
  Queries, updates and indexes based on UTF-8 content would fail.
  These problems have been resolved.

- The Administrator now includes dialogs for creating both
  Collections and Indexes.  Double-clicking on a document now
  actually OPENS that document.  What a novel concept, eh?
  Also, a very basic hierarchical grid editor has been added,
  a new property editor has been added, and a Server shut down
  context menu has been added.

- Arbitrary properties that are specified in the Command Line's
  MKCOL, MKIDX, MKTRG, and MKEXT commands are now passed through
  to the associated database object.  In the case of MKCOL, these
  properties are passed to the associated Filer object.

- Cleaned up the Producer concept in the DTSM libraries so that
  Producer and extensions of Producer emit common events to
  implementations of the Consumer interface.

- An access control check is now performed when you attempt to
  shutdown the server remotely.  This check is performed against
  the top level "system" collection, and requires "Execute"
  access.

- Using the most recent stable version of Xerces and Xalan now.

- The XPathQueryResolver now imports a result Element's
  contextually relevant parent namespace declarations so that
  the resulting node can be parsed when it exits the system.


Version 2.0 (Beta 3)
====================
Beta 3 includes several bug fixes as well as some additional
functionality in the Administrator tool.  This will probably be
the final beta before a release candidate is made available.

- dbXML now includes proper support for UTF-8 in the transport
  layer.  In order to do this, I had to replace the Apache XML-RPC
  library with a heavily modified one that serializes XML above
  character 0xFF correctly, and uses JAXP to get a parser instance
  instead of the embedded MinML parser.  MinML was small and fast,
  but it was lacking in its ability to parse UTF-8.  This modified
  XML-RPC library also strips away all of the server side
  functionality, which is handled by Labrador anyway.

- Added a XML namespace prefix mapping tab to the Administrator
  preferences, so a user can define a set of reusable namespace
  prefix mappings, without having to add them to their XML for
  every query.

- The Programmer's Guide now talks about creating indexes for
  elements and attributes that belong to a namespace.  This behavior
  has always existed in dbXML, but was never documented.


Version 2.0 (Beta 2)
====================
Beta 2 is mainly a bug-fix release, but also fills in some holes
in the Administrator tool.

- The indexing system would fail when you attempted to create an
  index on a pattern that didn't already have an accompanying set of
  symbols in the Collection's symbol table.  New indexes now
  automatically generate symbol table entries to accommodate future
  collection population.

- The dbXML REST Web Browser interface couldn't handle slashes in
  Document names, so browsing Collections such as /system/SysAccess
  and /system/SysSymbols would fail.  This has been corrected.

- The Command Line tools now support spaces in values by allowing
  quoted strings.  For example: connect user=tom pass="my pass".

- The dbXML Exception system has now been altered for supporting
  chained messages.  Exceptions that are morphed as they propagate
  through the system now include the messages of their root
  causes in the newly generated message.  This means you can now
  figure out why your document isn't being parsed as it goes into
  the system.

- The ValueIndexer would kindly ignore invalid type names and
  assume that you meant 'string'.  This has now been corrected,
  and you will be yelled at if you try to create an improper index.
  As a result, the programmer's guide now goes into a little more
  depth about index management.

- Trigger, Extension, and Index creation would still generate a
  configuration item, even if the object instantiation failed.
  This would lead to 'duplicate name' errors on subsequent attempts
  to create the object.  This has been corrected.

- On Windows, the Command Line's IMPORT command would leave the
  imported files open, causing them to be locked.  This command
  now properly closes the files after import.

- The Administrator has been filled out more, and now includes a
  basic preferences dialog.  There is now a preferences for
  performing "auto-beautifying" of XML loaded into the editor.
  This includes both documents and query results.


Version 2.0 (Beta)
==================
Some History:

The dbXML project was started toward the end of 1999 by Tom Bradford.
In its infancy, dbXML was written in C++ and was intended to be an
embedded XML data store.  Over its first year, the project migrated
from C++ to Java and shifted from an embedded store to a client/server
model.

In early 2001, dbXML Core version 1.0 was forked.  One image of that
fork was renamed Xindice and donated to The Apache Software Foundation.
The other image of the fork was retained by The dbXML Group to be
developed as a commercial product.

Beginning with version 2.0 (Beta), The commercial version of dbXML has
been resurrected as an open source project, and is being released under
the terms of the GNU General Public License.  The dbXML Group will also
continue to provide commercial licensing for dbXML for those users who
are restricted in their use of GPLed software.

A LOT has changed since the last version of dbXML that was released as
open source by the dbXML Group.  Since version 1.0, dbXML has been
practically rewritten from the ground up.  The overall architecture
remains essentially the same, and some of the fundamental APIs are very
similar, but for the most part, dbXML is a completely new product.

What's Left To Do For 2.0?

   - Transaction recovery needs fixing and lots of testing
   - Documentation.  There's some, but need lots more.

Future Features?

   - Dump & Load for backup/restore of portions of the database
   - A SOAP client (when Labrador supports SOAP)
   - The Administrator GUI still needs a lot of work
   - Constraining a Collection using a W3C XML Schema
   - Internalized DTSM representation of primitive schema types
   - Indexing implicitly coerced based on the schema types
   - Abstracted logical/physical plans and surrogate processing engine
   - XQuery in the future... maybe?


Authors
-------
dbXML is currently being maintained by the following people.  They are
listed in alphabetical order.

   - Tom Bradford (bradford@dbxmlgroup.com)


Acknowledgments
---------------
dbXML Core 1.0 was the result of the hard work of many people who
worked for the dbXML Group and/or who individually contributed to the
project.  Their contributions to that project served as the foundation
for dbXML as it exists today, and are greatly appreciated.  They are
listed in alphabetical order.

   - Tom Bradford
   - Michael Carmack
   - Dolan Halbrook
   - Jay Kalafus
   - Robert Kelsey
   - Brent Moore
   - Mike Mortensen
   - Ichiro Ohta
   - Fernando Padilla
   - Matthew Parry
   - Dan Pratt
   - Gianugo Rabellino
   - Kimbro Staken
   - Chris Staszak

Tom Bradford and OmniCore CodeGuide:

   Another quick acknowledgement.  I've been using a product called
   CodeGuide to do my Java development since late 1998 or early 1999.
   As far as IDEs go, CodeGuide 'appears' to be relatively simple,
   doesn't have a lot of 'flash', doesn't provide UI design tools,
   and isn't weighed down by a heap of 'plug-in features du jour'.
   Its code analysis tools, refactoring support, friendly handholding,
   and generally comfortable look and feel make it, by far, the best
   IDE I've ever used.  Please check it out: http://www.omnicore.com/

Licensing Acknowledgements

   This product includes software developed by The dbXML Group,
   L.L.C. (http://www.dbxml.com/)

   This product includes software developed by the Apache
   Software Foundation (http://www.apache.org/).

   This product includes software developed by the XML:DB
   Initiative (http://www.xmldb.org/).


