CodeGym /Kursy /SQL SELF /Rodzaje systemów baz danych: relacyjne i NoSQL

Rodzaje systemów baz danych: relacyjne i NoSQL

SQL SELF
Poziom 1, Lekcja 2
Dostępny

Istnieją dwa główne typy DBMS (System zarządzania bazą danych): relacyjne i NoSQL. Te pierwsze pracują z tabelami, gdzie wszystko jest poukładane w kolumnach — jak w Excelu. Te drugie są bardziej luźne, nie wymagają sztywnej struktury. To wygodne, gdy nie masz jasnego schematu danych albo on się ciągle zmienia.

Przy okazji, NoSQL nie znaczy „nie SQL”. To raczej „nie tylko SQL” (Not Only SQL). Wiele systemów NoSQL rozumie zapytania SQL, po prostu działa trochę inaczej.

Przykłady popularnych DBMS:

  • Relacyjne: PostgreSQL, MySQL, Microsoft SQL Server.
  • NoSQL: MongoDB, Cassandra, Redis.

Relacyjne DBMS

Relacyjna baza danych (RBD) organizuje dane w postaci tabel, gdzie każdy wiersz to osobny rekord (albo obiekt), a każda kolumna to pole (atrybut). Tabele są powiązane ze sobą za pomocą kluczy: głównych (do identyfikacji rekordu) i obcych (do łączenia tabel).

Oto przykład klasycznej tabeli "Studenci" w relacyjnej DBMS:

id name age group
1 Anna 21 KA-01
2 Eve 20 KA-02
3 Max 22 KA-01

Kluczowe cechy relacyjnych DBMS:

  • Dane są ściśle uporządkowane.
  • Relacje między tabelami są określone za pomocą kluczy.
  • Do pracy z danymi używa się SQL (Structured Query Language).

Zalety

  1. Sztywna struktura danych: tabele gwarantują, że każdy obiekt ma stały zestaw pól. To ułatwia zarządzanie danymi.
  2. Integralność danych: dzięki kluczom głównym i obcym, relacyjne bazy zapobiegają niespójnościom w zbiorach danych.
  3. Wsparcie dla standardu ACID: relacyjne DBMS zapewniają niezawodność transakcji, trzymając się zasad atomowości, spójności, izolacji i trwałości.
  4. Wsparcie dla złożonych zapytań: SQL pozwala wykonywać potężne operacje selekcji, sortowania i agregacji.

Relacyjne DBMS świetnie się sprawdzają tam, gdzie dane są dobrze uporządkowane i ważne jest, żeby wszystko się zgadzało co do ostatniej cyfry. Na przykład w systemach bankowych nie może się nic zgubić — każdy ruch na koncie musi być pod kontrolą. Albo w systemach księgowych: faktury, klienci i magazyny zwykle mają stałą strukturę i wygodnie je trzymać w tabelach. No i oczywiście w wielu aplikacjach webowych, gdzie masz np. listę użytkowników, produktów, zamówień — wszystko to idealnie pasuje do tabel i sztywnych relacji.

NoSQL-DBMS

NoSQL (Not Only SQL) — to DBMS, które nie używają modelu relacyjnego. Dane mogą być przechowywane jako dokumenty, w formacie key-value, grafów albo kolumn. Chodzi o elastyczność: możesz trzymać dane tak, jak ci wygodnie, bez sztywnych zasad. I płacisz za to odpowiednią cenę.

Przykład przechowywania danych w NoSQL (dla MongoDB):

{
  "id": 1,
  "name": "Alex",
  "age": 21,
  "group": "KA-01"
}

NoSQL DBMS są bardzo różne — zależnie od tego, jak dokładnie przechowują dane. Na przykład dokumentowe DBMS, takie jak MongoDB, pracują z elastycznymi strukturami, gdzie dane są zapisane jako dokumenty, najczęściej w formacie JSON. To wygodne, jeśli struktura danych może się zmieniać od rekordu do rekordu.

Key-value DBMS, jak Redis, działają jak ogromny magazyn par "klucz:wartość". Są idealne do cache'y albo szybkiego dostępu do prostych ustawień.

Jeśli trzeba pracować z relacjami między obiektami — np. analizować znajomych w social media albo budować trasy, — przydadzą się grafowe DBMS jak Neo4j. Przechowują info jako sieć węzłów i relacji, co jest mega wygodne do takich struktur.

A kolumnowe DBMS, jak Apache Cassandra czy HBase, trzymają dane po kolumnach, a nie po wierszach. To szczególnie przydatne, jeśli pracujesz z dużą ilością danych i musisz szybko analizować tylko wybrane wskaźniki — jak w analityce albo systemach Big Data.

Dlaczego i kiedy warto wybrać NoSQL

NoSQL bazy danych są super tam, gdzie tradycyjne relacyjne DBMS zaczynają się dławić. Mają kilka mocnych stron:

  1. Są szybkie. NoSQL świetnie radzi sobie z ogromnymi ilościami danych — zapytania są szybkie, nawet jeśli danych jest dużo i nie są poukładane jak tabelka w Excelu.
  2. Elastyczne. Strukturę danych możesz zmieniać na bieżąco: dziś obiekt ma trzy pola, jutro pięć i nic się nie psuje.
  3. Łatwo się skalują. Gdy danych robi się za dużo, można je po prostu rozrzucić na różne serwery. To się nazywa skalowanie poziome i NoSQL to uwielbia.
  4. Lubią Big Data. Jeśli masz strumień logów, zdarzeń, akcji użytkowników albo inne „surowe” dane bez jasnego schematu — NoSQL da radę.

Takie DBMS są szczególnie dobre, gdy:

  • ilość danych szybko rośnie i struktura się zmienia (np. analiza logów albo zdarzeń),
  • trzeba szybko szukać i agregować info (jak w analityce),
  • używasz złożonej sieci relacji, jak w social media (do tego nadają się grafowe DBMS).

Krótko mówiąc, jeśli twój projekt bardziej przypomina żywy organizm niż sztywną tabelkę, NoSQL może być właśnie tym, czego potrzebujesz.

Porównanie relacyjnych i NoSQL DBMS

Charakterystyka Relacyjne DBMS NoSQL DBMS
Przechowywanie danych Tabele, wiersze, kolumny Dokumenty, grafy, key-value, kolumny
Język zapytań SQL Zależy od implementacji (np. MongoDB Query)
Integralność danych Wysoka (klucze główne/obce) Zależy od implementacji (integralność nie jest gwarantowana)
Skalowalność Pionowa (zwiększanie mocy serwera) Pozioma (rozdzielanie na serwery)
Elastyczność struktury Sztywna struktura (tabele i pola są stałe) Dynamiczna struktura (może się zmieniać)
Wydajność Optymalna dla uporządkowanych danych Wysoka przy dużych ilościach i słabo uporządkowanych danych
Przykłady PostgreSQL, MySQL, Oracle Database MongoDB, Cassandra, Redis

Kiedy wybrać relacyjną albo NoSQL-DBMS?

Relacyjne DBMS:

  • Kiedy dane są sztywno uporządkowane.
  • Kiedy potrzebujesz wsparcia dla transakcji.
  • Kiedy wymagana jest złożona analiza przez SQL.

NoSQL DBMS:

  • Kiedy potrzebujesz elastyczności w strukturze danych.
  • Kiedy skalowalność jest ważniejsza niż sztywna struktura.
  • Kiedy musisz pracować z dużymi ilościami danych, które trudno upchnąć w tabelach.

Można to porównać tak: wyobraź sobie relacyjną DBMS jak tabelę w Excelu, gdzie wszystko jest idealnie w wierszach i kolumnach. A NoSQL — to tablica na notatki, gdzie możesz przypiąć wszystko, od karteczek po zdjęcia.

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION