Wirtualizacja baz danych – idea, która nie zyskała zbyt dużej popularności parę lat temu – okazuje się być dobrym pomysłem na dzisiaj. Umożliwia bowiem pokonanie wyzwań związanych z klastrami Hadoopa.

Wirtualizacja to może być baza danych uruchamiana w maszynie wirtualnej albo w pełni zwirtualizowany, elastyczny klaster bazodanowy zbudowany z modułów obliczeniowych oraz pamięci masowych, które można w locie dodawać do systemu. Taki klaster ma wiele zalet umożliwiających pokonanie wyzwań, jakie wiążą się z przetwarzaniem dużych zbiorów w Hadoopie, np. kwestia przenoszenia danych z systemów transakcyjnych do klastra Big Data.

Eksploracja danych i przechowywanie metadanych

Jedną z niedocenianych cech zwirtualizowanych baz danych jest ich wsparcie dla eksploracji danych oraz przechowywania metadanych. To oznacza, że użytkownik dostaje znacznie lepszy obraz danych niż kiedykolwiek miałby w przypadku korzystania z hurtowni danych. Dodatkowo znacznie łatwiejsze staje się przeprowadzanie działań związanych utrzymaniem jakości danych. Optymalizacja wydajności w wirtualnej bazie danych umożliwia także znacznie wydajniejsze przetwarzanie danych, eliminujące problemy związane z używaniem Hadoopa.

Mimo, że wirtualizacja baz danych zawsze będzie używana razem z innymi technologiami bazodanowymi, to trudno dzisiaj znaleźć dużą firmę, która nie osiągnęłaby korzyści z wirtualizacji swoich baz danych. Pełną wirtualizację bazy danych i systemu zarządzania nią (DBMS) można porównać do wymiany silnika i układu napędowego w samochodzie. Oznacza ona zastąpienie wszystkich dotychczas używanych technologii nowymi. W praktyce nie ma jednego podejścia do wirtualizacji baz danych i producenci stosują różne podejścia. Cel jest jednak jeden: dostęp do wielu baz danych i zarządzanie nimi tak, jakby były jedną.

Różne podejścia do wirtualizacji danych

Podstawowym podejściem jest wirtualizacja połączona z partycjonowaniem danych. Przykładowo, mając w bazie milion rekordów, można je podzielić na 10 równych części, a każdą zapisać na innym serwerze, także wirtualnym. Warstwa abstrakcji sprawi, że dla aplikacji baza danych nadal będzie widoczna w jednym kawałku. Jeśli poszczególne kawałki danych zostaną zapisane w maszynach wirtualnych, można im przydzielać elastycznie zasoby w zależności od obciążenia. Jeśli np. dane z jednego kawałka są intensywniej przetwarzane, można – przechowującej go maszynie wirtualnej – przydzielić dodatkowe zasoby, a pozostałym zmniejszyć. Wadą podziału danych na kawałki jest silna integracja pomiędzy nimi, uniemożliwiająca skalowanie poszczególnych fragmentów danych niezależnie. Dodatkowo aplikacja bazodanowa musi wiedzieć, w której maszynie znajduje się określona porcja danych. Nie ma też możliwości dodawania w locie dodatkowych węzłów obliczeniowych czy pamięci masowych.

Znacznie większe korzyści można osiągnąć, wykorzystując partycjonowanie danych w połączeniu z klastrem bazodanowym. W tym przypadku następuje oddzielenie mocy obliczeniowej od systemów pamięci masowych, dzięki czemu oba te zasoby można zwirtualizować. Dzięki rozdzieleniu zasobów i ich wirtualizacji do klastra można dodawać w locie nowe serwery i macierze dyskowe. To podejście przynosi też znaczną poprawę wydajności, m.in. w takich obszarach, jak szybsze wykonywanie niektórych funkcji bazodanowych (agregacja, złączenia, zliczanie). Dodatkowo wydajność zwiększa możliwość dystrybuowania zapytań pomiędzy pamięci masowe.

Mechanizm ten działa analogicznie jak Map Reduce w Hadoop. Każdy węzeł pamięci masowej przechowuje porcję danych, natomiast węzły obliczeniowe łączą wyniki zapytań zwracane przez różne węzły przechowujące dane. Przykładowo, jeśli użytkownik wyśle zapytanie dotyczące wszystkich transakcji sprzedaży z ostatniego tygodnia, to zapytanie zostanie przesłane tylko do węzłów przechowujących dane lokalnie, a następnie zostaną zwrócone same wyniki. To umożliwia równoległe, a więc szybsze przetwarzanie i ograniczenie ruchu sieciowego, ponieważ przez sieć przesyłane są tylko wyniki zapytania, a nie cała tabela.

Zalety wirtualizacji baz danych

Jedną z cech wirtualizacji serwerów jest optymalizacja wykorzystania mocy obliczeniowych oraz możliwość łączenia rozproszonych, nieużywanych zasobów. Ta druga cecha jest bardzo istotna jeśli chodzi o obsługę skoków obciążenia. Niestety ten model wirtualizacji po prostu nie działa w przypadku baz danych SQL. Baza danych jest ściśle zintegrowana z danymi i zasobami obliczeniowymi, więc, np. rozdzielanie dużych zadań między dodatkowe maszyny w tradycyjnym podejściu jest niemożliwe. Aby coś takiego zadziałało, baza danych musiałaby być wyposażona w rozproszony mechanizm blokowania dostępu do danych, rozproszoną pamięć podręczną czy możliwości rozproszonego indeksowania i przywracania po awarii. Są pewne obejścia, które umożliwiają realizowanie korzyści z wirtualizacji baz danych, ale potencjał tej technologii można wykorzystać w pełni tylko pod warunkiem wdrożenia wymienionych funkcji.

Jeśli mowa o zaletach, można wyróżnić 8 najistotniejszych: łączenie nieużywanych zasobów – jeśli baza danych nie wykorzystuje wszystkich zasobów serwera, na którym działa, zostają one udostępnione innym aplikacjom; skalowalność mocy obliczeniowej – w locie można dodawać zasoby obliczeniowe z dodatkowych serwerów lub usuwać je; skalowalność pamięci masowych – przestrzeń dyskową z dodatkowych macierzy czy serwerów można dodawać w locie, a także usuwać ją; wysoka dostępność pamięci masowych – baza danych może pracować nieprzerwanie nawet jeśli awarii ulegnie któreś z urządzeń przechowujących dane; wysoka dostępność mocy obliczeniowej – baza danych może działać bez zakłóceń nawet jeśli dojdzie do awarii któregoś z serwerów w klastrze; wirtualizacja węzłów – aplikacja może korzystać z dowolnego węzła w klastrze niezależnie od zapytania (tzw. multi-master); mobilność mocy obliczeniowej – węzły bazy danych można przenosić między serwerami bez wyłączania bazy danych; mobilność danych – pliki bazy danych można przenosić między urządzeniami i pamięciami masowymi bez wyłączania bazy danych.

Podziel się na:
  • Facebook
  • Google Bookmarks
  • LinkedIn