[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"technology-uk-postgresql":3,"technology-projects-uk-postgresql":28,"mdc-wvszun-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_uk\u002Fuk\u002Ftechnologies\u002Fpostgresql.yml","PostgreSQL","database","PostgreSQL — реляційна база даних із підтримкою транзакцій, SQL-запитів і JSON. Я використовую її в DigiPulse для даних моніторингу, з яких застосунок формує поточний стан сервісів та історію інцидентів.\n\n## Робота з результатами моніторингу\n\nРезультати перевірок доступності накопичуються з часом. Запити мають знаходити дані конкретного монітора за потрібний період без читання зайвих рядків. На швидкість і обсяг сховища впливають індекси, строки зберігання та агрегація. План виконання допомагає зрозуміти, на що запит витрачає ресурси.\n\n## Ізоляцію клієнтів потрібно описувати точно\n\nОкрема база для кожного клієнта й окрема схема всередині спільної бази — різні архітектури. PostgreSQL підтримує обидва варіанти, але для схем потрібні відповідні права та обмеження запитів. Жоден варіант сам по собі не забезпечує дотримання всіх вимог до обробки даних або захисту від помилок доступу.\n\n## Як я обираю базу даних\n\nОбмеження цілісності та JSONB корисні, коли застосунок поєднує структуровані записи з гнучкими наборами полів. MySQL також підходить для багатьох Laravel- і WordPress-проєктів. Перед вибором порівнюю реальні запити, модель даних і вимоги до підтримки.\n","PostgreSQL для SaaS: дані моніторингу DigiPulse, цілісність записів, аналіз запитів і варіанти ізоляції клієнтських даних.","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},"Технічна документація","https:\u002F\u002Fwww.postgresql.org\u002Fdocs\u002Fcurrent\u002Fddl-schemas.html",{},[23],"digipulse","2019","uk\u002Ftechnologies\u002Fpostgresql","2026-09-20","fiCsENwT6yVw4qfsbbZav1ZeJF0PAJ6lWc8mWO2Y76s",[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_uk\u002Fuk\u002Fprojects\u002Fdigipulse.yml","DigiPulse","SaaS для моніторингу доступності — перевірки кожні 60 секунд, відстеження закінчення SSL, сповіщення через Telegram та email. Адмін панель та основний бекенд побудовані з Laravel (Octane, Reverb websockets) та Filament, а моніторинг-движок — окремий Go сервіс. Інтеграція Google OAuth sign-in та Cloudflare Turnstile. Включає MCP сервер, який надає дані моніторингу безпосередньо до AI асистентів. Self-hosted на Proxmox.\n\n## Ключові можливості\n\n- **Окремий Go-движок** - перевірки доступності виконує окремий Go-сервіс, тож постійний поллінг кожні 60 секунд не гальмує Laravel-застосунок\n- **Дашборд у реальному часі** - Reverb websockets передають зміни статусу в UI наживо, без ручного оновлення\n- **Octane + Filament** - резидентний у пам'яті Laravel із повною адмін-панеллю для моніторів, контактів і правил сповіщень\n- **MCP-сервер** - монітори та інциденти доступні для AI-асистентів (Claude, Cursor) через Model Context Protocol\n- **Google OAuth + Turnstile** - вхід без пароля та захист від ботів на публічних формах\n- **Self-hosted** - розгорнуто на власному Proxmox-хомлабі, який я адмініструю повністю\n\n## Стек технологій\n\n- **Бекенд**: Laravel (Octane, Reverb websockets)\n- **Адмін-панель**: Filament\n- **Движок моніторингу**: Go (окремий сервіс)\n- **База даних**: PostgreSQL\n- **Інтеграція AI**: MCP-сервер\n- **Інфраструктура**: Self-hosted на Proxmox\n","2026-04-17","SaaS для моніторингу доступності: event-driven архітектура — Laravel (Octane, Reverb) і Filament диспетчеризують перевірки через Redis у легкий Go-воркер; MCP-сервер дає дані моніторингу AI-асистентам; сповіщення Telegram\u002Femail",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","uk\u002Fprojects\u002Fdigipulse",[69,49,55,70,65,59,71],"SaaS","Monitoring","Event-driven","jNmJS9kMabUQ04ggukPIRPMSLui7xNAbE9Nsuuw99ag",{"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 — реляційна база даних із підтримкою транзакцій, SQL-запитів і JSON. Я використовую її в DigiPulse для даних моніторингу, з яких застосунок формує поточний стан сервісів та історію інцидентів.",{"type":79,"tag":87,"props":88,"children":90},"h2",{"id":89},"робота-з-результатами-моніторингу",[91],{"type":84,"value":92},"Робота з результатами моніторингу",{"type":79,"tag":80,"props":94,"children":95},{},[96],{"type":84,"value":97},"Результати перевірок доступності накопичуються з часом. Запити мають знаходити дані конкретного монітора за потрібний період без читання зайвих рядків. На швидкість і обсяг сховища впливають індекси, строки зберігання та агрегація. План виконання допомагає зрозуміти, на що запит витрачає ресурси.",{"type":79,"tag":87,"props":99,"children":101},{"id":100},"ізоляцію-клієнтів-потрібно-описувати-точно",[102],{"type":84,"value":103},"Ізоляцію клієнтів потрібно описувати точно",{"type":79,"tag":80,"props":105,"children":106},{},[107],{"type":84,"value":108},"Окрема база для кожного клієнта й окрема схема всередині спільної бази — різні архітектури. PostgreSQL підтримує обидва варіанти, але для схем потрібні відповідні права та обмеження запитів. Жоден варіант сам по собі не забезпечує дотримання всіх вимог до обробки даних або захисту від помилок доступу.",{"type":79,"tag":87,"props":110,"children":112},{"id":111},"як-я-обираю-базу-даних",[113],{"type":84,"value":114},"Як я обираю базу даних",{"type":79,"tag":80,"props":116,"children":117},{},[118],{"type":84,"value":119},"Обмеження цілісності та JSONB корисні, коли застосунок поєднує структуровані записи з гнучкими наборами полів. MySQL також підходить для багатьох Laravel- і WordPress-проєктів. Перед вибором порівнюю реальні запити, модель даних і вимоги до підтримки."]