MonetDB

MonetDB
Utvecklare MonetDB BV
Stabil frisättning
Sep2022-SP2 / 31 januari 2023 ( 2023-01-31 )
Förvar
Skrivet i C
Operativ system Cross-plattform
Typ
Kolumnorienterad DBMS RDBMS
Licens Mozilla Public License , version 2.0
Hemsida www .monetdb .org

MonetDB är ett kolumnorienterat relationsdatabashanteringssystem (RDBMS) med öppen källkod som ursprungligen utvecklades vid Centrum Wiskunde & Informatica (CWI) i Nederländerna . Den är utformad för att ge hög prestanda på komplexa frågor mot stora databaser, som att kombinera tabeller med hundratals kolumner och miljontals rader. MonetDB har använts i högpresterande applikationer för analytisk bearbetning online , datautvinning , geografiska informationssystem (GIS), Resource Description Framework (RDF), texthämtning och sekvensjustering .

Historia

Datautvinningsprojekt på 1990-talet krävde förbättrat stöd för analytiska databaser. Detta resulterade i en CWI- spin-off kallad Data Distilleries, som använde tidiga MonetDB-implementationer i sin analytiska svit. Data Distilleries blev så småningom ett dotterbolag till SPSS 2003, som i sin tur förvärvades av IBM 2009.

MonetDB i sin nuvarande form skapades först 2002 av doktoranden Peter Boncz och professor Martin L. Kersten som en del av 1990-talets MAGNUM-forskningsprojekt vid University of Amsterdam . Det kallades ursprungligen helt enkelt Monet, efter den franske impressionistiska målaren Claude Monet . Den första versionen under en mjukvarulicens med öppen källkod (en modifierad version av Mozilla Public License ) släpptes den 30 september 2004. När MonetDB version 4 släpptes till domänen med öppen källkod lades många tillägg till kodbasen till av MonetDB/CWI-teamet, inklusive ett nytt SQL-gränssnitt, som stöder SQL:2003 -standarden.

MonetDB introducerade innovationer i alla lager av DBMS : en lagringsmodell baserad på vertikal fragmentering, en modern CPU -avstämd arkitektur för exekvering av frågor som ofta gav MonetDB en hastighetsfördel jämfört med samma algoritm jämfört med en typisk tolkbaserad RDBMS . Det var ett av de första databassystemen som justerade frågeoptimering för CPU-cacher . MonetDB inkluderar automatiska och självjusterande index, optimering av körtidsfrågor och en modulär mjukvaruarkitektur.

År 2008 startade ett uppföljningsprojekt kallat X100 (MonetDB/X100), som utvecklades till VectorWise -tekniken. VectorWise förvärvades av Actian Corporation , integrerades med Ingres-databasen och såldes som en kommersiell produkt.

Under 2011 påbörjades ett stort arbete för att renovera MonetDB-kodbasen. Som en del av det frystes koden för MonetDB 4-kärnan och dess XQuery-komponenter. I MonetDB 5 trycktes delar av SQL-lagret in i kärnan. De resulterande ändringarna skapade en skillnad i interna API:er , eftersom det övergick från MonetDB Instruction Language (MIL) till MonetDB Assembly Language (MAL). Äldre, inte längre underhållna frågegränssnitt på toppnivå togs också bort. Först var XQuery , som förlitade sig på MonetDB 4 och aldrig portades till version 5. Det experimentella Jaql- gränssnittsstödet togs bort med oktober 2014-utgåvan. Med releasen i juli 2015 fick MonetDB stöd för skrivskyddad datadelning och beständiga index. I den här utgåvan togs även den utfasade strömmande datamodulen DataCell bort från huvudkodbasen i ett försök att effektivisera koden. Dessutom har licensen ändrats till Mozilla Public License, version 2.0 .

Arkitektur

MonetDB-arkitekturen är representerad i tre lager, var och en med sin egen uppsättning optimerare. Gränssnittet är det översta lagret och tillhandahåller frågegränssnitt för SQL , med SciQL- och SPARQL -gränssnitt under utveckling. Frågor analyseras till domänspecifika representationer, som relationalgebra för SQL, och optimeras. De genererade logiska exekveringsplanerna översätts sedan till MonetDB Assembly Language-instruktioner (MAL), som skickas till nästa lager. Mellan- eller back-end-lagret tillhandahåller ett antal kostnadsbaserade optimerare för MAL. Det nedre lagret är databaskärnan, som ger tillgång till data som lagras i Binary Association Tables (BAT). Varje BAT är en tabell som består av en objektidentifierare och värdekolumner, som representerar en enda kolumn i databasen.

MonetDBs interna datarepresentation förlitar sig också på minnesadresseringsområdena för samtida CPU: er som använder efterfrågesökning av minnesmappade filer, och avviker således från traditionella DBMS-designer som involverar komplex hantering av stora datalager i begränsat minne.

Fråga Återvinning

Frågeåtervinning är en arkitektur för att återanvända biprodukterna från paradigmet för operatörer i taget i ett kolumnlager DBMS. Återvinning använder sig av den generiska idén att lagra och återanvända resultaten av dyra beräkningar. Till skillnad från instruktionscacher på låg nivå använder återvinning av frågor en optimerare för att förvälja instruktioner som ska cachelagras. Tekniken är utformad för att förbättra frågors svarstider och genomströmning, samtidigt som den arbetar på ett självorganiserande sätt. Författarna från CWI Database Architectures, som består av Milena Ivanova, Martin Kersten , Niels Nes och Romulo Goncalves, vann "Best Paper Runner Up" på ACM SIGMOD 2009-konferensen för sitt arbete med Query Recycling.

Databassprickning

MonetDB var en av de första databaserna som introducerade Database Cracking. Databascracking är en inkrementell partiell indexering och/eller sortering av data. Den utnyttjar direkt den kolumnära karaktären hos MonetDB. Cracking är en teknik som flyttar kostnaden för indexunderhåll från uppdateringar till frågebehandling. Frågepipeline-optimerarna används för att massera frågeplanerna att spricka och för att sprida denna information. Tekniken möjliggör förbättrade åtkomsttider och självorganiserat beteende. Database Cracking fick ACM SIGMOD 2011 J.Gray pris för bästa avhandling.

Komponenter

Det finns ett antal tillägg för MonetDB som utökar databasmotorns funktionalitet. På grund av arkitekturen med tre lager kan frågegränssnitt på toppnivå dra nytta av optimeringar som görs i backend- och kärnlagren.

SQL

MonetDB/SQL är ett tillägg på toppnivå, som ger komplett stöd för transaktioner i enlighet med SQL:2003- standarden.

GIS

MonetDB/GIS är ett tillägg till MonetDB/SQL med stöd för Simple Features Access- standarden för Open Geospatial Consortium (OGC).

SciQL

SciQL ett SQL-baserat frågespråk för naturvetenskapliga applikationer med arrayer som förstklassiga medborgare. SciQL tillåter MonetDB att effektivt fungera som en arraydatabas . SciQL används i European Union PlanetData och TELEIOS -projektet, tillsammans med Data Vault-tekniken, vilket ger transparent åtkomst till stora vetenskapliga datalager. Datavalv mappar data från de distribuerade arkiven till SciQL-arrayer, vilket möjliggör förbättrad hantering av rums- och tidsdata i MonetDB. SciQL kommer att utökas ytterligare för Human Brain Project .

Datavalv

