Avatar billede groyk Novice
05. marts 2009 - 11:54 Der er 8 kommentarer og
1 løsning

Hvad er transaktionsstyring lige helt nøjagtigt??

Hej eksperter

Har bygget mit eget mini erp system i php/mysql men er ikke MEGA hård til SQL jeg har følgende spørgsmål.

1. Hvad er transaktionsstyring??
2. Hvordan sikrer jeg mig at jeg henter den rigtige række.
3. Hvordan sikrer jeg mig at to brugere ikke overskriver hinandens arbejde? (Skal vel låse rækken når der redigeres, på den måde kan andre brugere "kun" få læseadgang)

ex. 2
bruger 1 og 2 opretter en post i databasen på nøjagtigt samme tid, hvordan sikrer jeg mig at databasen ikke sender samme id retur? (sidste række i databasen) (Muligvis kun teoretisk, har aldrig haft probs. med dette)

ex. 3.
bruger 1 og 2 loader data fra databasen samme tid.
Bruger 1 retter og gemmer efter 2 min.
Bruger 2 reloader ikke siden og trykker gem efter 12 min.

Nu er de opdateringer bruger 1 foretog simpelt væk!!

Muligvis det er her transaktionsstyring kommer til sin ret, eller??

Håber der er en der kan give mig noget info herom.

Bruger idag MySQL, men har overvejet at skifte til PgSQL da jeg mange gange har læst at MySQL ikke understøtter transaktionsstyring. Men synes nu lige jeg ville undersøge sagen først!
Avatar billede arne_v Ekspert
05. marts 2009 - 15:16 #1
spm 1:

transaktioner er flere SQL oipdateringer som er bindtet saaledes at enten udfeoeres alle eller ingen

spm 2 & ex 2:

det styrer databasen internt med synkroniserings mekanismer

spm 3 & ex 3:

det er flere muligheder

se http://www.eksperten.dk/guide/996 under "Long time"

(men hele artiklen er nok relevant !!)
Avatar billede groyk Novice
06. marts 2009 - 11:31 #2
Hej Arne

Tak for info og specielt tak for linket.

Vedr. transaktionsstyring. Er det uproffesionelt ex. at bruge MySQL og så lave "styringen" i programmeringesproget? (PHP, .net eller whatever)

Ex. efter insert/update ell lign kontrollere om alle data er indsat/opdateret, hvis ikke sende en fejl meddelse til en administrator med de forespørgsler der er problemer med? (Der burde jo ikke ske fejl i et produktionsmiljø :-)

Ved godt det ikke er den rigtige løsning, men Synes RIGTIGT godt om MySQL som db!! :-)

Som nævnt kunne alternativet være PgSQL eller?

Db'en skal gerne være gratis samt skulle kunne afvikles på både Linux og windows.
Avatar billede arne_v Ekspert
06. marts 2009 - 14:46 #3
MySQL understoetter transaktioner med InnoDB tabeller.

Det er ofte svaert at emulere transaktioner i app.

Men hvis det er mennesker og minutter som du antydede i spoergsmaalet, saa er det som forklaret i artiklen andre mekanismer end database transaktioner der skal til.
Avatar billede groyk Novice
06. marts 2009 - 17:25 #4
Kunne jeg godt læse mig til i artiklen, vedr. mennesker og minuter.

Min tanke er bare. Et ERP system helt uden transaktions styring muligvis er en dødsejler fra start??

Når jeg nu går med disse tanker, vil det så være en god ide at skifte til ex. PgSQL?

Kan bare bedre lide MySQL, da det vil kunne trække mange flere udviklere til projektet.

Kan det laves ordentligt uden?
Avatar billede groyk Novice
06. marts 2009 - 17:26 #5
Vedr. InnoDB Har hørt at det kører ustabilt. Og igen begrænser det mange for at smide det op på en webhost for at teste det.
Avatar billede arne_v Ekspert
06. marts 2009 - 18:22 #6
Jeg vil tro at et ERP system har brug for transaktioner.

Ikke p.g.a. manuelle editeringer men for at sikre konsistens i data ved opdateringer som involverer flere SQL saetninger.

Du flytter penge fra en konto til en anden konto. Det er 2 UPDATE. Det er surt hvis systemet crasher efter at den ene er udfoert men foer den anden er udfoert.

Transaktioner loeser det problem.
Avatar billede arne_v Ekspert
06. marts 2009 - 18:23 #7
Der er mig bekendt en del InnoDB brugere - du boer sagtens kunne faa det til at koere stabilt.
Avatar billede groyk Novice
06. marts 2009 - 19:53 #8
Nøjagtig samme tanke som jeg har. Vil prøve at opsætte det med InnoDB.

Kan man køre begge dele? Altså både InnoDB og MyISAM?

Sådan at jeg kun kører InnoDB på de tabeller hvor det er nødvendigt?

Eller er det bedre at kører InnoDB på alle tabeller så datastrukturen er ens?

Til sidst. Smid venligst et svar. Så lukker jeg.
Avatar billede arne_v Ekspert
06. marts 2009 - 20:04 #9
En enkelt MySQL server kan godt koere baade InnoDB og MyISAM.

Man bestemmer ved tabel oprettelse om en tabel skal vaere det ene eller det andet.

Jeg ville nok koere alle tabeller hoerende til en bestemt applikation som samme tabeltype. I modsat fald bliver recovery noget rod.

Og svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester