Frage

Ich werde eine Access Control List für jeden einzelnen Benutzer implementieren, so dass sie Zugriff auf ihre eigenen Ressourcen zuweisen können, so dass sie Sachen verstecken können, zum Beispiel, von ihren Müttern, aber ihre Freunde zeigen.

Jetzt ACL in einer Datenbank zu speichern scheint, wie es ziemlich verrückt bekommen kann, wenn jeder Benutzer auch eine Gruppe, die viele Untergruppen haben können. Also von Ich denke, die ACL Sachen in einer Textdatei speichern.

gute Idee? Schlechte Idee?

EDIT: Ich sollte anmerken, ich spreche von einer einzelnen Textdatei für jeden Benutzer. Ich denke, eine ACL-Klasse zu schaffen, die ich serialisiert konnte und in die Textdatei schreiben. Meine Befürchtung ist, dass die ACL in einer Datenbank zu speichern Tabellen schaffen würde irrsinnig großes beitreten und eine erhebliche Belastung auf dem Datenbank-Server setzen.

War es hilfreich?

Lösung

die Option I ACL in einer Datenbank gespeichert werden sollte:

  • Die Sprache zuzugreifen und die Daten abfragen, ist einfacher und Standard (SQL)
  • Die DB wird Ihnen Transaktionen, Indizes für schnelle Abfrage, Integritätsbedingungen und Sicherheit.
  • Je nachdem, wie Sie die Daten in einer lokalen Datei speichern müssen Sie Ihre Datendateien zusammen mit der Anwendung bewegen. Ex: Bewegliche Anwendung von server1 zu server2.
  • Für Daten, die unveränderlich ist (oder nicht so oft ändern) sollte eine gewisse Form von Cache verwendet werden. Also, unabhängig, wenn Sie Datei oder DB verwenden, sollten Sie einige dieser Daten für einen gewissen Zeitraum werden Caching.
  • Ich bin mir ziemlich sicher, dass Sie gute ACL-Schemata-Vorlagen für relationale Datenbank finden können, die Sie als Referenz, wie dieses Dokument hier verwenden können: http://edhs1.gsfc.nasa.gov/waisdata/v2r20/ps/cd31110001.ps

Ich hoffe, es hilft.

Andere Tipps

Ich bin mir nicht sicher, wie es ist einfacher es in einer Textdatei speichern. Die Beziehungen der Daten sind die gleichen. Zugegeben, SQL ist nicht immer freundlich hierarchische Daten, aber weder ist eine einfache Textdatei.

Ist Ihre Text-Datei gegen die gleichzeitigen Zugriff geschützt? Else eine Datenbank wird eine bessere Idee.

XML ist ideal für hierarchische Daten. Es ist möglich, mit hierarchischen Daten in einer Datenbank, obwohl zu arbeiten, das erklärt, wie schön (die Begriffe gelten nicht nur für MySQL):

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

Persönlich würde ich nicht speichern Daten wie in einer Textdatei. Die Manipulation wird viel schwieriger.

Concurrency werden Sie beißen. Wie wird die Komplexität und verringert die Leistung, wenn die Datei größer wird. Wie wird das erhöhte Risiko von Korruption etwas geschieht während des Schreibens der Datei wie Leistungsverlust von Systemabstürzen.

Eine Datenbank finden Sie im Allgemeinen von diesen Fragen abzuschirmen und lassen Sie sich auf die Logik konzentrieren

Sie können die hierarchische Speicherung in einer Datenbank implementieren mit selbst schließt sich z

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

Wo ParentID einen Zeiger auf ItemID von einer anderen Zeile ist

  

Meine Befürchtung ist, dass die ACL in einer Speicher   Datenbank schaffen würde wahnsinnig riesig   beitreten Tabellen und setzen einen bedeutenden   Stamm auf dem Datenbankserver.

Mit einer Textdatei pro Benutzer und Ihre Gruppen / Untergruppen vermutlich in einigen anderen Dateien, werden Sie Ihre eigene verbindet rollen müssen, nicht wahr?

Das Problem / Anforderung, die Sie beschrieben haben, ist genau das, was SQL ist gut für. SQL ist das richtige Werkzeug für den Job, keine Frage.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top