Metakit


Metakit is an embedded database library with a small footprint. It fills the gap between flat-file, relational, object-oriented, and tree-structured databases, supporting relational joins, serialization, nested structures, and instant schema evolution. Interfaces for C++, Python and Tcl are the most used.

History

Metakit was written by Jean-Claude Wippler, a software developer from the Netherlands. Its development started around 1997 and in 2001 it released as open source under the MIT X11 license. The author provides commercial support. In the last few years, however, Wippler has spent less time on Metakit and more on his other projects.
The database is used in several commercial products and in several open source and in-house projects. A related project, Starkit, written by Wippler, reached popularity among TCL programmers.
The mailing-list of Metakit has active subscribers and is regularly posted to by Wippler. Other developers have contributed to the project with bug fixes and suggestions.

Features

Unlike most other database systems which store rows of a database table in one place Metakit stores individual columns separately. For many years only linear access to the tables was possible for access and O, later hash structures and B-tree like structures were added. Relational operations were also added over years. It is possible to combine and process table data via flexible mechanisms called views. The database data are portable among platforms. Disk space overhead of Metakit is very low — several techniques are employed automatically to reduce it as much as possible. Viewer of Metakit database structures is provided.
Practical limit to database size is around 1GB. Multithreaded and multiuser access requires manual support from the programmer and is discouraged. Combinations of more advanced features are often not tested and may fail. It is possible to obtain somewhat better performance than with other databases but it requires lot of testing and lot of knowledge of Metakit internals. Metakit's API is low level, compared to SQL.
The biggest weakness of Metakit is its rather spotty and sometimes obsolete documentation. Full understanding of its API and performance tuning requires deep study of library's source code. Metakits terminology has many differences to standard database terminology. The API and file format has changed several times over time.
Metakit is tested on Windows, Unix and Mac OS X.

Language bindings