Tablicowy DBMS

Macierzowe systemy zarządzania bazami danych ( array DBMS ) zapewniają usługi bazodanowe specjalnie dla tablic (zwanych także danymi rastrowymi ), to znaczy: jednorodne zbiory elementów danych (często nazywanych pikselami , wokselami itp.), umieszczone na regularnej siatce jednego, dwóch, lub więcej wymiarów. Tablice są często używane do reprezentowania danych z czujników, symulacji, obrazów lub danych statystycznych. Takie tablice to zwykle Big Data , z pojedynczymi obiektami często o rozmiarach rzędu terabajtów, a wkrótce petabajtów; na przykład dzisiejsze archiwa obserwacji Ziemi i kosmosu zwykle powiększają się o terabajty dziennie. Macierzowe bazy danych mają na celu oferowanie elastycznego, skalowalnego przechowywania i wyszukiwania tej kategorii informacji.

Euclidean neighborhood of elements in arrays
Euklidesowe sąsiedztwo elementów w tablicach

Przegląd

W tym samym stylu, co standardowe systemy baz danych w zestawach, Array DBMS oferują skalowalne, elastyczne przechowywanie i elastyczne pobieranie/manipulację na tablicach o (koncepcyjnie) nieograniczonym rozmiarze. Ponieważ w praktyce tablice nigdy nie pojawiają się jako samodzielne, taki model tablicowy jest zwykle osadzony w jakimś ogólnym modelu danych, takim jak model relacyjny. Niektóre systemy implementują tablice jako analogię do tabel, inne wprowadzają tablice jako dodatkowy typ atrybutu.

Zarządzanie macierzami wymaga nowatorskich technik, zwłaszcza ze względu na fakt, że tradycyjne krotki i obiekty bazy danych zwykle dobrze mieszczą się na pojedynczej stronie bazy danych — jednostce dostępu do dysku na serwerze, zwykle 4 KB — podczas gdy obiekty tablicowe z łatwością mogą obejmować kilka nośników . Podstawowym zadaniem menedżera przechowywania tablic jest zapewnienie szybkiego dostępu do dużych tablic i podtablic. W tym celu tablice są partycjonowane podczas wstawiania na tak zwane kafelki lub porcje o dogodnym rozmiarze, które następnie działają jako jednostki dostępu podczas oceny zapytania.

Tablice DBMS oferują języki zapytań dające deklaratywny dostęp do takich tablic, umożliwiając ich tworzenie, manipulowanie, wyszukiwanie i usuwanie. Podobnie jak np. SQL , wyrażenia o dowolnej złożoności mogą być budowane na podstawie zestawu podstawowych operacji tablicowych. Ze względu na rozszerzenia wprowadzone w modelu danych i zapytań, systemy Array DBMS są czasami zaliczane do NoSQL w sensie „nie tylko SQL”. Optymalizacja zapytań i równoległość są ważne dla osiągnięcia skalowalności ; w rzeczywistości wielu operatorów tablic dobrze nadaje się do oceny równoległej, przetwarzając każdy kafelek w oddzielnych węzłach lub rdzeniach.

Do ważnych dziedzin zastosowań Array DBMS należą nauki o Ziemi, Kosmosie, Życiu i Społeczne, a także powiązane aplikacje komercyjne (takie jak poszukiwanie węglowodorów w przemyśle i OLAP w biznesie). Występującą różnorodność można zaobserwować np. w danych geograficznych, w których szeregi czasowe czujników środowiskowych 1-D, obrazy satelitarne 2-D, szeregi czasowe obrazów 3-D x/y/t oraz dane geofizyczne x/y/z, jak również Można znaleźć 4-D x/y/z/t dane klimatyczne i oceaniczne.

Historia i stan

Dominujący obecnie relacyjny model danych nie obsługuje bezpośrednio paradygmatu tablicowego w takim stopniu, jak zbiory i krotki . ISO SQL wymienia typ atrybutu o wartościach tablicowych, ale jest to tylko jednowymiarowy, prawie bez wsparcia operacyjnego i nie nadaje się do użytku w domenach aplikacji Array DBMS. Inną opcją jest odwołanie się do obiektów BLOB („duże obiekty binarne”), które są odpowiednikiem plików: ciągów bajtów o (koncepcyjnie) nieograniczonej długości, ale znowu bez żadnej funkcjonalności języka zapytań, takiej jak wielowymiarowe podzbiory.

