Array DBMS - Array DBMS

Array-databasebeheersystemen ( array-DBMS'en ) bieden databaseservices specifiek voor arrays (ook wel rastergegevens genoemd ), dat wil zeggen: homogene verzamelingen van gegevensitems (vaak pixels , voxels , enz . Genoemd ), zittend op een normaal raster van één, twee, of meer afmetingen. Vaak worden arrays gebruikt om sensor-, simulatie-, beeld- of statistische gegevens weer te geven. Dergelijke arrays zijn meestal Big Data , met afzonderlijke objecten die vaak variëren in grootte van Terabyte en binnenkort Petabyte; Zo groeien de archieven van tegenwoordig over aarde en ruimte waarnemingen met terabytes per dag. Array-databases zijn gericht op het bieden van flexibele, schaalbare opslag en opvraagbaarheid in deze informatiecategorie.

Euclidische omgeving van elementen in arrays
Euclidische omgeving van elementen in arrays

Overzicht

In dezelfde stijl als standaard databasesystemen op sets, bieden Array DBMS'en schaalbare, flexibele opslag en flexibel opvragen / manipuleren op arrays van (conceptueel) onbeperkte grootte. Omdat arrays in de praktijk nooit op zichzelf staan, is een dergelijk arraymodel normaal gesproken ingebed in een algemeen datamodel, zoals het relationele model. Sommige systemen implementeren arrays als een analogie met tabellen, andere introduceren arrays als een extra attribuuttype.

Het beheer van arrays vereist nieuwe technieken, vooral vanwege het feit dat traditionele database-tuples en -objecten de neiging hebben om goed in een enkele databasepagina te passen - een eenheid voor schijftoegang op de server, meestal 4  KB  - terwijl array-objecten gemakkelijk meerdere media kunnen overspannen. De belangrijkste taak van de array-opslagmanager is om snelle toegang te geven tot grote arrays en sub-arrays. Daartoe worden arrays tijdens het invoegen gepartitioneerd in zogenaamde tegels of brokken van geschikte grootte, die vervolgens fungeren als toegangseenheden tijdens de evaluatie van query's.

Array DBMS aanbieding querytalen geven declaratieve toegang tot dergelijke arrays, waardoor het maken, manipuleren, doorzoeken en ze te verwijderen. Net als bij bijvoorbeeld SQL , kunnen expressies van willekeurige complexiteit bovenop een reeks kernarraybewerkingen worden gebouwd. Vanwege de uitbreidingen in het gegevens- en querymodel, worden Array DBMS'en soms ondergebracht in de NoSQL- categorie, in de zin van "niet alleen SQL". Query- optimalisatie en parallellisatie zijn belangrijk voor het bereiken van schaalbaarheid ; eigenlijk lenen veel array-operators zich goed voor parallelle evaluatie, door elke tegel op afzonderlijke knooppunten of kernen te verwerken.

Belangrijke toepassingsdomeinen van Array DBMS'en zijn onder meer de aarde, de ruimte, het leven en de sociale wetenschappen, evenals de gerelateerde commerciële toepassingen (zoals koolwaterstofexploratie in de industrie en OLAP in het bedrijfsleven). De verscheidenheid die optreedt, kan bijvoorbeeld worden waargenomen in geodata waar 1-D omgevingssensor tijdreeksen, 2-D satellietbeelden, 3-D x / y / t beeldtijdreeksen en x / y / z geofysische data, evenals 4-D x / y / z / t klimaat- en oceaangegevens kunnen worden gevonden.

Geschiedenis en status

Het relationele gegevensmodel , dat tegenwoordig heerst, ondersteunt het arrayparadigma niet in dezelfde mate als sets en tuples. ISO SQL vermeldt een attribuuttype met een arraywaarde, maar dit is slechts eendimensionaal, met bijna geen operationele ondersteuning en niet bruikbaar voor de toepassingsdomeinen van Array DBMS'en. Een andere optie is om gebruik te maken van BLOB's ("binary large objects") die het equivalent zijn van bestanden: byte-strings van (conceptueel) onbeperkte lengte, maar ook weer zonder enige querytaalfunctionaliteit, zoals multidimensionale subsetting.

Het eerste belangrijke werk om verder te gaan dan BLOB's is verricht met PICDMS. Dit systeem biedt de voorloper van een 2-D array-querytaal, zij het nog steeds procedureel en zonder geschikte opslagondersteuning.

Een eerste declaratieve querytaal die geschikt is voor meerdere dimensies en met een op algebra gebaseerde semantiek is gepubliceerd door Baumann , samen met een schaalbare architectuur. Een andere array-databasetaal, beperkt tot 2-D, is gepresenteerd door Marathe en Salem. Baanbrekend theoretisch werk is verricht door Libkin et al .; in hun model, genaamd NCRA, breiden ze een geneste relationele calculus uit met multidimensionale arrays; onder de resultaten zijn belangrijke bijdragen aan de analyse van de complexiteit van arrayquery's. Een kaartalgebra, geschikt voor 2D en 3D ruimtelijke rasterdata, is gepubliceerd door Mennis et al.

In termen van Array DBMS-implementaties heeft het Rasdaman- systeem het langste implementatietraject van nD-arrays met volledige queryondersteuning . Oracle GeoRaster biedt gefragmenteerde opslag van 2D-rasterkaarten, zij het zonder SQL-integratie. TerraLib is een open-source GIS-software die object-relationele DBMS-technologie uitbreidt om spatio-temporele gegevenstypen te verwerken; terwijl de nadruk vooral ligt op vectorgegevens, is er ook enige ondersteuning voor rasters. Vanaf versie 2.0 integreert PostGIS rasterondersteuning voor 2D-rasters; een speciale functie biedt declaratieve rasterqueryfunctionaliteit. SciQL is een array-querytaal die wordt toegevoegd aan het MonetDB DBMS. SciDB is een recenter initiatief om ondersteuning voor array-databases tot stand te brengen. Net als SciQL worden arrays gezien als een equivalent van tabellen, in plaats van een nieuw attribuuttype zoals in rasdaman en PostGIS.

Voor het speciale geval van schaarse gegevens zijn OLAP- gegevenskubussen goed ingeburgerd; ze slaan celwaarden samen met hun locatie op - een adequate compressietechniek gezien de weinige locaties die überhaupt geldige informatie bevatten - en werken met SQL erop. Aangezien deze techniek niet qua dichtheid opschaalt, worden er tegenwoordig geen standaarddatabases gebruikt voor compacte gegevens, zoals satellietbeelden, waar de meeste cellen zinvolle informatie bevatten; In plaats daarvan hebben bedrijfseigen ad-hocimplementaties de overhand in wetenschappelijk gegevensbeheer en vergelijkbare situaties. Dit is dus waar Array DBMS'en een bijzondere bijdrage kunnen leveren.

Over het algemeen zijn Array DBMS'en een opkomende technologie. Hoewel er operationeel geïmplementeerde systemen bestaan, zoals Oracle GeoRaster , PostGIS 2.0 en Rasdaman , zijn er nog steeds veel open onderzoeksvragen, waaronder het ontwerpen en formaliseren van querytalen , het optimaliseren van query's, parallellisatie en gedistribueerde verwerking , en schaalbaarheidsproblemen in het algemeen. Bovendien lijken wetenschappelijke gemeenschappen nog steeds terughoudend in het opnemen van array-databasetechnologie en neigen ze naar gespecialiseerde, eigen technologie.

Concepten

Bij het toevoegen van arrays aan databases moeten alle facetten van het databaseontwerp worden heroverwogen - variërend van conceptuele modellering (zoals geschikte operators) over opslagbeheer (zoals beheer van arrays die meerdere media beslaan) tot queryverwerking (zoals efficiënte verwerkingsstrategieën).

Conceptuele modellering

Formeel wordt een array A gegeven door een (totale of gedeeltelijke) functie A : X V waarbij X , het domein een d -dimensionaal geheel getalinterval is voor sommige d > 0 en V , genaamd bereik , is wat (niet-leeg) waarde set; in setnotatie kan dit worden herschreven als {( p , v ) | p in X , v in V }. Elke ( p , v ) in A geeft een array-element of cel aan , en volgens de gewone notatie schrijven we A [ p ] = v . Voorbeelden voor X zijn {0..767} × {0..1023} (voor afbeeldingen in XGA- formaat), voorbeelden voor V zijn onder meer {0..255} voor 8-bits afbeeldingen in grijstinten en {0..255} × {0 ..255} × {0..255} voor standaard RGB- beelden.

Volgens de gevestigde databasepraktijk moet een array-querytaal declaratief en veilig in evaluatie zijn. Omdat iteratie over een array de kern vormt van arrayverwerking, draait declarativiteit veel om dit aspect. De vereiste is dus dat conceptueel alle cellen gelijktijdig moeten worden geïnspecteerd - met andere woorden, de query dwingt tijdens de evaluatie geen expliciete iteratiesequentie af over de matrixcellen. Evaluatieveiligheid wordt bereikt wanneer elke zoekopdracht eindigt na een eindig aantal (eindige) stappen; nogmaals, het vermijden van algemene loops en recursie is een manier om dit te bereiken. Tegelijkertijd biedt het vermijden van expliciete lussequenties talloze optimalisatiemogelijkheden.

Array opvragen

Als voorbeeld voor array-query-operators kunnen de rasdaman- algebra en querytaal dienen, die een expressietaal tot stand brengen over een minimale set array-primitieven. We beginnen met de generieke kernoperatoren en presenteren vervolgens algemene speciale gevallen en steno.

De marray- operator maakt een array over een bepaald domeinbereik en initialiseert zijn cellen:

marray index-range-specification
values cell-value-expression

waarbij index-bereik-specificatie het resultaatdomein definieert en er een iteratievariabele aan bindt, zonder de iteratiesequentie te specificeren. De celwaarde-uitdrukking wordt geëvalueerd op elke locatie van het domein.

Voorbeeld: "Een uitsnede van array A gegeven door de hoekpunten (10,20) en (40,50)."

marray p in [10:20,40:50]
values A[p]

Dit speciale geval, pure subsetting, kan worden afgekort als

A[10:20,40:50]

Deze subsetting behoudt de dimensie van de array; Om de dimensie te verkleinen door segmenten te extraheren, wordt een enkele slicepunt-waarde aangegeven in de segmentdimensie.

Voorbeeld: "Een segment door een x / y / t-tijdreeks op positie t = 100, waarbij alle beschikbare gegevens in x en y worden opgehaald."

A[*:*,*:*,100]

De jokertekenoperator * geeft aan dat de huidige grens van de array moet worden gebruikt; Houd er rekening mee dat arrays waar dimensiegrenzen open worden gelaten tijdens de definitie, de grootte in die dimensies kunnen veranderen gedurende de levensduur van de array.

De bovenstaande voorbeelden hebben simpelweg de originele waarden gekopieerd; in plaats daarvan kunnen deze waarden worden gemanipuleerd.

Voorbeeld: "Matrix A, met een log () toegepast op elke celwaarde."

marray p in domain(A)
values log( A[p] )

Dit kan worden afgekort als:

log( A )

Via een principe dat geïnduceerde bewerkingen wordt genoemd , biedt de querytaal alle bewerkingen die het celtype ook op array-niveau biedt. Daarom zijn op numerieke waarden alle gebruikelijke unaire en binaire rekenkundige, exponentiële en trigonometrische bewerkingen op een eenvoudige manier beschikbaar, plus de standaardset van Booleaanse operatoren.

De operator condenseren voegt celwaarden samen tot één scalair resultaat, vergelijkbaar met SQL-aggregaten. De toepassing ervan heeft de algemene vorm:

condense condense-op
over index-range-specification
using cell-value-expression

Net als bij marray , specificeert de index-range-specificatie het domein dat moet worden herhaald en bindt er een iteratievariabele aan - nogmaals, zonder de iteratiesequentie te specificeren. Evenzo wordt celwaarde-expressie geëvalueerd op elke domeinlocatie. De condensse-op- clausule specificeert de aggregatiebewerking die wordt gebruikt om de celwaarde-expressies te combineren tot één enkele waarde.

Voorbeeld: "De som van alle waarden in A."

condense +
over p in sdom(A)
using A[p]

Een afkorting voor deze operatie is:

add_cells( A )

Op dezelfde manier en analoog aan SQL-aggregaten, wordt een aantal verdere steno-aanduidingen gegeven, waaronder tellen, gemiddelde, minimum, maximum en Booleaanse kwantoren.

In het volgende voorbeeld wordt de combinatie van marray- en condensatieoperatoren gedemonstreerd door een histogram af te leiden.

Voorbeeld: "Een histogram over 8-bits grijswaardenafbeelding A."

marray bucket in [0:255]
values count_cells( A = bucket )

De geïnduceerde vergelijking A = emmer , wordt een Booleaanse reeks dezelfde mate als A . De aggregatieoperator telt het aantal keren dat true voorkomt voor elke waarde van bucket , die vervolgens in de juiste matrixcel van de 1-D-histogrammatrix wordt geplaatst.

Dergelijke talen maken het mogelijk statistische en beeldbewerkingen te formuleren die analytisch kunnen worden uitgedrukt zonder lussen te gebruiken. Het is bewezen dat de expressieve kracht van dergelijke array-talen in principe gelijk is aan relationele zoektalen met ranking.

Array-opslag

Array-opslag moet ruimte bieden aan arrays van verschillende afmetingen en typisch grote afmetingen. Een kerntaak is om de ruimtelijke nabijheid op de schijf te behouden om het aantal schijftoegang tijdens subsetting te verminderen. Merk op dat een emulatie van multidimensionale arrays als geneste lijsten (of 1-D arrays) dit niet per se zal bewerkstelligen en daarom in het algemeen niet zal leiden tot schaalbare architecturen.

Gewoonlijk worden arrays onderverdeeld in sub-arrays die de toegangseenheid vormen. Regelmatige partitionering waarbij alle partities dezelfde grootte hebben (behalve mogelijk de grenzen) wordt chunking genoemd . Een generalisatie die de beperking tot partities van gelijke grootte opheft door elke vorm van partitie te ondersteunen, is tegels . Array-partitionering kan de toegang tot array-subsets aanzienlijk verbeteren: door de tegels aan het toegangspatroon aan te passen, kan de server idealiter alle vereiste gegevens ophalen met slechts één schijftoegang.

Het samenpersen van tegels kan soms de benodigde hoeveelheid opslag aanzienlijk verminderen. Ook voor het verzenden van resultaten is compressie nuttig, aangezien voor de grote hoeveelheden gegevens in kwestie de bandbreedte van netwerken vaak een beperkende factor vormt.

Verwerking van zoekopdrachten

Een dakpan opslagstructuur suggereert een tegel-voor-tegel verwerkingsstrategie (in rasdaman genoemd tegel streaming ). Een grote klasse van praktisch relevante query's kan worden geëvalueerd door tegel na tegel te laden, waardoor servers arrays van grootteorden kunnen verwerken die verder gaan dan hun hoofdgeheugen.

Image
Transformatie van een query naar een efficiëntere, maar gelijkwaardige versie tijdens optimalisatie van arrayquery's

Vanwege de enorme omvang van arrays in wetenschappelijke / technische toepassingen in combinatie met vaak complexe queries, speelt optimalisatie een centrale rol bij het efficiënt maken van arrayquery's. Zowel hardware als software parallellisatie kan worden toegepast. Een voorbeeld van heuristische optimalisatie is de regel "maximale waarde van een array als gevolg van de celgewijze toevoeging van twee invoerbeelden is gelijk aan het optellen van de maximale waarden van elke invoer-array". Door de linkervariant te vervangen door de rechtse uitdrukking, krimpen de kosten van drie (dure) array-traversals naar twee array-traversals plus één (goedkope) scalaire bewerking (zie figuur, die de SQL / MDA-querystandaard gebruikt).

Toepassingsdomeinen

In veel - zo niet de meeste - gevallen waarin een bepaald fenomeen wordt bemonsterd of gesimuleerd, is het resultaat een gerasterde dataset die gemakkelijk kan worden opgeslagen, opgehaald en doorgestuurd als een array. Typisch zijn de array-gegevens versierd met metagegevens die ze verder beschrijven; geografisch gerefereerde beelden dragen bijvoorbeeld hun geografische positie en het coördinatenreferentiesysteem waarin het wordt uitgedrukt.

De volgende zijn representatieve domeinen waarin grootschalige multidimensionale arraygegevens worden verwerkt:

  • Aardwetenschappen: geodesie / mapping, teledetectie, geologie, oceanografie, hydrologie, atmosferische wetenschappen, cryosferische wetenschappen
  • Ruimtewetenschappen: Planetaire wetenschappen, astrofysica (optische en radiotelescoopwaarnemingen, kosmologische simulaties)
  • Levenswetenschappen: gengegevens, confocale microscopie, CAT-scans
  • Sociale wetenschappen: statistische datakubussen
  • Zakelijk: OLAP, datawarehousing

Dit zijn maar voorbeelden; in het algemeen vertegenwoordigen arrays vaak sensor-, simulatie-, beeld- en statistische gegevens. Steeds meer ruimtelijke en tijdsdimensies worden gecombineerd met abstracte assen, zoals verkoop en producten; een voorbeeld waar dergelijke abstracte assen expliciet voorzien zijn, is het [Open_Geospatial_Consortium | Open Geospatial Consortium] (OGC) dekkingsmodel .

Standaardisatie

Veel gemeenschappen hebben indelingen voor gegevensuitwisseling ontwikkeld, zoals HDF , NetCDF en TIFF . Een de facto standaard in de Earth Science-gemeenschappen is OPeNDAP , een datatransportarchitectuur en -protocol. Hoewel dit geen databasespecificatie is, biedt het belangrijke componenten die een databasesysteem kenmerken, zoals een conceptueel model en client / server-implementaties.

Een declaratieve geo - rasterquerytaal , Web Coverage Processing Service (WCPS), is gestandaardiseerd door het Open Geospatial Consortium (OGC).

In juni 2014 heeft ISO / IEC JTC1 SC32 WG3, die de SQL-databasestandaard onderhoudt, besloten om multidimensionale array-ondersteuning aan SQL toe te voegen als een nieuw kolomtype, gebaseerd op de initiële array-ondersteuning die beschikbaar is sinds de 2003-versie van SQL . De nieuwe standaard, aangenomen in het najaar van 2018, heet ISO 9075 SQL Part 15: MDA (Multi-Dimensional Arrays) .

Lijst met array-DBMS'en

Zie ook

Referenties