Die Datei Vs-Datenbank
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.
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.