[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"technology-pl-postgresql":3,"technology-projects-pl-postgresql":28,"mdc-wng1pp-key":73},{"id":4,"title":5,"category":6,"content":7,"description":8,"extension":9,"faq":10,"icon":11,"links":12,"meta":21,"projects":22,"since":24,"stem":25,"updated":26,"__hash__":27},"technologies_pl\u002Fpl\u002Ftechnologies\u002Fpostgresql.yml","PostgreSQL","database","PostgreSQL to relacyjna baza danych obsługująca transakcje, zapytania SQL i dane JSON. Korzystam z niej w DigiPulse do przechowywania danych monitoringu, z których aplikacja tworzy widoki stanu usług oraz historię incydentów.\n\n## Praca z wynikami monitoringu\n\nWyniki sprawdzeń dostępności przybywają z czasem. Zapytania powinny odnajdywać dane konkretnego monitora z wybranego okresu bez odczytywania zbędnych wierszy. Indeksy, okres przechowywania i agregacja wpływają na wydajność oraz rozmiar danych. Plan wykonania pokazuje, na co zapytanie zużywa zasoby.\n\n## Izolacja klientów wymaga precyzji\n\nOsobna baza dla każdego klienta i osobny schemat we wspólnej bazie to różne architektury. PostgreSQL obsługuje obie, ale schematy wymagają odpowiednich uprawnień i ograniczenia zakresu zapytań. Żaden wariant sam w sobie nie zapewnia zgodności ze wszystkimi wymaganiami dotyczącymi danych ani ochrony przed każdym błędem dostępu.\n\n## Jak wybieram bazę danych\n\nOgraniczenia integralności i typ JSONB przydają się, gdy aplikacja łączy uporządkowane rekordy z elastyczną strukturą pól. MySQL również pasuje do wielu projektów Laravel i WordPress. Przed wyborem porównuję rzeczywiste zapytania, model danych i wymagania związane z utrzymaniem.\n","PostgreSQL dla SaaS: dane monitoringu DigiPulse, integralność rekordów, analiza zapytań i warianty izolacji danych klientów.","yml",null,"i-simple-icons-postgresql",[13,18],{"label":14,"to":15,"color":16,"icon":17},"postgresql.org","https:\u002F\u002Fwww.postgresql.org","neutral","i-heroicons-arrow-top-right-on-square",{"label":19,"to":20,"color":16,"icon":17},"Dokumentacja techniczna","https:\u002F\u002Fwww.postgresql.org\u002Fdocs\u002Fcurrent\u002Fddl-schemas.html",{},[23],"digipulse","2019","pl\u002Ftechnologies\u002Fpostgresql","2026-09-20","WUh2p9-aD7ryAXqMbbeayEARxEF7VpQ4H7b1NCDcYrg",[29],{"id":30,"title":31,"content":32,"date":33,"description":34,"extension":9,"featured":35,"image":36,"links":37,"meta":46,"stack":47,"stem":67,"tags":68,"url":40,"__hash__":72},"projects_pl\u002Fpl\u002Fprojects\u002Fdigipulse.yml","DigiPulse","SaaS do monitorowania dostępności — sprawdzanie co 60 sekund, śledzenie wygaśnięcia SSL, powiadomienia przez Telegram i email. Panel administracyjny i podstawowy backend zbudowane na Laravel (Octane, websockety Reverb) i Filament, a silnik monitorujący to osobny serwis w Go. Integracja logowania Google OAuth i Cloudflare Turnstile. Zawiera serwer MCP, który udostępnia dane monitoringu bezpośrednio asystentom AI. Self-hosted na Proxmox.\n\n## Kluczowe funkcje\n\n- **Dedykowany silnik w Go** - sprawdzanie dostępności wykonuje osobny serwis w Go, więc ciągłe odpytywanie co 60 sekund nie spowalnia aplikacji Laravel\n- **Dashboard w czasie rzeczywistym** - websockety Reverb przesyłają zmiany statusu do UI na żywo, bez odświeżania\n- **Octane + Filament** - Laravel rezydentny w pamięci z pełnym panelem administracyjnym dla monitorów, kontaktów i reguł alertów\n- **Serwer MCP** - monitory i incydenty dostępne dla asystentów AI (Claude, Cursor) przez Model Context Protocol\n- **Google OAuth + Turnstile** - logowanie bez hasła i ochrona przed botami na formularzach publicznych\n- **Self-hosted** - wdrożone na własnym homelab Proxmox, którym zarządzam end-to-end\n\n## Stos technologiczny\n\n- **Backend**: Laravel (Octane, websockety Reverb)\n- **Panel administracyjny**: Filament\n- **Silnik monitorujący**: Go (osobny serwis)\n- **Baza danych**: PostgreSQL\n- **Integracja AI**: Serwer MCP\n- **Infrastruktura**: Self-hosted na Proxmox\n","2026-04-17","SaaS do monitorowania dostępności: architektura event-driven — Laravel (Octane, Reverb) i Filament wysyłają zadania przez Redis do lekkiego workera w Go; serwer MCP udostępnia dane monitoringu asystentom AI; powiadomienia Telegram\u002Fe-mail",true,"\u002Fhero\u002Fdigipulse.avif",[38,42],{"label":39,"to":40,"color":41,"icon":17},"Live Demo","https:\u002F\u002Fdigipulse.cloud","primary",{"label":43,"to":44,"color":16,"icon":45},"GitHub","https:\u002F\u002Fgithub.com\u002FYurij2015\u002Fdigipulse-backend","i-simple-icons-github",{},[48,51,54,57,58,61,64],{"name":49,"icon":50},"Laravel","i-simple-icons-laravel",{"name":52,"icon":53},"Filament","i-simple-icons-filament",{"name":55,"icon":56},"Go","i-simple-icons-go",{"name":5,"icon":11},{"name":59,"icon":60},"Redis","i-simple-icons-redis",{"name":62,"icon":63},"Vue","i-simple-icons-vuedotjs",{"name":65,"icon":66},"MCP","i-heroicons-cpu-chip","pl\u002Fprojects\u002Fdigipulse",[69,49,55,70,65,59,71],"SaaS","Monitoring","Event-driven","GqA86kRO7Vh1dUrEBwiAh6SARuOescZleItqed4Wz8M",{"data":74,"body":75},{},{"type":76,"children":77},"root",[78,86,93,98,104,109,115],{"type":79,"tag":80,"props":81,"children":82},"element","p",{},[83],{"type":84,"value":85},"text","PostgreSQL to relacyjna baza danych obsługująca transakcje, zapytania SQL i dane JSON. Korzystam z niej w DigiPulse do przechowywania danych monitoringu, z których aplikacja tworzy widoki stanu usług oraz historię incydentów.",{"type":79,"tag":87,"props":88,"children":90},"h2",{"id":89},"praca-z-wynikami-monitoringu",[91],{"type":84,"value":92},"Praca z wynikami monitoringu",{"type":79,"tag":80,"props":94,"children":95},{},[96],{"type":84,"value":97},"Wyniki sprawdzeń dostępności przybywają z czasem. Zapytania powinny odnajdywać dane konkretnego monitora z wybranego okresu bez odczytywania zbędnych wierszy. Indeksy, okres przechowywania i agregacja wpływają na wydajność oraz rozmiar danych. Plan wykonania pokazuje, na co zapytanie zużywa zasoby.",{"type":79,"tag":87,"props":99,"children":101},{"id":100},"izolacja-klientów-wymaga-precyzji",[102],{"type":84,"value":103},"Izolacja klientów wymaga precyzji",{"type":79,"tag":80,"props":105,"children":106},{},[107],{"type":84,"value":108},"Osobna baza dla każdego klienta i osobny schemat we wspólnej bazie to różne architektury. PostgreSQL obsługuje obie, ale schematy wymagają odpowiednich uprawnień i ograniczenia zakresu zapytań. Żaden wariant sam w sobie nie zapewnia zgodności ze wszystkimi wymaganiami dotyczącymi danych ani ochrony przed każdym błędem dostępu.",{"type":79,"tag":87,"props":110,"children":112},{"id":111},"jak-wybieram-bazę-danych",[113],{"type":84,"value":114},"Jak wybieram bazę danych",{"type":79,"tag":80,"props":116,"children":117},{},[118],{"type":84,"value":119},"Ograniczenia integralności i typ JSONB przydają się, gdy aplikacja łączy uporządkowane rekordy z elastyczną strukturą pól. MySQL również pasuje do wielu projektów Laravel i WordPress. Przed wyborem porównuję rzeczywiste zapytania, model danych i wymagania związane z utrzymaniem."]