5

階層を表すデータ構造があります。

  • フォルダ
    • フォルダ
      • フォルダ
      • ファイル
    • ファイル

アクセス許可はフラット テーブルに格納されます。

| pKey | type | bitperms |

検索のようなグローバル操作を実行する場合、ツリー内でパーミッションを再帰的にチェックする必要があります。

ツリー構造の個々のリーフにインラインでアクセス許可を確認するのは簡単です。ただし、ノードに対するアクセス許可のアカウンティングには、次の 2 つの既知のアプローチのいずれかが必要です。

  • フィルタリングされた葉を取得した後、それぞれを後処理して、親のパーマを確認します
    • コストは後まで延期されます
    • 多くの初期リーフが見つかった可能性がありますが、親を処理した後は何も残っていないため、無駄な作業が行われています
  • すべてのルート (権限を付与するノード) を事前に計算し、それをクエリ フィルターとして使用して葉を取得する

    • 多くのルートが存在する場合、巨大なクエリになる可能性があり、各リーフの処理に過剰な時間がかかる

    より効率的な方法でこれを行うためのアルゴリズムはありますか? おそらく権限データを再編成するか、階層に情報を追加しますか?

    おそらく、極端に対処するためにいくつかのヒューリスティックを追加しますか?

4

1 に答える 1