1

データ構造タイプの質問がありますが、答えもよくわかりません。基本的に、4つのアクセス許可コントロール(isSecret、canEdit、isActive、hasPage)があり、これらをいくつかの異なるテーブルに格納する必要があります。

私は2つの解決策を考えていますが、どちらが最高のパフォーマンスであるかはわかりません。

  1. 各権限を各テーブルの個別の行として保存します。私には、これがクエリ時にデータにアクセスするための最速の方法のように見えますが、PHPは90%の時間でアクセス許可を処理するため、非効率的です。

  2. パーミッション名(sec、edt、act、has)がコンマ区切りの文字列として格納されている単一のパーミッション列があります。これにより、将来、新しい/異なるアクセス許可を柔軟に導入でき、データベースで見栄えが良く、PHPとmySQLの両方で簡単に使用できます(クエリにINルックアップを使用し、文字列を展開して、 PHP)。この列は40文字のvarcharになり、最大10個の異なる権限(3文字とコンマ)を格納できます。

INコマンドがリソースを大量に消費する可能性があることに気付くまで、オプション2が私の推奨ソリューションでした。テーブルのすべての行でINコマンドを使用して、非アクティブなページを探してフィルターで除外しようとすると、パフォーマンスが低下する可能性があると思いました。これを解決するには、列のすべての行をフェッチしてから、PHPで行をフィルターで除外することができますが、これがどれほど効果的かはわかりません。

理想的には、私のソリューションでは、サブ列が最良のソリューション(メインのアクセス許可列と、各アクセス許可のこの4つのサブ列の下)であり、簡単に照会できると思います(つまり、permission.canEdit = 1の場合)。

結果は最終的にmemcacheを使用してキャッシュされます(使用方法と効果的なクリア方法がわかった場合)が、これに依存する必要はありません。

4

1 に答える 1

0

SETはあなたが必要とするものだと思います

于 2013-01-04T20:13:52.277 に答える