Kannattaa nyt ensin lukea edes tämä threadi kokonaan läpi ja sen jälkeen etsiä aiheesta lisää tietoa esimerkiksi hakukoneilla.
Hohhoijaa...tämän threadin osoite on: http://keskustelu.afterdawn.com/thread_view.cfm/401365 Hakukoneita löytyy osoitteista: http://www.google.fi http://www.yahoo.com http://www.msn.fi Hakukoneiden käyttöön löytyy ohjeistusta täältä: http://keskustelu.afterdawn.com/thread_view.cfm/97640 EDIT: ehkä viikon jäähy olikin ihan paikallaan...
no onko tämä afterdawn foorumi?? antakaa nyt kunnon infoo onko tähän tarvittu: -3 vuotta -texttieditorin -pakko mielteen -ja kellarin jossa on täys ruokinta noista puuttuu vaan kellari pakko mielikin on jo valmiiksi ^^
Onko foorumissa mitään muuta tekniikkaa käytetty kuin tätä coldfusionia? Tänään keskustelin asiasta itseäni fiksumman kanssa ja oli jtn mainintaa että nämä php:n tyyliset koodit (vai mikä se oikea nimitys onkaan) niin saattavat "hyytyä", jos käyttäjien määrät nousevat isoihin lukuihin. Niinkuin juuri täällä, niin muistaakseni sanoi että sitten siihen coldfusionin rinnalle pitäisi ottaa joku java systeemi tjs vai ollaanko täällä pelkällä cfml:llä edit. typoja
kiiveri: Ei se kielestä ole kiinni hyytyykö systeemi. JSP on yleensä itse asiassa raskaampi pyörittää kuin PHP tai ColdFusion, mutta aika samoilla viivoilla kaikki nämä modernit webkoodausteknologiat ovat raskaudessaan/keveydessään. Lähes aina suurimman pullonkaulan muodostaa isoissa palveluissa tietokanta ja sen nopeus. Nyt tietokantaa pyörittää kaksi serveriä, molemmissa muistaakseni Dual Xeon 3.2GHz prossut, neljä gigaa muistia ja RHES3 käyttiksenä. Kantojen (Linux-)loadit ovat piikkiaikoina eli Suomen aikaan yhdeksän maissa yleensä siinä 1.7 - 2.5 välillä (dual CPU:lla 2.0 vastaa siis 100% kuormaa) ja web-servereiden kuormat (3kpl P4/2.8GHz -bokseja, kussakin 2GB muistia jos oikein muistan) ovat pääasiallisesti 0.5 hujakoilla. WWW-sivujen nopeaksi saaminen on lähes aina ennenkaikkea hyvästä SQL-ohjelmoinnista (eli tietokantaohjelmoinnista, kieli on aina SQL, oli tietokantamoottorina sitten MS SQL Server, MySQL, Oracle tai joku muu) ja hyvästä tietokannan suunnittelusta kiinni, ei varsinaisesta esityskielestä (PHP, ColdFusion, ASP, JSP, ..). Meidänkin "jumit" tuossa loppukeväästä johtuivat juurikin siitä, että tietokanta haukkasi multaa. Eli kun dataa alkaa olemaan kivasti ja kannan pitää yhdistellä sitä luovasti (esim. ihan viestiketjun näyttäminen -- viestejä on tietokannassa noin 2.5 miljoona, joista sitten haetaan vain kyseiseen ketjuun kuuluvat viestit ja pistetään ne aikajärjestykseen ja sitten viestin vieressä näytetään kunkin viestin kirjoittajan nimi -- ja käyttäjiä on lähes 600,000 -- ja ne pitää hakea kullekin viestille. Ja tämä piikkiaikoina 5,000 sivulle sekunnissa..), niin 4 gigaa muistia on aika kevyttä.
PHP skaalautuu suuriin palveluihin siinä missä Javakin. Käyttäjämäärien kasvaessa yli tietyn rajan apuun otetaan yleensä niin PHP:n kuin Javankin tapauksessa "load balancing" eli kuorman tasaus useamman serverin kesken, mikä on, esim. foorumi-softan ollessa kyseessä, varsin yksinkertaista. Kyllä pätevä kaveri vääntää tuollaisen perus-foorumi-toteutuksen muutamassa viikossa tai maksimissaan kuukausissa. Eri asia on tietysti se, jos halutaan kaiken maailman erikoisominaisuuksia, joita voikin sitten hioa ja viimeistellä vaikka maailman tappiin. Kannattaa huomioida, että valmiita Open Source kirjastoja käyttäen esim. foorumi-ohjelmiston rakentaminen yksinkertaistuu huomattavasti. Sinälläänhan tuollainen foorumin vääntäminen, käyttäen esimerkiksi yhdistelmää Apache+PHP+HTML+MySQL tai Apache+Tomcat+Java(Servlet tai JSP)+HTML+MySQL, on varsin hyvä pikku harjoitustehtävä tutustuttaessa serveripään ohjelmointiin.
no taas oppii uutta aika mielenkiintoisalta tämä vaikuttaa, ties vaikka amk:ssa ottaisin jonkun näistä edellämainutuista koodauskielistä jonkin kurssin tms.
[bold]dRD:[/bold] Vaikka pelkällä tietokantaohjelmoinnilla pystytäänkin hyvin pitkälti optimoimaan serveripään toteutuksia, on tärkeää muistaa, että myös tietokantaa käyttävää ohjelmistoa voi usein optimoida. Esimerkiksi juuri viestiketjun näyttäminen on hyvä esimerkki tilanteesta, jossa tietokantaa käyttävän ohjelmiston puolelta voidaan serveripään kuormaa vähentää käyttämällä esimerkiksi viestiketjukohtaista cachea eli välimuistia. Voidaan ajatella, että viestiketjut ovat useimmiten vain näennäisesti dynaamisia. Itse asiassahan viestiketjut ovat hyvinkin staattisia aina siihen saakka, kunnes joku lisää tai poistaa viestin tai muokkaa viestiä. Välimuistissa voitaisiin pitää esim. sivuston käyttäjien viimeisen tunnin sisällä pyytämiä viestiketjuja ja aina, kun viestiketjuun tulee muutos, välimuistia päivitettäisiin. Tästä seuraisi se, että raskasta tietokantaoperaatiota kaikkien viestien ja käyttäjänimien jne. yksitellen hakemiseen ei tarvitsisi suorittaa niin usein. Em. on varsin yksinkertainen esimerkki ohjelmistopuolen optimoinnista, mutta antaa kuitenkin hiukan esimerkkiä siitä, että pelkkä tietokannan optimoimiminen ei välttämättä aina riitä. Vaan nykyäänhän ohjelmistoteollisuudessa on sellainen "sääntö", että rauta on halpaa ja ohjelmointi on se, mikä maksaa. Joten tärkeintä on se, että ohjelmiston arkkitehtuuri skaalautuu, jolloin suoritusteho-ongelmien tullessa voidaan ostaa lisää rautaa rajalle.
M_M: Jep, forumeiden rakentaminen itsessään on yksinkertainen homma, taisin alkuperäisen version vääntää itse noin kuukaudessa vuonna 2002 kasaan, takana toki oli jo 4v web-koodin vääntöä ammattimaisesti. Ja tuon jälkeen olen mm. BBC:lle värkännyt parit custom forumit. Mutta tuollaisen "karvalakkiforumin" teon jälkeen homma meni mielenkiintoiseksi, kun forumit "repesivät" todella isoiksi ja nykyisin forumeissa on aika paljon sellaista optimointia (mm. loggaamattomille käyttäjille näkyvien live, ei arkistoitujen, threadien filecachetusta ja niiden on-demand "flushausta") mitä esim. phpBB:ssä tai vBulletinissa ei ole. Ja ikuinen hauskuus seuraa forumeiden haun koodauksesta, LIKEt eivät ole oikein edes vaihtoehto noin miljoonan viestin rajapyykin tullessa vastaan, vaan pitää alkaa duunailemaan sanahakutauluja, jne. Syitä oman forumin rakentamiseen ei kovin usein ole, meillä ne ovat olleet aika moninaiset: -forumeiden käyttäjäkannan täydellinen integrointi koko saitin käyttäjäkantaan ilman "purkkaa" -jotkut asiat esim. phpBB:n logiikassa tökkivät aikanaan vastaan ja haluttiin tehdä omannäköinen forum, ei kloonia joita tulee jokapaikassa vastaan -täydellinen vapaus koodin venyttämiseen mihin suuntaan tahansa (toki open sourcen kanssakin tämä onnistuu, mutta esim. os-projektien patchien asentaminen menee aika toivottomaksi jos koodia on isketty muutenkin kuin perus-modeilla) -ideana oli rakentaa yksi forumengine, joka osaa samoissa tauluissa ja yhdellä asennetulla codebasella toimia rajattomana määränä forumeita (eli samat templatet, samassa directoryssa luovat sekä forums.afterdawn.com, keskustelu.afterdawn.com, dvdxcopy.afterdawn.com että forums.blasteroids.com -sivut, systeemi vain haistaa domainin ja heittää oikeat lokalisointiasetukset kehiin, mutta esim. viestinumerot ovat ristiin juoksevat, jne) -koska oman koodaus on vaan toisinaan niin pirun kivaa ;-)
Toki, itse asiassa käytännössä kaikki queryt sivuilla on cachetettu www-palvelinten välimuistiin, mutta sen lisäksi forumeissa käytetään rankalla kädellä filecachea tilanteissa, kuten juurikin viestiketjuissa, joissa on loogisempaa luoda osasta sivua staattinen html-pala ja pulauttaa se sopivaan väliin (/cached/thread_view/ -hakemistossa nytkin noin 75,000 tiedostoa) koska muistin käyttö cachena on rajallinen resurssi, joka pitää ennemminkin varata kohtiin, joissa päivitystahti on nopeampi ja joissa esim. queryn tulosta käytetään useammilla sivuilla (ColdFusionin yksi suuri etu on se, että CF-palvelin tekee palvelintasolla queryjen cachetuksen, joten cacheen vedetyt queryt ovat kaikkien templatejen saatavilla) -- näistä nyt karkeimpana esimerkkinä vaikkapa fin.afterdawn.com:n sivupalkki, jonka sisältö on palvelimen muistissa. Ja olet oikeassa skaalautuvuudesta, mutta kuten sanottu, forumit ovat siitä erikoisia eläimiä, että skaalautuvuus pitää lähes aina hakea kannan puolelta, web-puoli ei töki oikeastaan koskaan, vaan ongelmia aiheuttavat juurikin mm. forumeille tehdyt laajat haut (phpBB:ssä Advanced Search ja heitä esim *them* -hakutermiksi . Tuo ratkaistiin purkalla, eli poistettiin LIKE -pohjaiset haut (eli phrase searchit joita ei voi tehdä muuten kuin LIKE:llä) ainakin väliaikaisesti ja sallitaan ainoastaan sanapohjaiset haut. Esimerkkinä maailman suurin phpBB-forum, Gaia Online -- siellä ei ole ollut hakua käytössä enää vuoden 2004 jälkeen, viestejä on noin miljardi. Ja tokihan myös forumeiden hakukoneella tehdyt hakutulokset cachetetaan, ihmisillä on mm. hauska taipumus painaa sitä "search"-nappia useamman kerran.. Ohjelmointi vs rauta on ikävää, siksi pidän arvossa ihmisiä jotka pitävät kiinni ammattiylpeydestään ja saavat ne pienet kiksit siitä, että sivun suoritusajasta saadaan 1 millisekunti pois eikä ajatella, että sillä ei ole mitään merkitystä. Avg Time Count Template 97 ms 97 ms 1 /www/afterdawn/forums/message_reply.cfm Piikkiaika, Yhdysvalloissa iltapäivä
Nyt tuli vasta huomattua, miten raju punkkari tuolla minun nimeni vieressä on ylhäällä. (siis kun olen kirjautunut sisään) Miksi päädyitte tuollaiseen naamaan?