Hallo Michael,
Frage: Welche Datenbank sollte man für eine Internetanwendung
benutzen? Wir reden hier von gut 200 Tabellen und Millionen an
Datensätzen.
die Datenbank
sprechen wir primär über ODBC an.
Die Datenbank über ODBC anzusprechen, generiert einen ziemlichen Overhead, einfach weil Du einen zusätzlichen Treiber verwendest, der die ODBC-Befehle wieder in die SQL Befehle für die entsprechende Datenbank übersetzen muß. Wenn irgendwie möglich, sollte die db direkt angesprochen werden.
Was setzt man besser ein?
Also generell ziehe ich bei meinen Projekten drei Möglichkeiten in Betracht, MySQL, PostgreSQL und Oracle. MySQL hat den Vorteil, daß es verdammt schnell und stabil ist, wenn Du auf Features wie Transactions, Trigger, usw. verzichten kannst, und die Abfragen relativ einfach sind - nicht zu komplizierte joins oder group by-clauses - wenn Du die hast, wird MySQL recht schnell zu umständlich, und dann auch zu langsam (group by mit einem having-clause wird z.B. bei MySQL nicht wirklich optimiert). Bei 200 Tabellen nehme ich mal an, die sind in der Abfrage auch stark verknüpft, deshalb scheidet MySQL wohl aus (die Anzahl der Datensätze spielt dabei nur insofern eine Rolle, als Joins vorkommen - MySQL handelt auch ein paar Millionen Datensätze ohne Probleme, nur wenn man versucht, zwei oder drei Tabellen mit ein paar tausend Datensätzen zu joinen, geht es recht schnell in die Knie, auch wenn das resultset nur fünf Datensätze sind.) PostgreSQL bietet Dir alle Features wie Transactions, Subqueries, usw., die MySQL fehlen, ist aber für seine schlechte Performance bekannt, auch wenn die letzten paar Releases da besser geworden sind. PostgreSQL setze ich deshalb ein, wenn die Datenbank relativ komplex, aber die Zugriffszahlen nicht allzuhoch sind. Wenn Du wirklich eine sehr komplexe Datenbank mit hohen Zugriffszahlen hast, bleibt meiner Meinung nach nichts anderes als Oracle oder Informix, Adabas, usw., wobei ich letztere meistens nicht in die Betrachtung einbeziehe, weil es kaum möglich ist, für irgendwas außer Oracle einen Datenbankprogrammierer zu finden, und wenn jemand die Stärken und Schwächen des jeweiligen Servers nicht kennt, sind die ganzen Vorteile sowieso dahin.
Am besten wäre es, Du legst in allen Datenbanken, die in Frage kommen, zumindest einen Teil der Datenbank an, und läßt ein Benchmark-Programm laufen, daß entsprechend der Anforderungen der Applikation ein paar hundert selects, inserts und updates in der Minute abschickt. Den zusätzlichen Aufwand am Anfang sollte man sich leisten, bevor ein so großes Projekt nach ein paar Monaten gegen die Wand fährt, weil der db-server nicht mitspielt.
Viele Grüße
Stephan