Array DBMS - Array DBMS

Sistemele de gestionare a bazelor de date matrice ( SGBD matrice ) furnizează servicii de baze de date special pentru matrice (numite și date raster ), adică: colecții omogene de articole de date (adesea numite pixeli , voxeli etc.), așezate pe o grilă regulată de unul, doi, sau mai multe dimensiuni. Adesea matricele sunt utilizate pentru a reprezenta senzori, simulare, imagini sau date statistice. Astfel de matrice tind să fie Big Data , cu obiecte unice variind frecvent în dimensiuni Terabyte și în curând Petabyte; de exemplu, arhivele actuale de observare a pământului și spațiului cresc de obicei cu Terabytes pe zi. Bazele de date matrice urmăresc să ofere stocare și recuperare flexibile, scalabile pentru această categorie de informații.

Învecinarea euclidiană a elementelor din tablouri
Învecinarea euclidiană a elementelor din tablouri

Prezentare generală

În același stil ca și sistemele de baze de date standard pe seturi, SGBD-urile Array oferă stocare scalabilă, flexibilă și regăsire / manipulare flexibilă pe matrice de dimensiuni (conceptual) nelimitate. Deoarece în practică matricile nu par niciodată independente, un astfel de model de matrice este în mod normal încorporat într-un model de date general, cum ar fi modelul relațional. Unele sisteme implementează tablouri ca o analogie cu tabelele, unele introduc tablouri ca tip de atribut suplimentar.

Gestionarea matricelor necesită tehnici noi, în special datorită faptului că tuplurile și obiectele tradiționale ale bazelor de date tind să se potrivească bine într-o singură pagină a bazei de date - o unitate de acces pe disc pe server, de obicei 4  KB  - în timp ce obiectele matrice pot acoperi cu ușurință mai multe medii. Sarcina principală a managerului de stocare a matricii este de a oferi acces rapid la matrici și submatricii mari. În acest scop, matricile sunt partiționate, în timpul inserării, în așa-numitele dale sau bucăți de dimensiuni convenabile care acționează apoi ca unități de acces în timpul evaluării interogării.

SGBD-urile de matrice oferă limbaje de interogare care oferă acces declarativ la astfel de matrice, permițându-le să le creeze, să le manipuleze, să le caute și să le șterge. La fel ca, de exemplu, SQL , expresiile de complexitate arbitrară pot fi construite deasupra unui set de operații de matrice de bază. Datorită extensiilor făcute în modelul de date și interogare, DBMS-urile Array sunt uneori incluse în categoria NoSQL , în sensul „nu numai SQL”. Optimizarea și paralelizarea interogărilor sunt importante pentru realizarea scalabilității ; de fapt, mulți operatori de matrice se împrumută bine spre evaluarea paralelă, prin procesarea fiecărei piese pe noduri sau nuclee separate.

Domeniile de aplicații importante ale SGBD-urilor Array includ Pământul, Spațiul, Viața și Științele sociale, precum și aplicațiile comerciale conexe (cum ar fi explorarea hidrocarburilor în industrie și OLAP în afaceri). Varietatea care apare poate fi observată, de exemplu, în datele geografice în care seria temporală a senzorului de mediu 1-D, imaginile satelitului 2-D, seria temporală a imaginii 3-D x / y / t și datele geofizice x / y / z, precum și Se pot găsi date climatice și oceanice 4-D x / y / z / t.

Istorie și statut

Modelul de date relaționale , care prevalează astăzi, nu acceptă direct paradigma matricei în aceeași măsură ca seturile și tuplurile. ISO SQL listează un tip de atribut cu valoare de matrice, dar acesta este doar unidimensional, cu aproape nici un suport operațional și nu poate fi utilizat pentru domeniile de aplicații ale Array DBMS. O altă opțiune este să recurgeți la BLOB-uri („obiecte binare mari”) care sunt echivalentul fișierelor: șiruri de octeți cu lungime (conceptuală) nelimitată, dar din nou fără nici o funcționalitate a limbajului de interogare, cum ar fi subsetarea multidimensională.

Prima lucrare semnificativă în depășirea BLOB-urilor a fost stabilită cu PICDMS. Acest sistem oferă precursorul unui limbaj de interogare matrice 2-D, deși încă procedural și fără suport de stocare adecvat.

