階層を表すデータ構造があります。
- フォルダ
- フォルダ
- フォルダ
- ファイル
- ファイル
- 等
- フォルダ
アクセス許可はフラット テーブルに格納されます。
| pKey | type | bitperms |
検索のようなグローバル操作を実行する場合、ツリー内でパーミッションを再帰的にチェックする必要があります。
ツリー構造の個々のリーフにインラインでアクセス許可を確認するのは簡単です。ただし、ノードに対するアクセス許可のアカウンティングには、次の 2 つの既知のアプローチのいずれかが必要です。
- フィルタリングされた葉を取得した後、それぞれを後処理して、親のパーマを確認します
- コストは後まで延期されます
- 多くの初期リーフが見つかった可能性がありますが、親を処理した後は何も残っていないため、無駄な作業が行われています
すべてのルート (権限を付与するノード) を事前に計算し、それをクエリ フィルターとして使用して葉を取得する
- 多くのルートが存在する場合、巨大なクエリになる可能性があり、各リーフの処理に過剰な時間がかかる
より効率的な方法でこれを行うためのアルゴリズムはありますか? おそらく権限データを再編成するか、階層に情報を追加しますか?
おそらく、極端に対処するためにいくつかのヒューリスティックを追加しますか?