Articulo de referencia

Metakit

Metakit es una biblioteca de bases de datos integrada con un tamaño reducido. Cubre la brecha entre las bases de datos de archivos planos , relacionales , orientadas a objetos y...

Metakit es una biblioteca de bases de datos integrada con un tamaño reducido. Cubre la brecha entre las bases de datos de archivos planos , relacionales , orientadas a objetos y con estructura de árbol , y admite uniones relacionales, serialización, estructuras anidadas y evolución instantánea del esquema. Las interfaces para C++ (nativa), Python y Tcl son las más utilizadas.

Historia

Metakit fue escrito por Jean-Claude Wippler , un desarrollador de software de los Países Bajos . [ 1 ] Su desarrollo comenzó alrededor de 1997 y en 2001 se publicó como software de código abierto bajo la licencia MIT X11 . El autor ofrece soporte comercial. Sin embargo, en los últimos años, Wippler ha dedicado menos tiempo a Metakit y más a sus otros proyectos.

La base de datos se utiliza en varios productos comerciales (incluida la Libreta de Direcciones en Mac OS X 10.4 y versiones anteriores) y en varios proyectos de código abierto (por ejemplo, el lector de feeds Akregator de KDE ) y proyectos internos (normalmente utilizando Python o la interfaz TCL). Un proyecto relacionado, Starkit ( sistema de archivos virtual para TCL), escrito por Wippler, alcanzó gran popularidad entre los programadores de TCL.

La lista de correo de Metakit cuenta con suscriptores activos y Wippler publica regularmente en ella. Otros desarrolladores han contribuido al proyecto con correcciones de errores y sugerencias.

Características

A diferencia de la mayoría de los demás sistemas de bases de datos que almacenan las filas de una tabla en un solo lugar (arquitectura orientada a filas), Metakit almacena las columnas individuales por separado ( arquitectura orientada a columnas ). Durante muchos años, solo fue posible el acceso lineal a las tablas (con una complejidad de O(1) para el acceso y O(N) para la búsqueda); posteriormente, se añadieron estructuras hash y estructuras tipo árbol B (reduciendo la complejidad típica de búsqueda a O(1)). Con el tiempo, también se añadieron operaciones relacionales (como agrupar y unir ). Es posible combinar y procesar datos de tablas mediante mecanismos flexibles llamados vistas . Los datos de la base de datos son portátiles entre plataformas. El consumo de espacio en disco de Metakit es muy bajo; se emplean varias técnicas automáticamente para reducirlo al máximo. Se proporciona un visor de las estructuras de la base de datos Metakit (llamado Kitview ).

El límite práctico para el tamaño de la base de datos es de alrededor de 1 GB (incluso en plataformas de 64 bits ). El acceso multihilo y multiusuario requiere soporte manual del programador y no se recomienda (en C++, TCL y Python usan un bloqueo global automático). Las combinaciones de características más avanzadas a menudo no se prueban y pueden fallar. Es posible obtener un rendimiento algo mejor que con otras bases de datos (los benchmarks publicados incluyen SQLite y Berkeley DB ), pero requiere muchas pruebas y un gran conocimiento de los detalles internos de Metakit. La API de Metakit es de bajo nivel, en comparación con SQL .

La principal debilidad de Metakit reside en su documentación, a menudo incompleta y obsoleta . Para comprender plenamente su API y optimizar su rendimiento, es necesario estudiar a fondo el código fuente de la biblioteca. La terminología de Metakit difiere considerablemente de la terminología estándar de las bases de datos. La API y el formato de archivo han cambiado varias veces con el tiempo.

Metakit ha sido probado en Windows , Unix y Mac OS X.

Enlaces de lenguaje

  • C++ (nativo): Metakit está escrito en C++ (sin utilizar sus nuevas características, por lo que incluso los compiladores muy antiguos pueden manejarlo).
  • Python : llamado Mk4py
  • Tcl : llamado Mk4tcl , con un enlace OO opcional encima llamado Oomk .
  • Se pueden integrar otros lenguajes con la ayuda de SWIG .
  • Sitio de Metakit
  • e4Graph : biblioteca que permite a los programas almacenar y manipular datos similares a gráficos de forma persistente, construida sobre Metakit.
  • Repositorio de código fuente

Referencias

  1. Landers, Steve. " KitView - Una herramienta de interfaz de usuario para MetaKit ", Actas de la Conferencia AUUG 2001. 63.