Rodzaje i typy systemów bazodanowych

Podstawowe informacje dotyczące baz danych i wyzwań stojących przed projektantami systemów znaleźć można w jednym z poprzednich wpisów. Dziś przedstawimy główne typy występujących systemów, których klasyfikacja przebiega według struktur organizacyjnych administrowanych informacji.

Bazy kartotekowe

Bazy kartotekowe - to jeden z najprostszych rodzajów baz danych. System taki zbudowany jest w oparciu o jedną tablicę, które posiadają tożsamą strukturę wszystkich pól. Każda tablica jest autonomicznym dokumentem i nie może współpracować z innymi tablicami tego typu. Dane gromadzone w tego rodzaju bazach poddawane są podstawowym zabiegom administracyjnym (przeszukiwanie, filtracja, sortowanie). Bazy kartotekowe realizowane są za pomocą programów administrujących, arkuszy kalkulacyjnych, czy nawet zwykłych edytorów tekstowych. Przykładami tego rodzaju baz są książki telefoniczne, czy innego rodzaju spisy.

Bazy hierarchiczne

Bazy hierarchiczne - model, w którym dane zorganizowane są w strukturze drzewa, tworząc rekordy (węzły) podrzędne i nadrzędne, przy czym każdy rekord podrzędny jest skorelowany tylko z jednym rekordem nadrzędnym (z wyjątkiem głównego rekordu, który nie jest skorelowany). System ten jest często przedstawiany jako relacja rodzic - potomek. Przykładem takiej organizacji mogą być powiązania folderów w systemie operacyjnym komputera.

Wyszukiwanie danych w tym modelu polega na przemieszczaniu się przez kolejne rekordy (zbiory) danych, czyli na wyszukiwaniu rekordów podrzędnych względem rekordu nadrzędnego. Ponieważ informacje ustrukturyzowane są w tym modelu w kierunku od informacji ogólnej do coraz bardziej szczegółowej, wyszukiwanie odbywa się tutaj poprzez kolejne poziomy uszczegółowienia.

Wadą tego systemy jest niestety brak możliwości tworzenia relacji pomiędzy różnymi drzewami, jak również sztywność łącza, która nie pozwala na modyfikację relacji. Wśród wad należy wymienić także konieczność usunięcie wszystkich rekordów podrzędnych podczas usunięcia jednego rekordu - rodzica. Utrudnione wprowadzanie zmian, które często zaburza całą strukturę modelu, także nie należy do czynników utrzymujących wysoką popularność tego rodzaju modelu (podczas zmian na ogół trzeba odtworzyć strukturę bazy od nowa).

Pomimo zalety w postaci przewidywalności struktury i wyszukiwania, a co za tym idzie wysokiego stopnia optymalizacji ewentualnych aktualizacji przez systemy DBMS, model ten uznawany jest za przestarzały i na ogół nie jest już wykorzystywany.

Bazy relacyjne

Bazy relacyjne - bazy tego typu zyskały popularność w latach osiemdziesiątych i od tego czasu ciągle znajdują się w użyciu. Technologia baz danych tego rodzaju zapewnia efektywny sposób dostępu, administrowania i zarządzania informacją. Relacyjna baza służy realizacji dowolnych potrzeb związanych z bezpiecznym gromadzeniem i administrowaniem informacją, w przypadku gdy elementy danych muszą być ze sobą powiązane.

Bazy relacyjne posiadają wewnętrzne języki programowania (wykorzystujące na ogół SQL), które realizują zaprojektowane dla danej bazy funkcje administracyjno - zarządzające. Bazy typu relacyjnego ustandaryzowały metody korzystania z zasobów i uczyniły je możliwymi z poziomu każdej aplikacji. Podstawową zaletą było tu wykorzystanie tablic (tabel), które oferowały intuicyjny i niezwykle wydajny system gromadzenia, przechowywania i dostępu do plików informacji.

Budowa

Bazy relacyjne budowane są w oparciu o tablice zawierające wiersze i kolumny, które są wzajemnie ze sobą powiązane. Tablice reprezentują relacje w jakich organizowane są dane. Relacje występują w formie zbioru rekordów wzajemnie ze sobą powiązanych i grupowane są w tzw. schematach. Wiersze tablicy występują jako rekordy z charakterystycznym kluczem, kolumny zawierają atrybuty danych, zaś dany rekord przechowuje wartość dla każdego atrybutu.

