php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 10.02.2010, 10:57   #1 (permalink)
Benutzer
 
Registriert seit: 03.02.2010
Beiträge: 51
PHP-Kenntnisse:
Fortgeschritten
Puccini befindet sich auf einem aufstrebenden Ast
Standard SQL vs PHP - wo besser die Logik unterbringen

Hi,

mir brennt da ne frage untern den fingernägeln

was ist besser um logik für ein projekt abzubilden? PHP oder SQL?

ein freund von mir is der übelste sql pro, macht fast nur alles damit, klappt auch alles super, aber ich als php-entwickler finde es schöne, richtigen code und funktonen zu haben.

also zum sachverhalt:

er prüft und validiert alles mittels sql, erzeugt alle nachrichten und was weis ich...

wenn ich das machen würde, gäb es vieleicht einen select und einen insert/update, der rest würde in php abgebildert.

was ist da besser?

SQL ist sicher performat, aber wenn das projekt gross wird und viel last erzeugt, wäre doch php besser, da man das clustern kann oder?

wie seht ihr das?
Puccini ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 10.02.2010, 11:00   #2 (permalink)
Moderator
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 7.187
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Allein prüfen und Validieren ist schon mal problematisch. Denn die Daten müssen überprüft werden BEVOR sie in einen Datenbankquery geschrieben werden. Macht für mich auch keinen Sinn die Anwendungslogik in die Datenbank zu drücken.
Flor1an ist gerade online   Mit Zitat antworten
Alt 10.02.2010, 11:02   #3 (permalink)
Erfahrener Benutzer
 
Registriert seit: 24.10.2008
Beiträge: 150
PHP-Kenntnisse:
Fortgeschritten
KarlEgon befindet sich auf einem aufstrebenden Ast
Standard

Berechnungen usw. können sicherlich von der Datenbank übernommen werden, aber das überprüfen von Daten würde ich auch in PHP abbilden.
KarlEgon ist offline   Mit Zitat antworten
Alt 10.02.2010, 11:04   #4 (permalink)
Moderator
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 7.187
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Ich denke es kommt immer auf den Anwendungsfall darauf an. Datum formatieren kann MySQL gerne machen, einfache Rechnungen zwischen den Spalten von mir aus auch. Sobald dann Kontrollstrukturen mit rein kommen muss man sich überlegen ob es Sinn macht.
Flor1an ist gerade online   Mit Zitat antworten
Alt 10.02.2010, 11:04   #5 (permalink)
Erfahrener Benutzer
 
Registriert seit: 28.01.2010
Beiträge: 292
PHP-Kenntnisse:
Fortgeschritten
tkausl kann nur auf Besserung hoffen
Standard

man muss es in grenzen halten. SQL hat seine aufgaben genau wie PHP
wenn man mehrere tabellen hat und von jeder einige daten braucht ist es sicher besser SQL die teile zusammenpacken zu lassen als mit php alle tabellen einzeln abzurufen.
tkausl ist offline   Mit Zitat antworten
Alt 10.02.2010, 11:10   #6 (permalink)
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 734
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian wird schon bald berühmt werden
Standard

Wenn man gemäß MVC Muster vorgeht dann hat die Logik in der Datenbank nichts zu suchen.

Aber man kann es sich auch vom Namen herleiten: DATENbank, nicht Logikbank!

Die Datenbank ist zum speichern und abfragen von Daten da, nicht zum Ausführen komplexer Anwendungslogik.

Zitat:
Datum formatieren kann MySQL gerne machen
Empfinde ich shcon wieder grenzwertig. Die Formatierung von Daten ist eigentlich nicht Aufgabe der Datenbank sondernd er View.

Zitat:
einfache Rechnungen zwischen den Spalten von mir aus auch
Da hingegen stimme ich zu. Dafür ist es ja auch da, z.B. maxima/minima ermitteln, zählen etc. fällt ja alles unter Abfrage der bestehenden Daten.

@TE
Ein schönes Beispiel ist Vor/Nachname.

Ich könnte meinen Select so absetzen das ich nur das Feld "name" erhalte welches eine Kombination der Felder Vorname und Nachname darstellt.

Dann brauch ich ja weniger PHP! Nachteil: Wenn ich z.B. Herr Meyer anzeigen lassen will muss ich erst wieder umständlich den Namen teilen. Wenn ich alle drei "name_komplett", "vorname", "nachname" ausgebe erzeuge ich ggf. nicht benötigten Overhead wenn "name_komplett" in meiner Ausgabe gar nicht benötigt wird.

