Autor Zpráva
TomAsQo
Profil
ahoj,
zaujimalo by ma, ze co je rychlejsie: pouzitie databazy na ziskanie nejakeho udaju, alebo jeho ulozenie do sessionu? alebo sa session tiez *niekde* uklada do databazy? a tym padom je to rovnako rychle, len session viac zabera (ked sa specialne potom musi este prekopirovat niekde...)?

ako to s tym sessionom je?

diky :)
Nox
Profil
Asi bych to nepopsal tak obsáhle jako: http://www.linuxsoft.cz/article.php?id_article=440

Jinak databázi bych užil pro ukládání věcí, co mají zůstat i po uzavření prohlížeče nebo
obsahují nějaký komplexnější data, v opačným případě sessions (drobná data užitá
pro uchování dočasné hodnoty)
TomAsQo
Profil
ja mam kusa narocnejsi problem:

chcel by som si vytvorit NUTS-like talker(v Pythone, ale to je teraz nepodstatne) a ma napadlo zoptimalizovat databazu tak, ze v tabulke, kde sa nachadzaju spravy(co komu od koho doslo), tam su nicky userov(kto poslal, komu poslal) vyjadrene v ID-ckach(a tie su potom prepojene s tabulkou pre usrov, kde sa pomocou IDcka zisti prislusny nick) a ja chcem, ze ked napisem:
".tell foo: ahoj"

tak userovi "foo" sa napise sprava
"Tom@sQo ti povedal: ahoj"

atd...

ALE aby pri kazdej sprave nemuselo robit 2 Quericka(na transformaciu id<-->nick a potom vypisanie spravy uz s pretransformovanym nickom), tak ma napadlo, ze to budem ukladat do session(v podstate cache) kazdeho usra s tym, ze tam bude ochovane, ktore ID prislucha komu(samozrejme nenatiahne to vsetky vztahy, ale len komu pisem) a tym padom po prvom napisani userovi sa ulozi jeho id a nick do cache a pri dalsom pisani mi to len taha so sessionu...no lenze otazkou je, ze ci potom, ked bude viac ludi prihlasenych, tak ci nebude to zaberat o dost viac pamate a neviem coho vsetkeho na ukor len malickeho, resp. nulloveho zrychlenia...

any ideas?
Nox
Profil
No, asi to radši nechám na zkušenějších, ale imho by to asi urychlit mohlo...místo 2 query by to možná šlo řešit poddotazem, ale i tak teda...
TomAsQo
Profil
jj, da sa do aj "poddotazom", ale imho to je len nepatrne rychejsie... no aj ja som zvedavy na nazori expetov ;)
Alphard
Profil
v čem je vlastně problém? z tvého příspěvku jsem nepochopil, jestli při zápisu nebo výpisu zprávy

tabulka zpravy by mohla vypadat nějak takhle:
id | id_od | id_komu | cas | prectena

a při výpisu nicky dodáš pomocí join
session bych do toho nepletl
Nox
Profil
Alphard
J, jenže ty ID se pak musí převést na Jména uživatelů a TomAsQo to chtěl urychlit tím,
aby se nemuselo vždycky přistupovat do databáze, že by se jména uživatelů načetla do session
Alphard
Profil
Nox
to jsem pochopil, ale když bude chtít vypstat zprávu, musí do databáze a v té chvíli to může zároveň spojit join
Nox
Profil
Alphard
Však se ptá jestli je rychlejší to spojení nebo sessions
TomAsQo
Profil
ahoj,
ako vidim, velmi ste sa zatial nezhodli ;)
tak keby vas to zaujimalo, po cca polhodinovej analyze som dospel k zaverom a rieseniam:

1) mohol by som stale ukladatv tabulke pre spravy okrem id cka userov(od a komu) aj ich nicky, ale to by bolo nedostacujuce riesenei, nakolko to je hned proti viacerym zasadam:
[code]
I) zbytocne duplicitne data - tusim proti hned prvej normalnej forme(a imho patrilo by sa aspon prve 2 dodrziavat)
II) potom by som musel v neskorsej verzii ukladat aj veci ako sklonovanie nicku, pohlavie,... duplicitne, proste by to nemalo konca kraja
[/code]

2) moznost je ukladat cez SESSIONY, lenze to je tiez nedostacujuce(aj ked lepsie ako 1) ) lebo:
[code]
I) duplicitne data sa potom budu zas vyskytovat na servri(ked si bude napr so mnou ;-] pisat viac ludi, tak viackrat bude v tej session cache moj nick a jeho id-cko)
II) ako tak pozeram, vidim, ze SESSION moze byt ukladany v subore ale aj v databaze...takze dokial by som to neukladal do RAMky, tak aj tak nejake zrychlenie nedosiahnem
[/code]

3) nechat cez "poddotaz" je sice pomalsie, ale zasa ked pouzijem prepared statement, tak az take pomale to neje(je to[nanestastie len trosku] rychlejsie, ako 2 izolovane quericka)

takze vyhrava moznost 3) ;-)

samozrejme dalsie nazory uvitam v diskusii ;)
Mastodont
Profil
Prepared statement se používá hlavně tam, kde je třeba jeden dotaz spouštět vícekrát nebo kde je třeba tuty ochrana proti injektáži. Mmch, vyžaduje dvojí komunikaci s databází, takže na rychlosti moc nezískáš. Jedině že bys použil Postgre, tam je k dispozici pg_query_params :)

Vaše odpověď

Mohlo by se hodit

Příspěvky nesouvisející s webem budou odstraněny.

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0