Metazestaw

Metazestaw
Deweloperzy Jean-Claude'a Wipplera
Wersja stabilna
2.4.9.8 / 19 czerwca 2015 ; 7 lat temu ( 2015-06-19 )
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