Pierwsza znacząca praca wykraczająca poza obiekty BLOB została wykonana za pomocą PICDMS. Ten system oferuje prekursor języka zapytań tablicowych 2-D, choć nadal proceduralny i bez odpowiedniej obsługi pamięci.

Pierwszy deklaratywny język zapytań odpowiedni dla wielu wymiarów iz semantyką opartą na algebrze został opublikowany przez Baumanna wraz ze skalowalną architekturą. Inny język tablicowej bazy danych, ograniczony do 2-D, został przedstawiony przez Marathe i Salem. Przełomową pracę teoretyczną wykonali Libkin i in.; w swoim modelu, zwanym NCRA, rozszerzają zagnieżdżony rachunek relacyjny o tablice wielowymiarowe; wśród wyników są ważne wkłady w analizę złożoności zapytań tablicowych. Algebra mapy, odpowiednia dla przestrzennych danych rastrowych 2-D i 3-D, została opublikowana przez Mennisa i in.

Jeśli chodzi o implementacje Array DBMS, system rasdaman ma najdłuższą historię implementacji macierzy nD z pełną obsługą zapytań. Oracle GeoRaster oferuje fragmentaryczne przechowywanie dwuwymiarowych map rastrowych, aczkolwiek bez integracji z SQL. TerraLib to oprogramowanie GIS typu open source, które rozszerza technologię obiektowo-relacyjnego DBMS do obsługi typów danych czasoprzestrzennych; chociaż główny nacisk kładziony jest na dane wektorowe, istnieje również wsparcie dla rastrów. Począwszy od wersji 2.0, PostGIS osadza obsługę rastrów dla rastrów 2-D; specjalna funkcja oferuje deklaratywną funkcjonalność zapytań rastrowych. SciQL to tablicowy język zapytań dodawany do DBMS MonetDB . SciDB to nowsza inicjatywa mająca na celu ustanowienie obsługi tablicowej bazy danych. Podobnie jak SciQL, tablice są postrzegane jako odpowiednik tabel, a nie nowy typ atrybutu, jak w rasdaman i PostGIS.

W szczególnym przypadku rzadkich danych kostki danych OLAP są dobrze ugruntowane; przechowują wartości komórek wraz z ich lokalizacją – odpowiednia technika kompresji w obliczu kilku lokalizacji, które w ogóle zawierają ważne informacje – i operują na nich za pomocą SQL. Ponieważ ta technika nie skaluje się pod względem gęstości, standardowe bazy danych nie są obecnie używane do przechowywania gęstych danych, takich jak zdjęcia satelitarne, w których większość komórek zawiera istotne informacje; raczej zastrzeżone implementacje ad hoc przeważają w zarządzaniu danymi naukowymi i podobnych sytuacjach. Dlatego właśnie tutaj systemy DBMS typu Array mogą wnieść szczególny wkład.

Ogólnie rzecz biorąc, Array DBMS to nowa technologia. Chociaż istnieją systemy wdrożone operacyjnie, takie jak Oracle GeoRaster , PostGIS 2.0 i rasdaman , wciąż istnieje wiele otwartych pytań badawczych, w tym projektowanie i formalizacja języka zapytań, optymalizacja zapytań, przetwarzanie równoległe i rozproszone oraz ogólnie kwestie skalowalności. Poza tym środowiska naukowe nadal wydają się niechętne do korzystania z technologii baz danych macierzowych i preferują wyspecjalizowaną, zastrzeżoną technologię.

koncepcje

Podczas dodawania tablic do baz danych należy ponownie rozważyć wszystkie aspekty projektowania bazy danych — od modelowania koncepcyjnego (np. odpowiednich operatorów) przez zarządzanie pamięcią masową (np. zarządzanie macierzami obejmującymi wiele nośników) po przetwarzanie zapytań (takie jak wydajne strategie przetwarzania).