Organizacja

W systemach tego rodzaju struktury logiczne danych oddzielone są od fizycznych układów pamięci, przez co istnieje możliwość fizycznego zarządzania danymi bez wpływu na ich strukturę logiczną. To rozróżnienie ma także związek z wydzieleniem operacji logicznych (określenie zawartości) i operacji fizycznych (dostęp i realizacja zadań). Aby zmaksymalizować skuteczność działań wprowadzone zostały pewne reguły integralności, które związane są np. z eliminacją możliwości wprowadzenia duplikujących się wierszy.

Wykorzystanie

Pomimo pojawienia się nowszych modeli rozwiązań bazy relacyjne są nadal chętnie wykorzystywane. Ma na to wpływ np. skuteczne zachowanie spójności danych. Gdy inne systemy zachowują tzw. spójność końcową, bazy relacyjne aktualizują swoje dane w niezwykle szybko, co ma szczególne znaczenie w przypadku operacji finansowych, gdy z bazy korzysta wielu użytkowników w tym samym czasie i nie można sobie pozwolić na opóźnioną aktualizację.

Temporalne bazy danych

To specjalny rodzaj relacyjnej bazy danych, której sposób działania opiera się na korelacji powiązanych elementów bazy z czasem, w którym wartość gromadzonych informacji jest prawdziwa (każdy rekord posiada specjalne oznaczenia). Temporalne bazy danych na ogół są zarządzane automatycznie - nieaktualne dane są usuwane lub archiwizowanie.

Zastosowania

Wykorzystywane są przez medyczne archiwa cyfrowe (historie chorób), systemy gromadzące dane statystyczne oraz gospodarcze (finansowe), terenowe systemy informacji (dane dotyczące np. praw własności), archiwa biurowe, systemy rezerwacji biletów, pokoi hotelowych, czy systemy zarządzania sieciami komputerowymi oraz telekomunikacyjnymi.

Bazy obiektowe

Dane zarządzane przez bazy tego typu mają postać obiektów. Obiekt jest w tym przypadku podstawowym pojęciem definiowanym jako abstrakcyjny byt, który reprezentuje (opisuje) przedmiot, zjawisko itp. Obiekty posiadają identyfikatory odróżniające je od innych obiektów, oraz służące do budowy odwołań, które nadawane są przez system i nie mają odniesień do świata rzeczywistego.

Zaletą tych modeli jest udostępnianie danych w postaci obiektowej, tożsamej postaci danych, w jakiej występują w programach napisanych w obiektowych językach programowania. Nie istnieje więc w tym przypadku konieczność odwzorowania danych pomiędzy różnymi modelami (np. pomiędzy relacyjnym a obiektowym w przypadku stosowania relacyjnej bazy danych).

Wytężone prace nad tego rodzaju bazami trwały w latach dziewięćdziesiątych, obecnie zainteresowanie nimi osłabło. Do najważniejszych standardów występujących wśród baz obiektowych zaliczyć można ODMG oraz JDO.

Nieralacyjne bazy danych (NoSQL)

Bazy tego rodzaju zaczęły zyskiwać na popularności wraz ze wzrostem stopnia skomplikowania aplikacji internetowych, w kontekście rosnącej liczby rozwiązań z obszaru Big Data, gdyż w przeciwieństwie do modeli relacyjnych umożliwiają przechowywanie i zarządzanie częściowo uporządkowanych oraz nieuporządkowanych danych. NoSQL nie posiadają jednak standardowego języka zapytań oraz interfejsu.

NoSQL mogą magazynować informacje dla których nie występują powiązania relacyjne. Obiekty w takiej bazie nie muszą być strukturalnie jednorodne. Na ogół struktury takie mają postać klucz - wartość, choć niekiedy rozumiane są szerzej jako pozbawione tabel i relacji. Wśród innych rodzajów NoSQL należy wymienić: bazy danych dokumentów, kolumnowe, pamięci podręcznej i grafowe.

