Mit der Database-Komponente stellen eZ Components eine SQL-Query-Abstraktion bereit, welche die einheitliche Interaktion mit verschiedenen Datenbankmanagementsystemen ermöglicht.
6 Datenbankanbindung
Das Web ist entstanden, um Mitmenschen Daten zu präsentieren und mit ihnen gemeinsam an den Daten zu arbeiten. Mit dem Wachsen der darzustellenden Datenmengen entstehen neue Anforderungen an die verwendete Software, um diese Daten zu speichern und effizient darauf zuzugreifen.
Dateisysteme mit statischen Dateien alleine konnten diese Aufgabe in der Zeit der wachsenden Informationsmenge nicht mehr ausreichend erfüllen. Aus diesem Zwang heraus entstanden Skriptsprachen wie PHP, die Inhalte dynamisch auf Basis von vorgehaltenen Datenmengen erzeugen können.
Der frühe und schnelle Erfolg von PHP erklärt sich nicht unwesentlich durch die vielfältigen Anbindungsmöglichkeiten an relationale Datenbankmanagementsysteme (RDBMS), die nicht nur große Datenmengen zuverlässig und schnell zur Verfügung stellen können, sondern auch die Integrität und Verfügbarkeit der Daten sicherstellen.
6.1 Abstraktion 

Diese Vielfalt der verfügbaren RDBMS wurde allerdings mit der Zeit ein immer größeres Problem in PHP. Mit der Anzahl der Installationen und Benutzer steigt auch die Anzahl der Serverumgebungen, in denen eine Applikation funktionieren muss. Viele PHP-Applikationen können nur mit einem oder wenigen RDBMS zusammenarbeiten, verlassen sich auf die konkrete API der Client-Bibliothek oder Eigenheiten in der SQL-Interpretation des RDBMS.
6.1.1 Abstraktion der API 

Die Integration von MySQL mit PHP ist ein Beispiel für die unterschiedlichen APIs, selbst mit dem gleichen RDBMS. Mit PHP 5 und MySQL 4.1 entstand in PHP eine neue MySQL-Anbindung ext/mysqli, welche die bisher genutzte Erweiterung ext/mysql ablösen sollte, da aufgrund struktureller Probleme und neuer, inkompatibler Features in MySQL nicht mehr einfach weiterentwickelt werden konnte.
Mit PHP 5.1 zog die Erweiterung ext/pdo in der Kern von PHP ein und versprach, eine Abstraktion für die verschiedenen RDBMS-Integrationen in PHP zu bieten und endlich ein einheitliches Interface zu schaffen. Seitdem ist es möglich, für das verwendete RDBMS einen entsprechenden Treiber zu installieren und unabhängig vom RDBMS über die gleichen Methoden mit der Datenbank zu interagieren. PDO bietet dabei über alle RDBMS hinweg Unterstützung für Transaktionen und Prepared Statements, auf die später noch im Detail eingegangen wird.
6.1.2 SQL-Abstraktion 

Die Database-Komponente baut auf PDO zur Abstraktion der verschiedenen RDBMS-Clients in PHP auf, jedoch kann und will PDO keine Abstraktion der Datenbanken an sich bieten. Auf Datenbanken greifen Sie in den meisten Fällen über die Structured Query Language (SQL) zu, die 1970 zum Zugriff auf relationale Daten entwickelt wurde und seitdem in mehreren Standards spezifiziert worden ist. Die erste deutliche Überarbeitung von 1992, SQL 92, wird mittlerweile von nahezu allen RDBMS vollständig implementiert, während SQL 1999 und SQL 2003 noch teilweise beziehungsweise größtenteils nicht implementiert sind.
Zum Leidwesen aller Entwickler gibt es jedoch bei vielen Teilen von SQL unterschiedliche Interpretationen spezieller Features, oder einige RDBMS haben Features zu einem Zeitpunkt entwickelt, als diese noch nicht standardisiert waren. Ein bekanntes Beispiel ist das in Webapplikationen gerne verwendete, aus MySQL bekannte LIMIT, um die die Ergebnismenge eines SELECT-Statements zu begrenzen. Dieses Feature wurde ursprünglich von Rasmus Lerdorf entwickelt und teilweise erst viel später in ähnlicher Form in anderen Datenbanksystemen integriert.
Die Aufgabe von Database ist es, Ihnen ein transparentes Interface zu bieten, das Sie unabhängig von den verschiedenen RDBMS macht, um das Portieren Ihrer Applikation in andere Server-Umgebungen zu erleichtern.
6.1.3 Unterstützte RDBMS 

Die Komponente Database unterstützt bislang eine Untermenge der von PDO angebundenen RDBMS. Da die Abstraktion von Database mit der SQL-Abstraktion weit über die Fähigkeiten von PDO hinausgeht, ist einiges an Aufwand zu investieren, um sicherzustellen, dass sich jedes neu angebundene RDBMS genau wie die anderen verhält. Bislang werden von Database die folgenden RDBMS unterstützt:
- MySQL
- SQLite
- PostgreSQL
- Oracle
- Microsoft SQL Server
Später in diesem Kapitel werden wir darauf eingehen, wie Sie Database auch für andere RDBMS erweitern können.




Ihre Meinung






