Metakit

Metakit
Metakit
Developer(s) Jean-Claude Wippler
Stable release 2.4.9.7 / June 16, 2007; 4 years ago (2007-06-16)
Operating system Cross-platform
Type Development Library
License MIT License
Website http://www.equi4.com/metakit.html

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++ (native), Python and Tcl are the most used.

Contents

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 (including Address Book in Mac OS X 10.4 and earlier) and in several open source (KDE's feed reader Akregator among) and in-house projects (typically using Python or TCL interface). A related project, Starkit (virtual file system for TCL), 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 (row-oriented architecture) Metakit stores individual columns separately (column-oriented architecture). For many years only linear access to the tables was possible (with complexity O(1) for access and O(N) for search), later hash structures and B-tree like structures were added (reducing typical search complexity to O(1)). Relational operations (like group-by and joins) 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 (named Kitview) is provided.

Practical limit to database size is around 1GB (even on 64-bit platforms). Multithreaded and multiuser access requires manual support from the programmer and is discouraged (in C++, TCL and Python use one automatically global lock). Combinations of more advanced features are often not tested and may fail. It is possible to obtain somewhat better performance than with other databases (published benchmarks include SQLite and Berkeley DB) 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

  • C++ (native): Metakit is written in C++ (without using its new features so even very old compilers can handle it).
  • Python: called Mk4py
  • Tcl: called Mk4tcl, with an optional OO binding on top called Oomk.
  • Other languages can be interfaced with help of SWIG.

External links

  • Metakit site
  • e4Graph: library that allows programs to store and manipulate graph-like data persistently, built on top of Metakit

Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать реферат

Look at other dictionaries:

  • MetaKit — Entwickler Jean Claude Wippler Aktuelle Version 2.4.9.7 (16. Juni 2007) Betriebssystem plattformübergreifend Kategorie Datenbanken Lizenz …   Deutsch Wikipedia

  • MetaKit — Тип Development Library Разработчик Jean Claude Wippler Операционная система Кроссплатформенное ПО Последняя версия 2.4.9.7 (Шаблон:Release date and age) Лицензия Лицензия MIT Сайт …   Википедия

  • Datenbank (Liste) — Die Liste der Datenbankmanagementsysteme umfasst Software zur Verwaltung von Datenbanken, vor allen von relationalen Datenbanken, objektorientierten Datenbanken und objektrelationalen Datenbanken. Inhaltsverzeichnis 0 9 A B C D E F G H I J …   Deutsch Wikipedia

  • Datenbankliste — Die Liste der Datenbankmanagementsysteme umfasst Software zur Verwaltung von Datenbanken, vor allen von relationalen Datenbanken, objektorientierten Datenbanken und objektrelationalen Datenbanken. Inhaltsverzeichnis 0 9 A B C D E F G H I J …   Deutsch Wikipedia

  • Liste von Datenbanken — Die Liste der Datenbankmanagementsysteme umfasst Software zur Verwaltung von Datenbanken, vor allen von relationalen Datenbanken, objektorientierten Datenbanken und objektrelationalen Datenbanken. Inhaltsverzeichnis 0 9 A B C D E F G H I J …   Deutsch Wikipedia

  • Embedded-Database — Ein eingebettetes Datenbanksystem ist ein in einer Anwendung eingebettetes Datenbanksystem, das nach außen nicht sichtbar in Erscheinung tritt. Inhaltsverzeichnis 1 Eigenschaften 2 Einsatz in Klein und Kleinstgeräten 3 Liste der eingebetteten… …   Deutsch Wikipedia

  • Tcl — Infobox programming language name = Tcl paradigm = multi paradigm: object oriented, functional, procedural, event driven programming year = 1988 designer = John Ousterhout developer = John Ousterhout latest release version = 8.5.4 latest release… …   Wikipedia

  • H0 scale — Infobox Model Rail Scale name = H0 image filename = HO Scale Bachmann 44 tonner.jpg image caption = U.S. prototype model of an H0 scale (1:87) center cab switcher made by Bachmann shown with a pencil for size comparison. widthpx = 275px scale = 3 …   Wikipedia

  • Comparison of wiki software — The following tables compare general and technical information for a number of wiki software packages. Contents 1 General information 2 Target audience 3 Features 1 4 Features 2 …   Wikipedia

  • Column-oriented DBMS — A column oriented DBMS is a database management system (DBMS) that stores its content by column rather than by row. This has advantages for data warehouses and library catalogues where aggregates are computed over large numbers of similar data… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”