Ha MySpace -t vagy iWiW-et kellene készítened... hogyan csinalnad?
Elég sokat foglalkozok mostanában adatbázis tervezéssel és egyik nap elgondolkodtam: Ha egy myspace vagy iwiw szerű alkalmazást kéne készítenetek akkor milyen fajta adatbázis modellt használnátok ? Egyáltalán milyen adatbázist ?
Vegyük az egyszerű példát mysql-ben: myisam, vagy innodb motort használnátok? Szükség van tranzakciókra egyáltalán?
A másik kérdés ami foglalkoztatott, az az hogy az emberek egymással való kapcsolatát miben tárolnátok ? Az rendben van egy létrehozhatunk neki egy xref adatbázis táblát, de amikor arra kerül a sor, hogy a legrövidebb utat megtaláljuk két ember között akkor (szerény tudásom szerint) egy gráfban való keresést kell végrehajtani valahogyan, ami igencsak sokszor fordul adatokhoz, így sok select lassú ... tehát célszerű lenne a kapcsolatokat (emberek egymással való kapcsolatát) valami más módon is tárolni nem?
mcz
■ Vegyük az egyszerű példát mysql-ben: myisam, vagy innodb motort használnátok? Szükség van tranzakciókra egyáltalán?
A másik kérdés ami foglalkoztatott, az az hogy az emberek egymással való kapcsolatát miben tárolnátok ? Az rendben van egy létrehozhatunk neki egy xref adatbázis táblát, de amikor arra kerül a sor, hogy a legrövidebb utat megtaláljuk két ember között akkor (szerény tudásom szerint) egy gráfban való keresést kell végrehajtani valahogyan, ami igencsak sokszor fordul adatokhoz, így sok select lassú ... tehát célszerű lenne a kapcsolatokat (emberek egymással való kapcsolatát) valami más módon is tárolni nem?
mcz
Tárolt eljárás plusz gráfalgoritmusok
Ami a skálázást illeti, ha egy mysql-en dolgozol, szinte biztos hogy előbb-utóbb korlátnak ütközöl, mert egy kép vagy egy master-slave cluster már nem tudja ellátni a dolgokat, kénytelen vagy egy több gépes, middleware támogatott adatrendszert létrehozni, értelmes részfeladatokra bontani a dolgot.
felmerülő kérdések
Üdv,
Felhő
Bocs'
Szal első körben nem a Bellman-Fordról, hanem a Floydról van szó, ami az össze lehetséges pont között leképezi a távolságokat. Szal Dijkstra és Floyd, ebből lehet valamit elkezdeni.
Ami az inkrementális fölépítést illeti, ha tfh van egy halmaz, amelyben ismertek a távolságok, akkor egy új pont fölvétele nem nagy overhead, viszont meg kell nézni egy-egy új él hogyan változtatja meg az adatbázist... szóval ezzel lehet játszani, de minél több adatot célszerű adott esetben előre földolgozni.
Ami a mysql-t illeti, ha nem skálázhatóan építi föl a rendszert, max. master-slave elrendezéssel, mint ahogy a MySQL azt támogatja (replikációval), akkor egy idő után ki fog futni a dologból mert a szükséges írások mennyisége annyira sok lesz, hogy a master gép azt nem bírja.
mysql multi master
Üdv,
Felhő
Körbemegy
Ha mondjuk összekötök két új pontot, akkor az összes utat végig kell nézni (kényszerűen) de gyors lesz, mivel minden távolság ismert az új él két pontjáig. Innentől kezdve csak azt kell végignézni, hogy az új él lerövidíti-e az utat.
Persze ez megint bajos, mert exkluzív üzemmódban fusson és nem is biztos hogy megéri, mert az iWiW esetén szvsz gyakoribb az élmozgás mint a legrövidebb út lekérdezés. Ergo ott vagyunk, ahol voltunk, hogy esetenként kell eldönteni.
Ami a master-slave-et illeti, tudom hogy lehet multi-masteres rendszert csinálni, (nem tudom, mennyire stabil és mennyi erőforrást takarít meg) de amire utalni próbáltam, hogy szerintem szolgáltatás szervereket kell fölépíteni és azokat összekötni egy skálzható, nagy rendszernél ahelyett, hogy egy "vas" szolgál ki mindent. (Tehát pl. az iWiW-nél az emlegetett legrövidebb út egy szolgáltatás lenne.)
szolg szerv
amugy gráfokkal kapcsolatban annyit, hogy algoritmus elméletből télleg volt szó erről a 3 algoritmusról, de lehet sokkal egyszerűbb ha egy külön program memóriába saját magának replikálja a kapcsolat táblát, és azon hamar egy dijkstra végigfut, ha szükség van egy legrövidebb út lekérdezésre. pl. boost c++ libraryban vannak jo gráf algoritmusok, asszem dijkstra is van közöttük.
multi master
Üdv,
Felhő
Csúcsterhelés
Nem tudom, hogy melyik funkciók között oszlik meg az a bizonyos 1600 kérés. A legbonyolultabb biztosan a legrövidebb út funkció, ami a kapcsoaltok növekedésével már 90%ban 2 ember, tehát azt is gondolhatnám most kevesebb számítást igényel, mint hajdanán.
Lehet, hogy teljesen téves a benyomásom, de szerintem ha ezt a feladatot valakinek le kéne programozni, mondjuk C-ben úgy hogy adatkezelésre is a legalapabb algoritmusokat használja, amiket megvesz egy könyvesboltban, azt az 1600/mp -t. Egyetlen doboz meg tudná oldani mondjuk 90%ban. (Lehetnek oyan trükkös kérések, amik annyi számítást igényelnek, mint ezer másik, úgyhogy csak 90%-ot mondok).
Érdekes lenne kiszámolni, hogy a különböző absztrakciók milyen árat is képviselnek overhead szempontjából. Mikor éri meg a kevesebb programozói órát és tapasztalatot gépek tucatjaival pótolni?
hát ja
Üdv,
Felhő
bevallom :D
bevallom nem sok mindent értettem az előző beszélgetéseitekből, de lenne egy kérdésem.
Miért jsp-t használnak iwiwnél, miért nem pl php-t vagy akármi mást szerintetek? gráfok miatt?
Köszönöm
JSP
iwiw
Hát, ehhez még csak szakvélemény se kell, elég böngészni... rettenetesen gyengélkedik. Ha csak azt nézzük is, mit szenvednek az összevissza kibe-kapcsolt ajaxos lapozással...
share nothing
Üdv,
Felhő
pdf?
ui: a 900Mbit/s pedig még LANban sem kutya :D:D
uui: Tudja vki, hogy a belföldi ingyenes szolgáltatók közül melyiknek van a legnagyobb sávja külföld felé? Csak úgy érdekel...fizetősek közül a tox.hu 1gbps nyom külföld felé, legalábbis azt állítják...csak nem túl friss phpvel mysql-el kínálják.
pdf
Üdv,
Felhő
iwiw előadás
Thumbnail generálás
Másik kedvencem, hogy sokszor nem is magára az iwiwre kell várni, hanem az audit.median.hu -ra.
Median
http://audit.median.hu/*
De ettől függetlenül soxor olyan van, hogy katt egy gombra, várakozás. Katt még1x a gombra és bejön az adott menüpontnak megfelelő tartalom. Szóval maga az iWiW is katasztrófálisan lassú tud lenni.
hosts
127.0.0.1 audit.median.hu
meg
127.0.0.1 sher.index.hu
és bizonyos kellemetlen dolgok igencsak meggyorsulnak.