UserStorage: Oddělení identifikátoru od dat
- h4kuna
- Backer | 740
Ahoj,
zajímalo by mě zda někdo řeší situaci, kdy máte přihlášenou spoustu
lidí. A jeden člověk může být přihlášen na více zařízeních.
Prohlížeč v mobilu, aplikace v mobilu, aplikace v tabletu, prohlížeč na
domácím PC, prohlížeč na pracovním notebooku. Zkrátka N identit pro
jednoho uživatele.
Co je za potíž:
- téměř všechno je duplicitní, třeba až 5×, sjednocením bychom snížili zaplnění uložiště (redisu)
- druhá věc je že když si uživatel něco (email, jméno, nastavení) změní v jednom zařízení tak sesynchronizovat ostatními
Stávající implementace funguje, ale je to celkem overkill.
Nápad by byl napsat vlastní UserStorage, který by v session držel pouze userId a ostatní by se dotáhlo podle userId, taková cache s tagem.
Jiné řešení?
Editoval h4kuna (26. 1. 2017 8:14)
- h4kuna
- Backer | 740
Místo databáze bych rád viděl redis, kde si dokážu ohlídat když uživatel něco změní, aby se změnil i redis. Ale aktuální implementace UserStorage neumožňuje takové rozšíření. A než se do toho pustím tak jsem se chtěl znát další možnosti.
hrach napsal(a):
Prakticky se nejedna o zadnou narocnost…
Tím myslíš že to databáze nepozná?
- Marek Bartoš
- Nette Blogger | 1263
@hrach nepřihlášené uživatele bez user id máte v session storage uložené celé a po přihlášení data přesouváte?
Editoval Mabar (26. 1. 2017 8:52)
- hrach
- Člen | 1838
Prakticky se nejedna o zadnou narocnost…
Tím myslíš že to databáze nepozná?
@h4kuna na strance je vetsinou 10+ dotazu, mnohdy i 40. Jeden dotaz dle primarniho klice zasadni problem nezpusobi. Samozrejme zalezi na mnoha faktorech (velikost webu, velikost dat u usera, moznost partial loadu entity, etc.).
@Mabar jo, to je jina; nas se to netyka. Ale asi bych to resil tak, jak pises. A cele bych to obalil asi nejakou proxy, ktera by to cetla bud z entity/userstorage.