Welcome to Schemata

Schemata will allow projects to remain database-agnostic. A project will be able to maintain its database schema and data in XML and load it into any database for which a JDBC driver is available. With Schemata, there is no need to maintain multiple database-specific SQL scripts.

Background

The idea for this project came from a tool called DbLoader which is part of uPortal, an open source enterprise portal framework. Schemata will use ideas from DbLoader, but will not be based on the same code and will not be dependent on anything in the uPortal framework.

Status

Schemata is a brand new project that began in November 2005. The code is not yet mature enough to do anything useful.

Roadmap

  • The first step will be to define two XML Schemas. The first, schema.xsd, will define the syntax for specifying all the tables and their columns along with column types, primary and foreign key information, and indexes. The next one, data.xsd, will define the syntax for specifying all the data that should be loaded into an existing schema.
  • Next, a parser needs to be written to parse XML documents that conform to both of the XML schemas mentioned above. A StAX parser will be written initially and then other parsers like SAX, JDOM, and XStream may be written to be evaluated against StAX for speed and ease of programming.
  • Once there is a working parser, it will be time to design the part of this framework that can load the schema and data into any relational database. This will be accomplished by choosing among database dialects. Dialects will be written for popular databases like MySQL, PostgreSQL, Oracle, HSQLDB, etc. but there will also be a driver that attempts to discover a database's capabilities through information provided by the JDBC driver.
  • Finally, Ant tasks, a Maven plugin, and possibly even an Eclipse plugin will be written to make it easy to integrate Schemata into other projects.