Un prim limbaj de interogare declarativ adecvat pentru dimensiuni multiple și cu o semantică bazată pe algebră a fost publicat de Baumann , împreună cu o arhitectură scalabilă. O altă limbă de bază de date matricială, limitată la 2-D, a fost prezentată de Marathe și Salem. Munca teoretică seminală a fost realizată de Libkin și colab .; în modelul lor, numit NCRA, extind un calcul relațional imbricat cu tablouri multidimensionale; printre rezultate sunt contribuții importante la analiza complexității interogărilor matrice. O algebră a hărții, potrivită pentru datele raster spațiale 2-D și 3-D, a fost publicată de Mennis și colab.

În ceea ce privește implementările Array DBMS, sistemul rasdaman are cea mai lungă experiență de implementare a matricilor nD cu suport complet pentru interogări. Oracle GeoRaster oferă stocarea blocată a hărților raster 2-D, deși fără integrare SQL. TerraLib este un software GIS open-source care extinde tehnologia SGBD relațională cu obiectele pentru a gestiona tipurile de date spațio-temporale; în timp ce accentul principal se pune pe datele vectoriale, există, de asemenea, un anumit suport pentru raster. Începând cu versiunea 2.0, PostGIS încorporează suport raster pentru rasterele 2-D; o funcție specială oferă funcționalitate de interogare raster declarativă. SciQL este un limbaj de interogare în matrice adăugat la SGBD MonetDB . SciDB este o inițiativă mai recentă de a stabili suportul bazei de date matrice. La fel ca SciQL, matricile sunt văzute ca un echivalent cu tabelele, mai degrabă decât un nou tip de atribut ca în rasdaman și PostGIS.

Pentru cazul special al datelor rare , cuburile de date OLAP sunt bine stabilite; ele stochează valorile celulei împreună cu locația lor - o tehnică de compresie adecvată față de puținele locații care conțin informații valabile - și operează cu SQL pe ele. Deoarece această tehnică nu se extinde în densitate, bazele de date standard nu sunt utilizate astăzi pentru date dense, cum ar fi imaginile din satelit, unde majoritatea celulelor poartă informații semnificative; mai degrabă, implementările ad hoc proprietare prevalează în gestionarea datelor științifice și în situații similare. Prin urmare, aici este locul în care SGBD-urile Array pot aduce o contribuție specială.

În general, SGBD-urile Array sunt o tehnologie emergentă. În timp ce există sisteme implementate operațional, cum ar fi Oracle GeoRaster , PostGIS 2.0 și rasdaman , există încă multe întrebări de cercetare deschise, inclusiv proiectarea și formalizarea limbajului de interogare, optimizarea interogărilor, paralelizarea și procesarea distribuită și problemele de scalabilitate în general. În plus, comunitățile științifice par încă reticente în utilizarea tehnologiei bazelor de date matrice și tind să favorizeze tehnologia specializată, proprietară.

Concepte

Atunci când adăugați matrice la baze de date, toate aspectele proiectării bazelor de date trebuie să fie reconsiderate - variind de la modelarea conceptuală (cum ar fi operatorii potriviți) până la gestionarea stocării (cum ar fi gestionarea matricilor care acoperă mai multe medii) până la procesarea interogărilor (cum ar fi strategiile de procesare eficiente).

Modelare conceptuală

În mod formal, o matrice A este dată de o funcție (totală sau parțială) A : X V unde X , domeniul este un interval întreg d- dimensional pentru unele d > 0 și V , numit interval , este oarecare (ne-gol) set de valori; în notație setată, aceasta poate fi rescrisă ca {( p , v ) | p în X , v în V }. Fiecare ( p , v ) din A denotă un element de matrice sau o celulă , iar după notația comună scriem A [ p ] = v . Exemplele pentru X includ {0..767} × {0..1023} (pentru imaginile cu dimensiunea XGA ), exemplele pentru V includ {0..255} pentru imaginile pe 8 biți în tonuri de gri și {0..255} × {0 ..255} × {0..255} pentru imagini RGB standard .

După practica stabilită a bazei de date, un limbaj de interogare a matricei trebuie să fie declarativ și sigur în evaluare. Deoarece iterația asupra unei matrice se află în centrul procesării matricei, declarativitatea se concentrează foarte mult pe acest aspect. Cerința, deci, este ca, în mod conceptual, toate celulele să fie inspectate simultan - cu alte cuvinte, interogarea nu aplică nicio secvență de iterație explicită asupra celulelor matricei în timpul evaluării. Siguranța evaluării se realizează atunci când fiecare interogare se încheie după un număr finit de pași (în timp finit); din nou, evitarea buclelor generale și a recursivității este o modalitate de a realiza acest lucru. În același timp, evitarea secvențelor de buclă explicite deschide oportunități de optimizare a varietății.

Interogare matrice

De exemplu, pentru operatorii de interogare a matricei pot servi algebra rasdaman și limbajul de interogare, care stabilesc un limbaj de expresie pe un set minim de primitive de matrice. Începem cu operatorii generici de bază și apoi prezentăm cazuri speciale și stenografii comune.

Marray Operatorul creează o serie de peste o anumită măsură , având în vedere domeniu și inițializează celulele sale:

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

unde index-range-specification definește domeniul rezultat și leagă o variabilă de iterație la acesta, fără a specifica secvența de iterație. Expresia valoare-celulă este evaluată la fiecare locație a domeniului.

Exemplu: „O decupare a matricei A dată de punctele de colț (10,20) și (40,50).”

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

Acest caz special, subsetare pură, poate fi abreviat ca

A[10:20,40:50]

Această subsetare păstrează dimensiunea matricei; pentru a reduce dimensiunea prin extragerea feliilor, este indicată o singură valoare slicepoint în dimensiunea de feliere.

Exemplu: „O porțiune printr-o serie de timp x / y / t la poziția t = 100, recuperând toate datele disponibile în x și y”.

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

Operatorul wildcard * indică faptul că trebuie utilizată limita curentă a tabloului; rețineți că matricile în care limitele dimensiunilor sunt lăsate deschise la momentul definirii pot modifica dimensiunea în acele dimensiuni pe durata de viață a matricei.

Exemplele de mai sus au copiat pur și simplu valorile originale; în schimb, aceste valori pot fi manipulate.

Exemplu: „Array A, cu un log () aplicat fiecărei valori de celulă.”

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

Aceasta poate fi abreviată astfel:

log( A )

Printr-un principiu numit operații induse , limbajul de interogare oferă toate operațiunile oferite de tipul de celulă și la nivelul matricei. Prin urmare, pe valorile numerice, toate operațiile unitare și binare obișnuite aritmetice, exponențiale și trigonometrice sunt disponibile într-o manieră simplă, plus setul standard de operatori booleni.

Cele Comprimați valorile celulelor agregate ale operatorului într - un singur rezultat scalar, similar cu agregate SQL. Aplicarea sa are forma generală:

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

La fel ca în cazul marray-ului anterior, specificația intervalului-index specifică domeniul peste care se va itera și leagă o variabilă de iterație la acesta - din nou, fără a specifica secvența de iterație. La fel, expresia valoare-celulă este evaluată la fiecare locație a domeniului. Condensează-op clauza specifică operațiunea de agregare utilizat pentru a combina expresiile valoarea celulei într - o singură valoare unică.

Exemplu: „Suma peste toate valorile din A.”

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

O prescurtare pentru această operațiune este:

add_cells( A )

În același mod și în analogie cu agregatele SQL, sunt furnizate o serie de prescurtări suplimentare, inclusiv numărare, medie, minimă, maximă și cuantificatoare booleene.

Următorul exemplu demonstrează combinația de operatori marray și condens prin derivarea unei histograme.

Exemplu: „O histogramă peste imaginea de 8 biți în tonuri de gri A.”

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

Comparația indusă, A = găleată , stabilește o matrice booleană în aceeași măsură ca și A . Operatorul de agregare numără aparițiile true pentru fiecare valoare a cupei , care ulterior este plasată în celula matricei corespunzătoare a matricei de histograme 1-D.

Astfel de limbaje permit formularea de operații statistice și imagistice care pot fi exprimate analitic fără a utiliza bucle. S-a dovedit că puterea expresivă a unor astfel de limbaje matrice este, în principiu, echivalentă cu limbile de interogare relaționale cu clasare.

Stocare matrice

Spațiul de stocare trebuie să găzduiască matrice de diferite dimensiuni și de obicei dimensiuni mari. O sarcină principală este menținerea proximității spațiale pe disc, astfel încât să se reducă numărul de accesări pe disc în timpul subsetării. Rețineți că o emulare de tablouri multidimensionale ca liste imbricate (sau tablouri 1-D) nu va realiza în sine acest lucru și, prin urmare, în general nu va duce la arhitecturi scalabile.

