Baza Oracle 12c i przetwarzanie w pamięci

Baza danych Oracle 12c uzyskała opcję przetwarzania danych w pamięci, co bardzo usprawnia przetwarzanie danych dla celów raportowych, hurtowni danych, a także obciążeń transakcyjnych.

Pamięć operacyjna komputera jest najszybszym medium, na którym można składać przetwarzane dane. Przetwarzanie danych w pamięci stało się coraz bardziej dostępne razem ze spadkiem cen modułów SDRAM, ale przez długi czas było dostępne jedynie dla specjalizowanego oprogramowania, takiego jak SAP HANA. Podstawową zaletą przetwarzania danych w pamięci jest szybkość – podstawowe operacje, takie jak wyszukiwanie czy sortowanie odbywają się wielokrotnie szybciej, gdyż nie trzeba korzystać przy tym z powolnych kanałów wejścia/wyjścia obsługujących pamięć dyskową. Dyski zewnętrzne, nawet jeśli są wykonane przy wykorzystaniu technologii SSD, są znacznie wolniejsze od pamięci RAM i cechują się większym opóźnieniem. Oznacza to, że umieszczenie niektórych obiektów bazy danych w pamięci RAM bardzo usprawni jej pracę. Najnowsza wersja bazy danych Oracle 12c została wyposażona właśnie w opcję przetwarzania danych w pamięci. W odróżnieniu od specjalizowanych rozwiązań, taką opcję można włączyć bez zmiany kodu aplikacji, na wybranej tabeli lub przestrzeni tabel, przy czym przyspieszenie pracy dotyczy zarówno obciążeń raportowych lub hurtowni danych, jak i pracy ściśle transakcyjnej. Ponieważ cała zmiana dotyczy mechanizmów wewnętrznych bazy danych, opcja in memory działa z każdą aplikacją, która obecnie działa z bazą 12c. Dostępne są wszystkie opcje, działa skalowanie poziome (klaster RAC), dostępne są opcje ASM i RMAN.

Michel Clement, wiceprezes regionu Europy Środkowej i Wschodniej w firmie Oracle mówi: „Dzięki tej opcji analiza dużych zestawów danych odbywa się prawie natychmiast, co może przynieść firmom przewagę konkurencyjną. Opcja ta jest atrakcyjna dla wielu firm, praktycznie niezależnie od regionu czy branży, umożliwia redukcję kosztów i usprawnienie procesów biznesowych przedsiębiorstwa”.

Dwa światy w jednej bazie

W zastosowaniach transakcyjnych baza danych zazwyczaj przechowuje dane w formacie krotkowym (wierszami), co umożliwia szybkie operacje ściśle transakcyjne. Aby zapytania ściśle analityczne działały z akceptowaną prędkością, wprowadza się indeksy, które jednak muszą być aktualizowane po każdej operacji dodania krotki lub jej zmiany. Wymaga to dodatkowych operacji, także dyskowych, a zatem poważnie wpływa na wydajność pracy transakcyjnej. Dla zastosowań analitycznych o wiele sprawniejszy będzie format kolumnowy, ale nie sprawdzi się on w zastosowaniach transakcyjnych.

Wstawienie wiersza w starszej wersji bazy wymagało aktualizacji indeksów. Przy znacznej ich liczbie (zdarzają się bazy, w których wstawienie krotki wymuszało aktualizację 20 indeksów i więcej) narzut jest duży, gdyż motor bazodanowy musi sprawdzić, które indeksy należy aktualizować, musi przeprowadzić samą aktualizację, co zwalnia przetwarzanie transakcji.

Dzięki wykorzystaniu szybkości pamięci operacyjnej baza Oracle 12c (z włączoną opcją in memory dla danego obiektu: tabeli, przestrzeni tabel) może przechowywać dane w obu formatach (kolumnowym i wierszowym) jednocześnie. Wstawienie krotki powoduje automatyczną i natychmiastową aktualizację danych kolumnowych, co jest możliwe między innymi dzięki szybkości pracy pamięci RAM. W przypadku opcji in memory nie trzeba aktualizować indeksów, gdyż wyszukiwanie kolumnowe jest realizowane przy pomocy składowania danych w formacie kolumnowym (column store). W efekcie tej kombinacji otrzymuje się przyspieszenie do stu razy przy zapytaniach analitycznych i kilkukrotne przy zapytaniach wierszowych, a przetwarzanie połączeń JOIN zamienia się na szybkie skanowanie kolumn. Zmiany te przy zastosowaniach raportowych z reguły skutkują przyspieszeniem pracy rzędu 20 razy, a przy niektórych zapytaniach zaobserwowano różnicę rzędu kilku tysięcy razy - standardowy serwer z procesorem o szesnastu rdzeniach skanuje dane w tempie miliardów rzędów lub kolumn na sekundę. Operacje te są zrównoleglone i wykorzystują instrukcje wektorowe obecne w nowoczesnych procesorach. Ponieważ dane są w pamięci i nie ma do nich osobnych transakcji, narzut na aktualizację w wersji in memory jest bardzo niski.


TOP 200