Modelowanie koncepcyjne

Formalnie tablica A jest dana przez funkcję (całkowitą lub częściową) A : X V gdzie X , dziedziną jest d -wymiarowy przedział całkowity dla pewnego d > 0 i V , zwany zakresem , jest jakiś (niepusty) zestaw wartości; w notacji zestawu można to zapisać jako { ( p , v ) | p w X , v w V }. Każde ( p , v ) w A oznacza element tablicy lub komórkę , a zgodnie z powszechnym zapisem piszemy A [ p ] = v . Przykłady dla X obejmują {0..767} × {0..1023} (dla obrazów o rozmiarze XGA ), przykłady dla V obejmują {0..255} dla 8-bitowych obrazów w skali szarości i {0..255} × {0 ..255} × {0..255} dla standardowych obrazów RGB .

Zgodnie z ustaloną praktyką dotyczącą baz danych język zapytań tablicowych powinien być deklaratywny i bezpieczny w ocenie. Ponieważ iteracja po tablicy jest sercem przetwarzania tablic, deklaratywność bardzo koncentruje się na tym aspekcie. Wymaganiem jest zatem, aby koncepcyjnie wszystkie komórki były sprawdzane jednocześnie — innymi słowy, zapytanie nie wymusza żadnej jawnej sekwencji iteracji w komórkach tablicy podczas oceny. Bezpieczeństwo oceny jest osiągane, gdy każde zapytanie kończy się po skończonej liczbie kroków (o skończonym czasie); ponownie, unikanie ogólnych pętli i rekurencji jest sposobem na osiągnięcie tego. Jednocześnie unikanie wyraźnych sekwencji pętli otwiera różnorodne możliwości optymalizacji.

Zapytanie o tablicę

Jako przykład dla operatorów zapytań tablicowych może posłużyć algebra rasdamana i język zapytań, które ustanawiają język wyrażeń na minimalnym zestawie prymitywów tablicowych. Zaczniemy od ogólnych operatorów podstawowych, a następnie przedstawimy typowe przypadki specjalne i skróty.

Operator marray tworzy tablicę w określonym zakresie domeny i inicjuje jej komórki:

 
  macierz  indeks  -  zakres  -  wartości  specyfikacji  komórka  -  wartość  -  wyrażenie 

gdzie specyfikacja zakresu indeksu definiuje domenę wynikową i wiąże z nią zmienną iteracji, bez określania kolejności iteracji. Wyrażenie wartości komórki jest oceniane w każdej lokalizacji domeny.

Przykład: „Wycięcie tablicy A określone przez punkty narożne (10,20) i (40,50).”

   
  szyk  p  w  [  10  :  20  ,  40  :  50  ]  wartościach  A  [  p  ] 

Ten szczególny przypadek, czysty podzbiór, można zapisać w skrócie jako

 O  [  10  :  20  ,  40  :  50  ] 

To ustawienie podrzędne zachowuje wymiar tablicy; aby zmniejszyć wymiar przez wyodrębnienie przekrojów, w wymiarze przekrojenia wskazywana jest pojedyncza wartość punktu przecięcia.

Przykład: „Przekrój przez szereg czasowy x/y/t na pozycji t=100, pobierając wszystkie dostępne dane w x i y”.

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

Operator wieloznaczny * wskazuje, że ma być używana bieżąca granica tablicy; zwróć uwagę, że tablice, w których granice wymiarów pozostają otwarte w czasie definicji, mogą zmieniać rozmiar w tych wymiarach przez cały okres istnienia tablicy.

Powyższe przykłady po prostu skopiowały oryginalne wartości; zamiast tego można manipulować tymi wartościami.

Przykład: „Tablica A z funkcją log() zastosowaną do każdej wartości komórki”.

   
    połącz  p  w  domenie  (  A  )  log  wartości  (  A  [  p  ]  ) 

Można to skrócić jako:

   dziennik  (  A  ) 

