Метакит - Metakit

Метакит
Разработчики)Жан-Клод Випплер
Стабильный выпуск
2.4.9.8 / 19 июня 2015 г.; 5 лет назад (2015-06-19)
Написано вC ++
Операционная системаКроссплатформенность
ТипБиблиотека разработки
ЛицензияЛицензия MIT
Интернет сайтhttps://git.jeelabs.org/jcw/metakit

Метакит является встроенная база данных библиотека с небольшой занимаемой площадью. Он заполняет пробел между плоский файл, реляционный, объектно-ориентированный, и древовидный базы данных, поддержка реляционных объединений, сериализации, вложенных структур и мгновенной эволюции схемы. Интерфейсы для C ++ (родные), Python и Tcl являются наиболее часто используемыми.

История

Метакит был написан Жан-Клод Випплер, разработчик программного обеспечения из Нидерланды. Его разработка началась примерно в 1997 году, а в 2001 году он был выпущен с открытым исходным кодом под лицензией MIT X11 лицензия. Автор оказывает коммерческую поддержку. Однако в последние несколько лет Випплер уделял меньше времени Метакиту и больше другим своим проектам.

База данных используется в нескольких коммерческих продуктах (в том числе Адресная книга в Mac OS X 10.4 и ранее) и в нескольких открытых источниках (например KDE программа для чтения Акрегатор ) и собственные проекты (обычно с использованием интерфейса Python или TCL). Связанный проект, Старкит (виртуальная файловая система for TCL), написанный Випплером, стал популярным среди программистов TCL.

Список рассылки Metakit имеет активных подписчиков и регулярно публикуется Wippler.[когда? ] Другие разработчики внесли свой вклад в проект, исправив ошибки и предложив свои предложения.

Функции

В отличие от большинства других база данных системы, которые хранят строки базы данных стол в одном месте (строчная архитектура) Metakit хранит отдельные столбцы отдельно (колоночная архитектура ). В течение многих лет был возможен только линейный доступ к таблицам (со сложностью О (1) для доступа и НА) для поиска), позже хеш-структуры и B-дерево были добавлены подобные структуры (снижение типичной сложности поиска до O (1)). Реляционные операции (например, группа по и присоединяется ) также добавлялись годами. Можно комбинировать и обрабатывать данные таблицы с помощью гибких механизмов, называемых взгляды. Данные базы данных переносимы между платформами. Накладные расходы на дисковое пространство Metakit очень низки - автоматически используются несколько методов, чтобы максимально сократить их. Наблюдатель структур базы данных Metakit (назван Kitview) предоставлен.

Практическое ограничение на размер базы данных составляет около 1ГБ (даже на 64-битный платформы). Многопоточный и многопользовательский доступ требует ручной поддержки со стороны программиста и не рекомендуется (в C ++, TCL и Python используется одна автоматически глобальная блокировка). Комбинации более сложных функций часто не тестируются и могут не работать. Можно получить несколько лучшую производительность, чем с другими базами данных (опубликованные тесты включают SQLite и Berkeley DB ), но для этого требуется много тестирования и много знаний о внутреннем устройстве Metakit. Метакита API низкий уровень по сравнению с SQL.

Самая большая слабость Метакита - это довольно пятнистый и иногда устаревший документация. Полное понимание его API и настройки производительности требует глубокого изучения исходного кода библиотеки. Терминология Metakits во многом отличается от стандартной терминологии баз данных. API и формат файла менялись несколько раз с течением времени.

Метакит протестирован на Windows, Unix и Mac OS X.

Языковые привязки

  • C ++ (родной): Metakit написан на C ++ (без использования его новых функций, поэтому с ним могут справиться даже очень старые компиляторы).
  • Python: называется Mk4py
  • Tcl: называется Mk4tcl, с необязательной привязкой OO вверху, называемой Oomk.
  • Другие языки могут быть связаны с помощью SWIG.

внешняя ссылка

  • Сайт Метакит
  • e4Graph: библиотека, которая позволяет программам хранить и управлять график -подобные данные постоянно, построенные поверх Metakit