wahsaga: Performance oder Wartbarkeit

Beitrag lesen

hi,

Eine Möglichkeit wäre, vor der Ausgabe des Optionsfeldes alle Einträge in der Datenbank abzufragen und dann das Select-Feld dynamisch zu befüllen. Als ehemaligem Assembler-Programmierer geht mir sowas aber gehörig gegen den Strich, wenn ich weiß, die Einträge bleiben immer gleich. Eine andere Möglichkeit wäre dann, die Einträge direkt im Skript zu speichern.

Was aber, wenn sich nun doch einmal etwas ändert?

Dann war ja die ursprüngliche Annahme, sie blieben _immer_ gleich, falsch.

Als Programmierer in einer komplierten Sprache müsstest du jetzt sogar wieder den Compiler anwerfen, das Programm neu ausrollen, etc. - _das_ kann's ja eigentlich auch nicht sein.

Richtig, der Code muß geändert werden. Wird das Optionsfeld oder Einträge daraus an verschiedenen Stellen und in verschiedenen Skripts gebraucht, muß das auch an allen Stellen geändert werden. Das verursacht Arbeit, und es ist nicht unwahrscheinlich, daß irgend etwas vergessen wird. Wären die Optionsfelder dynamisch befüllt worden, hätte eine simple Änderung an der Datenbank gereicht.

Ebend :-)

Programmlogik und Daten sollten grundsätzlich getrennt werden.

Gut begründete Abweichungen von dieser Maxime sind natürlich denkbar (wie bei allen anderen Maximen auch).
Dann wäre aber zu überlegen, wie man das Ganze gegen das erwähnte "Vergessen" von Änderungen und ähnliche Fehlerquellen absichert, welche Schritte bei einer Änderung zu dokumentieren sind, um eben "Vergessen" weitgehend ausschliessen zu können, etc.

Ich weiß, es ist wahrscheinlich eine verdammt dumme Frage, aber ich habe in einer Zeit das Programmieren gelernt, als man z. B. Berechnungen für Bewegungen im voraus anstellte und die Ergebnisse in einer Tabelle ablegte, um maximale Programmbeschleunigung zu erreichen. Die Berechnungen während der Programmausführung durchzuführen wäre viel zu langsam gewesen. Heute ist das wohl kaum noch nötig.

Mit Ressourcen allzu verschwenderisch umzugehen, ist trotzdem nicht angebracht.

Gerade bei komplexeren Berechnungen, deren Ergebnisse "statisch" bleiben, so lange sich auch die Eingabedaten nicht ändern, ist ein "Caching" der Ergebnisse natürlich oftmals sinnvoll.

Das einzige, was man noch tun könnte, unnötige Datenbankabfragen zu vermeiden, ist, Inhalte, die mehrfach verwendet werden oder die womöglich irgendwann geändert werden müssen, in einer inkludierten Datei abzulegen.

Das kann man ja zu einem Kompromiss kombinieren.
Die eigentlichen Daten werden in der Datenbank vorgehalten, und auch dort ggf. geändert.
Von diesen zieht man dann ein "Abbild" - im PHP-Umfeld könnte das bspw. eine entsprechend serialisierte, oder auch gleich als parse-barer Code in einer Include-Datei abgelegte Datenstruktur sein - die wird einfach eingebunden, und steht sofort zur Verfügung.
Natürlich muss dieses Include dann neu generiert werden, wenn sich die Daten auf der Datenbank ändern. Auch hier ist wieder zu überlegen, wie man das verlässlich triggern kann.

Deshalb würde ich gern mal wissen, ob Ihr auch solche Überlegungen anstellt, oder aus ökonomischen Gründen auf maximale Wartbarkeit Wert legt, sprich alles in einer Datenbank ablegt, egal ob das zusätzliche, unnötige Datenbankabfragen bedeutet.

Wenn man mehrere Faktoren zu berücksichtigen hat, welche die Gesamteffizienz eines Systems in unterschiedliche Richtungen beeinflussen, dann wird man in aller Regel nicht in einer bestimmten Hinsicht "optimieren", weil das sich auf die anderen Faktoren ungünstig auswirkt - sondern auch hier einen Kompromiss suchen, der alle Faktoren möglichst ausgewogen berücksichtigt, um ein stimmiges Gesamtbild zu erhalten.

Eine Applikation, die von einem Vierjährigen zu warten wäre, aber in Punkto Performance und Bedienbarkeit durch den Endanwender stark zu wünschen übrig lässt, ist genauso ein Rohrkrepierer, wie eine mit der einfachsten und effizientesten Datenhaltung, die aber nur von einem Spezialisten gewartet werden kann, der selbst für die Übersetzung der Textausgabe "hello world" in eine andere Sprache fünf Tage lang ins System eintauchen muss ...

gruß,
wahsaga

--
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }