2009-01-28 24 views
17

Ich frage nicht wirklich, ob ich für 100% meiner Anwendungskonfiguration entweder ein RDBMS oder Konfigurationsdateien verwenden soll, sondern welche Konfiguration für welche Methode am besten geeignet ist.Konfiguration in einer Datei oder einer Datenbank?

Zum Beispiel habe ich gehört, dass "jede Art von Konfiguration, die nicht durch den Endbenutzer veränderbar ist" in Konfigurationsdateien und nicht in der Datenbank sein sollte. Ist das genau? Wie adressierst du die Konfiguration?

(Ich bin in erster Linie mit hier vielen Anwender Web-Anwendungen, aber keine besondere Plattform.)

+0

Verwenden Sie eine Datenbank. Sie werden wahrscheinlich weniger Kopfschmerzen in der Zukunft haben ... – TechJS

Antwort

11

Ich finde, dass es während der Entwicklung von großem Vorteil ist, wenn die Konfiguration in einer Datei gespeichert ist.

Es ist viel einfacher, eine Datei (web.config, app.config oder eine benutzerdefinierte Datei) auszuchecken und Änderungen vorzunehmen, die beim Ausführen des Codes sofort übernommen werden. Beim Arbeiten mit einer Konfiguration, die in einer Datenbank gespeichert ist, ist etwas mehr Reibung erforderlich. Wenn Ihr Team eine einzige Entwicklungsdatenbank verwendet, können Sie leicht andere Teammitglieder mit Ihrer Änderung beeinflussen, und wenn Sie einzelne Datenbanken haben, dauert es mehr als ein "Get Latest", um mit der neuesten Konfiguration zu arbeiten. Die Flexibilität von XML macht es auch natürlicher, Konfigurationen zu speichern, die mehr als nur "Name-Wert" -Paare in einer Datei enthalten als in einer relationalen Datenbank.

Der Nachteil ist, dass Sie die Konfiguration für mehrere Apps oder Website-Instanzen wiederverwenden möchten. In meinem Fall haben wir eine einzige Konfigurationsdatei an einem bekannten Ort, die von jeder Anwendung referenziert werden kann.

Zumindest speichern wir so eine "statische" Konfiguration, die zur Laufzeit nicht vom System aktualisiert werden muss. Benutzereinstellungen sind wahrscheinlich besser für die Speicherung in der Datenbank geeignet.

+0

+1 Sehr tief und weise Antwort. Ich würde auch empfehlen, die Konfiguration im Code zu behalten, wenn es nicht zur Installations-/Bereitstellungszeit geändert werden muss. Dies wird die Überprüfung der Kompilierungszeit erzwingen und viele Konfigurationsprobleme früh im Entwicklungsprozess verhindern. –

4

Eines ist zu conside wie viele Konfigurationsdaten gibt, und vielleicht, wie oft ist es wahrscheinlich zu ändern. Wenn die Menge der Daten klein ist, dann würde das Speichern in einer Datenbank (wenn Sie noch keine db für etwas anderes verwenden) übertrieben sein, ebenso eine db für etwas beizubehalten, das einmal alle 6 Monate geändert wird, wäre wahrscheinlich eine Verschwendung von Ressourcen.

Das heißt, wenn Sie bereits eine Datenbank für andere Teile Ihrer Website verwenden, dann ist das Hinzufügen einer Tabelle oder zwei für Konfigurationsdaten wahrscheinlich kein großes Problem, und kann gut in die Art und Weise passen, wie Sie den Rest speichern deine Daten. Wenn Sie bereits eine Klasse zum Speichern Ihrer Daten in einer Datenbank haben, schreiben Sie eine neue, um sie in einer Konfigurationsdatei zu speichern.

4

Allgemeiner Grundsatz - je höher die Wahrscheinlichkeit ist, dass die Konfigurationsdaten geändert werden, desto besser können sie in db eingegeben werden

+0

GREAT EIN LINER! Eigentlich neigt alles auf dieser Welt dazu, sich zu ändern, also habe ich mich immer für Dinge entschieden, bei denen Prozeduren zugunsten von Veränderungen definiert sind. Ich ermutige jeden, Datenbank für die Konfiguration und Dateien für Dateien (wie Bilder usw.) zu verwenden. – TechJS

Verwandte Themen