gik|iewicz

szukaj
pg_durable: Microsoft udostępnia silnik trwałego wykonywania dla PostgreSQL

pg_durable: Microsoft udostępnia silnik trwałego wykonywania dla PostgreSQL

Microsoft udostępnił pg_durable jako projekt open-source, rozszerzając PostgreSQL o mechanizmy trwałego wykonywania. Narzędzie trafia do społeczności na licencji MIT, co pozwala na swobodną modyfikację kodu. Podobnie jak wcześniejsze inicjatywy Microsoftu związane z udostępnianiem historycznego kodu systemu DOS, firma kontynuuje strategię otwierania wybranych rozwiązań.

TL;DR: Microsoft opublikował pg_durable – silnik trwałego wykonywania dla PostgreSQL na licencji open-source. Rozszerzenie pozwala na zarządzanie długotrwałymi procesami bezpośrednio w bazie danych, eliminując potrzebę stosowania zewnętrznych narzędzi orkiestracji. Kod dostępny jest publicznie w oficjalnym repozytorium na GitHubie.

Czym jest pg_durable i jak działa silnik trwałego wykonywania?

pg_durable to rozszerzenie do PostgreSQL działające jako silnik trwałego wykonywania (durable execution engine), które utrzymuje stan procesów bezpośrednio w relacyjnej bazie danych. Kod został udostępniony publicznie na platformie GitHub. Rozwiązanie eliminuje konieczność wdrażania dodatkowej infrastruktury do koordynacji zadań.

Otóż mechanizm opiera się na zapisywaniu każdego kroku workflow w tabelach transakcyjnych bazy danych. Jeśli proces zostanie przerwany, system wznawia go od ostatniego zapisanego punktu kontrolnego. Podobne podejście stosuje się w systemach takich jak Temporal, jednak pg_durable operuje bezpośrednio wewnątrz PostgreSQL.

Główne komponenty architektury:

  • Warstwa przechwytywania wywołań funkcji wewnątrz transakcji bazodanowej
  • Menedżer punktów kontrolnych zapisujący stan wykonywania po każdej operacji
  • Harmonogram wznowień automatycznie restartujący przerwane workflow
  • Interfejs SQL do definiowania i monitorowania procesów
  • System obsługi błędów z wbudowanym mechanizmem ponownych prób
  • Moduł kompensacji pozwalający odwracać skutki zakończonych kroków
  • Rejestr wykonanych akcji z pełnym historią zmian stanu
  • Mechanizm czyszczenia przestarzałych danych kontekstowych

W praktyce wygląda to prościej. Programista wywołuje funkcję, a rozszerzenie dba o jej trwałość.

KomponentOdpowiedzialnośćMiejsce przechowywania
Menedżer punktów kontrolnychZrzut stanu workflowTabele systemowe PostgreSQL
Harmonogram wznowieńRestart po awariiWewnętrzny scheduler bazy
Moduł kompensacjiOdwracanie krokówLogi transakcyjne

Jakie problemy rozwiązuje trwałe wykonywanie w bazie danych?

Trwałe wykonywanie eliminuje problem utraty stanu aplikacji podczas awarii serwera lub przerw w działaniu sieci. Rozszerzenie przechowuje pełny kontekst operacji w tabelach PostgreSQL, co gwarantuje możliwość wznowienia procesu po restarcie. Kod źródłowy dostępny na GitHubie dokumentuje to podejście w modułach odpowiedzialnych za serializację.

Co więcej, klasyczne systemy orkiestracji wymagają osobnego klastra i konfiguracji. pg_durable integruje tę funkcjonalność z bazą, którą aplikacja i tak wykorzystuje. To redukuje liczbę komponentów infrastruktury do utrzymania.

Z kolei w środowiskach rozproszonych awarie są nieuniknione. Trwałe wykonywanie gwarantuje, że wieloetapowe operacje biznesowe – na przykład realizacja zamówienia z obsługą płatności, rezerwacją magazynu i wysyłką – nie zostaną zawieszone w stanie nieokreślonym.

