3

個々のユーザーごとにアクセス制御リストを実装して、自分のリソースへのアクセスを割り当てることができるようにします。これにより、たとえば母親からは隠して、友人には見せることができます。

ACL をデータベースに保存することは、各ユーザーがグループでもあり、多くのサブグループを持つことができる場合、非常に狂っているように思えます。そこで、ACL をテキスト ファイルに保存することを考えています。

良いアイデア?悪いアイデア?

EDIT:各ユーザーの個別のテキストファイルについて話していることに注意してください。シリアル化してテキスト ファイルに書き込むことができる ACL クラスを作成することを考えています。私が恐れているのは、ACL をデータベースに格納すると、非常に巨大な結合テーブルが作成され、データベース サーバーに大きな負担がかかることです。

4

6 に答える 6

3

オプションを考えると、ACL をデータベースに保存します。

  • データにアクセスしてクエリを実行するための言語は、より簡単で標準的です (SQL)
  • DB は、トランザクション、高速クエリ用のインデックス、整合性制約、およびセキュリティを提供します。
  • ローカル ファイルにデータを保存する方法によっては、アプリケーションと共にデータ ファイルを移動する必要がある場合があります。例: アプリケーションを server1 から server2 に移動します。
  • 不変の (または頻繁に変更されない) データの場合は、何らかの形式のキャッシュを使用する必要があります。したがって、ファイルまたは DB を使用している場合は、独立して、このデータの一部を一定期間キャッシュする必要があります。
  • このドキュメントのように、参考として使用できるリレーショナル データベース用の優れた ACL スキーマ テンプレートを見つけることができると確信しています

お役に立てば幸いです。

于 2009-02-10T15:31:13.550 に答える
0

ACLをデータベースに保存すると、非常に大きな結合テーブルが作成され、データベースサーバーに大きな負担がかかるのではないかと心配しています。

ユーザーごとに1つのテキストファイルがあり、グループ/サブグループがおそらく他のファイルにある場合は、独自の結合をロールする必要がありますね。

あなたが説明した問題/要件は、まさにSQLが何に適しているかです。SQLはその仕事に適したツールです。間違いありません。

于 2009-02-14T12:47:31.287 に答える
0

並行性はあなたを苦しめます。ファイルが大きくなるにつれて複雑になり、パフォーマンスが低下します。システムクラッシュによる電源喪失など、ファイルの書き込み中に何かが破損するリスクが高まるのと同様です。

データベースは通常、これらの問題からあなたを守り、あなたをロジックに集中させます

自己結合などを使用して、データベースに階層ストレージを実装できます。

ItemID    Data   ParentID
--------------------------

ParentID は、別の行の ItemID へのポインターです。

于 2009-02-10T15:07:36.820 に答える
0

XML は、階層データに最適です。ただし、データベース内の階層データを操作することは可能です。これは、その美しさを説明しています (概念は MySQL だけに適用されるわけではありません)。

http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

個人的には、そのようなデータをテキスト ファイルに保存しません。操作ははるかに困難になります。

于 2009-02-10T14:43:33.633 に答える
0

テキストファイルに保存する方が簡単かどうかはわかりません。データの関係は同じです。確かに、SQL は常に使いやすい階層データではありませんが、フラットなテキスト ファイルでもありません。

于 2009-02-10T14:37:02.557 に答える
0

テキストファイルは同時アクセスから保護されていますか? それ以外の場合は、データベースの方が適切です。

于 2009-02-10T14:37:23.757 に答える