Podle me mate tri moznosti: - zkuste to bez predpocitani, vytvorte si nejaky reprezentativni vzorek dat a na nem udelejte vykonostni test - pouzijte predpocitani, dle meho nazoru zmena tech ACL pripadne nejakych roli nemusi byt tak casta - uplne se na to vykaslete pri vypisovani seznamu zaznamu, proste bude listovat vsechny a pro ty, ktere nema pravo nepovolite danou akci. V podstate udelate vzdy dotaz jestli ma clovek opravneni na to s danym zaznamem pracovat. Da se to udelat i batchove jednim dotazem pro nactenou stanku.
2009/8/5 <[email protected]>: > Ahoj, > > vyvíjíme standartní obchodní evidenční systém s trochu sofistikovanější > agendou přístupových práv, ktará je postavena na přístupových rolích > uživatelů a vztahů těchto rolí k jednotlivým entitním objektům (uloženým > záznamům v db) systému. Oprávnění na každou operaci (CRUD) na daném objektu > se vyhodnocují podle složitých pravidel závislých na hodnotách jejích > atributů a jejich vztahu k rolím přiděleným danému uživateli. Navíc se role > mohou různě sčítat apod, zkrátka pravidla a algoritmy pro vyhodnocení > povolení operace nad daným záznamem pro konkrétního uživatele jsou dost > složitá. Analyticky máme celý systém vytvořen, ten zjednodušeně pro každý > záznam vyhodnotí přístupová práva pro daného uživatele a případně povolí > nebo zamítne požadovanou operaci. Nastává však problém v návrhové rovině, > např. při generování seznamů. Pokud bude chtít uživatel zobrazit > stránkovatelný seznam všech záznamů, musí se mu samozřejmě zobrazit jen ty, u > kterých má právo čtení. Nedokážu si z výkonostního hlediska představit, že > pro každý uložený záznam, kterých můžou být i miliony, budu až při > generování seznamu ověřovat, zda jej má užvatel právo zobrazit nebo ne, pro > každý záznam by se pak spouštěly složité algoritmy pro ověření práv a pokud > by měl ve finále uživatel právo třeba na méně záznamů než kolik je > zobrazovaných záznamů na stránku musely by se projít třeba i všechny záznamy. > Zatím se jako jedno z řešení jeví, předpočítávat si konečná oprávnění pro > danou operaci, uživatele a záznam někde na pozadí, ukládat si je do nějaké > pomocné tabulky a při generování seznamu prostě jen tuto tabulku připojit. > Toto ale zase vyvolává problém s aktualizacemi těchto pomocných tabulek, > pokud se v runtime stane něco co by mohlo mít vliv na konečná oprávnění > (např. změna rolí uživatelů, pravidel vyhodnocenování apod), budou se muset > celé aktualizovat, což při celkovém počtu entit systému X (stovky) počet > záznamů každé enity (statisíce) X počet uživatelů (tisíce) bude opět > znamenat výkonostní problém. Myslím, že tady už určitě někdo řešil něco > podobného, proto bych byl vděčen za jakékoliv poznatky jak to třeba řešíte vy. > > Díky > -- S pozdravem Roman "Dagi" Pichlik /* http://www.sweb.cz/pichlik/ Blog pro kodery */
