phpbar.de logo

Mailinglisten-Archive

[php] Datenbankabstraktionsschichten und SQL - und PHP ;-)

[php] Datenbankabstraktionsschichten und SQL - und PHP ;-)

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Don Feb 24 12:39:17 CET 2005


Hi Norbert,

Norbert Pfeiffer schrieb:
> - Warum soll man einem Programmierer verbieten wollen,
>   dass er eigene, optimierte Querys in seinem Code
>   verwendet ?

solange die SQL-Befehle nicht auf ein Datenbanksystem optimiert sind, also
den kleinsten gemeinsamen Nenner verkörpern, ist das ja ok. Aber wenn
diese Optimierung dann den Sinn der Abstraktionsschicht aushebelt, dann
ist das nicht mehr richtig.


> - Wie soll ein "SQL Query Builder" aussehen, der mir
>   aus einer Liste mit Geburtdaten die Geburtstage der
>   naechsten 2 Wochen, mit der Bedingung, dass auch ein
>   Jahreswechsel verkraftet wird, anzeigt ?

Wenn die Datenbanktabelle richtig aufgebaut ist, dann ist das der ideale
Anwendungsfall für einen Abfragegenerator. ;-)


> - Oder denk mal nur an das leidige Tree-Problem.
>   Wie will man dem "SQL Query Builder" verklickern
>   dass er ohne Rekursionen auskommen soll/muss ?

Z.B. Nested Sets verwenden, also auch wieder eine Frage des
Datenbankdesigns. Oder im Extremfall eben eine Rekursion um den
Abfragegenerator herum.


> - Bei einem ernsthaften Abstraktionslayer muesste man
>   z.B. komfortabele Datenbanken wie Oracle/PostgeSQL
>   in ihrer ganzen Funktionalitaet fuer MySQL in PHP
>   nachbilden. Wer soll das coden ... ;-)

Sowas gibt es z.B. im Java-Bereich: TopLink. Das Bildet die relationale
Datenbank komplett über Objekte ab. Die Abfragen werden indirekt über eine
objektorientierte API erstellt, d.h. TOPLink baut die SQL-Befehle
daraufhin im Hintergrund passend für die darunterliegende Datenbank
zusammen.

Mir würde aber viel weniger reichen. Also für meine Ansprüche würde schon
einmal genügen, wenn so eine Abstraktionsschicht alles abstrahiert, was
alle von ihr unterstützten Datenbanken können. Auf die Emulation von
Funktionen, die einige Datenbanken beherrschen, andere aber nicht, könnte
man ja erst einmal verzichten bzw. hier dann eben tatsächlich mal eine
eigene Emulation bauen. :-)


> Kurz,
> ich halte Abstraktionslayer und "SQL Query Builder"
> fuer ein schoenes Diskussionsthema, solange niemand
> auf die Idee kommt, sie in der Praxis einzusetzen.

Darüber kann man diskutieren. Nicht alles was theoretisch die reine Lehre
ist, sollte man praktisch tun. Das Ziel sollte aber sein, eine
Abstraktionsschicht, wenn man sie schon einsetzt, auch so zu nutzen, daß
ihr Einsatz nicht sinnentleert wird. :-)


Viele Grüße

Lutz


php::bar PHP Wiki   -   Listenarchive