Metazestaw
Deweloperzy | Jean-Claude'a Wipplera |
---|---|
Wersja stabilna | 2.4.9.8 / 19 czerwca 2015
|
Napisane w | C++ |
System operacyjny | Międzyplatformowe |
Typ | Biblioteka rozwoju |
Licencja | Licencja MIT |
Strona internetowa | https://github.com/jcw/jcw.github.io/tree/main/zips |
Metakit to wbudowana biblioteka baz danych o niewielkich rozmiarach. Wypełnia lukę między plikami płaskimi , relacyjnymi , obiektowymi i drzewiastymi bazami danych , obsługując łączenia relacyjne, serializację, struktury zagnieżdżone i natychmiastową ewolucję schematu. Najczęściej używane są interfejsy dla C++ (natywny), Python i Tcl .
Historia
Metakit został napisany przez Jean-Claude'a Wipplera, programistę z Holandii . Jego rozwój rozpoczął się około 1997 roku, aw 2001 został wydany jako open source na MIT X11 . Autor zapewnia wsparcie komercyjne. Jednak w ciągu ostatnich kilku lat Wippler poświęcił mniej czasu na Metakit, a więcej na inne swoje projekty.
Baza danych jest używana w kilku produktach komercyjnych (w tym Książka adresowa w systemie Mac OS X 10.4 i wcześniejszych) oraz w kilku projektach typu open source (na przykład czytnik kanałów KDE Akregator ) oraz w projektach wewnętrznych (zwykle wykorzystujących interfejs Python lub TCL). Powiązany projekt, Starkit ( wirtualny system plików dla TCL), napisany przez Wipplera, zyskał popularność wśród programistów TCL.
Lista mailingowa Metakit ma aktywnych subskrybentów i jest regularnie wysyłana przez Wipplera. [ kiedy? ] Inni programiści przyczynili się do projektu, poprawiając błędy i sugestie.
Cechy
W przeciwieństwie do większości innych systemów bazodanowych , które przechowują wiersze tabeli bazy danych w jednym miejscu (architektura zorientowana na wiersze), Metakit przechowuje poszczególne kolumny oddzielnie ( architektura zorientowana na kolumny ). Przez wiele lat możliwy był tylko liniowy dostęp do tablic (ze złożonością O(1) dla dostępu i O(N) dla wyszukiwania), później dodano struktury haszujące i struktury podobne do B-drzewa (zmniejszając typową złożoność wyszukiwania do O(1) ). Operacje relacyjne (takie jak grupowanie według i łączenie ) były również dodawane przez lata. Możliwe jest łączenie i przetwarzanie danych tabelarycznych za pomocą elastycznych mechanizmów zwanych widokami . Dane bazy danych są przenośne między platformami. Narzut przestrzeni dyskowej Metakita jest bardzo niski — automatycznie stosuje się kilka technik, aby maksymalnie go zredukować. przeglądarka struktur bazy danych Metakit (o nazwie Kitview ).
Praktyczny limit rozmiaru bazy danych to około 1 GB (nawet na platformach 64-bitowych ). Dostęp wielowątkowy i wieloużytkownikowy wymaga ręcznej obsługi ze strony programisty i jest odradzany (w C++, TCL i Python używają jednej automatycznie globalnej blokady). Kombinacje bardziej zaawansowanych funkcji często nie są testowane i mogą zawieść. Możliwe jest uzyskanie nieco lepszej wydajności niż w przypadku innych baz danych (opublikowane testy porównawcze obejmują SQLite i Berkeley DB ), ale wymaga to wielu testów i dużej wiedzy na temat elementów wewnętrznych Metakit. Interfejs API Metakit jest na niskim poziomie w porównaniu do SQL .
Największą słabością Metakita jest jego dość niekompletna i czasami przestarzała dokumentacja . Pełne zrozumienie jego API i dostrajanie wydajności wymaga dogłębnej analizy kodu źródłowego biblioteki. Terminologia Metakitów ma wiele różnic w stosunku do standardowej terminologii baz danych. Interfejs API i format pliku zmieniły się kilka razy w czasie.
Metakit jest testowany w systemach Windows , Unix i Mac OS X.
Wiązania językowe
- C++ (natywny): Metakit jest napisany w C++ (bez korzystania z jego nowych funkcji, więc poradzą sobie z nim nawet bardzo stare kompilatory).
- Python : o nazwie Mk4py
- Tcl : o nazwie Mk4tcl , z opcjonalnym powiązaniem OO na górze o nazwie Oomk .
- Inne języki mogą być łączone za pomocą SWIG .
Linki zewnętrzne
- Witryna Metakita
- e4Graph : biblioteka, która umożliwia programom trwałe przechowywanie i manipulowanie danymi podobnymi do wykresów , zbudowana na bazie Metakit