Lucien: Verarbeitung im Programm oder in der DB?

Hallo Leute!

Im Bezug zu dieser Antwort (https://forum.selfhtml.org/?t=88451&m=527318) auf eine Frage in diesem Forum, ist bei mir jetzt wiederum eine Frage aufgekommen:

Zuerst mal die mich verwirrende Aussage:

[...] Es ist Aufgabe Deiner API, vor dem Wegschreiben und nach dem Holen [aus der / in die Datenbank] die Datenformate aufeinander anzupassen.

Jetzt meine Frage dazu:
Sollte man nicht versuchen aus der Datebank, die Daten so zu erhalten, dass man möglichst wenig daran ändern muss? Also soviel Verarbeitung / Auswertung wie möglich von der Datenbank übernehmen lassen sollte? Im Bezug zu dem genanten Thread also die Formatierung einer Zeitangabe über DATE_FORMAT().

Grüsse, Lucien

  1. Hello,

    Im Bezug zu dieser Antwort (https://forum.selfhtml.org/?t=88451&m=527318) auf eine Frage in diesem Forum, ist bei mir jetzt wiederum eine Frage aufgekommen:

    Zuerst mal die mich verwirrende Aussage:

    [...] Es ist Aufgabe Deiner API, vor dem Wegschreiben und nach dem Holen [aus der / in die Datenbank] die Datenformate aufeinander anzupassen.

    Jetzt meine Frage dazu:
    Sollte man nicht versuchen aus der Datebank, die Daten so zu erhalten, dass man möglichst wenig daran ändern muss? Also soviel Verarbeitung / Auswertung wie möglich von der Datenbank übernehmen lassen sollte? Im Bezug zu dem genanten Thread also die Formatierung einer Zeitangabe über DATE_FORMAT().

    Nein. Die Datenbank hat möglichst neutrale Datenformate zu liefern. Das API sit dafür zuständig, diese Formate an das entsprechende Frontend anzupassen. Natürlich können im API beteits normale Konvertierungsfunktionen der Datenbank genutzt werden. Die sollten aber so einfach gehalten sein, dass an der SQL-Schnittstelle immer Standarddaten (passend zur DB) ausgetauscht werden.

    Bei MySQL sieht man das nicht so deutlich, aber bei DBMS mit Stored Procedures zahlt man die Entschichtungsfehler richtig teuer, wenn man aus verscheidenen Richtungen auf denselben Datenbestand zugreift. Man muss also immer berücksichtigen, dass auch die DBMS bereits einen Teil des API zur Clientseite stellen.

    Wenn man die Darstellungsanpassung nur für einen einzigen Treffer durchführen muss, ist es bei einfachen DBMS meistens billiger, diese Anpassung erst in der API zu machen. Wenn man die Anpassung allerdings für alle Datensätze des Filterbereiches vornehmen muss, wird es egal sein, ob man der DBMS oder der API diese Aufgabe aufbürdet. Aufgabensteller sollte aber immer das API sein, damit andere Clients über ein entsprechendes API auch noch mit den Daten zurecht kommen.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
  2. yo,

    Sollte man nicht versuchen aus der Datebank, die Daten so zu erhalten, dass man möglichst wenig daran ändern muss? Also soviel Verarbeitung / Auswertung wie möglich von der Datenbank übernehmen lassen sollte? Im Bezug zu dem genanten Thread also die Formatierung einer Zeitangabe über DATE_FORMAT().

    die datenhaltung würde ich auch so "neutral" wie möglich halten, atomar wäre hier ein stichwort, wobei zu beachten ist, dass das nicht immer das gleiche bedeutet. bei der ausgabe/eingabe sehe ich weniger probleme damit, funktionen wie date_format() des dbms zu benutzen und die daten auf die gewünschte form umzugestalten. oder kurz gesagt, datenhaltung nicht formatieren, ausgabe/eingabe kann formatiert werden.

    Ilja