phpbar.de logo

Mailinglisten-Archive

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

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

Andreas Heigl a.heigl at wdv.de
Mit Feb 23 18:50:26 CET 2005


Lutz Zetzsche schrieb:

> 
> Wenn also eine Datenbankabstraktionsschicht in Frage käme, dann müßte
> diese doch einen "SQL Query Builder" (wie z.B. PEAR DB_DataObject) haben
> und nur der dürfte verwendet werden. Dann wiederum stellt sich die Frage,
> wieweit ich mit diesem "Query Builder" dann bei komplizierten,
> verschachtelten Datenbankabfragen über mehrere Tabellen komme...
> 
Ich habe mir aus diesem Grund mehrere Klassen geschrieben, mit denen ich
SQL-Abfragen 'nachbaue'. Eine Klasse beschreibt z.B. Ein SELECT-Statement,
eine Klasse beschreibt ein WHERE-Statement etc. Dadurch kann ich in der
Applikation Abfragen stellen, ohne zu wissen, welcher Datenbackend läuft.
Prinzipiell ist es sogar möglich die durch die Klassen beschriebenen
Statements z.B. an einen LDAP-Server zu richten.

> Kommt man in der Praxis vielleicht dadurch am weitesten, daß man sich
> selbst eine kleine, datenbankabhängige, austauschbare Zwischenschicht
> ("Wrapper") baut, die die datenbankspezifischen nativen PHP-Funktionen
> kapselt und wo man auch die SQL-Befehle zusammenbastelt?
> 
Die ganze Abfragerei im Hintergrund löst eine Wrapper-Klasse, die je nach
Datenbackend dann die PHP-spezifishen Befehle aufruft.

Das ganze hat nur zwei Haken:
Erstens muss ich noch Funktionen implementieren ( das ist eine Frage der
Zeit und der Musse)
Zweitens kann ich bei echter Backendunabhängigkeit nicht alle Funktionen
einer bestimmten Datenbank ausschöpfen. Schön, das PostgreSQL Views
beherscht, aber wenn ich das ganze auch unter MySQL haben können will, kann
ich das nicht nutzen.
Und in meinen Augen liegt da der Hase im Pfeffer.

> Gedanken über Gedanken, Fragen über Fragen. :-))) Kurze Frage also: Wie
> seht Ihr das, und wie handhabt Ihr das bei Euren PHP-Anwendungen?

Also ich bin ganz zufrieden mit meiner Abstraktionsschicht. Und die
Möglichkeit unterschiedliche Daten aus Unterschiedlichen Quellen holen zu
können ist dann sogar noch ein Bonus ( z.B. Benutzerauthentifizierung aus
dem LDAP und alles andere aus einer Datenbank ohne irgendwas neu schreiben
oder ändern zu müssen is schon schick.)

Aber um ganz ehrlich zu sein: Für eine kleine Anwendung mit 15 - 20 Abfragen
lohnt der Aufwand glaub ich nicht.... :-)

Frage beantwortet?

Grüße

Andreas
-- 

wdv Medien & Kommunikation GmbH & Co. OHG
Mediendatenverarbeitung
Andreas Heigl
Siemensstrasse 6
61352 Bad Homburg
Germany
Telefon +49-(0)6172-670-185
Telefax +49-(0)6172-670-181
www.wdv.de



php::bar PHP Wiki   -   Listenarchive