Gebe ich nur "vorname" "nachname" aus bleibt es der Anwendung überlassen was dargestellt wird (ein Social Network würde warscheinlich nur "vorname" ausgeben, eine proeffsionelle Werbeseite "herr nachname" und ein Newsletter warscheinlich "vorname nachname").

Das Ziel beim Programmieren ist es ja sich Arbeit zu ersparen. Wenn ich nun Software schreibe die nicht wiederverwendbar ist und ich für jede Anwendung alle SQL-Befehle überarbeiten muss (weil das Format der Daten nicht passt) dann mache ich definitiv etwas verkehrt.
__________________
Truthähne starren während schwerer Regenfälle oft in den Himmel und ertrinken.

Geändert von Dark Guardian (10.02.2010 um 11:18 Uhr).
Dark Guardian ist gerade online   Mit Zitat antworten
Alt 10.02.2010, 11:15   #7 (permalink)
Erfahrener Benutzer
 
Registriert seit: 13.05.2009
Beiträge: 742
PHP-Kenntnisse:
Fortgeschritten
dennis81 befindet sich auf einem aufstrebenden Ast
Standard

Stell dir mal vor was passiert, wenn du die Datenhaltung änderst
Dann steht Mr. SQL aber auf'm Schlauch.
__________________
Es ist schon alles gesagt! Nur noch nicht von allen! (Karl Valentin)
Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)
dennis81 ist offline   Mit Zitat antworten
Alt 10.02.2010, 11:33   #8 (permalink)
Benutzer
 
Registriert seit: 03.02.2010
Beiträge: 51
PHP-Kenntnisse:
Fortgeschritten
Puccini befindet sich auf einem aufstrebenden Ast
Standard

hmm, das will er aber net verstehen XD

das mit den einfachen aufgaben ist mir klar, dafür sind ja auch die funktionen im sql supi!

aber er macht sehr komplizierte views da, hat (weis net wie das heist) "event's" drin, die reagieren, sobald sich ein wert einer spalte ändert und dann ausgaben/log's erzeugen etc.

ich finde, sowas sollte ins php, da dort ja wie ihr shcon sagt die logik sitzen sollte.

Das mit dem validieren ist mir auch ein echter dorn im auge! selbst wenn wir es via prepared statement laufen lassen, ist nicht sichergestellt das wirklich alles sicher ist da is es einfacher erst im php zu prüfen und dann das sql zu bemühen.



danke schonmal für eure antworten.

Habt ihr noch anregungen/tipps/erfahrungswerte bezüglich der Performance, sobald es ans eingemachte geht? (wir rechnen mit ca 500-1000 aktiven Nutzern gleichzeitig zu spitzenzeiten (ich weis, is kein ding ala facebook oder wie sie alle heisen, aber für uns shcon viel ))
Puccini ist offline   Mit Zitat antworten
Alt 10.02.2010, 11:43   #9 (permalink)
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 734
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian wird schon bald berühmt werden
Standard

Zitat:
Zitat von Puccini Beitrag anzeigen
aber er macht sehr komplizierte views da, hat (weis net wie das heist) "event's" drin, die reagieren, sobald sich ein wert einer spalte ändert und dann ausgaben/log's erzeugen etc.
Du meinst Trigger.

Das ist ja wieder was anderes. Wenn ich Zusammenhängende Daten auf mehrere Tabellen aufteile und sich in einer Tabelle etwas ändert ist es, je nach Fall, schon sinnvoll mit einem Trigger direkt in der zweiten Tabelle die Daten mit zu ändern.

Das ist ja alles noch i.O. Aber sobald das Ändern der Daten der zweiten Tabelle an erneute Bedingungen geknüpft ist wird es schon was anderes.

Um mal ein Beispiel zu nennen:

Ich habe Benutzer und Gruppen. Wenn ich einen Benutzer anlege und dem per Texteingabe eine Gruppe mitgebe und diese noch nicht existiert soll sie angelegt werden. Lässt sich schön in SQL abbilden und nimmt dem Benutzer Aufwand ab.

Ich lösche den letzten Benutzer aus einer Gruppe und möchte eine Option haben die Gruppe dann direkt mit zu löschen. Wohlgemerkt die OPTION. Ich kann das auch in SQL abbilden mittels Kontrollstrukturen aber dann kann ich von außerhalb keinen Einfluss mehr darauf nehmen das die Datenbank den Trigger auslöst. womit die Wiederverwertbarkeit der Anwendung abnimmt.
__________________
Truthähne starren während schwerer Regenfälle oft in den Himmel und ertrinken.

