Metakit

Metakit is an efficient 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. There is a C++ API, a Python binding called Mk4py, and a Tcl binding called Mk4tcl. You can manipulate and exchange data between any of these.

Data files are portable. The library has been used on Unix, Windows, Macintosh, VMS, and others, spanning a range of 16- to 64-bit architectures, from PDA's to S390's.

Metakit is in use in various commercial projects and products on millions of desktops.

Overview

  • Use your data on any platform. Both the code and datafiles are portable. All byte-ordering managed by the library.
  • Complex datastructures in one file. Store multiple nested data structures, to create document-centric applications.
  • Restructure datafiles, instantly. You'll have to see this to believe it: restructure files on-the-fly, while open.
  • Serialize all data for transport. Complementing commit/rollback of changes, data can also be serialized.
  • Recover from system-failures. The use of Stable Storage ensures that files cannot be corrupted by crashes.
  • Load on-demand, quick startup. Files are opened without reading data. Memory-mapped files if O/S supports it.
  • Behaves like containers. The API mimics container classes. Quickly get sizes and iterate over rows.
  • Wide range of operators built-in. Sorting, relational join / group by, set operations, permutations, hashing.
  • 1-32 bits per int (or 64), variable-sized data. The largest int defines storage format. String/binary data is stored as var-sized.
  • Create fully self-contained applications. Can be linked shared or statically, for hassle-free deployment of components.
  • Tiny code (125 Kb as Win32 DLL). The library is extremely small, unused functions are stripped off in static links.
  • Simple API, just 6 core classes. Only a small interface is exposed. One header file lists all the classes you need.
  • Also use from Python and Tcl. These language bindings are coded to take advantage of the respective idioms.