eXist is an Open Source effort to develop a native XML database system, tightly integrated with existing XML development tools like Apache's Cocoon. eXist covers most of the basic native XML database features as well as a number of advanced techniques like keyword searches on text, queries on the proximity of terms, and regular expression-based search patterns. The database is lightweight, completely written in Java, and may be easily deployed, running either standalone, inside a servlet engine, or directly embedded in an application.
While on first sight, eXist has many similarities to Apache's Xindice, each project addresses different types of applications, and each is based on different architectures. eXist especially puts strong emphasis on efficient, index-based query processing. eXist's search engine has been designed to provide fast XPath queries, using indexes for all element, text, and attribute nodes. Based on path join algorithms, a wide range of query expressions are processed using only index information. eXist will not load the actual nodes unless it is really required to do so, for example, to display query results.
eXist started as an Open Source project in January 2001 and has already gone a long way since the first versions were released to the public. A growing number of developers and projects are actively using the software in a variety of application scenarios. Applications show that eXist?despite its relatively short project history?is already able to address true industrial system cases, for example, as a core retrieval component in a multilingual documentation publishing system, containing technical maintenance documentation for several car models produced by an Italian car manufacturer.
The following sections introduce eXist's features and provide a quick overview of how to develop standalone and Web-based applications using the different interfaces provided with eXist. Finally, we will take a closer look at eXist's indexing and storage architecture to see how query processing works.