Ich przewaga nad bazami rodzaju SQL polega na większej wydajności podczas przetwarzania Big Data, większej elastyczności, możliwości przetwarzania danych niestrukturalnych i niższych kosztach utrzymania. Jednak dla danych, w których występują relacje nadal zalecane jest stosowanie tradycyjnych rozwiązań relacyjnych. NoSQL nie występują jednak jako rozwiązania konkurencyjne dla SQL, oba systemy mogą znakomicie się uzupełniać i być wykorzystywane równolegle.

Zastosowanie NoSQL

Bazy tego rodzaju znajdują zastosowanie w każdej większej aplikacji internetowej (np. utrzymanie pamięci podręcznej). Wśród najpopularniejszych rozwiązań należy wymienić Redis (Twitter, Pinterest, Snapchat), Memcached (Facebook) i Cassandra (Instagram, Netflix i Apple).

Grafowe bazy danych

Bazy grafów budowane są w oparciu o węzły (encje), krawędzie (relacje między encjami), właściwości i teorie grafów. Ten typ bazy danych jest projektowany dla informacji, których relacje są reprezentowane poprzez wykres zbudowany z komponentów powiązanych w skończonej liczbie relacji (niewielkie rekordy z rozbudowanymi połączeniami). Danymi mogą być w tym przypadku stosunki społeczne, siatka transportu, mapy drogowe itp. W bazach tego rodzaju każdy element posiada bezpośredni wskaźnik kierujący na sąsiednie elementy i w związku z tym nie istnieje konieczność stosowania wyszukiwania indeksowego. Znajdują one zastosowanie wszędzie tam gdzie modele relacyjne nie są efektywne.

Rozproszone bazy danych

Terminem tym określana jest baza danych istniejąca przynajmniej w dwóch różnych lokalizacjach. Traktowana jest jednak logicznie jako całość - zmiany dokonywane na jednym komputerze uwzględniane są także w innych urządzeniach, przy czym komputery mogą znajdować się w różnych sieciach. Użytkownik korzystający z danych znajdujących się w bazie nie musi posiadać wiedzy na temat fizycznej lokalizacji wykorzystywanych informacji. Bazy tego rodzaju mogą być współdzielone przez serwery różnych podmiotów. Cechą charakterystyczną takich baz jest zwiększona wydajność przetwarzania informacji.

Bazy danych OLTP (Online Transaction Processing)

To bazy o specyfice transakcyjnej (model klient - serwer). Projektowane są w celu szybkiej obsługi dużej liczby transakcji bieżących przez wielu klientów systemu, którzy zamiast z serwerem bazy danych komunikują się z serwerem transakcji. Inne systemy bazodanowe w takich warunkach zawodzą.

Zadaniem OLTP nie jest zastąpienie istniejących systemów bazodanowych, lecz wykorzystanie ich w charakterze podsystemów w bardziej rozbudowanych strukturach. Systemy takie stają się niezależne od konkretnej bazy danych czyniąc go wymiennym elementem tego rodzaju obiektów.

Podstawowymi elementami systemu OLTP są:

  • Presentation Manager (PM) - podsystem odpowiedzialny za komunikację z użytkownikami i obsługę interfejsu.
  • Transaction Manager (TM) - podsystem odpowiedzialny za wykonywanie transakcji lokalnych i rozproszonych.
  • Communication Manager (CM) - podsystem realizujący zadania komunikacyjne między komponentami systemu OLTP w środowisku rozproszonym.
  • Resource Manager (RM) - system bazodanowy.
  • Aplikacja (App) - odpowiedzialna za komunikację z użytkownikiem za pośrednictwem PM oraz operacje na bazie danych wykonywane przez RM.

OLTP znajdują zastosowanie jako narzędzia obsługi systemów rezerwacji i sprzedaży.

Strumieniowe baza danych

Strumieniowe bazy danych oparte zostały na idei przetwarzania danych jako zbioru strumieni informacyjnych. Powstały z potrzeby realizacji rozwiązań, które nie mogą być skuteczne w przypadku zastosowania relacyjnych modeli, czyli przy założeniu aktywności użytkownika (wprowadzenie żądania informacji ze zbioru danych).

Obecnie wymagane jest przetwarzanie dużych ilości danych płynących z różnych źródeł - notowania giełdowe, monitoring, systemy drogowe. Konieczna jest w takich przypadkach minimalizacja opóźnień przetwarzania informacji. Klasyczne systemy bazodanowe mogą okazać się nieefektywne, ponieważ ich procesy spowalnia konieczność zapisu przed ich przetworzeniem.

