Każdy z nas słyszał na pewno pojęcie „baza danych”. Zgodnie z definicją jest to uporządkowany zbiór danych, do których dostęp jest ustalony według ściśle określonych zasad, a sam sposób uzyskania potrzebnych informacji uproszczony. Dzięki temu możemy nasze dane zamienić w informacje. Przez ten cały czas sposób tworzenia i zarządzania zbiorami danych zmieniał się oraz dostosowywał się aktualnych potrzeb rynku. Dzisiaj posiadamy kilka, jeśli nie kilkanaście systemów bazodanowych. Nawet prosty plik tekstowy, który będzie uzupełniany według ustalonych wszcześniej reguł, a dostęp do danych w nim zawartych będzie prosty oraz czytelny możemy nazwać bazą danych. Mimo tak dużej różnorodności możemy wskazać kilka zasad, które pozwolą nam lepiej poznać i zrozumieć te systemy. Oto kilka z nich:

 

Standaryzacja

 

Standaryzacja jest procesem, o którym nie wspomina się często podczas pracy z bazami danych, jednak mimo to większość z nas dokonuje go podczas projektowania systemu do przechowywania danych. Ma on za zadanie ustalić listę reguł i zasad, jakimi będziemy się kierować podczas implementacji naszego systemu. Do takich zasad możemy zaliczyć przykładowo:

  • Numery telefonów zawsze będą tekstem oraz składały się z 9 znaków.
  • Daty będą wprowadzane w formacie rok/miesiąc/dzień.
  • Wartości związane z walutą będą zaokrąglone do góry do 2 miejsc po przecinku.
  • Kod pocztowy składa się z 6 znaków w formacie nn-nnn.
  • Brak wartości dla daty oddania książki oznacza, że książka nie została jeszcze zwrócona.

Dzięki standaryzacji danych zyskujemy większą czytelność całego naszego systemu oraz będziemy mogli łatwiej nim zarządzać w przyszłości, wraz ze wzrostem ilości danych. Pomoże to również w projektowaniu aplikacji, która będzie korzystać z naszego systemu.

Relacyjne bazy danych

 

Jeden z najbardziej popularnych systemów przechowywania danych. Nazywany również bazą danych SQL - z powodu wykorzystywanego rodzaju komunikacji jakim jest SQL, czyli strukturalny język zapytań (Structured Query Language). Dane przechowywane są w tabelach (a dokładnie w wierszach), a powiązania pomiędzy nimi są realizowane za pomocą relacji, natomiast wszystkie zmiany zbioru danych są transakcjami (wszystkie zmiany są traktowane jako jeden element – jeden błąd spowoduje wycofywanie pozostałych zmian). Ich nieopisywanym plusem jest standaryzacja na poziomie wspomnianego języka SQL. Znając ten język na 99% będziemy w stanie komunikować z każdym silnikiem tego rodzaju jak np. Oracle Database, PostgreSQL czy Microsoft SQL Server. Dodatkowo, każda relacyjna baza danych musi spełnić „złoty standard” zwany inaczej ACID. Jest to akronim czterech cech, które musi spełnić każda relacyjna baza danych:

  • Atomowość (atomicity) – każda transakcja jest traktowana jako pojedyncze polecenie. Jeżeli którekolwiek polecenie biorące udział w transakcji zakończy się niepowedzeniem, cała transakcja uznawana jest za nieprawidłową.
  • Spójność (consistency) – jeżeli transakcja została wycofana, to mamy gwarancję, że powrócimy do stanu naszej bazy danych sprzed rozpoczęciem transakcji.
  • Izolacja (isolation) – wprowadzone zmiany są niewidoczne (izolowane) dla pozostałych użytkowników systemu. Należy je zatwierdzić (wtedy będą widoczne dla wszystkich) lub odrzucić.
  • Trwałość (durability) – w momencie wprowadzenia danych do systemu zostają one utrwalone i zapisane.
     

NoSQL

 

Jest to drugi rodzaj systemu do przechowywania danych. Mimo mylącej nazwy, nie oznacza on brak wykorzystania języka zapytań. Jego prawidłowa definicja to Not only SQL (nie tylko SQL). W przeciwieństwie do poprzedniego systemu nie uświadczymy tutaj ustandaryzowanego systemu komunikacji pomiędzy użytkownikiem, a bazą danych. Również sposób i format przechowywania danych będzie się różnił pomiędzy tymi systemami – nie jest wymagany tutaj język SQL, chociaż niektóre bazy danych z niego korzystają lub starają się go symulować. Możemy natomiast wyróżnić cztery „rodzaje” baz danych NoSQL:

  • Asocjacyjne – oparte na przechowywaniu danych w formacie tablic asocjacyjnych, czyli klucz:wartość.
  • Dokumentowe – dane są przechowywane w plikach tekstowych, najczęściej korzystają z formatu JSON.
  • Grafowe – informacje i relacje pomiędzy nimi są przechowywane za pomocą struktur grafowych.
  • Kolumnowe – w przeciwieństwie do relacyjnych, dane są przechowywane w kolumnach zamiast wierszach
     

Twierdzenie CAP

 

Niezależnie od tego, który system bazodanowych zamierzasz poznać, to prędzej czy później spotkać się z twierdzeniem CAP, zwanym inaczej twierdzeniem Brewera. Zapewna kojarzysz popularny slogan reklamowy firm pod tytułem: „Tanio, szybko i dobrze – wybierz dwa”? Powyższe stwierdzenie kieruje się podobnymi motywami – każda baza danych może spełnić dwie z trzech dostęnych cech. Do tych cech należą:

  • Spójność (consistency) – oznacza, że każdy klient bazy danych ma jednocześnie dostęp do tego samego zbioru danych i jest to najnowsza wersja tych danych.
  • Dostępność (availability) – każdy użytkownik bazy danych wykonujące dowolne żądanie o dane, zawsze otrzymuje odpowiedź. Nie posiada jednak gwarancji, że są to aktualne dane.
  • Toleracja/Odporność na podział (partition tolerance) – zapewnia użytkownikowi możliwość podziału jego zbioru danych pomiędzy bazami danych (które mogą być ulokowane na różnych maszynach). W tym wypadku, nawet po awarii którejś z maszyn nadal mamy dostęp do części danych.

Zatem każda baza danych może spełnić jedynie dwa wymogi. Przykładowo: relacyjne bazy danych zapewniają nam dostępność i spójność danych, ale nie możemy podzielić zbioru danych (np. tabeli).
 

Którą wybrać?

 

Podsumowując, w dzisiejszych czasach posiadamy wiele sposobów do przechowywania danych. Każdy z nich posiada swoje mocne i słabe strony. Tylko od nas zależy, który system wykorzystamy w naszym projekcie i który będziemy chcieli poznać. Poniżej lista kilku popularnych, darmowych baz danych od których możemy zacząć naszą przygodę:

MySQL, PostgreSQL – relacyjne bazy danych

MongoDB – dokumentowana baza danych

Cassandra – kolumnowa baza danych

 

Żądny wiedzy? Sprawdź kursy autorstwa Piotra Chudzika! https://videopoint.pl/go-PiotrChudzik-autorb