🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: [OT] Re: Baza ok 2500 tabel.

#195347
From: Adam
Date: Mon, 10 Jul 2017 21:07
156 lines
7937 bytes
W dniu 2017-07-10 o 19:47, wloochacz pisze:
> W dniu 2017-07-05 o 15:21, Adam pisze:
>> W dniu 2017-07-05 o 13:30, wloochacz pisze:
>>> W dniu 2017-06-20 o 15:20, Adam pisze:
>>> /ciach/
>>>
>>>> Natomiast Symfonia czy jakieś tam Inserty mają oprócz tego, co
>>>> napisałeś jeszcze sporo innych problemów. Najpoważniejsze: brak
>>>> spójności systemu. Bywa u klientów, że towar zostanie pobrany na
>>>> dokument, a nie zejdzie ze stanu magazynowego.
>>>>
>>>> W przypadku Optimy, CDN-XL czy Enovy - o spójność baz danych dbają
>>>> triggery.
>>> No popatrz, mam bazę Enovy (stan na rok 2015, ale nie sadzę aby były aż
>>> tak poważne zmiany) pod ręką i nie ma w niej ani jednego triggera.
>>> Tak wszystko co piszesz poniżej w kontekście Enovy, nie jest
>>> prawdziwe...
>>
>> Aż zobaczyłem do jakiejś bazy:
> /ciach/
>
>> itd - 490 rekordów.
> No i co tam zobaczyłeś, bo  nic z tego nie rozumiem...
>

Wylistowałem triggery z bazy danych Enovy, baza z roku 2014.

>> Optimka ma 272, CDN-XL ma 852.
>> Zresztą do XL masz dokumentację, podsyłałem Ci kiedyś.
> Pisałem o Enovie, a Ty mi tu pokazujesz XL.
> A to, że "logika" w ERP XL jest w bazie danych, to jasne.

W Enovie chyba też.
Mam tylko kilku klientów z Enovy, robionych zresztą "z doskoku". Od 
ładnych kilku lat jakoś nie mogę się zebrać, aby skoczyć do Roberta 
podpisać umowę.
W każdym razie bazy Enovy nie naprawiałem, nie znam jej tak, jak baz 
dawnego CDN-u.

> Burdel z tym taki, że łooo matko...

