Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

foreign key i trigger na child tabeli

[es] :: MySQL :: foreign key i trigger na child tabeli

[ Pregleda: 2235 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Schmidt
RHCE

Član broj: 80784
Poruke: 647
*.static.corp.blic.net.



+10 Profil

icon foreign key i trigger na child tabeli29.05.2018. u 10:58 - pre 71 meseci
Ovih dana radim update sa 5.5 i 5.6 na 8.0.
Trenutno mi ne treba funkcionalnost trigera na child tabeli ali sam se nadao da je to do sada riješeno.
Međutim, odradim par testova i vidim da to još uvijek nije riješeno. Pogledam malo bugtracker i vidim da je već 13 godina od prijave tog buga :)
Da pojasnim, cascade update child tabele ne okida trigere.
Pretpostavljam da su se mnogi sreli sa ovim bugom. Imate li nekih rješenja koja funkcionišu ili ste prešli na drugu bazu (postgres npr.)?
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.com
Via: [es] mailing liste

Sajt: mysql.rs


+2377 Profil

icon Re: foreign key i trigger na child tabeli29.05.2018. u 19:10 - pre 70 meseci
pa sad .. bug ili feature :D ... to je vrlo dobro dokumentovano
ponasanje i takodje dobro dokumentovan razlog zasto je tako .. ogroman
je problem to promeniti jer ce da pokvari kompatibilnost u nazad i mnoge
aplikacije koje zavise od toga ce prestati da rade. jedini nacin da se
to promeni je da se napravi takva promena da mysqld moze da radi i ovako
i onako i da se to menja na fleg... e tu sada nastaje milion problema,
realno bi to trebalo da se kontrolise kroz SQL_MODE ali sql_mode je
dinamicka varijabla izolovana u sesiji tako da na taj nacin gotovo da je
nemoguce napraviti to da valja jer bi onda u jednoj sesiji triger na
kaskadi radio a u drugoj ne bi sto je pored toga sto je uzasno opasno
prilicno pomereno od mozga .. dodati neki
--do-not-execute-triggers-on-cascade bi mozda bilo resenje, iako ne
"pravilno" realno bi moglo da odradi posao no tu dolazi do opet toga da
ceo taj sistem mora se ponasa ovako ili onako u zavisnosti od parametra
... osim sto bi to bilo sporo svakako bi bilo rogobatno ..

na sve to, to je feature koji nijedan jedini paying customer za sada
nije trazio sto dodatno spusta prioritet istog ...

e, sad, obzirom da se tomas zaleteo u "sto kompletnije postovanje
najnovijeg sql standarda" sve je moguce u narednom periodu i vidim da su
mnoge, do sada tabu, teme razorene (tipa mysqldump vise nije
kompatibilan sam sa sobom unutar 8.0 drveta, da ne spominjem da nije
kompatibilan izmedju nekog 5.x driveta i 8.x drveta) ... za predlog
takve izvedbe bi pre par godina neko bio ismejan i isutiran iz firme,
danas je to napravljeno i pusteno i osim par momaka iz support-a koji su
se uhvatili za glavu svima je to ok... tako da ko zna, mozda se
implementira, kaze - promenite aplikacije da bi presli na verziju x.y i
to je to .. videcemo, malo je komplikovano razdvojiti sta je javna a sta
tajna informacija i dokle mogu da podelim datu bez da ce neko mi odsrafi
lobanju u firmi..
 
Odgovor na temu

Predrag Supurovic
Pedja YT9TP
Užice

Član broj: 157129
Poruke: 6275

Sajt: pedja.supurovic.net


+1570 Profil

icon Re: foreign key i trigger na child tabeli29.05.2018. u 20:26 - pre 70 meseci
Skoro sam radio upgrade jednog MySQL servera i to je bilo veoma bolno iskustvo.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2377 Profil

icon Re: foreign key i trigger na child tabeli29.05.2018. u 21:13 - pre 70 meseci
Citat:
Predrag Supurovic: Skoro sam radio upgrade jednog MySQL servera i to je bilo veoma bolno iskustvo.


