MonetDB

MonetDB
Deweloperzy MonetDB BV
Wersja stabilna
wrzesień 2022-SP2 / 31 stycznia 2023 ( 2023-01-31 )
Magazyn
Napisane w C
System operacyjny Międzyplatformowe
Typ
Zorientowany na kolumny DBMS RDBMS
Licencja Licencja publiczna Mozilli , wersja 2.0
Strona internetowa www .monetdb .org

MonetDB to oparty na kolumnach system zarządzania relacyjnymi bazami danych (RDBMS) o otwartym kodzie źródłowym, pierwotnie opracowany w Centrum Wiskunde & Informatica (CWI) w Holandii . Został zaprojektowany w celu zapewnienia wysokiej wydajności złożonych zapytań w dużych bazach danych, takich jak łączenie tabel z setkami kolumn i milionami wierszy. MonetDB został zastosowany w wysokowydajnych aplikacjach do przetwarzania analitycznego online , eksploracji danych , systemu informacji geograficznej (GIS), Struktura opisu zasobów (RDF), wyszukiwanie tekstu i przetwarzanie dopasowywania sekwencji .

Historia

Projekty eksploracji danych w latach 90. wymagały ulepszonej obsługi analitycznych baz danych. Doprowadziło to do powstania spin-offu CWI o nazwie Data Distilleries, który wykorzystywał wczesne implementacje MonetDB w swoim pakiecie analitycznym. Data Distilleries ostatecznie stała się spółką zależną SPSS w 2003 roku, która z kolei została przejęta przez IBM w 2009 roku.

MonetDB w obecnej postaci został po raz pierwszy stworzony w 2002 roku przez doktoranta Petera Boncza i profesora Martina L. Kerstena w ramach projektu badawczego MAGNUM z lat 90. na Uniwersytecie w Amsterdamie . Początkowo nazywano go po prostu Monet, na cześć francuskiego malarza impresjonisty Claude'a Moneta . Pierwsza wersja na oprogramowania open source (zmodyfikowana wersja licencji Mozilla Public License ) został wydany 30 września 2004 r. Kiedy MonetDB w wersji 4 został wydany w domenie open source, zespół MonetDB / CWI dodał wiele rozszerzeń do bazy kodu, w tym nowy interfejs SQL, obsługujący standard SQL : 2003 .

MonetDB wprowadził innowacje we wszystkich warstwach DBMS : model przechowywania oparty na fragmentacji pionowej, nowoczesną architekturę wykonywania zapytań dostosowaną do procesora , która często dawała MonetDB przewagę szybkości nad tym samym algorytmem w porównaniu z typowym RDBMS opartym na interpretatorze . Był to jeden z pierwszych systemów bazodanowych, który dostroił optymalizację zapytań pod kątem pamięci podręcznych procesora . MonetDB zawiera automatyczne i samodostrajające się indeksy, optymalizację zapytań w czasie wykonywania oraz modułową architekturę oprogramowania.

Do 2008 roku rozpoczął się kolejny projekt o nazwie X100 (MonetDB/X100), który przekształcił się w technologię VectorWise . VectorWise został przejęty przez Actian Corporation , zintegrowany z bazą danych Ingres i sprzedawany jako produkt komercyjny.

W 2011 roku rozpoczęto poważny wysiłek mający na celu odnowienie bazy kodu MonetDB. W jej ramach zamrożony został kod jądra MonetDB 4 oraz jego komponenty XQuery. W MonetDB 5 części warstwy SQL zostały wepchnięte do jądra. Wynikające z tego zmiany spowodowały różnicę w wewnętrznych interfejsach API , ponieważ przejście z języka instrukcji MonetDB (MIL) do języka asemblera MonetDB (MAL). Usunięto również starsze, nieobsługiwane już interfejsy zapytań najwyższego poziomu. Pierwszym był XQuery , który opierał się na MonetDB 4 i nigdy nie został przeniesiony do wersji 5. Eksperymentalny Jaql obsługa interfejsu została usunięta wraz z wydaniem z października 2014 r. Wraz z wydaniem z lipca 2015 r. MonetDB zyskał wsparcie dla dzielenia danych tylko do odczytu i trwałych indeksów. W tej wersji przestarzały moduł danych strumieniowych DataCell został również usunięty z głównej bazy kodu w celu usprawnienia kodu. Dodatkowo licencja została zmieniona na Mozilla Public License w wersji 2.0 .

Architektura