Dlatego podejście to sprawdza się w systemach o wysokiej wymaganej niezawodności. Każdy etap procesu posiada gwarancję dokończenia lub wycofania.

Jak pg_durable wypada na tle rozwiązań typu Temporal?

Narzędzia takie jak Temporal czy Cadence wymagają dedykowanego serwera, osobnej bazy danych i specyficznych SDK dla każdego języka programowania. pg_durable upraszcza ten stos technologiczny do jednego rozszerzenia PostgreSQL. Dokumentacja na GitHubie wskazuje, że wystarczy standardowa instalacja bazy z dodanym rozszerzeniem.

Z drugiej strony, Temporal oferuje bardziej rozbudowany ekosystem i wsparcie dla wielu języków. Rozwiązanie Microsoftu skupia się na środowisku PostgreSQL, co sprawia, że jest to narzędzie węższe, ale za to prostsze we wdrożeniu dla projektów już korzystających z tej bazy.

Cechapg_durableTemporal
InfrastrukturaRozszerzenie PostgreSQLOsobny serwer + baza
KonfiguracjaPolecenie CREATE EXTENSIONInstalacja klastra
JęzykiSQL, integracja z aplikacjąGo, Java, TypeScript, Python
UtrzymanieW ramach bazy danychOsobny zespół i monitoring
Punkt kontrolnyTransakcje w PostgreSQLOsobny system persystencji

Warto sprawdzić to porównanie przed wyborem technologii do konkretnego projektu.

Dlaczego Microsoft udostępnia ten kod jako open-source?

Microsoft konsekwentnie rozwija strategię otwartego oprogramowania, udostępniając wybrane technologie społeczności. pg_durable trafił na licencję pozwalającą na swobodne wykorzystanie kodu. Wcześniej firma opublikowała na licencji open-source historyczny kod systemu DOS, a także wspiera projekty takie jak VS Code.

Ponadto publikacja narzędzi dla PostgreSQL ma sens biznesowy. Microsoft oferuje usługę Azure Database for PostgreSQL, a rozszerzenia optymalizujące tę platformę przyciągają nowych klientów chmurowych. Społeczność może rozwijać kod, a korporacja zyskuje gotowe ulepszenia.

Dlatego strategia ta jest korzystna dla obu stron. Programiści dostają darmowe narzędzie, a Microsoft buduje pozycję dostawcy infrastruktury bazodanowej. Podobnie jak przy modelach otwartych Gemma 4 od Google, giganci technologiczni dostrzegają wartość w budowaniu ekosystemów wokół swoich platform.

To logiczny krok w strategii open-source firmy.

Jakie scenariusze użycia pokrywa pg_durable?

pg_durable obsługuje wieloetapowe procesy biznesowe wymagające gwarancji dokończenia operacji po awarii. Repozytorium na GitHubie dokumentuje przypadki użycia obejmujące obsługę płatności, realizację zamówień i orkiestrację mikrousług. Kod rozszerzenia zapisuje każdy krok workflow w tabelach transakcyjnych PostgreSQL.

Na przykład w procesie e-commerce jednym wywołaniem SQL można objąć rezerwację towaru, autoryzację płatności i generowanie etykiety wysyłki. Jeśli serwer ulegnie awarii w trakcie drugiego kroku, system wznowi działanie dokładnie od punktu przerwania. To eliminuje konieczność ręcznego odtwarzania stanu aplikacji.

Co więcej, rozszerzenie sprawdza się w środowiskach rozproszonych, gdzie komunikacja między usługami bywa zawodna. Trwałe wykonywanie gwarantuje, że komunikaty nie zostaną utracone nawet przy przerwach w sieci. Dokumentacja podkreśla stabilność tego podejścia.

  • Obsługa procesów płatności wieloetapowych
  • Realizacja zamówień z rezerwacją magazynową
  • Orkiestracja komunikacji między mikrousługami
  • Zarządzanie procesami ETL z punktami kontrolnymi
  • Automatyzacja operacji batch z mechanizmem ponownych prób
  • Obsługa długotrwałych migracji danych
  • Koordynacja zadań asynchronicznych w systemach rozproszonych

