Gość_żaba_*
26.07.2006, 19:43:07
witam
nurtuje mnie jeden problem, a mianowicie
mam zrobione w bazie danych rozne pola mowiace o prawach dostepu. I teraz mam takie pytanko czy lepiej podczas samego procesu logowania pobrac wszystkie dane i zapisac je do sesji jakie kto ma przywileje (tylko mowie ze moze to byc nawet 20 zmiennych dla kazdego usera) czy przy kazdej probie wejscia danego usera pod dany adres sprawdzac zapytaniem do bazy czy ma takie prawo ?
jak troche nie zrozumiale to przepraszam - ale tak najprosciej mowiac to czy zapisywanie kolo 20 zmiennych sesyjnych dla kazdego usera nie spowoduje jakichs komplikacji (np. bardzo duzego obciazenia serwera lub innych rzeczy)
pozdrawiam
nasty
26.07.2006, 19:44:45
nie powinno, moim skromnym zdaniem lepjej jest jednorazowo pobierac wszystko, odciazajac traffic
Cysiaczek
26.07.2006, 20:26:24
Ja z kolei przychyle się do zdania, że lepiej sprawdzać, czy użytkownik ma prawa do wykonania żądania za każdym razem. Przechowywanie wszystkich uprawnień w sesji jest mało sensowne np. z takiego powodu, że jeśli administrator zmieni te prawa, to uzytkownik odczuje to dopiero przy ponownym ich wczytaniu z bazy. Można to oczywiści rozwiązać, ale po co? Wszystkozależy od projektu - jego wielkości, częstotliwości zmian w uprawnieniach, ilości użytkowników.
Pozdrawiam.
Ludvik
26.07.2006, 21:34:32
Cysiaczek: Porównaj sobie jak często będą dokonywane zmiany w uprawnieniach, a jak często będziesz pobeirał te uprawnienia. Jedno zapytanie kasujące sesję kontra xxx zapytań pobierających dane, każde przy odświeżeniu strony. Już lepiej dopisać coś, co oczyści przedawnione sesje, czy nada nowe uprawnienia. Strata czasu będzie minimalna przy kosztach wykonania każdego dodatkowego zapytania.
Cysiaczek
26.07.2006, 21:38:26
@Ludvik - czas potrzebny na zapytanie do bazy w tym wypadku nie jest tu aż tak duży, jeśłi odpowiednio utworzysz tabele uprawnien

~0.00005 sekundy. Czy to wiele?
Ludvik
26.07.2006, 21:48:49
Ale nie rozumiem, jaki jest sens tak nadmiernie obciążać serwer, skoro można prosto to ominąć. Te mikrosekundy staną się ważne przy większych projektach, gdzie natężenie ruchu będzie znaczne. Poza tym po co wykonywać 100000 zapytań, jak można wykonać jedno? Zawsze powinno się dążyć do zmniejszenia obciążenia bazy. Poza tym takie sytuacje są niezwykle rzadkie w dobrze zaprojektowanym systemie.
Cysiaczek
26.07.2006, 21:52:11
@Ludvik - jesli bardzo zależy Ci na wydajności sererwa baz danych, to tak - warto takie rzeczy cashować, choć umieszczanie w zmiennych sesyjnych też ma swoje złe strony.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.