08. september 2003 - 13:58Der er
13 kommentarer og 2 løsninger
Er der behov for synkronisering af db adgang?
Hvis man forestiller sig en server der tilbyder database adgang for x klienter. Er der så et behov for at synkronisere database tilgangen, således at der ikke opstår samtidig opdatering af en tubel i databasen. Så vidt jeg kan læse mig til på MySQL anvender dette database system table locking. Dvs. er en process/tråd i gang med at udføre update, så bliver øvrige forsøg på update/select mv. placeret i en kø. Jeg kan derfor ikke se behovet for synkronisering...er der et?
Der vil altid være behov for at synkronisere adgang til en database, det er derfor man anvender en database-server. MySql er i sig selv en databaseserver og sørger derfor for at opdateringerne sker korrekt.
Hvis du laver mere komplekse opdateringer: sandsyneligvis ikke.
Det er dog ikke svært at finde eksempler hvor det er nødvendigt, men hvis man tænker sig lidt om med den måde man acceser databasen på, så er det ikke nødvendigt fordi databasen selv ordner det.
Okay...jeg uddyber lige lidt: En klient kalder en metode på en server, der har en MySQL DB liggende. Serveren tilbyder metoden opdaterDatabase(string sqlStreng) der connecter til databasen, og foretager eksekverer den medsendte sql streng op mod databasen. Er der et behov for at foretage synkronisering af denne metode? Jeg er fuldstændig enig med dig i at der er et synkroniserings behov, men som jeg ser det klarer databasen dette problem. Som applikationsprogrammør behøver jeg ikke tænke på om der er 10 klienter der bruger denne metode
INSERT INTO tabel (id,navn) VALUES(n+1, 'et eller andet')
Synes godt om
Slettet bruger
08. september 2003 - 14:14#7
Når du bruger transaktionsbeskyttelse ved inserts/updates får du den synkronisering du har brug for. Transaktionsbeskyttelse vil sørge for at din tabel/database er låst sålænge du opdaterer, og sætte de øvrige klienter i kø indtil din opdatering er færdig.
det er der ikke. Og ja jeg medsender en sql kommando til en applikationsserver, der igen har forbindelse til en webserver med MySQL databasen. Jeg var selv kommet frem til at pga databasens locking mekanisme er der ikke noget synkroniseringsbehov....ville bare gerne lige bekræftes :)
arne_v => og det problem der så kan opstå med ovenstående pseudo kode er at du ikke når at indsætte den ny post i databasen før en anden klient har gjort dette, og dermed er din primærnøgle ugyldig?
Det fandt jeg ud af.....jeg er vist ved at være kulleret i hovedet. Måske jeg skulle holde en lille pause :)
Synes godt om
Ny brugerNybegynder
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.