To upraszcza architekturę systemów rozproszonych.

Jakie są wymagania techniczne i jak zacząć pracę z pg_durable?

Rozszerzenie wymaga działającej instalacji PostgreSQL i możliwości dodawania modułów z poziomu SQL. Repozytorium GitHub zawiera instrukcję instalacji krok po kroku oraz pliki konfiguracyjne niezbędne do uruchomienia silnika trwałego wykonywania w środowisku testowym.

Proces instalacji opiera się na standardowych narzędziach ekosystemu PostgreSQL. Użytkownik pobiera kod źródłowy, kompiluje go za pomocą polecenia make, a następnie ładuje do bazy komendą CREATE EXTENSION. Cała procedura zajmuje kilka minut na standardowym serwerze Linux.

Zatem nie jest potrzebna dedykowana infrastruktura orkiestracyjna. Wystarczy jedna instancja bazy danych z odpowiednio skonfigurowanym rozszerzeniem. Microsoft udostępnił kod na licencji pozwalającej na swobodne modyfikacje, podobnie jak przy historycznym kodzie systemu DOS udostępnionym jako open-source.

Poniżej przedstawiono główne etapy wdrożenia:

  • Pobranie kodu źródłowego z oficjalnego repozytorium GitHub
  • Kompilacja modułu za pomocą narzędzia make
  • Załadowanie rozszerzenia poleceniem CREATE EXTENSION pg_durable
  • Definicja workflow za pomocą standardowych instrukcji SQL
  • Konfiguracja mechanizmów ponownych prób dla wybranych operacji
  • Testowanie działania w środowisku deweloperskim
  • Monitorowanie stanu procesów w dedykowanych tabelach systemowych
  • Wdrożenie na środowisko produkcyjne po pełnej weryfikacji
EtapNarzędzieCzas realizacji
Pobranie kodugit cloneKilka sekund
KompilacjamakePoniżej minuty
Ładowanie do bazyCREATE EXTENSIONPoniżej sekundy
Konfiguracja workflowSkrypty SQLZależnie od złożoności

Jakie są ograniczenia obecnego rozwiązania?

pg_durable operuje wyłącznie w środowisku PostgreSQL, co oznacza brak natywnego wsparcia dla innych systemów bazodanowych. Repozytorium GitHub wskazuje, że projekt jest stosunkowo nowy, a społeczność dopiero buduje wokół niego ekosystem narzędzi i bibliotek klienckich dla różnych języków programowania.

Choć integracja z PostgreSQL upraszcza wdrożenie, jednocześnie ogranicza elastyczność technologiczną. Zespoły korzystające z MySQL, MongoDB czy innych baz musiałby przeprowadzić migrację lub utrzymywać dodatkową instancję PostgreSQL wyłącznie na potrzeby orkiestracji. To generuje dodatkowe koszty operacyjne.

Wobec tego rozwiązanie sprawdza się najlepiej w projektach już opartych na PostgreSQL. Dla heterogenicznych środowisk bazodanowych narzędzia takie jak Temporal nadal stanowią bardziej uniwersalny wybór, mimo wyższego progu wejścia i bardziej złożonej konfiguracji początkowej.

  • Brak wsparcia dla baz danych innych niż PostgreSQL
  • Ograniczony ekosystem bibliotek klienckich w porównaniu do Temporal
  • Konieczność posiadania uprawnień do instalacji rozszerzeń na serwerze bazy
  • Mniejsza społeczność ze względu na wczesną fazę rozwoju projektu
  • Wymóg kompilacji z kodu źródłowego na docelowym serwerze Linux

Dokumentacja jest wciąż rozwijana.

Jak społeczność reaguje na publikację pg_durable?