Systemy relacyjne stosują model typu zapytanie-odpowiedź, systemy strumieniowe mają postać zapytanie - odpowiedź, odpowiedź, odpowiedź,... (występują w pętli). Ciągłe zapytanie jest zapytaniem, które przetwarza strumienie bez przerwy, aż do momentu wycofania zapytania. Strumieniowy model zakłada, że dane napływające do systemu nie są znane w chwili powstania zapytania. Dane takie napływają na bieżąco i zapisywane są właśnie w strumieniu. W modelu strumieniowym napływające do systemu dane nie są dostępne w dowolnym momencie. Możliwy czas, w jakim można je zarejestrować jest skończony.

Chmurowe bazy danych

Chmurowa baza danych jest zbiorem informacji, przechowywanych i obsługiwanych w chmurze. Oferowane przez taki system funkcje nie odbiegają od tych, które zapewnia tradycyjna baza danych, zapewniając przy tym wysoką elastyczność przetwarzania danych. Wykorzystanie takiej struktury związane jest z instalacją przez użytkownika odpowiedniego oprogramowania. Istnieją dwa rodzaje chmurowych baz danych: tradycyjny (zbliżony do lokalnej bazy danych) i w formie usługi (DBaaS). W drugim przypadku dostawca usługi zapewnia ze swej strony prowadzenie szeregu czynności konserwacyjnych, administracyjnych i zarządzających, obejmujących działania w zakresie tworzenia kopii zapasowych, skalowania, zabezpieczeń, instalacji łatek systemowych i ciągłego monitorowania.

Wśród zalet takiego rozwiązania należy wymienić:

  • brak konieczności posiadania odpowiedniego sprzętu po stronie użytkownika (baza danych może powstać bardzo szybko),
  • zarządzanie przez użytkownika lub dostawcę usługi,
  • obsługa systemów SQL (także MySQL) lub NoSQL,
  • dostęp za pomocą interfejsu www (lub interfejsu API),
  • rozmiar chmurowej bazy danych można dostosowywać do potrzeb użytkownika,
  • w przypadku formy usługi zapewnionych jest szereg wspomnianych wyżej czynności administracyjnych oraz zabezpieczających dane, które wpływają na zmniejszenie stopnia ryzyka,
  • duża elastyczność i swoboda - szybka konfiguracja i bezproblemowe wycofywanie z eksploatacji,
  • niższe koszty - opłaty wnoszone są tylko za wykorzystane zasoby (skalowanie może odbywać się zarówno w górę, jak i w dół, w zależności od okresowej aktywności użytkownika).

Dynamiczny rozwój cyfryzacji i konieczność gromadzenia oraz zarządzania rosnącymi zasobami różnych rodzajów danych generują konieczność projektowania wciąż nowych systemów, wśród których znajdują się:

Bazy danych typu open source

To rodzaj systemu bazy danych, którego kod źródłowy jest otwarty. Może on występować jako SQL lub NoSQL.

Wielomodelowe bazy danych

To rodzaj zintegrowanego wielosystemowego modelu projektowanego pod kątem zbierania i przetwarzania różnych typów danych.

Samoczynne (autonomiczne) bazy danych

To działające w chmurze systemy wykorzystujące zautomatyzowane procesy (oparte na metodach samouczenia maszyn) skalowania, zabezpieczania przed awariami, tworzenia kopii zapasowych i aktualizacji oraz innych zadań, które w przypadku struktur bazodanowych innego rodzaju realizowane są przez administratorów. Autonomiczne bazy pozwalają znacznie zredukować koszty zarządzania systemami gromadzenia informacji.

Dokumentowe bazy danych (JSON)

To rodzaj systemu bazodanowego zaprojektowany specjalnie pod kątem gromadzenia i obsługi danych w formie dokumentów. W architekturze tego typu bazy zamiast struktury wierszy i kolumn przechowywane są w formacie JSON (JavaScript Object Notation), co umożliwia ich naturalne przetwarzanie, wraz z możliwością ich hierarchizowania oraz indeksowania. System taki cechuje duża skalowalność i wydajność.

Pavel Kroupka

Galeria