encyklopedia.space

PostgreSQL

PostgreSQL – otwarto‑źródłowy, obiektowo‑relacyjny system zarządzania bazą danych (ang. relational database management system, RDBMS), oparty na języku zapytań SQL. Jest rozwijany od 1996 roku i jest jedną z najstarszych dostępnych na rynku baz danych, zachowując jednocześnie nowoczesną architekturę i bogaty zestaw funkcji.

Historia

Projekt rozpoczyna się w University of California, Berkeley jako część projektu Ingres. W 1986 roku powstał pierwszy prototyp o nazwie POSTGRES, którego nazwę wymyślił Michael Stonebraker. W 1994 roku, w ramach przystosowania systemu do standardu SQL, rozpoczęto prace nad nazwą PostgreSQL, która została przyjęta oficjalnie w 1996 roku.

Architektura

PostgreSQL składa się z kilku warstw:

  • Warstwa komunikacji – odbiera zapytania od klientów przy użyciu protokołu własnego lub standardowego ODBC/JDBC.
  • Parser i optymalizator zapytań – analizuje i przekształca zapytania SQL do planu wykonania.
  • Silnik wykonawczy – realizuje plan, zarządza transakcjami, buforowaniem i dostępem do dysku.
  • Warstwa przechowywania – obsługuje struktury danych (np. heap files, indeksy B‑tree, GiST, GIN) oraz system dziennika transakcji (Write‑Ahead Logging, WAL).

Główne cechy

  • Pełna zgodność z SQL :2008 (SQL:2011) i wsparcie dla rozszerzeń językowych (PL/pgSQL, PL/Python, PL/Perl, PL/R).
  • Obsługa typów danych niestandardowych, w tym JSON, XML, hstore, arrays i typów geometrycznych (PostGIS).
  • Transakcje ACID, poziomy izolacji READ COMMITTED, REPEATABLE READ i SERIALIZABLE.
  • Wielowersyjny dostęp (MULTI‑VERSION CONCURRENCY CONTROL, MVCC) zapewniający wysoką współbieżność.
  • Replikacja strumieniowa oraz logiczna, umożliwiająca tworzenie klastrów wysokiej dostępności.
  • Rozbudowane mechanizmy bezpieczeństwa: uwierzytelnianie LDAP, Kerberos, certyfikaty TLS/SSL, kontrola dostępu na poziomie wierszy (Row‑Level Security).
  • Modułowość – możliwość instalacji rozszerzeń, np. PostGIS (obsługa danych geoprzestrzennych), pg_partman (partycjonowanie), TimescaleDB (szczególna obsługa szeregów czasowych).

Wersje i wydania

Od pierwszego stabilnego wydania PostgreSQL 6.0 (1997) projekt wydaje nowe wersje w regularnym, rocznym cyklu. Każda wersja utrzymuje wsparcie techniczne przez pięć lat. Przykładowe ważne wersje:

  • PostgreSQL 8.0 (2005) – wprowadzenie wsparcia dla Windows i replikacji fizycznej.
  • PostgreSQL 9.4 (2014) – wsparcie dla JSONB, indeksów GIN na JSON.
  • PostgreSQL 12 (2019) – usprawnienia w zakresie partycjonowania i wydajności.
  • PostgreSQL 15 (2022) – optymalizacje w replikacji logicznej i obsłudze zapytań równoległych.

Licencja

PostgreSQL jest udostępniany na licencji PostgreSQL License, będącej wolną licencją kompatybilną z MIT oraz BSD. Dzięki temu oprogramowanie może być używane zarówno w projektach komercyjnych, jak i niekomercyjnych bez opłat licencyjnych.

Zastosowania

System znajduje szerokie zastosowanie w różnych dziedzinach:

  • Systemy e‑commerce (np. Magento, Shopify w wersji open source).
  • Analiza danych i hurtownie danych – dzięki wsparciu dla columnar storage i rozszerzeniom typu cstore_fdw.
  • Aplikacje webowe, w tym platformy oparte na Django, Ruby on Rails oraz Node.js.
  • Systemy GIS – dzięki rozszerzeniu PostGIS, które jest de‑facto standardem w otwartym oprogramowaniu geograficznym.
  • Finanse i bankowość – wymóg wysokiej integralności danych i wsparcia transakcji ACID.

Porównanie z innymi systemami

Cecha PostgreSQL MySQL/MariaDB Oracle DB Microsoft SQL Server
Licencja Open Source (PostgreSQL License) Open Source (GPL/MariaDB License) Własnościowa Własnościowa
Obsługa JSONB Tak Częściowo Tak Tak
Replikacja logiczna Tak Ograniczona (Ferris) Tak Tak
Rozszerzalność (języki proceduralne) Wysoka (PL/pgSQL, PL/Python, …) Ograniczona Średnia Średnia
Wsparcie dla danych przestrzennych PostGIS MySQL Spatial Oracle Spatial SQL Server Spatial

Ekosystem i społeczność

PostgreSQL posiada jedną z największych i najaktywniejszych społeczności w świecie baz danych. Działa pod auspicjami PostgreSQL Global Development Group. W ramach społeczności organizowane są regularne konferencje (PGConf, PostgresOpen), meetup’y oraz liczne grupy mailingowe.

Przyszłość

Rozwój PostgreSQL koncentruje się na zwiększaniu wydajności przy dużych obciążeniach, dalszym rozwijaniu funkcji replikacji, integracji z platformami chmurowymi (AWS, Azure, Google Cloud) oraz rozszerzeniach typu machine learning (np. pgvector).

Bibliografia i dalsza lektura

  • „PostgreSQL Documentation” – oficjalna dokumentacja dostępna w sekcji Dokumentacja PostgreSQL.
  • Michael Stonebraker, “The Design of PostgreSQL” – artykuł opisujący architekturę systemu.
  • „PostgreSQL Internals” – seria wpisów na Wiki PostgreSQL omawiająca szczegóły implementacyjne.