Diskuze: Cachování událostí

ITnetwork Cachování událostí

Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:

Začali jsme dělat na systému událostí zde na devbooku. Původní myšlenka byla spojit všechny události do jediné tabulky v databázi. Z té by si je brala zeď (titulní strana), dále ten sidebar napravo a ještě osobní události. Všechny události by byly unifikované, každá část by vybírala jen některé, např. jen pro konkrétního uživatele.

Chtěl bych se poradit:

  1. Je to dobrý nápad?
  2. Pokud ano, máme zapisovat události formou již sestaveného textu nebo mnoha idček? Text je rychlý, ale samozřejmě postrádá možnost aktualizovat událost např. při změně článku. Otázka je, jestli to vadí. U osobních událostí možná ano.

Pokud by se měly údaje z tabulky ještě znovu joinovat, je otázka, jestli má tabulka vůbec smysl a již není takový rozdíl v tom, zda data vygeneruji na místě bez ní.

Díky za případné názory, hlavně Kita a Drahomír Hanáke ;-)

Odpovědět 30.9.2012 12:33
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Drahomír Hanák
Tým ITnetwork
Avatar
Odpovídá na David Čápka
Drahomír Hanák:

Mně to přijde jako dobrý nápad. Máš tak všechny události na jednom místě. Jak myslíš to zapisování událostí? Pokud by se událost týkala článku, použil bych ID článku, pokud uživatele, tak ID uživatele. Když použiješ JOIN na článek nebo uživatele z té tabulky pro události, tak to moc nevadí. Pořád bude mít ta tabulka smysl.

 
Nahoru Odpovědět 30.9.2012 13:05
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Drahomír Hanák
David Čápka:

No ono je to složitější, jde tam ID článku, ID testu, ID uživatele, ID vlákna, ID komentáře... ty joiny budou brutální a změnit se může vše. Úplně jsem se v tom zase ztratil. Ale je fakt, že ta tabulka je asi potřeba už jen k tomu, aby člověk věděl, jeslti je ta událost aktivní nebo přečtená, aby se pak třeba po nějaké době mohla upomenout emailem, když by stále nebyla přečtená.

Nahoru Odpovědět 30.9.2012 13:13
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Drahomír Hanák
David Čápka:

Tohle potřebujeme unifikovat:

označení
 datum
 koment
 kdo
 unread

komentář
 datum
 koment
 kdo
 unread

odpověď
 datum
 koment
 kdo
 unread

hodnocení
 datum
 článek
 thread
 kdo
 unread

like
 datum
 koment
 kdo
 unread

level-up
 datum
 kdo
 skill
 unread

registrace
 datum
 kdo
 unread

clanek-schvaleni
 datum
 kdo
 clanek
 unread

clanek - zamitnuti
 datum
 kdo
 clanek
 unread

kviz
 kviz
 kdo
8|
Editováno 30.9.2012 13:20
Nahoru Odpovědět 30.9.2012 13:15
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Drahomír Hanák
Tým ITnetwork
Avatar
Odpovídá na David Čápka
Drahomír Hanák:

To bude složitější. Teoreticky by šlo něco jako:

Událost
  typ
  datum
  kdo
  clanek
  koment
  unread
  skill

Přičemž budou některé hodnoty holt NULL a spojíš si je s odpovídajícími články, komentáři, uživateli atd. Druhá možnost je tedy spojovat hodnoty až v aplikaci, ale to zas bude dost nepohodlné a budou rozházené v několika tabulkách.

 
Nahoru Odpovědět 30.9.2012 13:32
Avatar
Kit
Redaktor
Avatar
Odpovídá na Drahomír Hanák
Kit:

Bacha, aby z toho nevzniklo EAV. To by nebylo dobré. Dotazy by se pak staly ještě složitější a výkon by šel do háje.

Možná by se ta databáze dala normalizovat. Zkus se nechat inspirovat:
http://forum.root.cz/index.php?…

Jaký je rozdíl mezi komentářem a odpovědí? Proč je ve 2 tabulkách clanek-schvaleni a clanek-zamitnuti?

Tabulky bych zredukoval, ale do jedné bych to nedával. Už proto, že všeobecná zeď, sidebar a osobní události spolu moc nesouvisí.

Nahoru Odpovědět 30.9.2012 14:31
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Ono to jsou ty samé události, jen se jinak prezentují, případně se někde nějaké vynechají. Zeď a sidebar bychom chtěli udělat úplně stejné. Osobní stream je trochu jiný, ale ne zas tak moc, aby měl samostatnou tabulku, vlastně je tam jen navíc to unread a nějaké události se vynechávají.

Problém mám také se systémem upomínání na email, říkal jsem si, že by se mohlo upomínat cronem po nějakém časovém intervalu, třeba pokud není zpráva přečtena do 15ti minut. Tím by se eliminovalo spoustu mailů, když si někdo s někým dopisuje ať už soukromě nebo v mailu. Ideálně by se mělo zjišťovat, zda je dotyčný online, ale do toho se zatím pouštět nechci. Časem zde bude AJAX načítat sidebar nebo zeď, tak se tam bude i něco odesílat a podle toho to poznáme.

Nahoru Odpovědět 30.9.2012 15:25
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na David Čápka
David Čápka:

Vlastně by se mohlo ukládat u členů datum poslední aktivity, teď provizorně při načtení stránky, později AJAXem. Prohlásili bychom, že člen je online do 5 minut po poslední aktivitě.

Nahoru Odpovědět 30.9.2012 15:31
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

To také není ono. Napíšu příspěvek a odejdu. Někdo mi za 3 minuty odpoví. Čekám na e-mail, ale nedočkám se.

Nahoru Odpovědět 30.9.2012 15:41
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Lépe to bez toho AJAXu asi nepůjde. Nebo ho můžeme naprogramovat, ono to asi nebude tak strašné, jen se bude jednou za řekněme 2 minuty ptát na počet nových událostí a s tím i vyzradí, že je člen online. A cron by posílal události jen v případě, že tu člověk není a upozornění na stránce neuvidí.

Bože, to je práce. Nějak ani nevím, kde začít. Asi tím logováním událostí někam, potom funkcí pro zjištění počtu nových pro 1 člena. Odtud je již dokáži zobrazovat na stránce jako to má třeba Facebook. To by byl 1. milník.

Nahoru Odpovědět 30.9.2012 15:48
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.