Метакит - Metakit
Эта статья не цитировать любой источники.Октябрь 2009 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Разработчики) | Жан-Клод Випплер |
---|---|
Стабильный выпуск | 2.4.9.8 / 19 июня 2015 г. |
Написано в | 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