freak Posted August 29, 2010 Report Share Posted August 29, 2010 Vai memcache noder tikai pie atkartotas datu nolasishanas vai ari noder pie update/insert? Piemeram, vai var izdarit, ka tiek updeitota nevis datubaze, bet memcached un tad , piemeram, ik pec 10 min automatiski dati tiek parakstiti uz DB? p.s. svarīgi, ka updeitam vajadzetu notikt automatiski ik pec kada laika, nevis usera izsauktam. Quote Link to comment Share on other sites More sharing options...
Kaitnieks Posted August 29, 2010 Report Share Posted August 29, 2010 Piemeram, vai var izdarit, ka tiek updeitota nevis datubaze, bet memcached un tad , piemeram, ik pec 10 min automatiski dati tiek parakstiti uz DB? Automátiski PHP skriptus vari izsaukt ar cron (uz newindows) vai at (uz windows). Uz páréjiem jautájumiem atbilde ir "var", tikai skaties, lai atmi'na nepietrúkst. Quote Link to comment Share on other sites More sharing options...
freak Posted August 29, 2010 Author Report Share Posted August 29, 2010 Ok, skaidrs, ka tā var darīt, bet vai tā ir tipiskā metode ko dara, ja ir daudz updeiti vai arī dara kā savādāk ? vai memcache noder tikai selectam? Vel es iedomājos vai nebūs tā, ka ja pārbauda pēc 5 min, kas jāapdeito un tad updeitos vai tad baigi nesabremzēsies viss, jo būs daudz updeit vaicājumu vienlaicīgi. Quote Link to comment Share on other sites More sharing options...
Kaitnieks Posted August 29, 2010 Report Share Posted August 29, 2010 Tā nav tipiska metode un, protams, ka uzkrājot datus un liekot datu bāzē visus uzreiz, būs aizture. Mēģini strukturēt sistēmu tā, lai nebūtu milzīga rakstīšanas slodze uz vienu DB serveri. Veic testus, lai pārbaudītu, vai vispār tagad nav veltīgs satraukums - varbūt pie korekti izplānotas datu bāzes tā slodze nav tik liela, kā liekas. Varbūt vari pastāstīt konkrētāk par projektu un ierakstāmajiem datiem? Sarežģītus, skeilojamus risinājums vajag diezgan reti. Quote Link to comment Share on other sites More sharing options...
Kaklz Posted August 29, 2010 Report Share Posted August 29, 2010 Lai iztiktu bez cron, viens no standarta risinājumiem, piemēram, statistikas vākšanai, ir skaitīt memcache counteri un pie noteikta limita izpildīt vienu insertu uz datubāzi, konkrētā lauka vērtību uzreiz palielinot par 100. Piemēram, skaitam pageview skaitu un teiksim katru 100. vai 1000. rakstam datubāzē un resetojam memcache counteri. Quote Link to comment Share on other sites More sharing options...
freak Posted August 30, 2010 Author Report Share Posted August 30, 2010 Tā nav tipiska metode un, protams, ka uzkrājot datus un liekot datu bāzē visus uzreiz, būs aizture. Mēģini strukturēt sistēmu tā, lai nebūtu milzīga rakstīšanas slodze uz vienu DB serveri. Veic testus, lai pārbaudītu, vai vispār tagad nav veltīgs satraukums - varbūt pie korekti izplānotas datu bāzes tā slodze nav tik liela, kā liekas. Varbūt vari pastāstīt konkrētāk par projektu un ierakstāmajiem datiem? Sarežģītus, skeilojamus risinājums vajag diezgan reti. Taisu datorspēli flash + php. Domāju, ka būs vienlaicīgi daudz lietotāju, tāpēc domāju, ko varētu izdarīt, lai nenoslogo DB. Diezgan daudz sanāk update vaicājumi, jo uz katru darbību jānoņem naudas, jāpieskaita citi punkti, jāapdeito karte utt. Quote Link to comment Share on other sites More sharing options...
Kaitnieks Posted August 30, 2010 Report Share Posted August 30, 2010 Ja backends jau ar rakstīšanu vien netiks galā, tad būs baigās problēmas. Vari veidot spēli iekšēji tā, lai DB serveris netiktu visu laiku raustīts. Piemēram, izveido starpnieku pirms php (vai atmetot php vispār), kas nodrošina konekciju apstrādi no flash un kešošanu. Tas būtu kā serviss, kas saņem konekcijas, veic spēles mehāniku atmiņā un ik pa laikam ieraksta spēles stāvokli datu bāzē. Piemēram, visa spēlētāju informācja glabājas atmiņā, līdz ar to, konekcija, kas pieprasa spēlētāja informāciju, piemēram, naudas daudzumu, datu bāzi nemaz neaiztiek, jo serviss to atgriež no atmiņas. Serviss paralēli darbina threadu, kas visu informāciju cikliski pārstumj uz datu bāzi. Bet ja tas ir pārāk darbietilpīgi, tad vienkārši izstrādā gameplay tā, lai nebūtu masīva nemitīga ierakstīšana. Parasti jau spēlēs rakstīšana ir tad, ja veic kādu darbību - pārējais ir apskatīšana/lasīšana. Vienīgi action spēlēs rakstīšana ir vismaz tikpat intensīva kā lasīšana, ja taisi tādu, tad backends jāraksta līdzīgi kā aprakstīju augstāk - varbūt ne visai spēlei, bet vismaz nemitīgi mainīgajai daļai. Quote Link to comment Share on other sites More sharing options...
mixis Posted August 31, 2010 Report Share Posted August 31, 2010 Ja kautko inserto/updeito DB, tad arī iekš memcache atjauno uz aktuālajiem datiem. tā vismaz selekti atkritīs. Tik daudz cik viekt visus insertus/update DB serverim ir jāspēj. Quote Link to comment Share on other sites More sharing options...
hustler Posted September 9, 2010 Report Share Posted September 9, 2010 Ja kautko inserto/updeito DB, tad arī iekš memcache atjauno uz aktuālajiem datiem. tā vismaz selekti atkritīs. Tik daudz cik viekt visus insertus/update DB serverim ir jāspēj. selecti man atkriit ari taapat, jo selectu izmanto tikai sakuma ieejot spele un panjemot visus datus. pectam visi speles dati glabajas pashaa spele + paraleli uz katru izmainju parsutiti uz datu bazi (update/insert). ideali jau butu, ja butu jasuta dati uz serveri tikai spiezhot SAVE, bet tas nav diezko erti lietotajam. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.