Datenbank-Performance im Vergleich
Case Studies
Mary Finn
Product Marketing Manager
InterSystems Corporation
Zusammenfassung
Die beste Möglichkeit, die Performance von Datenbanken zu vergleichen, ist ein Vergleichstest in einer realen Anwendung, vorzugsweise in Ihrer eigenen! Dies gilt im Besonderen bei der Bewertung der postrelationalen Technologie von Caché, da die “Standard”-Benchmark-Methoden für die Transaktionsverarbeitung von dem restriktiven “Zeilen und Spalten”-Format relationaler Datenbanken ausgehen. Hierdurch ist die exakte Vorhersage der Performance von Anwendungen im echten Produktivbetrieb, in dem oftmals komplexe Datenmodelle zum Einsatz kommen, nicht möglich.
Aufgrund vertraglicher Unterlassungsverpflichtungen der bekannten Datenbankanbieter wird sehr wenig über die Performancesvergleiche relationaler Datenbanksysteme wie Oracle und Microsoft SQL Server im Praxiseinsatz veröffentlicht. Unternehmen, die diese Benchmark-Tests für sich durchführen, kommen in der Regel zu dem Schluss, dass Caché mindestens fünfmal schneller ist als relationale Datenbanken, sogar ohne Änderung des Applikationscodes und nur unter Verwendung von SQL. Der Performance-Unterschied wird in vielen Fällen noch deutlicher, wenn die Anwendungen für die postrelationale Technologie von Caché optimiert werden.
Einführung
Viele Unternehmen führen direkte Vergleichstests zwischen Caché und anderen Datenbanken durch. Dieses White Paper stellt die Ergebnisse von Performance-Benchmark-Tests vor, die von unabhängigen Analysten sowie Kunden und Interessenten von InterSystems im Rahmen ihrer Entscheidungsprozesse für eine Datenbanktechnologie durchgeführt wurden. Aufgrund der vertraglichen Verpflichtungen zur Unterlassung von Vergleichen mit den großen Herstellern relationaler Datenbanken wurden die Namen der Unternehmen, die diese Performance-Tests durchführten, wie auch die Namen der relationalen Datenbanken, die mit Caché verglichen wurden, weggelassen.
Diese Tests wurden mit realen Anwendungen und echten Daten unter den tatsächlichen Praxisbedingungen durchgeführt. Die Ergebnisse sprechen für sich. Bei Datenbankabfragen mit SQL übertrifft Caché Oracle, SQL Server und andere relationale Datenbanken um mindestens den Faktor fünf.
In den meisten der hier vorgestellten Untersuchungen wurde SQL als Abfragsprache verwendet, weil auf diese Weise Caché und relationale Datenbanken einfacher miteinander verglichen werden können. In diesen Fällen ist die überlegene Performance von Caché auf die multidimensionale Architektur zurückzuführen, bei der der Verarbeitungsaufwand bei der Verknüpfung von mehreren Tabellen mit Joins entfällt. SQL ist aber nicht die einzig mögliche Methode, Caché-Datenbanken abzufragen. Caché läuft sogar noch um ein mehrfaches schneller, wenn der Code für den direkten Zugriff auf die multidimensionalen Datenstrukturen von Caché optimiert wird.
1. Case Study
Ein Stromversorger ermittelte, dass Caché fünfmal schneller war als eine bekannte relationale Datenbank in ihrer Data Warehousing ETL (Extrahieren, Transformieren, Laden)-Applikation. Beide Datenbanken wurden mit dem Bestellmodul der Applikation getestet, das über 13 Millionen Quelldatensätze verarbeitet. Beide Datenbanken verwendeten dieselben Tabellendefinitionen und Abfragen. Da aber das vorhandene Bestellmodul überwiegend auf datenbankspezifischen Stored Procedures basierte, wurden diese mit der Stored Procedure-Sprache von Caché erneut implementiert. (Hierzu benötigte man nur 40 Arbeitstunden.)
Die folgende Tabelle fasst die Benchmark-Ergebnisse zusammen:
|
Aufgabe |
Benötigte Zeit |
Relative Performance Caché : RDBMS |
|
| RDBMS |
Caché |
||
|
Daten in Staging-Tabelle laden |
138 min. |
6 min. |
23 : 1 |
|
Zweite Staging-Tabelle und Filterdaten laden |
245 min. |
23 min. |
10 : 1 |
|
Dimensionstabellen für Bestellung generieren |
168 min. |
24 min. |
7 : 1 |
|
Faktentabelle für Bestellung generieren |
890 min. |
233 min. |
4 : 1 |
|
Zum Laden und Filtern von Daten benötigte Gesamtzeit |
1441 min. |
286 min. |
5 : 1 |
2. Case Study
Ein Applikationsanbieter im Gesundheitswesen führte einen Test durch, in dem die SQL-Antwortzeiten von Caché und einer bekannten relationalen Datenbank verglichen wurden. Unter Verwendung historischer Patientendaten (7 Tabellen, über 6,5 Millionen Datensätze) wurde eine Serie von acht Abfragen mit einer simulierten Last von 30, 60, 90 und 120 gleichzeitigen Benutzern durchgeführt.
Die folgende Tabelle enthält die durchschnittlichen Antwortzeiten in Millisekunden für beide Datenbanken. Beide waren schnell, aber Caché war durchschnittlich um das 4- bis 6-fache schneller. Darüber hinaus zeigt die grafische Darstellung der Ergebnisse, dass Caché besser skalierbar ist. Wenn die Last zum Beispiel von 90 auf 120 Benutzer vergrößert wird, erhöht sich die Antwortzeit von Caché um nur 84 ms, wohingegen die relationale Datenbank sich auf 231 ms verlangsamt – das ist etwa das 2,7-fache.
Anzahl gleichzeitiger Benutzer |
Durchschnittliche Antwortzeiten (über alle acht Abfragen) |
Relative Performance Caché : RDBMS |
|
| RDBMS |
Caché |
||
| 30 |
375.125 ms |
59.125 ms |
6.3 : 1 |
| 60 |
637.25 ms |
137.75 ms |
4.6 : 1 |
| 90 |
915.625 ms |
206.875 ms |
4.2 : 1 |
| 120 |
1146.375 ms |
290.125 ms |
3.9 : 1 |