Data Vault är ett databasbifogat externt filarkiv för MonetDB, liknande SQL/MED- standarden. Data Vault-tekniken möjliggör transparent integration med distribuerade/fjärranslutna filarkiv. Den är designad för utforskning och gruvdrift av vetenskapliga data , speciellt för fjärranalysdata . Det finns stöd för formaten GeoTIFF ( jordobservation ), FITS ( astronomi ), MiniSEED ( seismologi ) och NetCDF . Data lagras i filarkivet i originalformatet och laddas i databasen på ett lat sätt, bara när det behövs. Systemet kan också bearbeta data vid intag, om dataformatet kräver det. Som ett resultat kan även mycket stora filarkiv analyseras effektivt, eftersom endast den data som krävs bearbetas i databasen. Datan kan nås via antingen MonetDB SQL- eller SciQL-gränssnitt. Data Vault-tekniken användes i Europeiska unionens TELEIOS- projekt , som syftade till att bygga ett virtuellt observatorium för jordobservationsdata. Datavalv för FITS-filer har också använts för att bearbeta astronomiska undersökningsdata för INT Photometric H-Alpha Survey ( IPHAS)

SAM/BAM

MonetDB har en SAM/BAM- modul för effektiv bearbetning av sekvensanpassningsdata . Inriktad på bioinformatikforskningen har modulen en SAM/BAM-dataladdare och en uppsättning SQL UDF:er för att arbeta med DNA -data. Modulen använder det populära SAMtools- biblioteket.

RDF/SPARQL

MonetDB/RDF är ett SPARQL -baserat tillägg för att arbeta med länkad data, som lägger till stöd för RDF och tillåter MonetDB att fungera som en trippelbutik . Under utveckling för Linked Open Data 2- projektet.

R integration

MonetDB/R -modulen gör att UDF:er skrivna i R kan exekveras i systemets SQL-lager. Detta görs med det inbyggda R-stödet för att köra inbäddat i en annan applikation, i RDBMS i detta fall. Tidigare MonetDB.R -anslutningen att använda MonetDB-datakällor och bearbeta dem i en R-session. Den nyare R-integreringsfunktionen i MonetDB kräver inte att data överförs mellan RDBMS och R-sessionen, vilket minskar overhead och förbättrar prestandan. Funktionen är avsedd att ge användare tillgång till funktionerna i R statistisk programvara för in-line analys av data lagrad i RDBMS. Det kompletterar det befintliga stödet för C UDF och är avsett att användas för bearbetning i databasen .

Python integration

På samma sätt som de inbäddade R UDF:erna i MonetDB, har databasen nu stöd för UDF:er skrivna i Python / NumPy . Implementeringen använder Numpy-arrayer (själva Python-wrappers för C-arrayer), som ett resultat av det finns begränsad overhead - vilket ger en funktionell Python-integration med hastighetsmatchande inbyggda SQL-funktioner. Embedded Python-funktionerna stöder också mappade operationer, vilket gör att användaren kan utföra Python-funktioner parallellt i SQL-frågor. Den praktiska sidan av funktionen ger användarna tillgång till Python/NumPy/ SciPy -bibliotek, som kan tillhandahålla ett stort urval av statistiska/analytiska funktioner.

MonetDBLite

Efter lanseringen av fjärrdrivrutin för R ( MonetDB.R ) och R UDF i MonetDB (MonetDB/R), skapade författarna en inbäddad version av MonetDB i R som heter MonetDBLite . Det distribueras som ett R-paket, vilket tar bort behovet av att hantera en databasserver, som krävs för de tidigare R-integreringarna. DBMS körs inom själva R-processen, vilket eliminerar socketkommunikation och serialiseringsoverhead - vilket avsevärt förbättrar effektiviteten. Tanken bakom det är att leverera ett SQLite -liknande paket för R, med prestanda av en minnesoptimerad kolumnbutik.

Tidigare förlängningar

Ett antal tidigare tillägg har fasats ut och tagits bort från den stabila kodbasen med tiden. Några anmärkningsvärda exempel inkluderar en XQuery -tillägg borttagen i MonetDB version 5; ett JAQL- tillägg och ett strömmande datatillägg som heter Data Cell .

Se även

Bibliografi

externa länkar