Best Practice: Daten-Kalkulation

bestella

Benutzer
Beiträge
22
Hi,

ich habe nun schon länger nichts mehr gemacht um mich weiter zu bilden (einfach keine Zeit gefunden). Nun stellt sich mir jedoch folgende Frage: folgendes Beispiel-Usecase

es sei eine Website auf der Bauern mehlsäcke verkaufen, folgende Werte sollen im Frontend ausgegeben werden:

a = Anzahl verkaufte Mehlsäcke
b = verkaufs-preis pro Mehlsack
c = erlös aus verkauf.

erlös aus verkauf ergibt sich aus den anderen Werten, also c = a * b

Die Große Frage ist nunm würdet ihr die werte berechneter Weise in die Datenbank eintragen oder besser die Ausgabe im Frontend berechnen? und wenn ja warum??

Ich stelle mir vor, dass das Berechnen der Werte im frontend recourcen-hungriger ist, als das einfache Abrufen des fertig berechneten Wertes aus der Datenbank, sehe ich das richtig?

...andererseits können datenbanken so natürlich schnell unübersichtlich sein + der jenige der die Sachen imFrontend bearbeitet hat keinen Überblick darüber wie die daten zustande kommen bzw. kann diese nicht so einfach anpassen.

Vielen Dank für eure Hilfe und liebe Grüße. :*
( gesendet von meinem Smartphone )
 
Werbung:
berechenbare Werte speichert man nicht, das wäre redundant und gilt als absoluter FAIL. Die Berechnung kann beim SELECT oder im Client erfolgen.
 
Ich stelle mir vor, dass das Berechnen der Werte im frontend recourcen-hungriger ist, als das einfache Abrufen des fertig berechneten Wertes aus der Datenbank, sehe ich das richtig?

Der Gedanke kommt daher, dass die Berechnung im Frontend ja jedes mal durchgeführt werden muss, meine Vermutung ist, dass der Abruf aus der DB schneller geht als die Berechnung per PHP.
 
Datenbanken haben typischerweise sehr viel eher ein IO-Problem als ein CPU-Problem. 100 Millionen Rows von Platte lesen ist deutlich teuer als 100 Millionen mal 2 Zahlen zu multiplizieren.

Das ist aber nicht der Hauptgrund, warum man Redundanz vermeiden sollte. Angenommen, Du speicherst a, b sowie die Summe von a+b in der Spalte c. Irgendwann macht mal jemand ein Update einer der Spalten. Plötzlich steht in der DB für a=5, b=10 und c=30. Finde den Fehler!
 
Werbung:
Zurück
Oben