http://axion.tigris.org/ Axion is an OpenSource RelationalDatabase engine written in and primarily for the JavaLanguage. One nice thing about it is that it can be used for UnitTest''''''ing as a MockDatabase or TestDatabase by dynamically creating a transient (exists only in memory and the contents are never persisted) database and tables in your testcase's setUp and then shutting it down in your tearDown method. (It also supports a "persistent" mode, of course.) Like several other databases, it uses SnapshotIsolation rather than locking to support (serializable strength) transactions. The use of SnapshotIsolation model has strengths and weaknesses. See SnapshotIsolation for more discussion. Axion has a simple Table Interface. The Table Interface lets programmer quickly add custom table types. The custom table types can be used to expose the existing data files as RDBMS tables to the Axion engine. The user can take advantage of the rich set of features. Natively Axion supports delimited, fixed width, Tagged EBCDIC flat files as External tables. Axion also has limited support for federated database thru ExternalDatabaseTable that leverages JDBC API. ---- Syntax for External table: CREATE EXTERNAL TABLE tablename (col-definition, col-definition, ...) ORGANIZARION(loadtype={delimited | fixedwidth | taggedebcdic | remote} , property-definition, property-definition ...) Note: For remote load type, you can use "CREATE DATABASE LINK connection-spec" command to create a link first before creating remote database table ---- Notable features that makes Axion different from other OpenSourceJavaDatabases : * Pluggable data type * Pluggable functions * Pluggable Index types * Pluggable Table types * Very rich set of functions * ANSI 2003 style Sequence * ANSI 2003 style Identity Column * MultiTableInsert * ANSI 2003 style UpsertCommand/MergeCommand * ConditionalUpdate/ConditionalUpsert * Supports In-Memory database mode. * Thread safe and robust * QueryPlanner/QueryOptimizer * Complete support for sub-select (correlated and no-correlated) * Support for HAVING clause. * See http://axion.tigris.org/features.html for detailed feature list. Axion has been used in commercial products containing millions of rows and gigabytes of data, and has been shown to readily process thousands of transactions a second (on mediocre desktop hardware). '''Axion's current weaknesses''' * Axion can only be used in-process so multiple processes cannot use the same database at the same time (unless all of them are read-only). * Axion does not yet support a user-level security model. * No support for stored procedures * No support for triggers * Doesn't do row-level locking, which makes it unsuitable for applications that have concurrent writes to the same table ---- See OpenSourceJavaDatabases for other OpenSource database engines implemented in Java. ---- CategoryDatabase