それは正常です。ただし、サイトが大きくなると、パフォーマンスの問題になる可能性があります。
アクセス許可は、ユーザーの存続期間中に変更されるとしても、それほど変更されるものではありません。大多数のユーザーはデフォルトの権限セットを持ち、(比較的) 少数のユーザーだけが「管理者」や「モデレーター」などの役割を持ちます。サイトが大規模になると、特に同じデータを何度も何度もクエリしているため、アクセス許可についてデータベースにクエリを実行すると、非常にコストがかかります。ページをレンダリングするたびに、おそらくなんらかのパーミッションを確認します。ユーザーは「削除」ボタンを表示する権限を持っていますか? 彼はいくつかの管理メニューを見ることができますか? フォーラムまたはブログ投稿の場合、投稿者の IP アドレスを確認できますか? この種のことを行うには、各ページのレンダリングで複数回アクセス許可を確認する必要があり、DB クエリを介してそれを実行したくはありません。
適切な解決策は、アクセス許可をキャッシュすることです。これを考慮してください:
ユーザーがログインするとき、ユーザーが持っているすべての権限を照会し、それを Web サーバーのメモリにキャッシュします。複数の Web サーバーがある場合は、それらのキャッシュを同期するか、特定のサーバーがそのユーザーのアクセス許可をメモリに持っていない場合は、個々のサーバーでユーザーのアクセス許可を照会する必要があります。これは、ユーザーがそのサーバーにリクエストを行ったときにオンデマンドで発生します。
これで、DB にクエリを実行する必要がまったくなくなりました。すべての権限チェックはメモリ内で行われるため、はるかに高速に動作し、DB はそのままになります。ユーザーのアクセス許可を変更する場合、もちろんすべての Web サーバー キャッシュを同期する必要がありますが、これはめったに発生しないため、パフォーマンスへの影響はありません。
ある時点でキャッシュをクリアしたい場合があります。サーバーの RAM の量には制限があります。この段階で、少し前に最後にアクティブで、おそらくもうサイトを閲覧していないユーザーのキャッシュされたアクセス許可を削除できます。それらがまだそこにある場合でも、次のクエリで権限が再読み込みされます。