Nick: Performance oder Wartbarkeit

Beitrag lesen

Hallo.

Ich würde mal gerne von anderen wissen, wie sie Programme technisch verwalten. Nehmen wir z. B. eine Website, die aus verschiedenen PHP-Skripts besteht und Einträge in einer DB verwaltet. Vielleicht hat sie eine Spalte in der Datenbank, aus der auf einer Seite ein Optionsfeld (select) erstellt werden soll. In der Datenbank werden die Einträge des Optionsfeldes in einem (My-SQL-)Enum-Feld gespeichert: Auswahl 1, Eintrag 2, stelle3, wie auch immer. 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.

Mir gefällt schon mal Dein Gedanke zur Optimierung und Wartungsfreundlichkeit.

Was aber, wenn sich nun doch einmal etwas ändert? 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.

Hier würde ich in Abhängigkeit vom konkreten Fall schauen, was besser ist. Wie wahrscheinlich ist eine Änderung der DB-Struktur? Wenn sich die DB-Struktur ändert, führt das zu weiteren Änderungen, die ohnehin eine Code-Änderung notwendig machen?

Wie sehen die DB-Zugriffe aus, wie wird die Entwicklung für die Zukunft prognostiziert. Lohnt sich der Performancegewinn im Vergleich zum höheren Codewartungsaufwand?

Warum man den Code (auch wenn man in PHP die Info aus der DB dupliziert) nur an einer Stelle pflegen sollte, führst Du weiter unten bereits selbst aus.

Ich weiß, es ist wahrscheinlich eine verdammt dumme Frage, aber ich habe in einer Zeit das Programmieren gelernt, als man z. B.

Ich halte es eher für eine überdurchschnittliche intelligente Frage. Die meisten Leute werden sich vermutlich über die Langlebigkeit und die damit verbundene wichtige Wartbarkeit ihres Codes keine Gedanken machen. Wenn ich überlege, was ich alles schon an zusammengestückelten, undokumentierten Sourcen gesehen habe... :-O

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. Leider komme ich da nicht aus meiner Haut. Ich sehe ja,

Naja, früher waren interpretierte Sprachen/Systeme ja auch eher verpönt, während sie heute wieder im Kommen sind...

bei einer kleinen Website ist es ziemlich egal, ob ich eine Select-Anfrage mehr oder weniger an die Datenbank schicke, doch mein Gedanke ist immer, was ist, wenn die Site mal größer wird. 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 sowieso. Also die (in Assembler dann wohl eher zu Fuß zu bauenden) Konstrukte wie Funktionen auf jeden Fall im Sinn der Wiederverwendbarkeit und Wartbarkeit nutzen.

Also im vorliegenden Beispiel entweder aus der DB die Daten aufbauen oder (Performanceplus) die Informationen aus der DB in PHP duplizieren (um DB-Zugriff zu sparen), beides aber in jedem Fall an nur einer Stelle im Code, nämlich in einer Funktion, die in einer include-Datei ausgelagert ist.

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.

Klar überlege ich... und hin- und wieder gibt's dennoch Quick'n'Dirty-Teile im Source... :-)

Nick

--
--------------------------------------------------
http://www.xilp.eu
XILP Internet Links People
Dein persoenliches privates Netzwerk
aus Freunden, Verwandten, Bekannten und Kollegen.
--------------------------------------------------
Hamburg Berlin München