Użytkownik może stworzyć grupę i użytkownikom należącym do tej grupy może przydzielać uprawnienia, i teraz zastanawiam w jaki sposób trzymać te przydzielone permisje. Czy stworzyć tabelkę z uprawnieniami i trzymać tam id użytkownika i przydzieloną permisje czy trzymać np. jsona z permisjami w tabelce użytkownika.
Prawie zawsze lepsza tabelka. Wskazane przez zasady normalizacji baz danych jak i wielu innych powodów.
katakrowa napisał(a):
Prawie zawsze lepsza tabelka. Wskazane przez zasady normalizacji baz danych jak i wielu innych powodów.
Chyba że masz taki ruch że joiny zabijają aplikację. Wtedy jest lepsza denormalizacja. A kolejnym krokiem jest rezygnacja z bazy relacyjnej na np. Cassandrę. Ale dla aplikacji o małym ruchu osobne tabelki i joiny są w zupełności ok
Chyba że masz taki ruch że joiny zabijają aplikację. Wtedy jest lepsza denormalizacja. A kolejnym krokiem jest rezygnacja z bazy relacyjnej na np. Cassandrę. Ale dla aplikacji o małym ruchu osobne tabelki i joiny są w zupełności ok
W pierwszym kroku na wydajnościową bolączkę zastosowałbym cache plikowy -> później np. redis albo memcache ... Dopiero gdyby to nie wydalało sięgnął bym po alternatywne sposoby przechowywania danych..
Pewni jesteście, że kolega programuje dla banku / Googla / Facebooka ?
Ja na razie nie wydaje się, by myśleć o skrajnych wydajnościach
rejive142 napisał(a):
Użytkownik może stworzyć grupę i użytkownikom należącym do tej grupy może przydzielać uprawnienia, i teraz zastanawiam w jaki sposób trzymać te przydzielone permisje. Czy stworzyć tabelkę z uprawnieniami i trzymać tam id użytkownika i przydzieloną permisje czy trzymać np. jsona z permisjami w tabelce użytkownika.
Jakiego typu projekt tworzysz, w jakim środowisku / frameworkach?
Masz tam jakiś rodzaj Session?
Co do MySQL-a równie jestem za stosowną tabelą.
Ja bym trzymał w tabelce, potem ewentualnie propagował do cache (memcached, Redis) jako dane sesyjne. Zwykle zmiana uprawnień wymaga przelogowania, więc to jest ok.