Dzięki zasadzie zwanej operacjami indukowanymi język zapytań oferuje wszystkie operacje oferowane przez typ komórki również na poziomie tablicy. Dlatego na wartościach liczbowych wszystkie zwykłe jednoargumentowe i binarne operacje arytmetyczne, wykładnicze i trygonometryczne są dostępne w prosty sposób, a także standardowy zestaw operatorów boolowskich.

Operator kondensacji agreguje wartości komórek w jeden wynik skalarny, podobnie jak agregacje SQL. Jego zastosowanie ma ogólną postać:

 
 
  skondensować  skondensować  -  operacja  nad  indeksem  -  zakres  -  specyfikacja  przy użyciu  komórki  -  wartość  -  wyrażenie 

Podobnie jak w przypadku macierzy , specyfikacja zakresu indeksu określa domenę, po której ma nastąpić iteracja, i wiąże z nią zmienną iteracji — znowu bez określania kolejności iteracji. Podobnie wyrażenie wartości komórki jest oceniane w każdej lokalizacji domeny. Klauzula condense-op określa operację agregacji używaną do łączenia wyrażeń wartości komórki w jedną pojedynczą wartość.

Przykład: „Suma wszystkich wartości w A”.

 
   
  skondensuj  +  nad  p  w  sdom  (  A  )  używając  A  [  p  ] 

Skrótem tej operacji jest:

   dodaj_komórki  (  A  ) 

W ten sam sposób i analogicznie do agregatów SQL, dostępnych jest szereg dalszych skrótów, w tym zliczanie, średnia, minimum, maksimum i kwantyfikatory boolowskie.

Następny przykład demonstruje kombinację operatorów macierzowych i kondensacyjnych poprzez wyprowadzenie histogramu.

Przykład: „Histogram na 8-bitowym obrazie A w skali szarości”.

   0
      marray  wiadro  w  [  :  255  ]  wartości  liczba_komórek  (  A  =  wiadro  ) 

Indukowane porównanie, A=bucket , ustanawia tablicę logiczną o takim samym zakresie jak A . Operator agregacji zlicza wystąpienia true dla każdej wartości wiadra , która następnie jest umieszczana w odpowiedniej komórce tablicy histogramu 1-D.

Takie języki pozwalają na formułowanie operacji statystycznych i obrazowych, które można wyrazić analitycznie bez użycia pętli. Udowodniono, że moc ekspresyjna takich języków tablicowych jest w zasadzie równoważna z relacyjnymi językami zapytań z rankingiem.

Przechowywanie tablic

Pamięć masowa musi pomieścić tablice o różnych wymiarach i zwykle dużych rozmiarach. Podstawowym zadaniem jest utrzymanie bliskości przestrzennej na dysku, tak aby zmniejszyć liczbę dostępów do dysku podczas podzbioru. Należy zauważyć, że emulacja wielowymiarowych tablic jako zagnieżdżonych list (lub tablic 1-D) sama w sobie tego nie osiągnie, a zatem generalnie nie doprowadzi do skalowalnych architektur.

Zwykle tablice są podzielone na podtablice, które tworzą jednostkę dostępu. Regularne partycjonowanie, w którym wszystkie partycje mają ten sam rozmiar (z wyjątkiem ewentualnie granic), jest określane jako porcja . Uogólnieniem, które usuwa ograniczenia do równych rozmiarów partycji poprzez obsługę wszelkiego rodzaju partycjonowania, jest kafelkowanie . Partycjonowanie macierzy może znacznie poprawić dostęp do podzbiorów macierzy: dzięki dostosowaniu kafelkowania do wzorca dostępu serwer może w idealnym przypadku pobrać wszystkie wymagane dane przy dostępie tylko do jednego dysku.

Kompresja płytek może czasami znacznie zmniejszyć ilość potrzebnej pamięci. Również przy przesyłaniu wyników kompresja jest przydatna, gdyż przy dużej ilości danych rozpatrywanych jako czynnik ograniczający często stanowi przepustowość sieci.

Przetwarzanie zapytań