3. Case Study
Ein Beratungsunternehmen verglich Caché und eine bekannte relationale Datenbank, um die Performance in einem Data-Warehousing-Szenario zu messen. In einer Tabelle mit einer Million Datensätze an echten Bestellabwicklungsdaten wurden sowohl die Validierungs-/Last-Performance als auch die Antwortzeiten bei Abfragen gemessen.
Obwohl für die Datenstrukturen von Caché keine Performance-Optimierung durchgeführt wurde, war die Validierung/Last von 1.000.000 Datensätzen bei Caché dreimal schneller als bei dem RDBMS (2.681 Sekunden gegenüber 8.597 Sekunden). Darüber hinaus benötigte die daraus resultierende Caché-Datenbank nur 146 MB Speicherplatz im Vergleich zu 216 MB beim RDBMS.
In der folgenden Tabelle finden Sie die Testergebnisse für die SQL-Abfragen:
|
Abfrage |
Antwortzeit |
Relative Performance Caché : RDBMS |
|
|
RDBMS |
Caché |
||
|
Große Aggregation für die gesamte Tabelle mit allen Dimensionen |
638 Sek. |
180 Sek. |
3.5 : 1 |
|
Aggregation aller Dimensionen mit Einschränkungen auf 2 Dimensionen |
3 Sek. |
<1 Sek. |
>3 : 1 |
|
Ermitteln nicht verwendeter Verwendungszweck-Codes in der gesamten Tabelle |
8 Sek. |
3 Sek. |
4 : 1 |
|
Ermitteln aller Datensätze, bei denen eine Dimension größer ist als eine angegebene Zahl |
50 Sek. |
16 Sek. |
3.1 : 1 |
4. Case Study
Ein landesweit tätiges Telefonunternehmen führte mit ihrer Online-Telefonbuch-Applikation einen Performancetest durch. Die Ergebnisse zeigten, dass Caché durchschnittlich zehnmal schneller war als eine bekannte relationale Datenbank.
Das Laden der relationalen Datenbank aus den Textdateien dauerte etwa 10 Stunden und belegte 60 GB Speicherplatz. Die Caché-Datenbank benötigte dafür etwa 45 Minuten und 2 GB Speicherplatz. Da die Caché-Datenbank Speicherplatz sehr viel effizienter nutzt, wird auch der Cache viel besser genutzt. Daher waren die Antwortzeiten bei Abfragen bei Caché sehr viel kürzer als beim RDBMS
|
Abfrage |
Antwortzeiten |
Relative Caché : RDBMS |
|
|
RDBMS |
Caché |
||
|
Suche nach Name und Straße |
0,33 Sek. |
0,07 Sek. |
4 : 1 |
|
Suche nach Name |
0,46 Sek. |
0,02 Sek. |
23 : 1 |
|
Suche nach Name, Straße, PLZ |
0,76 Sek. |
0,04 Sek. |
19 : 1 |
|
Suche nach Hausnummer |
0,14 Sek. |
0,.02 Sek. |
7 : 1 |
|
Suche Name1, Name2, Straße, PLZ |
0,01 Sek. |
0,01 Sek. |
1 : 1 |
|
Suche nach Land |
0,02 Sek. |
0,01 Sek. |
2 : 1 |
|
Average for all queries |
0,287 Sek. |
0,028 Sek. |
10 : 1 |
Bei beiden Datenbanken wurden Indizes verwendet, um die Abfragen zu beschleunigen. Auch wenn das RDBMS langsamer als Caché war, so lagen die Antwortzeiten immer noch unterhalb einer Sekunde. Aktualisierungen des RDBMS (und die erforderliche Neuerstellung der Indizes) mussten aber offline durchgeführt werden, um größere Performance-Probleme zu vermeiden. Die Applikation ist eigentlich für die Verwendung von zwei relationalen Datenbanken konzipiert – die eine “live”, während die andere aktualisiert wird, wobei sie jeden Tag ausgetauscht werden. Im Unterschied dazu kann die “live” Caché-Datenbank ohne wesentliche Performance-Einbußen aktualisiert werden. Darüber hinaus ermöglicht Caché das Ausführen von “Beginnt mit”-Suchen, die das RDBMS nicht unterstützt.
5. Case Study
Ein Anbieter von Telekommunikationslösungen sollte eine Event-Tracking-Applikation für SMS-Nachrichten entwickeln. Die Applikation musste hohe Datenvolumen aus verschiedenen externen Quellen akzeptieren, die Datensätze indizieren und diese in die zentrale Datenbank auf die Festplatte speichern. Für den Verglich der Performance von Caché und der einer bekannten relationalen Datenbank setzte er einen Prototyp der Applikation ein.
In einem ersten Vergleichstest wurden beide Datenbanken mit demselben Code getestet. Auf dem System war keine weitere Verarbeitungslast. Die Ergebnisse finden Sie in der folgenden Tabelle:
|
Verarbeitungsdurchschnitt Datensätzen/Sekunden |
Relative Performance |
|
RDBMS |
Caché |
|
|
|
|||
Daten laden, indizieren und schreiben |
315 |
1700 |
5 : 1 |
Aufgrund dieser Ergebnisse wurden weitere Implementierungsanstrengungen der Applikation mit dem RDBMS eingestellt. Als der Code für die nativen multidimensionalen Datenstrukturen von Caché optimiert wurde, erhöhte sich die Performance der Applikation zusätzlich um den Faktor 6. Mit einer Multiple-Stream Eingabe und einer simulierten Verarbeitungslast auf dem System erzielte die optimierte Caché-basierte Applikation Verarbeitungsgeschwindigkeiten von 10.600 Datensätzen pro Sekunde.
Fazit
Das beste Kriterium für die Leistungsfähigkeit einer Datenbank ist die Performance, die sie in einer echten Praxisanwendung erreicht. Die in diesem White Papier vorgestellten Case Studies dokumentieren direkte Vergleichstests zwischen Caché und bekannten relationalen Datenbanken. Die Tests wurden von unabhängigen Analysten sowie Kunden und Interessenten von InterSystems mit echten Applikationen aus der Praxis durchgeführt. Die Ergebnisse zeigen, dass Caché SQL-Abfragen in der Regel fünfmal schneller ausführt als relationale Datenbanken. Weitere Performance-Zuwächse können durch die Anpassung des Applikations-Codes erzielt werden, um die multidimensionalen Datenstrukturen von Caché direkt zu beeinflussen.
Weiterführende Berichte
Weitere Vergleiche von Caché mit relationalen Datenbanken finden Sie unter:
You can read these reports at www.InterSystems.com, or request a hard copy by sending an email to info@InterSystems.com.
Sie können diese Berichte im Internet unter www.InterSystems.com lesen. Für eine gedruckte Version senden Sie eine Email an: info@InterSystems.de.
Führen Sie Ihren eigenen Benchmark durch
InterSystems unterstützt Kunden und Interessenten oft bei der Durchführung von Benchmark-Tests, ähnlich der oben beschriebenen. Falls Sie ebenfalls die Performance und Skalierbarkeit von Caché im eigenen Rahmen testen möchten, stellt Ihnen InterSystems kostenfrei technische Unterstützung und befristete Caché-Lizenzen zur Verfügung. Weitere Informationen erhalten Sie unter: +49.6151.17470.