unutar grane znaci unutar 5.1.x ili 5.5.x ili 5.7.x nije do sada bio nikakav problem, u slucaju da si imao problem ili je baza bila koraptovana ili si ti nekaj zasr1234... :D sto je opet bio vise problem operatora nego mysql-a ... e sa 8.x stvari postaju "zanimljive" ... do 8.x jedino sto si morao da vodis racuna je da
1. imas dovoljno mesta na disku
2. baza nije koraptovana
3. radis upgrade unutar major verzije (major1.major2.minor)
4. ako radis upgrade izmedju major verzija, prvo radis upgrade unutar major2 verzije na najvisi minor koji postoji pa onda radis odatle upgrade na najvisi minor koji postoji za novi major koji hoces + tu moras da proveris release notes i incompatible changes (posto uvek postoje izmedju major verzija) i upgrade info, moze da se desi da cak i izmedju najvecih minora mora radis dump/restore

i to je to ... 4 stvari na koje mora obratis paznju, 2 su realno "given", druge dve naucis prvi put kad te lupi po nosu ..

e sa 8.x PRC :( ... kako ce to da se resi i na sta ce da izadje budemo videli, obratite paznju da se pojavio novi alat "mysqlpump" [ https://dev.mysql.com/doc/refman/5.7/en/mysqlpump.html ]


 
Odgovor na temu

Schmidt
RHCE

Član broj: 80784
Poruke: 647
*.static.corp.blic.net.



+10 Profil

icon Re: foreign key i trigger na child tabeli30.05.2018. u 08:44 - pre 70 meseci
Citat:
bogdan.kecman:
pa sad .. bug ili feature :D ... to je vrlo dobro dokumentovano
ponasanje i takodje dobro dokumentovan razlog zasto je tako ..


Naravno, uvijek mozemo doci u situaciju da je nesto feature a ne bug.
Nekako sam se nadao da ce v8 to da rijesi "usput". Ima zanimljivih komentara na bug trackeru vezano za ovu situaciju. Neki su i prilicno smijesni :)
Npr. "nase dijete se sprema da krene u osnovnu skolu", "nase dijete ce uskoro u srednju skolu" :)
Jedan od boljih, kad je support rekao da je implementacija prilicno komplikovana i da trazi dosta vremena i ozbiljan pristup, par godina kasnije "sure, take your time" :)

Citat:
bogdan.kecman:
na sve to, to je feature koji nijedan jedini paying customer za sada
nije trazio sto dodatno spusta prioritet istog ...


Izmedju ostalog ovo i jeste razlog postavljanja teme. Uopste necu reci da je moja ideja najbolja nakon rezanog hljeba :) Vise me interesuje ima li nacina da se to rijesi bez obzira na nedostatak funkcionalnosti, odnosno da se isti "preskoci" boljom logikom i implementacijom.

Medjutim, ono sto jeste zabrinjavajuce je to da sa trigerom rijesis neku stvar zbog koje triger i postoji, bez izmisljanja tople vode. Nakon toga, odlucis da unaprijedis referencijalni integritet baze i iskoristis sve prednosti koje isti donosi. A opet, s druge strane, sacuvas i te trigere koji ti rade posao. I sad, kad si pokriven od svega, kad si sve odradio by the book, dodjes u problem jer ti trigeri ne rade, osim ako se izvrse direktno na child tabeli, mimo kaskade. Kad malo razmislim, to je bas ono sto se zeli izbjeci, odnosno, baza se ponasa dvojako, ako radis direktno na child tabeli trigeri se izvrsavaju, ako tu dodje kaskada trigeri se NE izvrsavaju.

Ne znam kako da se postavim prema situaciji :)
 
Odgovor na temu

Schmidt
RHCE

Član broj: 80784
Poruke: 647
*.static.corp.blic.net.



+10 Profil

icon Re: foreign key i trigger na child tabeli30.05.2018. u 09:36 - pre 70 meseci
Citat:
Predrag Supurovic:
Skoro sam radio upgrade jednog MySQL servera i to je bilo veoma bolno iskustvo.


Kad god mogu radije podignem novi server, uradim dump na starom i prebacim na novi.
Problem je kad imam veoma zivu bazu (uopisi 24x7), sa stotinama GB podataka. Ne smijes je zaustaviti, planiras neki downtime, najavis ga, cekas da se zavrsi dump, prebacis se na novi server i onda krenu neki novi problemi. Ne mozes da se tako lako vratis na staro, ne mozes tako lako da rijesis postojeci problem i onda krene nervoza...
 
Odgovor na temu

Predrag Supurovic
Pedja YT9TP
Užice

Član broj: 157129
Poruke: 6275

Sajt: pedja.supurovic.net


+1570 Profil