Architektura MonetDB jest reprezentowana w trzech warstwach, z których każda ma własny zestaw optymalizatorów. Front-end to warstwa wierzchnia, zapewniająca interfejs zapytań dla SQL , z interfejsami SciQL i SPARQL w fazie rozwoju. Zapytania są przetwarzane na reprezentacje specyficzne dla domeny, takie jak algebra relacyjna dla języka SQL, i optymalizowane. Wygenerowane logiczne plany wykonania są następnie tłumaczone na instrukcje MonetDB Assembly Language (MAL), które są przekazywane do następnej warstwy. Warstwa środkowa lub zaplecza zapewnia szereg optymalizatorów opartych na kosztach dla MAL. Dolna warstwa to jądro bazy danych, które zapewnia dostęp do danych przechowywanych w Binary Association Tables (BAT). Każdy BAT jest tabelą składającą się z kolumny Identyfikator obiektu i wartości, reprezentujących pojedynczą kolumnę w bazie danych.

Wewnętrzna reprezentacja danych MonetDB opiera się również na zakresach adresowania pamięci współczesnych procesorów wykorzystujących stronicowanie na żądanie plików mapowanych w pamięci, a tym samym odchodząc od tradycyjnych projektów DBMS obejmujących kompleksowe zarządzanie dużymi magazynami danych w ograniczonej pamięci.

Recykling zapytań

Recykling zapytań to architektura służąca do ponownego wykorzystania produktów ubocznych paradygmatu operator-at-a-time w systemie DBMS magazynu kolumn. Recykling wykorzystuje ogólną ideę przechowywania i ponownego wykorzystywania wyników kosztownych obliczeń. W przeciwieństwie do pamięci podręcznych instrukcji niskiego poziomu, recykling zapytań wykorzystuje optymalizator do wstępnego wyboru instrukcji do buforowania. Technika ta ma na celu skrócenie czasu odpowiedzi na zapytanie i przepustowość, a jednocześnie działa w sposób samoorganizujący się. Autorzy z CWI Database Architectures, w skład której wchodzą Milena Ivanova, Martin Kersten , Niels Nes i Romulo Goncalves, zdobyli tytuł „Best Paper runner Up” na Konferencja ACM SIGMOD 2009 za ich pracę nad Query Recycling.

Łamanie bazy danych

MonetDB była jedną z pierwszych baz danych, która wprowadziła łamanie baz danych. Łamanie bazy danych to przyrostowe częściowe indeksowanie i/lub sortowanie danych. Bezpośrednio wykorzystuje kolumnowy charakter MonetDB. Cracking to technika, która przenosi koszty utrzymania indeksu z aktualizacji na przetwarzanie zapytań. Optymalizatory potoku zapytań służą do masowania planów zapytań w celu złamania i propagowania tych informacji. Technika ta pozwala na poprawę czasów dostępu i zachowanie samoorganizacji. Database Cracking otrzymał ACM SIGMOD 2011 J.Gray za najlepszą pracę doktorską.

składniki

Istnieje wiele rozszerzeń dla MonetDB, które rozszerzają funkcjonalność silnika bazy danych. Ze względu na trójwarstwową architekturę interfejsy zapytań najwyższego poziomu mogą korzystać z optymalizacji dokonanych w warstwach zaplecza i jądra.

SQL

MonetDB/SQL to rozszerzenie najwyższego poziomu, które zapewnia pełną obsługę transakcji zgodnie ze standardem SQL:2003 .

GIS

MonetDB/GIS jest rozszerzeniem MonetDB/SQL z obsługą standardu Simple Features Access firmy Open Geospatial Consortium (OGC).

SciQL

SciQL oparty na SQL język zapytań do zastosowań naukowych z tablicami jako obywatelami pierwszej klasy. SciQL pozwala MonetDB skutecznie funkcjonować jako macierzowa baza danych . SciQL jest wykorzystywany w Unii Europejskiej PlanetData i TELEIOS wraz z technologią Data Vault, zapewniając przejrzysty dostęp do dużych repozytoriów danych naukowych. Magazyny danych odwzorowują dane z rozproszonych repozytoriów na tablice SciQL, umożliwiając lepszą obsługę czasoprzestrzennych w MonetDB. SciQL będzie dalej rozszerzany dla Human Brain Project .

Magazyny danych

Data Vault to dołączone do bazy danych zewnętrzne repozytorium plików dla MonetDB, podobne do standardu SQL/MED . Technologia Data Vault pozwala na przejrzystą integrację z rozproszonymi/zdalnymi repozytoriami plików. Jest przeznaczony do eksploracji i eksploracji danych naukowych , w szczególności danych teledetekcyjnych . Istnieje wsparcie dla GeoTIFF ( obserwacja Ziemi ), FITS ( astronomia ), MiniSEED ( sejsmologia ) i NetCDF formaty. Dane są przechowywane w repozytorium plików w oryginalnym formacie i ładowane do bazy danych w sposób leniwy , tylko w razie potrzeby. System może również przetwarzać dane po ich spożyciu, jeśli wymaga tego format danych. Dzięki temu nawet bardzo duże repozytoria plików mogą być efektywnie analizowane, ponieważ w bazie danych przetwarzane są tylko wymagane dane. Dostęp do danych można uzyskać za pośrednictwem interfejsów MonetDB SQL lub SciQL. Technologia Data Vault została wykorzystana w unijnym projekcie TELEIOS , którego celem była budowa wirtualnego obserwatorium dla danych z obserwacji Ziemi. Magazyny danych dla plików FITS zostały również wykorzystane do przetwarzania z badań astronomicznych dla The INT Photometric H-Alpha Survey (IPHAS)

SAM/BAM

MonetDB posiada moduł SAM/BAM do wydajnego przetwarzania danych dotyczących dopasowania sekwencji . Przeznaczony do bioinformatycznych moduł posiada moduł ładujący dane SAM/BAM oraz zestaw UDF SQL do pracy z danymi DNA . Moduł wykorzystuje popularną SAMtools .

RDF/SPARQL

MonetDB/RDF to oparte na SPARQL rozszerzenie do pracy z połączonymi danymi, które dodaje obsługę RDF i umożliwia MonetDB działanie jako triplestore . W trakcie opracowywania dla Linked Open Data 2 .

Integracja języka R

MonetDB/R pozwala na wykonywanie funkcji UDF napisanych w języku R w warstwie SQL systemu. Odbywa się to przy użyciu natywnej obsługi R do uruchamiania osadzonego w innej aplikacji, w tym przypadku wewnątrz RDBMS. Wcześniej MonetDB.R umożliwiało korzystanie ze źródeł danych MonetDB i przetwarzanie ich w sesji R. Nowsza funkcja integracji R w MonetDB nie wymaga przesyłania danych między RDBMS a sesją R, co zmniejsza obciążenie i poprawia wydajność. Funkcjonalność ma na celu zapewnienie użytkownikom dostępu do funkcji oprogramowania statystycznego R w celu analizy in-line danych przechowywanych w RDBMS. Uzupełnia istniejące wsparcie dla C UDF i jest przeznaczony do przetwarzania w bazie danych .

Integracja z Pythonem

Podobnie jak wbudowane R UDF w MonetDB, baza danych obsługuje teraz UDF napisane w Pythonie / NumPy . Implementacja wykorzystuje tablice Numpy (same opakowania Pythona dla tablic C), w wyniku czego istnieje ograniczony narzut - zapewniając funkcjonalną integrację Pythona z natywnymi funkcjami SQL dopasowującymi prędkość. Funkcje Embedded Python obsługują również operacje mapowane, umożliwiając użytkownikowi równoległe wykonywanie funkcji Pythona w ramach zapytań SQL. Praktyczna strona tej funkcji daje użytkownikom dostęp do bibliotek Python/NumPy/ SciPy , które mogą zapewnić duży wybór funkcji statystycznych/analitycznych.

MonetDBLite

Po wydaniu zdalnego sterownika dla R ( MonetDB.R ) i R UDF w MonetDB (MonetDB/R), autorzy stworzyli osadzoną wersję MonetDB w R o nazwie MonetDBLite . Jest dystrybuowany jako pakiet R, co eliminuje konieczność zarządzania serwerem bazy danych, wymaganym do poprzednich integracji R. DBMS działa w ramach samego procesu R, eliminując narzut związany z komunikacją gniazd i serializacją - znacznie poprawiając wydajność. Ideą jest dostarczenie SQLite dla R, z wydajnością zoptymalizowanego magazynu kolumnowego w pamięci.

Dawne rozszerzenia

Z biegiem czasu wiele wcześniejszych rozszerzeń zostało wycofanych i usuniętych ze stabilnej bazy kodu. Niektóre godne uwagi przykłady obejmują XQuery usunięte w wersji 5 MonetDB; rozszerzenie JAQL i rozszerzenie danych strumieniowych o nazwie Data Cell .

Zobacz też

Bibliografia

Linki zewnętrzne