Dopóki nie zatrudniali studentów, i dopóki CDN to był CDN a nie jakiś 
Comarch, to było dobrze :(

> A najlepiej jest wtedy, gdy mam na przestrzeni kilku lat, kilka firm
> obsługujących ten sam system u klienta (tzw. fakt autentyczny i dotyczy
> ERP XL), robi własne zmiany w triggerach.

Niestety, czasem nawet do wydruku w Crystalu trzeba podpiąć pod bazę 
dodatkowe tabele i triggery. Mam tak w jednej specyficznej firmie - 
obrót "żelastwem" na budowy (kształtowniki, ramy, pojemniki, pręty, itp).

> Każda z tych firm grzebie sobie w bazie jak im się podoba.
> Po kilkunastu takich zmianach, nikt tak naprawdę nie wie co w tym
> trigger-hell się dzieje i kiedy się dzieje...
>

Najgorzej to przejąć takiego klienta. Robi się dla niego jakiś dodatkowy 
wydruk lub mniej typowy obieg dokumentów, i to, co chodzi na bazach 
testowych albo u innych klientów, u niego nie chce :(

>>>> Albo cała transakcja (w znaczeniu ścieżki logicznej zdarzeń)
>>>> przejdzie, albo cała zostanie wycofana. Nawet, gdybym grzebał
>>>> bezpośrednio w tabelach z danymi, transakcje są spójne, albo trigger
>>>> nie pozwoli zmienić pola, gdy pozostałe warunki nie są zachowane.
>>>> Jest to bardzo dobre dla serwisantów.
>>> Dobre dla serwisantów?
>>> A co to za serwisant, który grzebie w bazie nie wiedząc jakie będę tego
>>> konsekwencje dla całego systemu?
>>>
>>> Taki "serwisant" niech lepiej trzyma lepkie łapki blisko siebie...
>>
>> E, tam, nie przesadzaj.
> Jasne, ale mam inną opinię.
>
>> Przykładowy trigger dotyczący elementu transakcji (np. faktury) poniżej.
> Myślę, że ten trigger  jest z definicji zjebany.
>

Wziąłem pierwszy lepszy z brzegu, tam gdzie mi kursor myszki w 
Management Studio stanął.

> Select top 1?
> A co w przypadku, kiedy insert będzie batchowy i będzie więcej niż jeden
> rekord wkładany w tym samym czasie?

Z tego, co na szybko popatrzyłem to TOP 1 wskazuje na typ i rodzaj 
dokumentu. Dokument może być tylko i wyłącznie jednego rodzaju czy typu 
i nie podlega zmianom. Tu akurat IMO nie ma błędu. Zresztą te flagi są 
zakładane w momencie inicjacji rekordu, a rekord jest blokowany na 
wyłączność w trakcie inicjalizacji.

>
> Dlatego powtórzę: "Taki "serwisant" niech lepiej trzyma lepkie łapki
> blisko siebie..."
> Na co Ty - nie przesadzaj...
>
>> Myślisz, że bez triggera ktoś by to zapamiętał?
> Tak, ale to wymaga programowania w ERPie, a nie w jego bazie.
>

A później ktoś mnie woła do jakiegoś Wf-Maga, że poszła faktura a towar 
dalej wisi na stanie.
Wydaje mi się, że triggery w tym momencie dużo pomagają i jeszcze więcej 
(a w zasadzie całkowicie) zabezpieczają bazę.
Zważ na to, że systemy CDN-u (łącznie z FPP) są poniekąd "otwarte", 
można coś "wtykać" choćby przez API.
Nie wyobrażam sobie tworzenia własnych, nawet najprostszych formatek czy 
funkcji dodatkowych bez triggerów.

> Poza tym ten cały trigger, jest wzorcowym przykładem jak nie należy tego
> robić i dlaczego nie należy tak tego robić.
> Po prostu utrzymanie takiego systemu to istny horror-szoł...

Nie mam innych doświadczeń, brak podstaw abym się wypowiadał.

>>>> Przykład z życia: pad prądu w środku wpisywania dokumentu. W różnych
>>>> systemach następuje rozjazd pomiędzy stanami handlowymi a stanami
>>>> magazynowymi, natomiast w Optimie/XL/Enovie praktycznie nigdy. Znam
>>>> tylko kilka zgłoszonych przypadków przez blisko 20 lat.
>>> Zatem mylisz transakcję bazodanową (która została wycofana, po padł
>>> prąd), ze spójnością danych logicznych zapewnioną przez triggery, po
>>> stronie bazy danych.
>>> I tak przez blisko 20 lat :P
>>>
>>
>> Być może mylę - nie przeczę.
>> Bazodanowa - to jak coś w rodzaju TTS w Novellu?
> Bazodanowa to bazodanowa, zgodna z ACID.
> W porównaniu do ACID, TTS w Novell to bieda wersja, ale głównie dlatego
> że operuje na plikach (czy na blokach pliku? Ja jestem noga od Novella i
> wiem tyle ile wyczytam) i z tego co wiem, wymaga interakcji z Novell TTS.

Novella zaprzestałem serwisować już gdzieś na v.5.x - więc dość dawno 
temu. Aczkolwiek jeszcze kilka lat temu coś naprawiałem w bazach KH w 
jakiejś Spółdzielni Mieszkaniowej - jakoś mnie przez kogoś znaleźli. 
Mieli CDN Klasykę na Novellu, a sieć na RG58.

> W bazie danych nie posługujesz się pojęciem pliku i nic Cię on nie
> obchodzi, a sama transakcja dotyczy wszystkich (zazwyczaj chodzi o
> polecania DML, ale bywa różnie w różnych bazach danych) poleceń SQL,
> które są nią objęte.
>
>> Ale to chyba na innym poziomie, niż logiczna spójność. Muszę doczytać.
>> Jakiś link?
> ACID
> https://pl.wikipedia.org/wiki/ACID
> https://msdn.microsoft.com/en-us/library/aa480356.aspx?f=255&MSPPError=-2147217396

Dzięki, w wolnej chwili poczytam.


-- 
Pozdrawiam.

Adam
Technical Details
Message-ID: <ok0qa3$sjr$1@usenet.news.interia.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.interia.pl!not-for-mail
References: <59400f55$0$663$65785112@news.neostrada.pl> <ohq7ub$s7h$1@gioia.aioe.org> <ohr1t9$h91$1@usenet.news.interia.pl> <59411fb2$0$15209$65785112@news.neostrada.pl> <ohrmer$rgq$1@usenet.news.interia.pl> <5b0cb897-0678-4a43-8e26-375b40c8f6ae@googlegroups.com> <oi8crp$kr8$1@usenet.news.interia.pl> <oi8p3q$dd2$1@usenet.news.interia.pl> <oi9365$1kh$1@usenet.news.interia.pl> <5948b198$0$5146$65785112@news.neostrada.pl> <oib7fa$b50$1@usenet.news.interia.pl> <595ccdc0$0$15205$65785112@news.neostrada.pl> <ojip52$9jn$1@usenet.news.interia.pl> <5963bdc4$0$653$65785112@news.neostrada.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.interia.pl!not-for-mail
From: Adam <a.g@poczta.onet.pl>
Newsgroups: pl.comp.bazy-danych
Subject: Re: [OT] Re: Baza ok 2500 tabel.
Date: Mon, 10 Jul 2017 23:07:14 +0200
Organization: INTERIA.PL S.A.
Lines: 156
Message-ID: <ok0qa3$sjr$1@usenet.news.interia.pl>
References: <59400f55$0$663$65785112@news.neostrada.pl> <ohq7ub$s7h$1@gioia.aioe.org> <ohr1t9$h91$1@usenet.news.interia.pl> <59411fb2$0$15209$65785112@news.neostrada.pl> <ohrmer$rgq$1@usenet.news.interia.pl> <5b0cb897-0678-4a43-8e26-375b40c8f6ae@googlegroups.com> <oi8crp$kr8$1@usenet.news.interia.pl> <oi8p3q$dd2$1@usenet.news.interia.pl> <oi9365$1kh$1@usenet.news.interia.pl> <5948b198$0$5146$65785112@news.neostrada.pl> <oib7fa$b50$1@usenet.news.interia.pl> <595ccdc0$0$15205$65785112@news.neostrada.pl> <ojip52$9jn$1@usenet.news.interia.pl> <5963bdc4$0$653$65785112@news.neostrada.pl>
NNTP-Posting-Host: ent22.internetdsl.tpnet.pl
Mime-Version: 1.0
X-Trace: usenet.news.interia.pl 1499720835 29307 83.15.205.22 (10 Jul 2017 21:07:15 GMT)
X-Complaints-To: usenet@firma.interia.pl
NNTP-Posting-Date: Mon, 10 Jul 2017 21:07:15 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 5.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0
In-Reply-To: <5963bdc4$0$653$65785112@news.neostrada.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit