Podstawy

SQL czy NoSQL — kiedy co ma sens

22 kwietnia 2026 2 min czytania web-pc.pl 9 komentarzy

Bazy relacyjne mają czterdzieści lat i nadal obsługują większość świata. NoSQL nie przyszedł ich zastąpić, tylko rozwiązać kilka konkretnych problemów, z którymi radzą sobie gorzej.

SQL czy NoSQL — kiedy co ma sens

Pytanie wraca w każdym projekcie i zwykle pada za wcześnie. Zanim się na coś zdecydujesz, warto wiedzieć, czym te bazy naprawdę się różnią — bo nie chodzi o to, która jest nowocześniejsza.

Relacyjne: tabele i twarde reguły

MySQL, PostgreSQL, MariaDB. Dane siedzą w tabelach o z góry ustalonych kolumnach, a baza sama pilnuje, żeby się zgadzały: zamówienie nie może wskazywać na nieistniejącego klienta, kwota musi być liczbą, adres e-mail musi być unikalny.

Największą zaletą są transakcje. Przelew to zdjęcie kwoty z jednego konta i dopisanie do drugiego. Baza gwarantuje, że albo wykonają się obie operacje, albo żadna — nawet jeśli w połowie zabraknie prądu. Tam, gdzie w grę wchodzą pieniądze albo stany magazynowe, to argument, który kończy dyskusję.

NoSQL: dokumenty i swoboda

MongoDB, Redis, Elasticsearch. Zamiast tabel — dokumenty, które mogą się między sobą różnić. Jeden produkt ma rozmiar i kolor, drugi moc i napięcie, i żadnego z nich nie trzeba wcześniej deklarować.

Drugą zaletą jest łatwiejsze rozłożenie danych na wiele serwerów. Baza relacyjna też to potrafi, ale wymaga to znacznie więcej pracy.

Wybór w praktyce

Co budujeszCo zwykle pasuje
Sklep, rezerwacje, fakturyrelacyjna — liczą się transakcje
Strona z treścią, blog, CMSrelacyjna — struktura jest przewidywalna
Logi, zdarzenia, statystykiNoSQL — dużo zapisów, luźna struktura
Wyszukiwarka pełnotekstowaElasticsearch obok bazy głównej
Sesje, kolejki, cacheRedis
Katalog produktów o bardzo różnych cechachdokumentowa albo relacyjna z kolumną JSON

Trzeci wariant, o którym się zapomina

Nowoczesne bazy relacyjne mają typ kolumny JSON. Można w jednej tabeli trzymać sztywną część danych — identyfikator, cenę, stan magazynowy — a zmienne cechy produktu wrzucić do kolumny JSON i przeszukiwać ją zapytaniem.

W praktyce to najczęściej najrozsądniejszy wybór: dostajesz swobodę tam, gdzie jest potrzebna, i twarde reguły tam, gdzie chodzi o pieniądze.

Zacznij od bazy relacyjnej. Dołóż coś innego dopiero wtedy, gdy poczujesz konkretny ból, a nie zanim.

Warto też pamiętać, że w typowym projekcie te bazy nie konkurują — MySQL trzyma zamówienia, Redis sesje, a Elasticsearch obsługuje wyszukiwarkę. Każde narzędzie robi to, w czym jest najlepsze.

Podziel się:

Komentarze (9)

  1. Przemek

    Rada, żeby zacząć od bazy relacyjnej i dokładać dopiero przy konkretnym bólu, oszczędziłaby mojemu poprzedniemu zespołowi pół roku.

    Odpowiedz
  2. Przemek

    Rada, żeby zacząć od bazy relacyjnej i dokładać dopiero przy konkretnym bólu, oszczędziłaby mojemu poprzedniemu zespołowi pół roku.

    Odpowiedz
  3. Justyna

    Kolumna JSON w MySQL to faktycznie niedoceniany kompromis. Mamy tak zrobiony katalog produktów i sprawdza się od dwóch lat.

    Odpowiedz
  4. Justyna

    Kolumna JSON w MySQL to faktycznie niedoceniany kompromis. Mamy tak zrobiony katalog produktów i sprawdza się od dwóch lat.

    Odpowiedz
  5. Kamil

    Dobra tabelka. Dorzuciłbym jeszcze kolejki zadań, bo to kolejny przypadek, gdzie Redis bije wszystko inne.

    Odpowiedz
    1. Przemek

      Popieram, kolejki na Redisie działają u nas od dwóch lat bez jednej awarii. Prosto i szybko.

      Odpowiedz
    2. Przemek

      Popieram, kolejki na Redisie działają u nas od dwóch lat bez jednej awarii. Prosto i szybko.

      Odpowiedz
  6. Kamil

    Dobra tabelka. Dorzuciłbym jeszcze kolejki zadań, bo to kolejny przypadek, gdzie Redis bije wszystko inne.

    Odpowiedz
    1. Przemek

      Popieram, kolejki na Redisie działają u nas od dwóch lat bez jednej awarii. Prosto i szybko.

      Odpowiedz

Dodaj komentarz

Komentarz pojawi się po zatwierdzeniu przez moderatora. Adres e-mail nie jest publikowany.

Przeczytaj też