Sveiki, tai gi, visuomet buvau ties Mysql R5-6, bet norisi kažko naujo ir geresnio, tai gi pasiėmiau Mysql R39. Žiūrėjom informaciją apie CACHE ir ORM, bet nieko taip ir nesurišau. Tai gi klausimas: Kam skirtas ORM ir kam skirta CACHE?
SkepticalHippo prieš 9 metus
Aš su SAMP nelabai draugauju, bet ORM ir CACHE yra bendri terminai programų architektūros. Galiu atsakyt kiek bendriau apie šituos du dalykus, tikiuosi padės kažkiek labiau suprasti kas kur ir kam naudojama.
ORM (Object-relational mapping) programavimo technika taikoma norint išvengti prisirišimo prie vienos duomenų bazės. Su ORM gali rašyti SQL/noSQL užklausas sau mėgstama kalba (PAWN/C++/Java/PHP) ir nesukti sau galvos dėl to, kokia duomenų bazė bus naudojama kitam gale. Tavo duomenys būna saugojami į virtualią objektų duomenų bazę pačioje programoje, o prireikus rašomi į tikrąją duomenų bazę, kurią naudos tavo ORM variklis. ORM dažniausiai panaikina reikmę rašyti visokius SELECT * FROM users WHERE user_id = 1
, nes ORM'e tai tampa kažkuo panašiu į User::where('user_id', 1)
arba maze atveju, tiesiog User::find(1)
.
Cache yra laikinoji atmintis, kurią naudoji saugoti tam tikrus duomenis, kurių tau reikia pakankamai dažnai. Kadangi paminėjai ORM kartu su cache, tai manau, kad nori cache naudoti duomenų bazei? Įsivaizduok, kad kiekvieną kartą tavo vartotojui atlikus veiksmą tu siunti užklausą į duomenų bazę ir kiekvieną kartą gauni tą patį rezultatą. Vietoj to, kad iš duomenų bazės trauktum tą patį rezultatą, jį ištrauki tik vieną kartą ir įsidedi į cache. Taip sutaupai serveriui galvojimo laiko ir greičiau gauni reikiamą reikšmę.
Tos reikšmės gali kartais pasikeisti, bet laikinoj atminty jos likos tos pačios. Tokiu atveju, kiekvieną kart kai leidi SQL užklausą, kuri atnaujins duomenų bazę, turi pažymėti tas reikšmes kaip "pasibaigusias" ir pasakyti savo cache sistemai, kad sekantį kartą, kai bandysi pasiimti tą reikšmę, kad ją paimtų iš duomenų bazės.
Tikiuos bent kažkiek padėjau :+1:
Bebras prieš 9 metus
O aš supaprastinsiu Edvino prakalbą iki siaurojo SAMP pasaulio.
ORM iš esmės už tave parašys užklausas. Tau nereikės rašyti nei UPDATE ... nei INSERT.. nieko. Tiesiog pasakysi ORM: kai tau pasakysiu atnaujint viską, įrašysi šių kintamųjų vertes. Nurodai ORM kuriuos stulpelius atnaujinti su orm_addvar_string/orm_addvar_float ir pnš. Tai pavyzdžiui orm_addvar_string(orm_id, string, sizeof(string), "Stulpelis"); Ir pavyzdžiui panaudojus orm_update tau atnaujins "stulpelis" reikšmę su verte iš string kintamojo. Pasistengsiu parašyt iki savaitgalio kokią pamoką elementaraus krovimo/saugojimo.
Cache. Kur stebuklas tam "cache" atsakė Edvinas. O SAMP tau užteks žinoti kad kaip R6 naudojai mysql_fetch_field ar panašias funkcijas, čia naudosi cache_get_**. O jų yra daug. PVZ
new val = cache_get_field_content_int(eilutes_indeksas, "stulpelio_pavadinimas");