🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.bazy-danych
Article #195692

Re: PostgreSQL - trigger pomija instrukcje

#195692
From: Adam M
Date: Thu, 07 Nov 2019 20:19
42 lines
4583 bytes
On Thursday, November 7, 2019 at 2:06:10 PM UTC-5, Marek S wrote:
> W dniu 2019-11-06 o 21:54, Adam M pisze:
> 
> > 
> > Wkładanie logiki biznesowej na triggery to bardzo niebezpieczna zabawa - takie rozwiązania stosowało się epoce SQLa łupanego ;-) - prosciej i bezpieczniej przenieść logikę na middleware.
> 
> 
> Tak, wiem, że niebezpieczna. Dlatego 15x to testuję zanim udostępnię.
> 
> Owszem, obecnie zwykle przenosi się logikę tego typu do ORMów, a nawet 
> widziałem raz sortowanie wykonane w PHP (!!!) w imię przenoszenia 
> wszystkiego, co możliwe do wykonania na bazie poza nią. Zauważam, że 
> zapanowała wielka awersja do używania baz danych. Zdarza się nawet, że 
> obiekty danych trzyma się w formie plików na dysku (patrz Pimcore). Ja 
> jednak będę trzymał się w/w rozwiązań. Właśnie jestem świadkiem początku 
> upadku sporego przedsięwzięcia - przed czym, u zarania projektu, 
> przestrzegałem team. Oni ślepo ufają nowoczesnym rozwiązaniom, jakie 
> proponujesz. W efekcie, przy ok 25 mln rekordów w bazie, niektóre proste 
> operacje potrafią trwać po kilka minut (klient tyle musi czekać na 
> response interfejsu) zamiast kilkadziesiąt milisekund. Przenoszenie 
> projektu na super wydajne serwery (hosting parę tys. $), stosowanie 
> loadbalacera - odsunęło problem w czasie. Osobiście wygodny ORM stosuję 
> tylko tam, gdzie nie może zaszkodzić bardzo: chyba tylko obsługa 
> formularzy. Zaczynam przenosić rozwiązania nowoczesne, na łupany SQL i 
> już w tej chwili zyskuję min. trzy rzędy wielkości krótsze czasy 
> realizowanych operacji.
> 
> Jednakże mimo wszystko nie zgodzę się z Tobą, że stosowanie procedur 
> składowych w bazie to przestarzałe podejście. Wręcz przeciwnie: widuję w 
> korporacjach działy administratorów baz danych, którym wręcz zleca się 
> realizowanie procedur składowych, z których korzystają programiści. 
> Programiści nie muszą być świadomi nawet tego, że jakąś kolumnę 
> przeniesiono z jednej tabeli do innej.
> 
> -- 
> Pozdrawiam,
> Marek

Może trochę zaprzeczę własnemu stwierdzeniu alz zgodzę się z kolegą jeżeli takie rozwiązanie jest stosowane na bazie Oracle , Sybase ASE lub nawet Microsoft SQL gdzie debugowanie kodu SQL po strownie serwera jest łatwe i przyjemne - można wtedy traktować server SQL jak middleware. Niestety PostgrSQL ma fatalny debugger - ostatni jaki używałem był na 9.3 i padał jeśli tylko sie na niego człowiek źle popatrzył nie mówiąc o jakim kolwiek sensownym debugowaniu. Może coś poprawili na 10 - nie wiem tego bo poprostu sobie odpuściłem debugowanie na PostgreSQL is jeśli muszę coś pisac to omijam logikę na triggerach jak zarazę - procedury składowane tak (pomimo ze i tak śą skopane na PostgreSQL - nie mozna mieć transakcji częściowych w środku procedury/funkcji) - logika na triggerach nie - przynajmniej na PostgreSQL.

Pozdrawiam
Adam M
Technical Details
Message-ID: <923d8fe3-931e-4c10-b546-43571e6f3ace@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!feeder.erje.net!2.eu.feeder.erje.net!newsfeed.xs4all.nl!newsfeed8.news.xs4all.nl!185.102.218.108.MISMATCH!tr2.eu1.usenetexpress.com!feeder.usenetexpress.com!tr3.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!j16no10077817qtl.0!news-out.google.com!p4ni533qtu.1!nntp.google.com!j16no10077806qtl.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
References: <qpnjmv$f6a$1@news.icm.edu.pl> <5dc16116$0$543$65785112@news.neostrada.pl> <qpv5oa$57n$1@news.icm.edu.pl> <0363bcb0-290b-42b1-abe1-8cd8a86387ac@googlegroups.com> <qq1pv0$5et$1@news.icm.edu.pl>

Show Full Headers
Complete Article Headers
X-Received: by 2002:ac8:754c:: with SMTP id b12mr3234765qtr.291.1573157968538; Thu, 07 Nov 2019 12:19:28 -0800 (PST)
X-Received: by 2002:a05:6830:1149:: with SMTP id x9mr4394070otq.47.1573157968038; Thu, 07 Nov 2019 12:19:28 -0800 (PST)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!feeder.erje.net!2.eu.feeder.erje.net!newsfeed.xs4all.nl!newsfeed8.news.xs4all.nl!185.102.218.108.MISMATCH!tr2.eu1.usenetexpress.com!feeder.usenetexpress.com!tr3.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!j16no10077817qtl.0!news-out.google.com!p4ni533qtu.1!nntp.google.com!j16no10077806qtl.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.bazy-danych
Date: Thu, 7 Nov 2019 12:19:27 -0800 (PST)
In-Reply-To: <qq1pv0$5et$1@news.icm.edu.pl>
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=70.89.204.241; posting-account=aFGPVQoAAADngh59qlchYygiuB87zBBU
NNTP-Posting-Host: 70.89.204.241
References: <qpnjmv$f6a$1@news.icm.edu.pl> <5dc16116$0$543$65785112@news.neostrada.pl> <qpv5oa$57n$1@news.icm.edu.pl> <0363bcb0-290b-42b1-abe1-8cd8a86387ac@googlegroups.com> <qq1pv0$5et$1@news.icm.edu.pl>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <923d8fe3-931e-4c10-b546-43571e6f3ace@googlegroups.com>
Subject: Re: PostgreSQL - trigger pomija instrukcje
From: Adam M <amorawski@magna-power.com>
Injection-Date: Thu, 07 Nov 2019 20:19:28 +0000
Lines: 79
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit