Ich diskutiere gerade mit ein paar Leuten eine Serverproblematik aus.
- Version 1
- NT-Server
- Microsoft IIS
- MSQL-Datenbank
- ASP-Seiten
- eigene DLL, die bestimmte Befehle an die Datenbank weiterleitet
- Version 2
- Linux (allg. Unix)- Server
- Informix-Datenbank
- Perl-Module (entsprechend der DLL von Version 1)
Um über die Geschwindigkeit der auf einem solchen Modell basierenden Anwendung diskutieren zu können, fehlen mehrere essentielle Informationen:
a) Von welcher Datenmenge reden wir? (Zehnerpotenz der Datensätze reicht.)
b) In welchem Anteil sind lesende bzw. schreibende Zugriffe erforderlich?
c) Sind die Zugriffe nachvollziehbar (d. h. viele gleichartige Zugriffe, also wenige verschiedene SQL-Anweisungen, die sich gut individuell tunen lassen) oder "streuen" sie (beliebige Auswahl einer großen, heterogenen Datenmenge?
Es gibt Leute, die meinen, weil ja die DLL im Speicher gehalten wird, die Perlprogrämmchen aber jedesmal starten müssen (ist das das wirklich so???), wäre die Geschwindigkeit bei Version 1 weitaus höher.
Wenn die Datenmenge groß genug ist, um den Einsatz einer Datenbank wirklich zu rechtfertigen, kann man m. E. *alle* anderen Faktoren bezüglich der Geschwindigkeit vernachlässigen.
Im Bereich der Datenbanken kann eine einzige "zweitbeste" Entscheidung mühelos Auswirkungen haben, die Faktor 10, 100 oder noch mehr an Performance ausmachen. So etwas schaffst Du weder mit einem schlechten Betriebssystem noch mit einer schlechten Hardware - höchstens mit sehr schlechten Algorithmen in der eigenen Anwendung (quadratisches Sortieren von 10^n Daten etc.)
Und damit meine ich nicht, daß die Entscheidung pauschal zwischen MSQL und Informix fällt, sondern daß sie davon abhängig ist, welche der beiden Datenbanken die konkret erforderlichen Maßnahmen für das interne Datenbank-Tuning bzw. die Konsistenz der Daten (Indexierung, Clusiering, Constraints, Trigger, ...) besser unterstützen.
Zudem SEHE ich einfach, daß Version 1 auch Geschwindigkeitsprobleme hat.
Ich halte es für irre schwierig, zwei solche Systeme in Sachen Performance pauschal zu vergleichen, selbst wenn es sich um identische Applikationen handeln sollte.
Vielleicht ist die eine der beiden Datenbanken einfach schlechter getuned als die andere, weil beim Entwurf der Dienstleistung die eine Datenbankversion besser verstanden und die Anwendung später "nur" portiert wurde?
Richtig gute DDL zu schreiben ist etwas, was man als normaler Entwickler trotzdem mühsam lernen muß, weil der Denkansatz ein so völlig anderer ist als in 3GL-Sprachen.
Gibt es dazu Erfahrungen, Meinungen?
Wie gesagt: Die Relevanz der einzelnen Komponenten hängt davon ab, was für Daten Du verarbeiten willst. (Volumen und Konsistenzforderungen.)
Die Relevanz der Wartbarkeit (Entwicklungsgeschwindigkeit) hängt übrigens stark davon ab, wie genau man zum Zeitpunkt des Auftrags spezifizieren kann, was das Produkt später leisten soll.
Nur wenn man hier pfuscht (Auftraggeber wie Auftragnehmer), ist ein Werkzeug für schnelle Weiterentwicklung eine spürbare Erleichterung ... ;-)