Vor kurzem habe ich in zwei Foren Verweise auf mehrere Anbieter sogenannter “externer Datenbanken” gefunden, zumeist kostenlose. In diesem Artikel möchte ich nun die Pro- und Kontra-Argumente für/gegen solche Datenbankdienste aus meiner Sicht erörtern.
Warum nutzt man Dienste bei denen man direkt mit einem externen Datenbankserver kommuniziert?
Spontan fällt mir bei Hobbyprojekten eigentlich nur Faulheit des Programmierers ein. Bei kommerziellen Projekten könnten noch Performance-Aspekte hinzukommen, wenn tausende Datensätze gleichzeitig verarbeitet werden müssten, hierzu jedoch später mehr. Im folgenden werde ich mich jedoch v.a. auf den Hobbyentwicklerbereich beziehen, da dieser Artikel an erster Stelle für diese Zielgruppe gedacht ist.
Was spricht gegen die Nutzung von externen Datenbanken in der Desktop-Programmierung?
Bei der Desktopprogrammierung würde eine externe Datenbank ein Sicherheitsrisiko darstellen, da man die Zugangsdaten zum MySQL-Server entweder durch Tools wie .NET Reflector, durch Netzwerksniffer oder durch einfaches Reverse Engineering herausgefunden werden könnten. Die meisten Anbieter bieten nun nicht einmal die Möglichkeit die Rechte der einzelnen Accounts zu verändern und selbst wenn sie es bieten, nur die erfahrensten Hobbyentwickler machen davon Gebrauch. Sobald man jedoch die Zugangsdaten herausgefunden hätte wäre es möglich, selbst Queries zu schreiben, welche an den DB-Server direkt, d.h. ohne vorherige Überprüfung z.B. durch ein Skript, welches den Zugriff regelt, gesendet werden und dort ausgeführt werden. Nun könnten beliebige Datensätze angelegt, manipuliert und gelöscht werden. Die meisten Programmierer kommen erst zuletzt auf den Gedanken, dass jemand direkten Datenbankzugriff haben könnte. Jedoch nützt die beste Eingabeprüfung nichts, wenn eine solche Hintertür zum Datenbanksystem besteht.
Was spricht gegen die Nutzung von externen Datenbanken in der Web-Programmierung?
Bei (fast) allen Webhosting-Packeten sowie bei allen (V-)Server (falls MySQL installiert ist) ist es ohne großen Aufwand möglich eine MySQL-Datenbank aufzusetzen, welche entweder direkt auf der selben Maschine wie der Apache2 liegt oder aber zumindestens im (Hochgeschwindigkeits)Netzwerk des Anbieters.Würde man nun anstelle einer solchen “internen” Datenbank eine externe nutzen, so würde jeder PHP-Request, der eine Datenbankverbindung benötigt aufgrund der Netzwerklatenz wesentlich länger benötigen und desweiteren würde er Traffic erzeugen, was bei datenbanklastigen Applikationen sehr schnell dazu führen würde, dass der Trafficverbrauch pro Request ~2x so groß ist wie bisher.
Was spricht für die Nutzung von externen Datenbankservern?
In meinen Augen das einzige Pro-Argument für die Nutzung externer Datenbankserver ist der Grundgedanke des Cloud Computing. Bei komplexen Datenabfragen und großen Datenmengen, welche anschließend relativ kleine Datenmengen zurückliefern, kann die Nutzung eines externen Dienstes durchaus Vorteile haben. Vor allem wenn der Provider wirklich auf Cloud-/Cluster-Technologien setzt, und die Nutzung in kleineren Intervallen (maximal stündlich) abrechnet, kann dies bei Diensten die mit spontanen Leistungsspitzen zu kämpfen haben, einiges an Geld sparen.
Zusammenfassung
Nur bei großen, gut geplanten, kommerziellen Projekten kann der Einsatz von Outsourcing im Datenbankbereich bei Leistungsspitzen sinnvoll sein. Normalerweise ist man, nicht zuletzt aus Datenschutz- und Performance-Gründen, gut damit beraten, seine Datenbankserver selbst zu hosten.






