sql >> Databáze >  >> RDS >> Mysql

Jak zvládnout masivní ukládání záznamů v databázi pro účely autorizace uživatelů?

Faktem je, že pokud chcete oprávnění na úrovni článku na uživatele pak potřebujete způsob, jak spojit User s do Article s mohou přistupovat. To vyžaduje minimum potřebujete N*A (kde A je počet článků s jedinečným oprávněním).

Přístup 3NF k tomu by byl, jak jste navrhl, mít UsersArticles set... což by byl velmi velký stůl (jak jste poznamenal).

Uvažte, že k této tabulce by se přistupovalo hodně...Tohle mi připadá jako jedna ze situací, kdy je vhodnější mírně denormalizovaný přístup (nebo dokonce noSQL).

Zvažte model, který Twitter používá pro své tabulky sledujících uživatelů:

Jeff Atwood na toto téma

A blog o vysoké škálovatelnosti

Ukázka z těchto částí je lekcí získanou na Twitteru, že dotazování sledujících z normalizované tabulky klade na Users obrovský tlak. stůl. Jejich řešením bylo denormalizovat sledující tak, že sledující uživatele jsou uloženy v jejich individuálních uživatelských nastaveních.

Představuji si, že podobný přístup by mohl být použit k poskytování oprávnění k článkům a vyhnout se extrémně stresovaným UsersArticles jeden stůl.



  1. #1242 - Poddotaz vrací více než 1 řádek - mysql

  2. Proč není pořadí vyhodnocení výrazů zahrnujících uživatelské proměnné definováno?

  3. Příčiny chyby MySQL 2014 Nelze provádět dotazy, když jsou aktivní jiné dotazy bez vyrovnávací paměti

  4. Jak ukládat historické záznamy do tabulky historie na SQL Server