JSON vs. MySQL
Sziasztok!
Az utóbbi hetekben egy flash-es játékokat tartalmazó oldal megírásán munkálkodom és a következő kérdésben várnám tapasztalataitokat, véleményeiteket:
A letöltött játékokhoz tartozik egy-egy json fájl amely a játék információit tartalmazza(név, felbontás). Nem tudom mivel járnék jobban: ha a játék fordítást nem igénylő információit ajax-on keresztül javscripttel kiolvasom a json fájlból és úgy jelenítem meg az oldalon, vagy ha csak arra használom a fájlt, hogy felvigyem a benne talált információkat mysql-be és utána php-val kérdezem le az adatbázisból.
Úgy gondolom(javítsatok ki ha tévedek), hogy az első megoldás talán szerverkímélőbb, míg a második talán gyorsabb lenne. Valamint az első a felhasznált tárhely a második az adatbázis méretét növelné.
Hosszú távon melyiket javasolnátok, egy esetlegesen nagyobb látogatottság esetén (legyen akár napi pár száz látogató)? Ez az első nagyobb teljesítményűnek szánt oldalam
és szeretném az alapjaitól jól felépíteni.
Milyen teljesítmény-tesztelő progit ajánlanátok, amivel tudnék látogatottságot szimulálni(ha lehet ilyet), meg üvegnyakakat diagnosztizálni?
Segítségeteket előre is köszönöm!
Üdv.: Nu7ec
■ Az utóbbi hetekben egy flash-es játékokat tartalmazó oldal megírásán munkálkodom és a következő kérdésben várnám tapasztalataitokat, véleményeiteket:
A letöltött játékokhoz tartozik egy-egy json fájl amely a játék információit tartalmazza(név, felbontás). Nem tudom mivel járnék jobban: ha a játék fordítást nem igénylő információit ajax-on keresztül javscripttel kiolvasom a json fájlból és úgy jelenítem meg az oldalon, vagy ha csak arra használom a fájlt, hogy felvigyem a benne talált információkat mysql-be és utána php-val kérdezem le az adatbázisból.
Úgy gondolom(javítsatok ki ha tévedek), hogy az első megoldás talán szerverkímélőbb, míg a második talán gyorsabb lenne. Valamint az első a felhasznált tárhely a második az adatbázis méretét növelné.
Hosszú távon melyiket javasolnátok, egy esetlegesen nagyobb látogatottság esetén (legyen akár napi pár száz látogató)? Ez az első nagyobb teljesítményűnek szánt oldalam
és szeretném az alapjaitól jól felépíteni.
Milyen teljesítmény-tesztelő progit ajánlanátok, amivel tudnék látogatottságot szimulálni(ha lehet ilyet), meg üvegnyakakat diagnosztizálni?
Segítségeteket előre is köszönöm!
Üdv.: Nu7ec
Szerintem
A statikus fájlok kiszolgálása mindig gyorsabb, főleg, ha nem futnak le semmiféle értelmezőn (tehát pl nem php kiterjesztésűek).
Tehát ha csinálsz egy publikus alkönyvtárat a webszerver wwwrootjában, amibe az egyes fájlok konfigját nyersen beteszed, az mindenképpen jobb megoldás, mintha PHP-vel előbb lekérdezd az adatbázis tartalmát, majd az eredményből json kimenetet gyártasz.
Ha a konfiguráción sűrűn kell módosÍtani, akkor a köztes megoldás üdvös lehet, név szerint az, hogy az adatokat adatbázisban tárolod (a könnyebb szerkeszthetőség végett), és bizonyos időközönként (vagy on-demand, de semmiképpen sem lekérésenként) újrageneráltatod a nyers json fájlokat, amiket szintén statikusan szolgálsz ki.
A fent leÍrt megoldások csak abban az esetben jók, ha mindenképpen AJAx-on keresztül kell elérned a fájlt egy külön requestben. Ha megoldható, hogy - pl. a flash paraméterein keresztül- "inline" add át a beállÍtásokat, akkor ez a megoldás a legjobb. Hiszen ekkor 2 helyett csak 1 http kérés hajtódik végre, ami minden szempontból előnyös. Ekkor is a leggyorsabb módszer a statikus, vagyis egy legenerált fájl include-ja.
Attól függ
Feltételezem, mindenképp lefuttat egy lekérdezést a játékokhoz, például, hogy kinyerje a játék címét, az értékelését, statisztikáit és a többit. Ekkor pedig érdemesebb ezzel a lekérdezéssel együtt ezeket a beállításokat is onnan lehívni, mint még egy fájlműveletet is végezni.
Kicsit félreérthető voltam...
A json fájlok meglehetősen statikus tartalmúak, a játék neve, felbontása, tag-ek, leírás stb. szerepel bennük, így később nem tervezem bolygatni őket, csak a játék feltöltésekor.
Ceriak feltételezésére: igen
Bár asszem félig meddig meg is válaszoltad a kérdésemet..:)
Abból amit írtál azt vettem ki, ha már sql lekérdezést futtatok akkor ésszerűbb mindent egyből onnan lekérnem.
A másik kérdésem viszont az lenne, hogy mit használtok/ mit ajánlanátok teljesítményméréshez, teszteléshez?
Röviden
Most, hogy elszakadtunk az általánosságoktól, írd le pls konkrétabban, hogy fest ez az egész workflow, mert nem tiszta a fejemben. Ha teszemazt az adatbázis használata mellett döntesz, milyen formátumban állítanád elő a php kimenetét a selectből?
Adatbázis
CouchDb
Köszi
Sajnálom, hogy kihagytam az erről szóló előadást a webconfon:(. De rákeresek, hátha fent van az is. Köszönöm a tippet!
Azt hiszem eldőlt...
A felhasználó kategóriát választ az oldalon. Az adatbázisból megtörténik a megfelelő kategóriájú játékok kilistázása. Kattint egy játékra, ekkor betöltődik a játék saját oldala (maga a flash játék + a hozzá tartozó infók).
Php-val a játék infói a select lekérdezés után egy tömbbe kerülnek, ebből használom fel a megfelelő adatokat és töltöm be az oldalsémába. A játék és a hozzá tartozó kis kép elérési útja is az adatbázisban van tárolva.
Ide gondoltam az ajax-os megoldást, mivel itt már csak egy darab ajax lekérésre lenne szükség.
Php-val nem akarom feldolgoztatni a json-okat, akkor már egyszerűbb ha az egész megy az adatbázisba és onnan érem el (így már nem tárolom külön a json fájlokat sem + az adatbázis gyorsabb szerintem), ez az ajax-os megoldás csak azért fordult meg a fejemben, hátha valamennyi terhet le tudnék így venni a szerverről (még ha nem is omlik össze tőle :D).
Mindenképp valamilyen hibrid megoldásra szorulnék, mert mégha maradna is az ajax akkor is lennének olyan dinamikus infók, amelyeket adatbázisból kellene kiolvasnom (értékelés, eddigi játékok száma stb.).
Sajnálom, ha kissé "szőrszálhasogatóra" sikerült a kérdés, de ez az első ilyen fejlesztésem és szeretnék olyan oldalt csinálni ami egy esetleges nagyobb látogatottság esetén is megállná a helyét, ezért próbálok minél több mindent kiszervezni a kliensoldalra. Valamint ezért érdeklődtem a teljesítménymérés
után is. Eddig firebug-ot használtam a méregetéshez, de gondolkozom egy komolyabb eszköz beszerzésén. Ha valaki tudna ajánlani valami jót azt szívesen fogadom.
Köszönöm a segítségeteket! Azt hiszem maradok az adatbázisnál.
Üdv.: Nu7ec