În mod obișnuit, tablourile sunt partiționate în sub-tablouri care formează unitatea de acces. Partiționarea regulată în care toate partițiile au aceeași dimensiune (cu excepția eventualelor limite) este denumită chunking . O generalizare care elimină restricția la partițiile de dimensiuni egale prin susținerea oricărui tip de partiționare este placarea . Partiționarea matricei poate îmbunătăți în mod semnificativ accesul la subseturile matricei: ajustând plăcile la modelul de acces, serverul poate prelua în mod ideal toate datele necesare cu un singur acces pe disc.

Comprimarea plăcilor poate reduce uneori substanțial cantitatea de depozitare necesară. De asemenea, pentru transmiterea rezultatelor este utilă comprimarea, deoarece pentru cantitățile mari de date luate în considerare lățimea de bandă a rețelelor constituie adesea un factor limitativ.

Procesarea interogării

O structură de stocare bazată pe țiglă sugerează o strategie de procesare țiglă cu țiglă (în rasdaman denumită streaming de țiglă ). O mare clasă de interogări practic relevante poate fi evaluată prin încărcarea țiglelor după țiglă, permițând astfel serverelor să proceseze tablouri de ordine de mărime dincolo de memoria lor principală.

Image
Transformarea unei interogări într-o versiune mai eficientă, dar echivalentă în timpul optimizării interogării matricei

Datorită dimensiunilor masive de matrice în aplicații științifice / tehnice în combinație cu interogări deseori complexe, optimizarea joacă un rol central în eficientizarea interogărilor de matrice. Se pot aplica atât paralelismul hardware, cât și cel software. Un exemplu pentru optimizarea euristică este regula „valoarea maximă a unui tablou rezultată din adăugarea celulară a două imagini de intrare este echivalentă cu adăugarea valorilor maxime ale fiecărui tablou de intrare”. Prin înlocuirea variantei din stânga cu expresia din dreapta, costurile se reduc de la trei traversări de matrice (costisitoare) la două traversări de matrice plus o operație scalară (ieftină) (vezi Figura, care utilizează standardul de interogare SQL / MDA).

Domenii de aplicații

În multe - dacă nu chiar în majoritatea - cazurilor în care un fenomen este eșantionat sau simulat, rezultatul este un set de date rasterizat care poate fi stocat, recuperat și transmis în mod convenabil sub formă de matrice. De obicei, datele matricei sunt ornamentate cu metadate care le descriu în continuare; de exemplu, imaginile cu referință geografică își vor purta poziția geografică și sistemul de referință de coordonate în care sunt exprimate.

Următoarele sunt domenii reprezentative în care sunt tratate date matrice multidimensionale pe scară largă:

  • Științe ale Pământului: geodezie / cartografiere, teledetecție, geologie, oceanografie, hidrologie, științe atmosferice, științe criosferice
  • Științe spațiale: științe planetare, astrofizică (observații optice și radiotelescop, simulări cosmologice)
  • Științe ale vieții: date genetice, microscopie confocală, scanări CAT
  • Științe sociale: cuburi de date statistice
  • Afaceri: OLAP, depozitare date

Acestea sunt doar exemple; în general, matricile reprezintă frecvent date despre senzori, simulare, imagini și statistici. Din ce în ce mai multe dimensiuni spațiale și temporale sunt combinate cu axe abstracte , cum ar fi vânzările și produsele; un exemplu în cazul în care aceste axe abstracte sunt explicit prevăzută este [Open_Geospatial_Consortium | Open Geospatial Consortium] (OGC) modelul de acoperire .

Standardizare

Multe comunități au stabilit formate de schimb de date, cum ar fi HDF , NetCDF și TIFF . Un standard de facto în comunitățile științei Pământului este OPeNDAP , o arhitectură și protocol de transport de date. Deși aceasta nu este o specificație a bazei de date, aceasta oferă componente importante care caracterizează un sistem de baze de date, cum ar fi un model conceptual și implementări client / server.

Un limbaj de interogare geo-raster declarativ, Serviciul de procesare a acoperirii web (WCPS), a fost standardizat de Open Geospatial Consortium (OGC).

În iunie 2014, ISO / IEC JTC1 SC32 WG3, care menține standardul bazei de date SQL, a decis să adauge suportul matricial multidimensional la SQL ca un nou tip de coloană, pe baza suportului matricial inițial disponibil de la versiunea 2003 a SQL . Noul standard, adoptat în toamna anului 2018, este denumit ISO 9075 SQL Partea 15: MDA (Multi-Dimensional Arrays) .

Lista DBMS-urilor matrice

Vezi si

Referințe