Метакит
Разработчик(и) | Жан-Клод Випплер |
---|---|
Стабильная версия | 2.4.9.8
/ 19 июня 2015 г |
Написано в | С++ |
Операционная система | Кросс-платформенный |
Тип | Библиотека разработки |
Лицензия | МОЯ лицензия |
Веб-сайт | https://github.com/jcw/jcw.github.io/tree/main/zips |
Metakit — это встроенная библиотека базы данных небольшого размера. Он заполняет пробел между с плоскими файлами , реляционными , объектно-ориентированными и древовидными базами данных базами данных , поддерживая реляционные соединения, сериализацию, вложенные структуры и мгновенную эволюцию схемы. интерфейсы для C++ (родной), Python и Tcl Наиболее часто используются .
История
[ редактировать ]Metakit был написан Жан-Клодом Випплером , разработчиком программного обеспечения из Нидерландов . [ 1 ] Его разработка началась примерно в 1997 году, а в 2001 году он был выпущен с открытым исходным кодом под лицензией MIT X11 . Автор оказывает коммерческую поддержку. Однако в последние несколько лет Уипплер уделял меньше времени Metakit и больше — другим своим проектам.
База данных используется в нескольких коммерческих продуктах (включая адресную книгу в Mac OS X 10.4 и более ранних версиях), а также в нескольких проектах с открытым исходным кодом (например, KDE программа чтения каналов Akregator ) и собственных проектах (обычно использующих интерфейс Python или TCL). Связанный с ним проект Starkit ( виртуальная файловая система для TCL), написанный Wippler, приобрел популярность среди программистов TCL.
Список рассылки Metakit имеет активных подписчиков и регулярно публикуется Wippler. [ когда? ] Другие разработчики внесли в проект исправления ошибок и предложения.
Функции
[ редактировать ]В отличие от большинства других систем баз данных базы данных , которые хранят строки таблицы в одном месте (строкоориентированная архитектура), Metakit хранит отдельные столбцы отдельно ( столбцово-ориентированная архитектура ). В течение многих лет был возможен только линейный доступ к таблицам (со сложностью O(1) для доступа и O(N) для поиска), позже были добавлены хеш-структуры и структуры, подобные B-дереву (снижение типичной сложности поиска до O(1) ). Реляционные операции (такие как группировка и объединение ) также были добавлены с течением времени. Табличные данные можно комбинировать и обрабатывать с помощью гибких механизмов, называемых представлениями . Данные базы данных переносимы между платформами. Затраты на дисковое пространство в Metakit очень низкие — несколько методов автоматически используются для их максимального уменьшения. средство просмотра структур базы данных Metakit (названное Kitview Предоставляется ).
Практический предел размера базы данных составляет около 1 ГБ (даже на 64-битных платформах). Многопоточный и многопользовательский доступ требует ручной поддержки со стороны программиста и не рекомендуется (в C++, TCL и Python автоматически используется одна глобальная блокировка). Комбинации более продвинутых функций часто не тестируются и могут дать сбой. Можно добиться несколько большей производительности, чем с другими базами данных (опубликованные тесты включают SQLite и Berkeley DB ), но это требует длительного тестирования и большого знания внутреннего устройства Metakit. Metakit API является низкоуровневым по сравнению с SQL .
Самый большой недостаток Metakit — его довольно разрозненная, а иногда и устаревшая документация . Полное понимание ее API и настройки производительности требует глубокого изучения исходного кода библиотеки. Терминология метакитов имеет много отличий от стандартной терминологии баз данных. API и формат файла со временем менялись несколько раз.
Metakit протестирован на Windows , Unix и Mac OS X.
Языковые привязки
[ редактировать ]- C++ (родной): Metakit написан на C++ (без использования его новых функций, поэтому с ним могут справиться даже очень старые компиляторы).
- Python : называется Mk4py
- Tcl : называется Mk4tcl , с дополнительной объектно-ориентированной привязкой сверху под названием Oomk .
- Другие языки могут быть подключены с помощью SWIG .
Внешние ссылки
[ редактировать ]- Сайт метакита
- e4Graph : библиотека, которая позволяет программам постоянно хранить и манипулировать графическими данными, построенная на основе Metakit.
Ссылки
[ редактировать ]- ^ Ландерс, Стив. « KitView — инструмент пользовательского интерфейса для MetaKit », Материалы конференции AUUG, 2001. 63.