Publikacja pg_durable wpisuje się w szerszy trend udostępniania narzędzi infrastrukturalnych jako projekty open-source. Społeczność PostgreSQL aktywnie analizuje kod na GitHubie, zgłaszając uwagi i propozycje ulepszeń. Licencja pozwala na forkowanie i modyfikowanie kodu bez ograniczeń.

Ponadto reakcje deweloperów wskazują na zapotrzebowanie na prostsze alternatywy dla złożonych systemów orkiestracji. Wielu programistów poszukuje rozwiązań, które nie wymagają utrzymywania osobnego klastra. pg_durable trafia w tę potrzebę, oferując mechanizm wbudowany w bazę danych.

Z kolei giganci technologiczni regularnie publikują narzędzia open-source, budując w ten sposób ekosystemy wokół swoich platform chmurowych. Podobnie jak przy otwartych modelach Gemma 4 od Google, korzyści płyną w obu kierunkach.

Otóż korzyść jest obustronna. Społeczność zyskuje darmowe narzędzie, a dostawca chmury buduje lojalność klientów.

Często zadawane pytania

Czy pg_durable zastępuje całkowicie potrzebę stosowania Temporal?

Nie, pg_durable jest przeznaczony wyłącznie dla środowiska PostgreSQL, natomiast Temporal wspiera wiele języków programowania i niezależne bazy danych – wybierz pg_durable, jeśli Twój projekt opiera się na jednej instancji PostgreSQL.

Jakie są koszty wdrożenia pg_durable w istniejącym projekcie?

Kod jest dostępny na licencji MIT pozwalającej na darmowe wykorzystanie, a wdrożenie wymaga jedynie standardowej instancji PostgreSQL – zacznij od instalacji rozszerzenia w środowisku testowym, co zajmuje kilka minut na typowym serwerze Linux.

Czy rozszerzenie działa z chmurowymi usługami PostgreSQL?

Tak, pg_durable jest kompatybilny z usługami opartymi na PostgreSQL, w tym z Azure Database for PostgreSQL – zweryfikuj dostęp do komendy CREATE EXTENSION w swojej usłudze chmurowej przed wdrożeniem produkcyjnym.

Jakie języki programowania można wykorzystać do definiowania workflow?

Workflow definiuje się za pomocą standardowych instrukcji SQL, co oznacza brak konieczności nauki specyficznych SDK – wykorzystaj existing sterowniki PostgreSQL w wybranym języku programowania, takie jak psycopg2 dla Pythona czy pg dla Node.js.

Podsumowanie

pg_durable wnosi trwałe wykonywanie bezpośrednio do PostgreSQL, eliminując potrzebę utrzymywania osobnego klastra orkiestracyjnego. Rozszerzenie upraszcza architekturę aplikacji obsługujących wieloetapowe procesy biznesowe, przechowując pełen kontekst operacji w tabelach transakcyjnych bazy danych.

Główne wnioski z analizy narzędzia:

  • pg_durable integruje silnik trwałego wykonywania z PostgreSQL bez dodatkowej infrastruktury
  • Kod dostępny na licencji MIT pozwala na swobodną modyfikację i forkowanie
  • Rozwiązanie sprawdza się w projektach opartych na PostgreSQL z długotrwałymi workflow
  • Microsoft umacnia pozycję Azure Database for PostgreSQL jako platformy docelowej
  • Społeczność zyskuje prostszą alternatywę dla systemów takich jak Temporal

Projekt jest stosunkowo nowy, dlatego warto śledzić jego rozwój na oficjalnym repozytorium GitHub. Jeśli Twoja aplikacja korzysta z PostgreSQL i wymaga orkiestracji niezawodnych procesów, pg_durable może być rozwiązaniem wartym przetestowania w środowisku deweloperskim. Kod i dokumentacja są dostępne publicznie, co pozwala na niezależną ocenę przydatności tego narzędzia w konkretnym przypadku użycia.