Struktura pamięci oparta na kafelkach sugeruje strategię przetwarzania kafelek po kafelku (w rasdaman nazywana strumieniowaniem kafelków ). Dużą klasę praktycznie istotnych zapytań można ocenić, ładując kafelek po kafelku, umożliwiając w ten sposób serwerom przetwarzanie tablic o rzędach wielkości poza ich główną pamięcią.

Transformacja zapytania do wydajniejszej, ale równoważnej wersji podczas optymalizacji zapytań tablicowych

Ze względu na ogromne rozmiary tablic w zastosowaniach naukowych/technicznych w połączeniu z często złożonymi zapytaniami optymalizacja odgrywa kluczową rolę w zwiększaniu wydajności zapytań tablicowych. Można zastosować równoległość zarówno sprzętową, jak i programową. Przykładem optymalizacji heurystycznej jest reguła „maksymalna wartość tablicy wynikająca z dodania w komórce dwóch obrazów wejściowych jest równoważna dodaniu maksymalnych wartości każdej tablicy wejściowej”. Zastępując wariant po lewej stronie wyrażeniem po prawej stronie, koszty zmniejszają się z trzech (kosztownych) przejść przez tablicę do dwóch przejść przez tablicę plus jednej (taniej) operacji skalarnej (patrz rysunek, który wykorzystuje standard zapytań SQL/MDA).

Domeny aplikacji

W wielu – jeśli nie w większości – przypadkach, gdy dane zjawisko jest próbkowane lub symulowane, wynikiem jest zrasteryzowany zestaw danych, który można wygodnie przechowywać, pobierać i przesyłać dalej jako tablicę. Zazwyczaj dane tablicowe są ozdobione metadanymi opisującymi je dalej; na przykład zdjęcia z odniesieniami geograficznymi będą miały swoją pozycję geograficzną i system odniesienia za pomocą współrzędnych, w którym jest to wyrażone.

Poniżej przedstawiono reprezentatywne domeny, w których obsługiwane są wielkoskalowe wielowymiarowe dane tablicowe:

  • Nauki o ziemi: geodezja / mapowanie, teledetekcja, geologia, oceanografia, hydrologia, nauki o atmosferze, nauki o kriosferze
  • Nauki o kosmosie: Nauki planetarne, astrofizyka (obserwacje optyczne i radioteleskopowe, symulacje kosmologiczne)
  • Nauki przyrodnicze: dane genowe, mikroskopia konfokalna, tomografia komputerowa
  • Nauki społeczne: kostki danych statystycznych
  • Biznes: OLAP, hurtownie danych

To tylko przykłady; ogólnie rzecz biorąc, tablice często reprezentują dane z czujników, symulacji, obrazu i statystyki. Coraz więcej wymiarów przestrzennych i czasowych łączy się z abstrakcyjnymi osiami, takimi jak sprzedaż i produkty; jednym z przykładów, w których wyraźnie przewidziano takie abstrakcyjne osie, jest model pokrycia [Open_Geospatial_Consortium |Open Geospatial Consortium] (OGC) .

Normalizacja

Wiele społeczności ustanowiło formaty wymiany danych, takie jak HDF , NetCDF i TIFF . De facto standardem w społecznościach nauk o Ziemi jest OPeNDAP , architektura i protokół transportu danych. Chociaż nie jest to specyfikacja bazy danych, zawiera ważne komponenty charakteryzujące system bazy danych, takie jak model koncepcyjny i implementacje klient/serwer.

Deklaratywny język zapytań georastrowych, Web Coverage Processing Service (WCPS), został znormalizowany przez Open Geospatial Consortium (OGC).

W czerwcu 2014 r. organizacja ISO/IEC JTC1 SC32 WG3, która utrzymuje standard bazy danych SQL, zdecydowała się dodać do SQL obsługę tablic wielowymiarowych jako nowy typ kolumny, w oparciu o początkową obsługę tablic dostępną od wersji SQL 2003 . Nowy standard, przyjęty jesienią 2018 r., nosi nazwę ISO 9075 SQL Part 15: MDA (Multi-Dimensional Arrays) .

Lista tablic DBMS

Zobacz też