icon Re: foreign key i trigger na child tabeli30.05.2018. u 09:44 - pre 70 meseci
Citat:
Schmidt: Kad god mogu radije podignem novi server, uradim dump na starom i prebacim na novi.


Upravo tako. I bila je muka. Evo Bogdan sad kaže da će to tek da bude muka.

Citat:

Schmidt: Nakon toga, odlucis da unaprijedis referencijalni integritet baze i iskoristis sve prednosti koje isti donosi. A opet, s druge strane, sacuvas i te trigere koji ti rade posao. I sad, kad si pokriven od svega, kad si sve odradio by the book, dodjes u problem jer ti trigeri ne rade, osim ako se izvrse direktno na child tabeli, mimo kaskade.


Ne znam na kavoj aplikaciji radiš, ali pretpostavljam da je nešto veoma specifično to jest veoma je retka potreba. U uobičajenim uslovima, time se obično bavi Data sloj u apliakciji a ne baza.

 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.com
Via: [es] mailing liste

Sajt: mysql.rs


+2377 Profil

icon Re: foreign key i trigger na child tabeli30.05.2018. u 09:49 - pre 70 meseci
sto se "live" upgrade-a tice, mysqlbackup - > replikacija na slave,
upgrade slave-a, promovisanje slave-a u novog mastera i prebacivanje
trafica na novi master .. moze da se uradi sa jako malim downtime-om ...
a vracanje na stari realno nema potrebe ako si vec odradio testiranje da
li aplikacija radi ili ne na novom... u svakom slucaju kada promovises
novog mastera setujes starog kao slave te lako mozes da se vratis na
stari ...
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.com
Via: [es] mailing liste

Sajt: mysql.rs


+2377 Profil

icon Re: foreign key i trigger na child tabeli30.05.2018. u 10:00 - pre 70 meseci
> feature

a vidi razlika je samo u dokumentaciji i predvidivosti ... u ovom
slucaju je ponasanje 100% predvidivo i 100% dokumentovano - dakle feature

> zanimljivih komentara

imali smo mi do sada 5-6 torti za neke bagove... veliki projekat, preko
deceniju star ..

> Ne znam kako da se postavim prema situaciji :)

