Project 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 those datastores that do not already support queries with the MetaModel streaming query engine (aka. the Query Postprocessor).
  • Implement this system for JDBC databases, Comma-separated files, XML files, Excel spreadsheets and more.
  • Allow querying across datastores in a way that is similar to querying a single datastore. This involves transparent client-side joining, filtering, grouping etc.

Design rationale

We are designing the API of MetaModel 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.
  • Performant - MetaModel strives to implement all the tweaks and hacks that you need to do, but implement them behind the covers of our interfaces. This means you don't need to worry as much about about e.g. low-level query optimization, but just concentrate on what you need to archieve.
  • 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.
  • Lightweight - Deliberate use of POJOs make it easy to understand what is going on inside MetaModel.