Entw.: RESTServer-Optimierung (01)

Neben den üblichen Optimierungen bei den Datenbankzugriffen (z.B. über opt. Ausführungspläne, Indexes, Views, Prepared SQL's, Pipelined Table Functions) läßt sich ein RESTServer, der eine Oracle-Datenbank verwendet, noch viel weitergehender optimieren. Durch eine Anpassung des RESTServers an die Möglichkeiten der Oracle-Datenbank, lassen sich ungeahnte Leistungsschübe erreichen. Mit Hilfe der Tools SQL Tuning Advisor und SQL Access Advisor lassen sich alle Datenbankzugriffe verbessern. Desweiteren besteht die Möglichkeit, daß der RESTServer die Oracle-Packages direkt verwendet.

Eine der wichtigsten Anforderungen an eine WebApp ist das schnelle Besorgen von Auswahllisten. Jeder kennt das Verhalten beim Suchen auf der Google-Seite. Nach jeder Tasteneingabe versucht der RESTServer bei Google zu erkennen, nach welchen Begriffen der Benutzer sucht. Die aufgeblendete Auswahlliste wird entsprechend aktuallisiert. Dies passiert mit einer erstaunlichen Geschwindigkeit, obwohl die Stichwortsuche über einen großen Datenbestand erfolgt. Die Kommunikation erfolgt beim Google-Suchen über Ajax mit einem RESTServer. Bei einer eigenen WebApp-Entwicklung, die ihre Daten über Ajax bekommt, sollte diese Performance als Vorbild dienen.

Um diese Performance zu erreichen, ist es wichtig die richtige Datenbank auszuwählen. Die häufig verwendete Anforderung nach Datenbankunabhängigheit hat in der Praxis oft nur einen akademischen Wert. Die Programmsysteme, die diese Anforderung durch Nutzung einer allgemeinen API, z.B. durch odbc oder jdbc, erfüllen, werden i.d.R. von den Anwendern wegen ihrer schlechten Performance kaum akzeptiert. Um eine annähernd ausreichende Performance zu erhalten, werden letztendlich für jede geforderte Datenbank jeweils eine Version erstellt und gepflegt. Trotzdem wird in diesen Fällen nie eine solch gute Performance erreicht, als wenn man sich vorab für eine Datenbank entscheidet. Eine ehrliche Vorabentscheidung für eine Datenbank spart viel Geld, Zeit und Ärger.

Beim derzeitigen Projekt fiel die Datenbankauswahl auf Oracle XE. Die Einschränkungen bei der XE-Version fallen beim Projekt kaum in Gewicht. Das maximale Datenvolumen variiert um 2 GB, also weit unterhalb des maximalen Datenvolumens von 11 GB. Nach umfangreicheren Tests wurde zur Datenbankanbindung der ODAC-Treiber der Firma Devart ausgewählt.

Die wichtigsten Vorteile der direkten Datenbankanbindung mit ODAC sind:

  • → Oracle-Treiber mit der besten Performance (→ Performance-Übersicht).
  • → Der Treiber kann die Oracle-Datenbank direkt ansprechen, d.h. die Installation eines Oracle-Clients ist nicht notwendig. Damit lassen sich Programme entwickeln, die auf jedem Windows-Rechner vom Stick aus, ohne Vorbereitung, startbar und lauffähig sind.
  • → Datenbankwartungsfunktionalitäten lassen sich ins Programm verlagern. PL/SQL-Scripte kann das Programm dynamisch selber erzeugen und auch ausführen. Z.B. das Programm führt Importvorgängen und Löschungen von großen Datenbeständen durch. Dazu müssen oft die Trigger ausgeschaltet werden. Dies kann nun vom Programm direkt geschehen.
  • → Alte BDE-Programme sind über einem Migrations-Wizard schnell und kostengünstig migrierbar. Neben der Connection-Komponente sind nur die Filtereigenschaften anzupassen.
  • → Fast alle Möglichkeiten der Datenbank sind nutzbar. Z.B. kann die Funktionalität aller vorhandenen Packages (z.B. zum eMail-Versand oder Ajax-Request's) verwendet werden.

Im nächsten Artikel wird gezeigt, wie man Oracle-Packages aus einem Delphi-Programm heraus, verwendet.