a vidi ne bih sada da pljujem po nekim bivsim kolegama ali mnogi limiti
su tu zbog prepotentnosti i nezananja nekih ljudi koji su bili u samom
vrhu odlucivanja :( .. engineering debt koji se nakupio za ovih deceniju
ipo je povelik i mnogo stvari se sada placa zbog toga... oracle je mnogo
toga popravio a opet mnogo toga uradio drugacije (dal bolje ili gore ne
umem da kazem iz ove pozicije, pokazace vreme)  .. sta ce biti sa ovim
"bug-om" ideju nemam, koliko ja znam nema WL za njega dakle niko nije
jos ni poceo ozbiljno da razmislja o tome kako bi ga resio, moguce da
postoji ali da sam ga ja nekako preskocio ali..

dakle kako da se postavis - resis problem drugacije :D

ja spadam u "blok" koji smatra da biznis logika ne treba da bude u bazi
i da trigeri + stored procedure i funkcije ne treba da budu u funkciji
biznis logike vec samo u funkciji direktne obrade velikog broja
podataka... mnogi (posebno oni odrasli na oracle app serveru,
sybase/db2/m$sql rdbms-u ... ) se nece sloziti samnom ... ja licno ne
podnosim "Cascade" update i smatram da ref integritet treba da postoji
kao "limit" ali da ne treba baza sama da cisti sebe vec samo da natera
aplikaciju da pocisti sve po redu i kako terba (dakle da delete ti treba
da odradis rucno po redu a ne kroz kaskadu) ... ja imam svoje razloge za
to i znam da postoji i drugi blok koji se ne slaze samnom .. u svakom
slucaju *svaki* rdbms ima svoje limite i kada pogledamo najnoviji sql
standard ne postoji nijedan rdbms koji ga postuje 100% :( ... i onda
kada razvijas app ti ides sa minimalnim zajednickim kako bi mogao da
preskocis na drugi rdbms sto lakse da se ne bi zakljucao za nekoga posto
smo videli kojom brzinom menjaju pravac i nacin komunikacije sa
korisnicima a bogami i kojom brzinom menjaju vlasnike
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.com
Via: [es] mailing liste

Sajt: mysql.rs


+2377 Profil

icon Re: foreign key i trigger na child tabeli30.05.2018. u 10:06 - pre 70 meseci
> Evo Bogdan sad kaže da će to tek da bude muka.

da, izmedju 8.x verzija mysqldump nije kompatibilan ... nisu neke
sumanute razlike i toliko ogromni problemi ali .. ne bi sad da krecem
preduboko u tu temu evo svadjamo se unutar firme mi sami sa sobom vec
duze vreme oko toga .. u svakom slucaju nije nista strasno, realno
najzad je izbaceno sve sto je vec godinama deprecated tako da ako nisi
koristio deprecated stvari nemas problem .. vise podataka na

https://dev.mysql.com/doc/refm...ding-from-previous-series.html

https://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html

pogledati "incompatible changes"
 
Odgovor na temu

Schmidt
RHCE

Član broj: 80784
Poruke: 647
*.static.corp.blic.net.



+10 Profil

icon Re: foreign key i trigger na child tabeli30.05.2018. u 14:14 - pre 70 meseci
Citat:
Predrag Supurovic:
Ne znam na kavoj aplikaciji radiš, ali pretpostavljam da je nešto veoma specifično to jest veoma je retka potreba. U uobičajenim uslovima, time se obično bavi Data sloj u apliakciji a ne baza.


Postoji ta tanka linija po kojoj svi plesemo, kad pricamo o tome sta bi trebalo da radi aplikacija a sta baza. Na kraju krajeva, isto tako mozemo reci i da je ref integritet nesto sto moze aplikacija da odradi, sto je i tacno, jer kad pricamo o MySQL-u, upravo takve stvari morao si da stitis iz aplikacije, do dolaska InnoDB-a. Moje misljenje je tu jako sareno, nemam jasan kurs koji cu izabrati uvijek i u svakoj situaciji. Npr. kad pricamo o ref integritetu, tu bih u 90% slucajeva pomislio "cek, ako to baza vec ima i radi kako treba, zasto da ja to radim". Ali, onda dodje situacija kad imas klijenta koji zeli da ispravi sve svoje greske, pa i brisanje naloga sa 10.000 stavki, pa moras da odlucis sta da radis, npr.:
1. da li da mu dozvolis kaskadno brisanje
2. da li da samo kopiras sve sto je obrisao u neku drugu tabelu
3. da ga pustis da obrise i da mu kazes "drugi put ces paziti, imas backup? uff, nemas, zao mi je, pazi, mogu ja to da ti iskopam, ali to se naplacuje extra"

Naravno, pricam hipoteticki.
Primjer gdje bi se mogao odraditi trigger na kaskadi je tacka 2, iako je primjer bas glup i banalan i rjesiv na drugi nacin. Ali, bottom line, ponasanje baze, bez obzira da li je dokumentovano ili ne, bilo bi lijepo da bude predvidivo u smislu "imam trigger, izvrsice se, nije bitno da li je kaskadno ili ne".

Opet kazem, sve ovo sto pricam je hipoteticki, nekad davno sam trebao bas nesto vezano za ove triggere, naisao u dokumentaciji da to ne moze zbog vec pomenutog problema i odustao, rijesio na drugi nacin, ostao pri MySQL-u. Ali, bilo bi lijepo...
 
Odgovor na temu

Predrag Supurovic
Pedja YT9TP
Užice

Član broj: 157129
Poruke: 6275

Sajt: pedja.supurovic.net


+1570 Profil

icon Re: foreign key i trigger na child tabeli30.05.2018. u 22:17 - pre 70 meseci
Ja spadam u one koji aplikativnu funkcionalnost nikada nisu stavljali na bazu. Radio sam na nekim projektima gde je to radjeno i svaki put se na kraju pokazalo kao kontraproduktivno.

S dtruge strane, meni redovno treba da aplikacija ima kontrolu nad nekim stvarima i smeta mi ako tu kontrolu prepusti bazi. Zato ja bazu uglavnom tretiram kao storage i na njoj radim sam osnovni referencialni integritet koji ne dozvoljava da se napravi neka nekontrolisana šteta a to izmedju ostalog znači da nema kaskadnog brisanja ili sličnih operacija. Moje baze to ne dozvoljavaju. Ako takva operacija treba da se uradi, onda je to posao same apliakcije zato što vrlo često tu moraju da se umešaju i neka biznis pavila o kojima baza nema pojma. I još nisam naišao na slučaj gde mi je takav pristup napravio problem.

 
Odgovor na temu

[es] :: MySQL :: foreign key i trigger na child tabeli

[ Pregleda: 2235 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.