<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: facts.xml 17271 2012-10-08 15:00:16Z joewiz $ --><document xmlns:xi="http://www.w3.org/2001/XInclude"><body><section title="Fact Sheet"><category name="System Requirements"><topic name="Java Version"><p>Java6 "Java SE 6"; development and testing is performed using Oracle's Java6 JVM, 32bit (x86) and 64bit (x64).</p><p>Java7 "OpenJDK7" will be supported when officially released for all platforms.</p><p>eXist-db requires a JDK, a JRE only is not sufficient.</p></topic><topic name="Supported Platforms"><p>Platform independent. Tested on Linux (Debian GNU/Linux
                        3.1-5.0/Mandrake/Slackware 10-12/SUSE 9.3/Fedora 6-10.90/RHEL 5.2), FreeBSD 5.4/6.0, Sun Solaris
                        10/Sparc/x86/x64, Mac OS X (10.5.x, 10.6.x), Windows 7/Vista/2000/XP/XP Server Edition</p></topic><topic name="Required Software"><p>None. A web server (Jetty) is included in the distribution, but
                        eXist can also run without it.</p></topic></category><category name="Core Database Features"><topic name="Data Storage"><p>Native XML data store based on B+-trees and paged files. Document nodes are
                        stored in a persistent DOM.</p></topic><topic name="Collections"><p>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.</p></topic><topic name="Indexing"><p>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.</p></topic><topic name="Index Creation"><p>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.</p></topic><topic name="Query Engine"><p>eXist-db has its own, optimized <a href="xquery.xml">XQuery engine</a>,
                        featuring an efficient, index-based query processing.</p><p>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 <a href="xmlprague06.xml">article</a>.</p></topic><topic name="Updates"><p>Document-level and node-level updates with XUpdate and XQuery <a href="update_ext.xml">update extensions</a>.</p></topic><topic name="Authorization Mechanism"><p>Unix-like <a href="security.xml">access permissions</a> for users/groups at
                        collection- and document-level.</p></topic><topic name="Security"><p>eXtensible Access Control Markup Language (<a href="xacml.xml">XACML</a>) for
                        XQuery access control.</p></topic><topic name="Transactions/Crash Recovery"><p>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.</p><p>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.</p></topic><topic name="Deployment"><p>eXist-db may be <a href="deployment.xml">deployed</a> as a stand-alone database
                        server, as an embedded Java library or as part of a web application (running
                        in the servlet engine).</p></topic><topic name="Backup/Restore"><p><a href="backup.xml">Backup/restore</a> 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.</p></topic></category><category name="XML Standards"><topic name="XPath/XQuery"><p>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.</p></topic><topic name="XQuery Modules"><p>XPath/XQuery standard function library; many additional modules for
                        manipulating database contents, dynamic evaluation of XQuery expressions,
                        XSL transformations, HTTP related functions.</p><p>User-defined modules can be provided in XQuery or Java.</p></topic><topic name="XInclude"><p>Supported. Some features missing. Queries do not descend into xincluded
                        documents automatically.</p></topic><topic name="XPointer"><p>Partially.</p></topic><topic name="XSL/XSLT"><p>Supported through the server interfaces or XQuery extension functions.</p></topic><topic name="XUpdate"><p>Yes and also an update syntax extension for XQuery</p></topic></category><category name="APIs"><topic name="DOM"><p>Through <a href="http://xmldb.exist-db.org/">XML:DB API</a>. Direct (read) access to the 
                        persistent DOM is provided for embedded databases.</p></topic><topic name="Fluent"><p>Provides classes and interfaces to interact with an embedded instance of the 
                        eXist XML database. This <a href="http://fluent.exist-db.org">API</a> layer takes 
                        advantage of Java 5.0 language features 
                        to make interaction with the database easier.</p></topic><topic name="SAX"><p>Through <a href="http://xmldb.exist-db.org/">XML:DB API</a>.</p></topic><topic name="XML:DB API"><p>Core Level 1 implementation. Provides drivers for access to a remote database
                        or embedded use. Additional services for user management, collection
                        management, XQuery. </p></topic></category><category name="Network Protocols"><topic name="HTTP/REST"><p>eXist-db 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.</p></topic><topic name="SOAP"><p>Supported as servlet, based Apache Axis and more interestingly, supported as "SoapServer" which
                        makes it possible to expose all xquery functions in a module via SOAP just by changing the
                        document extension to ".xqws".</p></topic><topic name="WebDAV"><p>Complete support for all core <a href="webdav.xml">WebDAV</a> operations, based on the 
                       <a href="http://milton.ettrema.com">Milton</a> server-side webdav API </p></topic><topic name="XML-RPC"><p>XML-RPC is the preferred protocol and used by the XML:DB API drivers.
                        Provides full access to all database functions.</p></topic></category><category name="Limits"><topic name="Max. Number of Documents"><p>The maximum number of documents to be stored in the database is
                        2<sup>31</sup>.</p></topic><topic name="Max. Size per Document"><p>Release 1.1 dropped 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. </p></topic></category></section></body></document>