MySQL palvelimen toiminnassa!
Minulla on MySQL asennettuna palvelimeeni, olen vielä hieman alkutekijöissäni MySQL mahdollisuuksien kanssa, ja vielä myös hieman vierastan tietokantojen käyttöjä.
Minulla on tarkoitus pelipalvelu palvelin kotiprojektina rakentaa, palvelimen MySQL laitetaan sisältämään seuraavat ->
1) Kävijälaskuri.
2) Käyttäjälista, joka sisältää käyttäjänimet, salasanat, jne..
3) Pelitallenteet MySQL kantaan, tämä on vähän ihmettelyn kohteena, onko sittenkin parempi laittaa suorat filetallenteet, yksi pelitallenne on yleensä alle 1k-4k, ja jos kanta joutuu joskus tilanteeseen että alkaa järjestelemään, nämä datat kun muuttuvat sitten pelimäärien mukaan, varmaankin paree tallentaa kantaan vain pelitallenteitten filenamet ja tiedot mitkä pelit ovat aktiivisia, ja databasen mukaan sitten päivitellä fileitä, kannasta tarkistaen onko pelitiedosto esim. vanhentunut, taikka jo pelattu.
Minulla on myös hieman huolta tilanteitten takia joissa database vaurioituu, taikka jos jokin MySQL error jää päälle, minulla ei taida olla tietotaitoja tälläisten tilanteitten korjaamiseen, kuinka yleisiä MySQL errorit ovat ja missä tilanteissa niitä yleensä muodostuu.
Tuossa on alkeis perus mietteet, onko niissä isoja ajatus puutteita jotka saattaisivat haitata palvelun toimintoja ?
------
Älä nyt missään tapauksessa sotke tiedostoja tuohon. Tietokanta hoitaa pelitilanteen tallentamisen todennäköisesti tehokkaammin kuin tiedostoviritelmäsi. Järki käteen: kuvitteletko todella, että sinun pieni harrastelijaprojektisi päätyisi sellaisiin mittoihin, että ammattikäyttöön suunnitellut tietokannat eivät sopisi siihen? Myös riski tietokannan virhetilanteisiin on huomattavasti pienempi kuin se riski, että omat viritelmäsi hajoaisivat. Mahdollisia syitä ongelmille ovat mm. tekniset viat palvelinkoneessa ja bugit käyttöjärjestelmässä.
Muista käyttää InnoDB-tietokantamoottoria (ohjeet Ohjelmointiputkan MySQL-oppaassa, käytä hakua), sillä toimii suunnilleen kaikki paremmin ja varmemmin kuin MyISAMilla.
Onko pelitilanteiden tallentaminen tietokantaan edes välttämätöntä? Käsitin aiemmista keskusteluista, että pelaajat ovat jatkuvasti yhteydessä palvelimeen ja että pelilogiikka on appletissa, joten eikö riitä, että viestin saapuessa se välitetään muille pelaajille ja sitten unohdetaan?
Tiedostot!
1)
En kuvittele että ammattikäyttöön suunnitellut tietokanta ohjelmat olisivat huonoja, mutta, ajattelin mahdollista tilannetta, jonka mainitsinkin, eli sitä että tietokanta joutuisi usein järjestelemään, tallenne stringejä 1k-4k, joita päivitetään sitten tietenkin sen mukaan mitä pelejä pelataan, oman viihtyvyyden vuoksi otan tämän tilanteen huomioon että pelejä pelataan paljon, ja tällöin on palvelimen CPU ja RAM resurssit ongelma ei tietokanta ohjelma, tallennus tiedostoja käyttäessä ei MySQL järjestely ole ongelmana.
2)
Katselen tuota Ohjelmointiputkan opasta, tuntemattomia ovat vielä InnoDB ja MyISAM.
3)
Ajattelin että olisi mukava jos olisi live pelien lisänä mahdollisuus tallenteitten käyttöön, pelit ovat Applettien muistissa, eikä palvelin tarkista siirtoja, vain appletit, mutta on mukava jos pelit on mahdollisuus tallentaa palvelimen kovalevylle, olivat ne sitten keskeneräisiä taikka jo pelattuja.
----
Mitä muut tuumaavat tuosta tiedostokäytöstä tallenteitten kohdalla, koska palvelimen CPU ja RAM resurssit ovat rajalliset ja ajattelin että turha MySQL järjestely jäisi pois, jo muutamien sekunttien mittainen CPU 100% saattaa lagittaa live pelejäni pahoin.
Lisänä siis yhä huolettaa mahdolliset virhetilanteet, missä kohdin yleisimmät ongelmat ovat kun aloittelija käyttää MySQL kantoja ?
------
1) Et taida paljon ymmärtää tietokoneista? Tiedostotkin ovat levyllä varsin mutkikkaalla tavalla järjestyksessä, ja niistä aiheutuu tietokoneelle lopulta enemmän vaivaa kuin tietokannasta. Tietokanta ei myöskään hirveästi "järjestele" tietoa itsekseen, päinvastoin. Tietokanta on suunniteltu siihen, että tietoa jatkuvasti tulee ja menee, ja sen takia tiedon lisäys ja poisto on toteutettu huomattavasti tehokkaammin kuin yksittäisten tiedostojen lisäys ja poisto käyttöjärjestelmässä. Käytettyjen menetelmien takia tietokanta vie yleensä jonkin verran ylimääräistä tilaa, koska tiedot eivät tallennu aivan tiiviisti. Tämä kuitenkin vähentää huomattavasti tuota pelkäämääsi resurssien käyttöä. Lisäksi saavutat huomattavan hyödyn jo sillä, että yhden pelin kaikki tieto on yhdessä paikassa eikä hajallaan.
Turhan kova sävy taas!
lainaus:
1) Et taida paljon ymmärtää tietokoneista?
Rakennan kokonaisen pelipalvelun jossa on 30+ multiplayer Java peliä, lisänä tulevaisuudessa yksittäisiä C++ pelejä. Ensimmäinen tietokone joskus -84 ( Sinclair 48k ).
Mutta, lauseesi on rakennettu niin, että en osaa vastata ? Harrastajahan silti tosin olen vain, ei koulutusta !
lainaus:
Tiedostotkin ovat levyllä varsin mutkikkaalla tavalla järjestyksessä, ja niistä aiheutuu tietokoneelle lopulta enemmän vaivaa kuin tietokannasta. Tietokanta ei myöskään hirveästi "järjestele" tietoa itsekseen, päinvastoin. Tietokanta on suunniteltu siihen, että tietoa jatkuvasti tulee ja menee, ja sen takia tiedon lisäys ja poisto on toteutettu huomattavasti tehokkaammin kuin yksittäisten tiedostojen lisäys ja poisto käyttöjärjestelmässä. Käytettyjen menetelmien takia tietokanta vie yleensä jonkin verran ylimääräistä tilaa, koska tiedot eivät tallennu aivan tiiviisti.
Ok, ajattelin että perus levy toimet ovat samanlaisia MySQL ja JAVA tallenteitten kohdalla, myöskin MySQL pakkaus ja purku aiheutti mietteitä.
lainaus:
Tämä kuitenkin vähentää huomattavasti tuota pelkäämääsi CPU- ja RAM-resurssien käyttöä. Lisäksi saavutat huomattavan hyödyn jo sillä, että yhden pelin kaikki tieto on yhdessä paikassa eikä hajallaan.
En minä varmaankaan pelkää, minä vain mietin ja ihmettelen tässä näitä MySQL ja Java linja alkeita, mietin myös että Java buffer reader/writer olisi varsin tehokas tallentamaan pelitilanteita tiedostoihin, MySQL sisältäessä tiedon mikä peli on aktiivinen, minä yhä ihmettelen koska MySQL taitaa pakata tietoa tiedostoihin, mutta, luotetaan nyt sitten, eipähän ole oma vika jos menee metsään.
Eli, MySQL ei ala järjestelemään mega kaupalla pakattuja tiedostoja, silloin tällöin, jos sieltä välistä tempasee ajoittain pari kiloa pois, taikka lisää pari kiloa, taikka updateaa pari kiloa, onkos tämä perus asetus vaiko joudunko säätämään jotakin ?
Ok.
-------
kpzpt kirjoitti:
MySQL taitaa pakata tietoa tiedostoihin
En usko. Tuommonen hidastais liikaa, ja levytila on halpaa. Huomaathan, että binäärimuodossa tallennettu data ei välttämättä oo pakattua.
kpzpt kirjoitti:
MySQL ei ala järjestelemään mega kaupalla pakattuja tiedostoja, silloin tällöin, jos sieltä välistä tempasee ajoittain pari kiloa pois taikka lisää pari kiloa taikka updateaa pari kiloa
Ei.
kpzpt kirjoitti:
onkos tämä perus asetus vaiko joudunko säätämään jotakin ?
On.
kpzpt kirjoitti:
Turhan kova sävy taas!
Toisaalta olen hieman samaa mieltä, mutta ymmärrän toisaalta myös Metabolixin turhautumisen.
Aika monta kertaa on mielestäni nämäkin asiat käyty läpi ja netistäkin löytyy runsaasti materiaalia aiheesta.
Sinänsä hyvä tietysti miettiä mahdollisia ongelmatilanteita, mutta jostain syystä monet esittämäsi ongelmaskenaariot tuntuvat olevan ihan itse kehittämiäsi asioita, joita ei todellisuudessa ole olemassakaan. Esimerkiksi mikä ihme on "MySQL järjestely" ?
Siinä olet oikeassa, että huonosti tehty tietokannan käyttö saattaa aiheuttaa pullonkauloja, mutta ihan yhtä helppoa se on käytettäessä tiedostoja.
Ok!
Minä koen että tämä minun ongelmani rakentaa lauseita kun on tietokoneista kyse on taas suurin ongelma, en osaa kysyä näitä perus kysymyksiä kunnolla, taikka siten kuin te koulutetummat odotatte että kysymykset rakennetaan, ja myöskin netistä muuten, niin, englannin kielisen tietokone tekstin lukeminen on minulle osoittautunut todella hitaaksi, en pysty lukemaan mysql ohjeita taikka java netti liikenne sivuja, sillä tyyliin että luen sivu kerrallaansa ja opin lineaarisena, joudun usein palaamaan sivuille, ja usein myös luen mutta en osaa ymmärtää missä milloin käyttää tietoa, ja usein myös tuppaan ohittamaan toisen luokan tietona tärkeitä kohtia.
------
Että noin, mutta, tässä rakentelen nyt MySQL sovellusta PHP kera, laitan sivustolle MySQL laskurin toimintaan tänään ja huomenna.
------
"MySQL järjestely" on minusta tilanne jossa MySQL tietoa renkataan edestakaisin ja tieto kuitenkin on kovalevyllä, useita jatkuvasti muuttuvia tableja, joita päivitetään kovalevylle, en tiedä kuinka MySQL tallentaa tiedon, oletin että käyttää harvoja gzip tiedostoja ennemmin kuin kaikki eri tieto omiin tiedostoihin, putkassa sanotte että bitit ovat halpoja minä luulin että palvelin bitit ovat kalliita !
----
Hyvän ohjelmoijan tärkeimpiä ominaisuuksia lienee taito etsiä tietoa. Lisäksi täytyy ymmärtää ohjelmoinnin/ohjelmointikielen perusperjaatteet, jotta tietoa osaa hyödyntää tehokkaasti. Tämän taas oppii parhaiten ohjelmoimalla. Ohjelmointiin tarvitsee taas huomattavaa sitkeyttä, ainenkin aluksi.
Aihe on jo aika vanha, joten et voi enää vastata siihen.