Fact Sheet

System Requirements
Java Version

JDK > 1.4.

Supported Platforms

Platform independent. Tested on Linux (Debian GNU/Linux 3.1/Mandrake/Slackware 10-10.2/SUSE 9.3), FreeBSD 5.4/6.0, Sun Solaris 10/Sparc, Windows 2000/XP/XP Server Edition

Required Software

None. A web server (Jetty) and Cocoon are included in the distribution, but eXist can also run without them.


Core Database Features
Data Storage

Native XML data store based on B+-trees and paged files. Document nodes are stored in a persistent DOM.

Collections

Documents are managed in hierarchical collections, similar to storing files in a file system. Collections are not bound to a predefined schema or document type.

Indexing

Based on a numeric indexing scheme which supports quick identification of structural relationships between nodes, such as parent/child, ancestor/descendant or previous-/next-sibling.

Index Creation

Automatic index creation by default. Uses structural indexes for element and attribute nodes, a fulltext index for text and attribute values and range indexes for typed values. Fulltext indexing can be turned on/off for selected parts of a document. The structural indexes are maintained automatically.

Query Engine

eXist has its own, optimized XQuery engine, featuring an efficient, index-based query processing.

Contrary to conventional implementations, eXist's query engine tries to avoid top-down or bottom-up tree traversals. Instead, it relies on fast path join algorithms to compute node relationships. Path joins can be applied to the entire node sequence in one, single step. For a description of the basic algorithms, read this article.

Updates

Document-level and node-level updates with XUpdate and XQuery update extensions.

Authorization Mechanism

Unix-like access permissions for users/groups at collection- and document-level.

Security

eXtensible Access Control Markup Language (XACML) for XQuery access control.

Transactions/Crash Recovery

The database supports full crash recovery based on a journal in which all transactions are logged. In case of a database crash, all committed transactions will be redone while incomplete transactions will be rolled back.

However, transaction support is limited to the functionality needed for crash recovery. This means that transactions are not yet visible or usable from application code. All transactions are created automatically by the various APIs.

Deployment

eXist may be deployed as a stand-alone database server, as an embedded Java library or as part of a web application (running in the servlet engine).

Backup/Restore

Backup/restore functionality is provided via Java admin client or Ant scripts. The backup contains resources as readable XML. Allows full restore of a database including user/group permissions.


XML Standards
XPath/XQuery

XQuery 1.0 with exception of the schema import and schema validation features defined as optional in the XQuery specification. Queries may span any possible combination of collections or documents. eXist implements the full axis feature, which means you can use the optional axes: ancestor, ancestor-or-self, following-sibling, and preceding-sibling; following and preceding are supported with limitations.

XQuery Modules

XPath/XQuery standard function library; many additional modules for manipulating database contents, dynamic evaluation of XQuery expressions, XSL transformations, HTTP related functions.

User-defined modules can be provided in XQuery or Java.

XInclude

Supported. Some features missing. Queries do not descend into xincluded documents automatically.

XPointer

Partially.

XSL/XSLT

Supported through the server interfaces or XQuery extension functions.

XUpdate

Yes and also an update syntax extension for XQuery


APIs
XML:DB API

Core Level 1 implementation. Provides drivers for access to a remote database or embedded use. Additional services for user management, collection management, XQuery.

DOM

Through XML:DB API. Direct (read) access to the persistent DOM is provided for embedded databases.

SAX

Through XML:DB API.


Network Protocols
HTTP/REST

eXist offers a REST-style web service API for simple access via HTTP. This is in general the fastest way to access the database. Running in a servlet context, the REST functionality is provided through the EXistServlet. In stand-alone mode, the database has its own, built-in web server.

XML-RPC

XML-RPC is the preferred protocol and used by the XML:DB API drivers. Provides full access to all database functions.

SOAP

Supported in servlet mode. Based on Apache Axis.

WebDAV

Complete support for all core WebDAV operations.


Limits
Max. Number of Documents

The maximum number of documents to be stored in the database is 231.

Max. Size per Document

The eXist-1.1-newcore release drops the conceptual limits present in older versions. Theoretically, documents can be arbitrary large. In practice, some properties like the child count of a node are limited to a 4-byte int number. There are also operating system limits, e.g. the max size of a file in the filesystem, which have an influence.