Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: MySQL transaktiot?

Paulus M [15.10.2010 16:58:16]

#

Tuli mieleen tässä yhtä verkkosovellusta vääntäessä, että mitäköhän transaktio mahdollisuuksia voi jäädä huomaamatta.

Ajatellaa, että mulla on Portfolio palvelu, jossa on henkilöitä ja niiden töitä, sekä admineita.

Yhdessä työssä voi olla monta tekijää, näin ollen tekijät voivat muuttaa yhtäaikaa jotain samaa työtä. Näin ollen se muutos henkilöltä, joka tallettaa muutoksensa aiemmin, katoaa, jos toinen tulee muuttamaan samaa työtä yhtä aikaa, eikö?

Eli voitaisiinko tätä kutsua transaktioiksi? Kannattaako tämä torjua esim. siten, että evää pääsyyn saman työn muuttamiselle, jos joku toinen on muuttamassa sitä?


Onko yleensä pienemmissä verkkosovelluksissa oltava hyvin tarkka transaktioiden kanssa, vai onko niihin riskiä useinkaan?

Metabolix [15.10.2010 17:43:10]

#

Tuo monen käyttäjän ongelma on aina olemassa, eikä siihen ole täydellistä automaattiratkaisua: jos muokkaaja jättää homman kesken ja sulkee selaimen, palvelin ei saa tästä mitään ilmoitusta ja työ jää lukituksi. Tämä korjataan yleensä aikarajalla, jolloin taas on vaara, että lukitus aukeaa etuajassa, kun muokkaus kestääkin odotettua pidempään. Toki voi laittaa selaimen päivittämään lukitusta automaattisesti (AJAXilla) parin minuutin välein, mutta tästä päästään takaisin ensimmäiseen ongelmaan, kun muokkaaja lähtee kahville ja unohtaa muokkaussivun auki.

Yksi vaihtoehto on, että muutosten yhteydessä tarkistetaan esimerkiksi aikaleimasta, ettei joku muu ole käynyt muokkaamassa tietoja, ja jos on, ilmoitetaan törmäyksestä ja ohjataan sivulle, jossa näkyvät oma versio ja toisen tekemä versio ja jossa saa korjata tilanteen.

Paulus M kirjoitti:

Onko yleensä pienemmissä verkkosovelluksissa oltava hyvin tarkka transaktioiden kanssa, vai onko niihin riskiä useinkaan?

Tarkistuksen tarpeen pystyt arvioimaan vain itse. Jos osaat vähän todennäköisyyslaskentaa, voit arvioida muokkausten tiheyden ja keston ja laskea tästä odotusarvon törmäysten tiheydelle.

Paulus M [15.10.2010 23:18:33]

#

Kiitti Metabolix!

Ja tuohon vikaan kysymykseen lähinnä liitty se ongelma, että pelkään, ettei osaa huomioida jotain ongelmaa/transaktia potentiaalia, joka tulee esiintymään myöhemmin. Sitten kun ongelman tiedostaan, niin tietty sen saa järjestetyksi.


Eli näin yleisesti ottaen, onko syytä tutkia(tai käyttää paljon aikaa) tarkkaankin kaikkia potentiaalisia transaktioita näin keskimmäärin. Tai mitäs ajattelisit vaikka tuosta mun verkkosovellukseksta, jonka väännän, näetkö potentiaalisia riskejä?

Grez [15.10.2010 23:32:53]

#

Metabolix kirjoitti:

jos muokkaaja jättää homman kesken ja sulkee selaimen, palvelin ei saa tästä mitään ilmoitusta ja työ jää lukituksi. Tämä korjataan yleensä aikarajalla, jolloin taas on vaara, että lukitus aukeaa etuajassa, kun muokkaus kestääkin odotettua pidempään. Toki voi laittaa selaimen päivittämään lukitusta automaattisesti (AJAXilla) parin minuutin välein, mutta tästä päästään takaisin ensimmäiseen ongelmaan, kun muokkaaja lähtee kahville ja unohtaa muokkaussivun auki.

Olen nähnyt sovelluksen, jossa jos käyttäjä lopettaa muokkauksen 5 minuutiksi, niin tulee dialogi että "hei, klikkaa että haluat jatkaa muokkaamista tai sitten tää lukitus vapautetaan, aikaa pari minuuttia".

Ohjeissa sitten kerrotaan että muokkaukset on tarkoitus tehdä kerralla loppuun.

Se myös tallettaa käyttäjän muokkaukset draftiksi siltä varalta, että muokkausta ei ollut tarkoitus jättää kesken. Eli mahdolliset isotöiset muutokset saa sitten pahimmassa tapauksessa kaivettua sieltä.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta