PostgreSQL

Zaawansowany, otwartoźródłowy system relacyjny ceniony za zgodność ze standardami i bogate możliwości, m.in. obsługę typu JSON i rozszerzeń.

PostgreSQL (w skrócie „Postgres”) to otwartoźródłowy, obiektowo-relacyjny system zarządzania bazą danych (RDBMS), który od kilkudziesięciu lat uchodzi za jeden z najsolidniejszych dostępnych za darmo. Dane trzymasz w nim w tabelach, odpytujesz językiem SQL, a całość wyróżnia się rygorystyczną zgodnością ze standardem SQL, dojrzałą obsługą transakcji (ACID) i tym, że potrafi znacznie więcej niż „zwykła” relacyjna baza — od typu JSONB, przez tablice, po geolokalizację i pełnotekstowe wyszukiwanie.

Do czego go używasz

PostgreSQL jest zapleczem aplikacji webowych, sklepów, systemów analitycznych i wszędzie tam, gdzie liczy się integralność danych. Przechowuje stan aplikacji i gwarantuje, że albo cała operacja się wykona, albo żadna jej część — dlatego dobrze czuje się np. przy przelewach czy zamówieniach, gdzie „połowiczny” zapis to katastrofa.

Jego prawdziwa siła to rozszerzalność. Przez mechanizm rozszerzeń dokładasz nowe funkcje bez wymiany silnika: PostGIS zamienia bazę w system geoprzestrzenny, pgvector dodaje wyszukiwanie po wektorach (przydatne przy AI i embeddingach), a pg_trgm przyspiesza dopasowania tekstu. Możesz też trzymać dane półustrukturyzowane w JSONB i indeksować je tak jak zwykłe kolumny — masz wtedy elastyczność bazy dokumentowej bez rezygnacji z SQL.

Przykład z praktyki

Załóżmy, że stawiasz projekt lokalnie. Tworzysz bazę i włączasz rozszerzenie do podobieństwa tekstu:

  • createdb sklep — tworzysz bazę z linii poleceń,
  • psql sklep — wchodzisz do interaktywnej konsoli,
  • CREATE EXTENSION IF NOT EXISTS pg_trgm; — dokładasz rozszerzenie,
  • SELECT '{"rola":"admin"}'::jsonb -> 'rola'; — wyciągasz pole z dokumentu JSON.

Aktualna stabilna wersja to PostgreSQL 18, a wersja 19 jest już w fazie beta — to żywy, intensywnie rozwijany projekt, nie skansen.

Na co uważać

Najczęstszy mit: „Postgres jest wolny / tylko dla małych projektów”. Nieprawda — przy poprawnych indeksach i konfiguracji obsługuje ogromne wdrożenia. Częstszy realny problem to brak indeksów i kasowanie wierszy bez sprzątania (VACUUM), przez co tabele puchną. Nie myl też PostgreSQL z firmowym, płatnym produktem — to wolne oprogramowanie na liberalnej licencji. I uważaj na ustawienia domyślne: shared_buffers czy work_mem warto dostroić do maszyny.

Pojęcia powiązane: SQL, RDBMS, ACID, MySQL, JSONB, indeks, transakcja, ORM, pgAdmin.