XSet
Enabling XML
Applications

Overview

XSet is a performance oriented main memory XML database and query engine.  XSet is meant to be a low level application component that enables applications to have high speed access to stored metadata in the form of XML documents.   In order to achieve the highest possible performance, XSet gives up the traditional ACID semantics of normal database systems in favor of more relaxed data semantics.

Compared to its industry and research counterparts, XSet is miniscule.  It uses a simple subset query model which is surprisingly complete for its current set of target applications.  Examples of XSet applications include metadata file systems, searchable email clients, user preference registries, service discovery services, and online customized content portals.

XSet 2.0 released June 2000, requires:

  1. Sun JDK 1.1 or 1.2, or a compatible Java development and runtime environment
  2. A version of the UNIX make program, for compilation.  (Similar tools exist for NT/95 from Cygwin)
XSet is my research project started in late fall of 1998.   It was developed in the context of the Ninja and Iceberg projects at U. C. Berkeley.  A ninja version of XSet is also distributed with the Ninja software distribution, available here.  If you have experience running XSet in your applications, good or bad, I'd love to hear about it.  Bug fixes, feature requests, questions and overall comments are all welcome.  Simply email me at ravenben@cs.berkeley.edu.

For documentation on the usage of XSet and writing XSet-enabled applications, see the XSet tutorial page.  Further information is available on installation notes and download instructions.

What's New:

V 2.0, June 2000: Mechanisms were added to provide flexible durability guarantees.  The expanded API includes support for redo logging (WAL), fuzzy checkpointing (serving queries while checkpoint snapshots are being taken), and flexible paging policies (support queries for larger sets of data that do not fit into main memory).  The clean DOM API allowed us to switch to the Xerces XML parser (from IBM and Apache) with minimal changes.

Please note that in Version 2.0, the XSet package name is now ninja.xset, changed from xset from previous versions.

V 1.1, July 1999: Expanded functionality and API, better documentation. Also switched XML parser to XML4J 2.0.6.  Performance should be similar or slightly faster than 1.0, but the functionality set is greatly expanded.

V 1.0, January 1999: First version of XSet.  Simple API with core subset query support with MSXML 1.9 as the XML parser.

Ninja Mailing List:

The Ninja research group maintains a developers mailing list, a (low-traffic) list subscribed to by members of the Ninja Project as
well as other users. To subscribe, send mail to majordomo@ninja.cs.berkeley.edu with the line subscribe
ninja-devel in the body.

Copyright

XSet is covered under a standard copyright from the University of California which allows free redistribution and derived work, as long as the copyright itself remains intact.  Please read the following copyright notice:

Copyright (c) 1999 by Ben Yanbin Zhao and The Regents of the University of California
All rights reserved.

Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee, and without written agreement is hereby granted, provided that the above copyright notice and the following two paragraphs appear in all copies of this software.

IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.