http://www.eobjects.dk/resources/IconMetaModel.png

MetaModel

About | Developers guide | Webcast demo | Database compliancy | License |  Download

A common domain model, query-engine and optimizer for different kinds of datastores.

The eobjects.org MetaModel is a project created for maximum reuse of a SQL 99 compliant domain model of the database domain. The MetaModel is a model that contains classes that represent the structure of a database (schemas, tables, column, relationships) and interaction with the database (queries). In short a model for modelling (hence the word "metamodel") data in databases and other datastores.

MetaModel is being used in a lot of projects, including  eobjects.org DataCleaner and  Quipu. Additionally the QueryParser project is aimed at creating a String-based parser to populate the query-part of MetaModel by parsing incoming SQL queries.

New: This wiki page is no longer to be considered the main homepage of MetaModel! This serves as a community place for documentation collaboration and ad hoc writing of snippets and small pieces of information.

Please be sure to visit the new official MetaModel website at  http://metamodel.eobjects.org

Goals

The goal of MetaModel is to provide an API for:

  • Traversing and building the structure of datastores.
  • Executing datastore-neutral queries in a SQL-like manner.
  • Provide datastores that do not support queries with a query engine.
  • Implement this system for JDBC databases, Comma-separated files, XML files, Excel spreadsheets, MS Access (.mdb), dBase (.dbf) and OpenOffice (.odb) database-files.
  • Allow querying across datastores in a way that is similar to querying a single datastore. This involves transparent client-side joining, filtering, grouping etc.
  • Split single queries into multiple ones that yield the same collective result, enabling powerful performance optimization and grid execution for heavy work loads.

We are designing this API to be:

  • Comprehensive - MetaModel should contain all the functionality that is required to model the datastore domain.
  • Easy to use - We focus on simple design and fluent interfaces to make the most commonly used functionality easy and fun to use.
  • Consistent - With MetaModel you will not experience all the ambiguities that exist in other frameworks like JDBC. Instead of diversity and hacks we focus on standardization and a common datastore infrastructure - all nescesary hacks have been hidden from you, the user.
  • Extensible - We provide extension-points to make it possible to use MetaModel for your own legacy systems, for example to query datastores that may not be supported.
  • Light-weight - Deliberate use of POJOs make it easy to understand what is going on inside MetaModel.

Contributing

There are several ways you can contribute to MetaModel...