This is a draft document, currently in progress and woefully incomplete. Contributions or suggestions are welcome.
At a very high level, Axion's functionality is distributed across four major layers, as illustrated in Axion's Major Tiers.
Client applications typically interact with Axion via the JDBC layer,
which is largely an implementation of the standard JDBC interfaces such as
Connection
, Statement
, and
ResultSet
.
The JDBC implementations in turn use a parser layer to
convert SQL statements into AxionCommand
instances which can operate
on the database. Currently Axion has only one parser, which is JavaCC based, but any implementation
of Axion's Parser
interface could be easily substituted.
These generated AxionCommand
s are then executed against
the database in the engine layer, which is largely composed
of various commmand, RowIterator
and database object
implementations.
When necessary, the engine reads and writes data to a storage
layer, which is implemented by various Table
,
Index
, Database
, and
DataType
implementations.
Axion is designed to be modular, with well defined interfaces circumscribing the interaction between the various parts. By adhering to these interfaces, one may substitute additional or alternative implmentations of many of Axion's pieces, such as tables, indices, functions, constraints, datatypes, even new parsers and commands.