Geändert von Dark Guardian (10.02.2010 um 11:48 Uhr).
Dark Guardian ist gerade online   Mit Zitat antworten
Alt 10.02.2010, 11:50   #10 (permalink)
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 3.978
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist einfach richtig nettmepeisen ist einfach richtig nettmepeisen ist einfach richtig nettmepeisen ist einfach richtig nett
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Eine Diskussion ist sicherlich nett aber jeder hier hat Recht. Warum? Weil es wirklich nur auf den Anwendungsfall drauf an kommt. Aber nicht nur auf diesen. Die Themen Performance, Datenmodellierung und Aufwand sind so eng verwoben, dass man nie eine pauschale Aussage treffen kann. Wenn man also erwartet, von einem Beispiel sofort einen allgemeinen Lehrsatz herzuleiten, der wird sich noch arg wundern, wenn das in der Praxis fast nie funktioniert. Dazu sind die Einflussfaktoren zu komplex.

Zitat:
Zitat von Dark Guardian Beitrag anzeigen
Aber man kann es sich auch vom Namen herleiten: DATENbank, nicht Logikbank!
Das ist noch einer der intelligentesten Sätze, die hier gefallen sind. Jedoch kannst du auch diesen Satz nie so genau auf jeden Fall umsetzen. Logik aus der Datenbank wegzulassen ist nicht immer der Weisheit letzter Schluss.
Manches mal muss man Logik ins SQL schreiben, weil du dadurch zwar den SQL etwas langsamer machst und komplizierter, dennoch aber beispielsweise die Menge der Daten auf einen bruchteil reduzieren kannst.
Manches mal muss man Logik aus dem SQL rauslassen, weil die Datenbank diese Logik zu aufwändig verarbeiten wird, die Anwendung aber deutlich effizientere Algorithmen anwenden kann.
Manches mal muss man sein Datenmodell anpassen und bewusst von der Normalisierung abweichen, nur um eine Anwendungslogik möglichst effizient und mit wenig Code abbilden zu können.

Vieles ist hier schon andeutungsweise gefallen. Eine pauschale Antwort auf diese Dikussion gibts nicht. Ihr habt alle Recht
__________________
Entwickler aus Leidenschaft und ein Zahnrad in einem der größten Java-Projekte der Welt.
Kostenlos-Webspace zu Weihnachten
mepeisen ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Kann man HTML auch in ''Stylesheets'' unterbringen ? WrestlingAE HTML, Usability und Barrierefreiheit 6 14.01.2010 20:08
fehlerfreies formular - aber wie schneller, besser, schlanker? fripon77 PHP Einsteiger 21 25.12.2009 23:58
[Erledigt] Eval() oder str_replace() was besser? BartTheDevil89 PHP Einsteiger 17 12.02.2009 22:30
[Erledigt] Script von PHP 4 auf 5 umschreiben oder doch besser die PHP Version ändern Technikus Scriptbörse 30 28.10.2008 19:25
Was findet ihr besser? KeinGrips Server, Hosting und Workstations 0 06.09.2008 13:12
Besser: Datum mit PHP oder MySQL? SilentSight PHP Tipps 2008 16 21.07.2008 14:33
Neuer IE7 besser als FF? mark_gebert Off-Topic Diskussionen 3 13.11.2006 19:49
Besser Programmieren (!?) PHP Tipps 2005 12 04.05.2005 20:46
Was ist besser Photoshop 7.0 oder Fireworks von Macromedia ? Off-Topic Diskussionen 14 25.02.2005 12:21
[OT] besser eine Tabelle mit mehr Spalten oder aufteilen ? Datenbanken 1 22.10.2004 17:26
was ist besser? PHP Tipps 2004 5 12.09.2004 16:52
[Erledigt] Vokabelabfrage per Formular / Besser in PHP oder DB ? PHP Tipps 2004 5 21.08.2004 20:21
Welches Layout ist besser? themonk Off-Topic Diskussionen 38 04.08.2004 16:57
Ergebnisse einer Abfrage besser anordnen?? PHP Tipps 2004 8 24.06.2004 23:14

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
logik in der datenbank, performance sql vs php, projekte für php, sql logik, sql vs php, die logik des php, abfragen logik in sql oder im code, logik in die datenbank, php effizient viele datensätze prepare statement, sql-abfragen aus der anwendungslogik in datenbank ausführen?, besser als php, besser als sql, php layout logik inhalt tipps, php besser wie html, logic sql vs php, java vs php bei sql

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:00 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum