Eli oon taas siirtynyt pelinteon puolelle ja väännän selainpohjaista nettipeliä, jossa kaksi pelaajaa taistelee toisiaan vastaan.
Tuli mieleen, että oisko mitään järkevämpää tapaa kuin MySQL, niin tallentamaan
serverille taistelussa tapahtuvat muutokset?
Ajattelin, että voisi tehdä niin, että taistelun lopputulos tallennettaisiin tietokantaa, kun taistelu on päättynyt. Taistelun aikana kaikki tiedot voitaisiin pitää koneiden kekseillä ja serverillä, jos mahdollista.
Onko siis mitään muuta tapaa tallentaa serverille kamaa, kuin MySQL, eli pystyisinkö jotenki hyväksi käyttämään serverin välimuistia siten, että tilapäiset muuttujat tallentuisi välimuistiin eikä kovalevylle, miten MySQL ei tee. Eli esim. elämäpisteiden muuttaminen jouduttaisiin MySQL:llä eka siirtämään serverin kovalevylle jostain HTTP pyyntönä vihollisen koneelle, joka vie aikaa. Kun se voitaisiin kenties jollain tekniikalla laittaa vain serverin välimuistiin josta suoraan vihollisen koneelle.
Käytän pelissä seuraavia tekniikoita: PHP, Javascript, MySQL
MySQL:llä voi luoda taulun palvelimen RAMiin.
Musta tuntuu, että palvelimella tehdyt toiminnot eivät tässä tapauksessa vie kuitenkaan niin paljon aikaa, että verkkoviiven ja käytettyjen tekniikoiden huomioon ottaen tapahtuisi mitään erityisen mullistavaa nopeuttavaa hyötyä.
Okei, kiitokset tiedoista. Verkkoviive voi olla vaikka 10 sekuntia, se ei haittaa koska peli on vahvasti vuoropohjainen ja ajattelupainotteinen. Sitä vaan mietin, että jos palvelinta rasittaa useat sadat moninpelaajat, niin olisko helpompi jos ei sen tarttis kokoajan surruttaa kovalevyä jokaisen taistelun tullessa.
Mutta tutkimpa nyt tuota Lanun ideaa kuitenkin, kuullostaa mielenkiitoiselta.
Tiedot eivät yleensä mene suoraan kovalevylle, vaan välimuistia saattaa automaattisestikin olla sekä MySQL:n että käyttöjärjestelmän tasolla. Mutta kyllä keskusmuistin käyttö itsekin on hyvä idea.
Suurin hyöty siitä muistin käytön käskemisestä on, että palvelin tietää ettei kyseistä taulua ole missään vaiheessa tarkoitus tallentaa levylle eikä näin ollen yritä missään vaiheessa kirjoittaa sitä kiintolevylle.
Ainakin ACID-testin läpäisevissä levylle tallentavissa kannoissa mielestäni kannan täytyy oikeasti kirjoittaa tieto jossain muodossa levylle ennen kuin kuittaa clientille että muutos on onnistunut. Voi toki olla että se on kirjoitettu vasta transaktiologiin ja palvelin merkkaa transaktiologin tapahtuman valmiiksi vasta kun se oikeasti on kantatiedostoissa. Toki jos on patterivarmennettu levyvälimuisti, niin saattaa olla ettei niitä ihan fyysisille levyille kirjoitetakaan heti. Tai tietty voi kai ne konffata silleenkin, että ne on hetken paristovarmentamattomassa levyvälimuistissa, jos tietoturva ei ole kovin tärkeää.
Aihe on jo aika vanha, joten et voi enää vastata siihen.