Datenbanken im vergleich

hiho liebe experten,

ich muss momentan datenbanken auf ihre belastbarkeit testen. hierbei zaehlt nicht dass ich sie installiere und teste, sondern einfach nach der fuer unser vorhaben am besten geeigneten datenbank zu suchen.

dabei spielt der preis keine rolle (es zaehlt nur die beste db).

Die Strukturierung der Db ist relativ einfach, keine dynamischen textgrössen, alles statisch. auch die tabellen werden auf max. 10 relationen begrenzt sein, mit max. 4 feldern pro relation.

Die Anforderungen an die DB sind minimal, will meinen einfache transaktionen werden ausgefuehrt. Ich pruefe einen Eintrag in der DB, ist er gültig, trage ich eine rechnung ein, die 15 kb gross ist.

Der kritische Punkt ist der hohe zu erwartende traffic.
In einem worst-case scenario kann man mit ca. 100000 inv/sec rechnen. also 100000 rechnungen die geprueft werden sollen, und schliesslich, nach erfolgreicher Pruefung, eingepfelegt werden sollen.
Damit hat man einen durchsatz von 100000*15 kb = 150 MB/s.

DB’s die meines Wissens in frage kommen:

Postgresql, Mysql, Oracle, Firebird (novell)

Sicher, es ist meine Aufgabe die ideale Db zu finden, aber vielleicht hat ja hier schon jemand Erfahrungen gemacht, ich bin sehr offen fuer anregungen und tips. Auch fuer andere DB’s natuerlich. Die DB wird schliesslich unter GNU/linux oder unix laufen. Sollten euch unerfuellbare technische Anforderungen ins Auge fallen, bin ich froh ueber jeglichen Kommentar.

vielen dank schon alleine fuer das lesen dieses etwas langen threads

cu - josh -

Hallo,

noch als Empfehlung, MaxDB ist auch konkurrenzfähig!

Gruß
Alex

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

hi,

hatte ich ganz vergessen,

MaxDB sowie DB2 sind ebenfalls noch in der engeren auswahl…

Postgresql, Mysql, Oracle, Firebird (novell)

Hallo,

noch als Empfehlung, MaxDB ist auch konkurrenzfähig!

Gruß
Alex

cu - josh -

Hallo,

Du solltest bei dieser Anforderung auch an die Skalierbarkeit der Datenbank denken. Soviel ich weiß ist die MySQL unverschämt schnell, die Oracle aber die am besten skalierbare. D.h. Du kannst einen Oracle-Servercluster aufbauen, der die Anfragen parallel ausführt. Ausserdem solltest Du auch die Ausnutzung mehrerer Prozessoren prüfen.

Was ich allerdings nicht verstehe: Du wirst doch nicht dauernd Hauptlast haben. Musst Du diese Daten wirklich sofort verarbeiten? Oft reicht es aus, einen Puffer zwischenzuschieben, der die daten dann kontinuierlich abarbeitet.

gruß

peter

Hallo,

Du solltest bei dieser Anforderung auch an die Skalierbarkeit
der Datenbank denken. Soviel ich weiß ist die MySQL
unverschämt schnell, die Oracle aber die am besten
skalierbare. D.h. Du kannst einen Oracle-Servercluster
aufbauen, der die Anfragen parallel ausführt. Ausserdem
solltest Du auch die Ausnutzung mehrerer Prozessoren prüfen.

hmm, naja, dass wir schliesslich auf einem system mit mehreren prozessoren arbeiten ist ziemlich wahrscheinlich.

Was ich allerdings nicht verstehe: Du wirst doch nicht dauernd
Hauptlast haben. Musst Du diese Daten wirklich sofort

leider ja, es ist zwar ein worst case scenario, allerdings bedeutet dies, wenn es einmal eingetreten ist, eine kontinuierliche belastung. es wird bestenfalls schlimmer. aber auf gar keinen fall darf die DB ausfallen, dass waere richtig richtig schlimm…und richtig richtig teuer. denn dann gehen richtig richtig viele rechnungen floeten. Das grosse Problem ist, das man absolut sicher damit rechnen kann, dass versucht wird, das system anzugreifen. daher auch die kriminelle worst case abschaetzung. sollte dieser fall eintreten, darf ich auf KEINEN Fall in die Knie gehen.

verarbeiten? Oft reicht es aus, einen Puffer
zwischenzuschieben, der die daten dann kontinuierlich
abarbeitet.

hmm, naja, problem ist nur leider, mit dem puffer wird es auch nicht besser. ich kann zwar einen teil der daten puffern, aber das darf nicht allzulange dauern. denn sonst laeuft mein speicher ueber, und die katastrophe ist perfekt.

gruß

peter

dennoch vielen dank fuer die Antwort

cu -josh -

gruß josh

Hallo,

Du solltest bei dieser Anforderung auch an die Skalierbarkeit
der Datenbank denken. Soviel ich weiß ist die MySQL
unverschämt schnell, die Oracle aber die am besten
skalierbare. D.h. Du kannst einen Oracle-Servercluster
aufbauen, der die Anfragen parallel ausführt. Ausserdem
solltest Du auch die Ausnutzung mehrerer Prozessoren prüfen.

noch etwas vergessen hier, die skalierbarkeit ist durchaus relevant, wir haben darueber nachgedacht einen servercluster aufzubauen. die frage die sich stellt: ist dies wirklich notwendig?

bis dann

  • josh -

Hallo Joshua!

leider ja, es ist zwar ein worst case scenario, allerdings
bedeutet dies, wenn es einmal eingetreten ist, eine
kontinuierliche belastung. es wird bestenfalls schlimmer. aber
auf gar keinen fall darf die DB ausfallen, dass waere richtig
richtig schlimm…und richtig richtig teuer. denn dann gehen
richtig richtig viele rechnungen floeten.

Das klingt für mich eindeutig nach einem Cluster. Schliesslich willst du dich in dem Fall dann ja sicherlich auch nicht auf die Hardware eines einzelnen Servers verlassen müssen. Soweit mir bekannt ist Oracle auf diesem Gebiet ziemlich einsame Spitze. Wenn du es mit dem Projekt noch nicht so richtig eilig hast, dann würde ich hier noch mal auf Oracle 10g (und dabei auf den 10.1-oder-wie-auch-immer-der-zweite-release-heissen-wird) warten. Da haben sie uns diesbezüglich einiges versprochen.

Gruß,
Martin

ich wärm ja ungerne alte themen wieder auf aber gibt es (hast du oder jemand anderes) eine gute zusammenfassung oder übersicht über das leistungsspekturum bzw die einsatzgebiete aktueller datenbanken?

ansonsten wäre mal zu überlegen ob wir hier im brett ein paar leute zusammen bekommen um vielleicht etwas entsprechendes zusammen zu schreiben.
sofern an soetwas interesse besteht.

Darnest

hi

ich wärm ja ungerne alte themen wieder auf aber gibt es (hast
du oder jemand anderes) eine gute zusammenfassung oder
übersicht über das leistungsspekturum bzw die einsatzgebiete
aktueller datenbanken?

leider selber nicht. ich tendiere gerade dazu das leisungsspektrum durch ausprobieren herauszufinden.

ansonsten wäre mal zu überlegen ob wir hier im brett ein paar
leute zusammen bekommen um vielleicht etwas entsprechendes
zusammen zu schreiben.
sofern an soetwas interesse besteht.

die idee finde ich super. im uebrigen nicht nur fuer dieses brett, sondern auch fuer die anderen bretter. die - welche/s DB/Sprache/BS ist denn fuer diese und jene Aufgabe am besten - Frage wird oft genug gestellt, und langweilt die Guru s unter uns wahrscheinlich schon.

falls sich mysql als nicht leistungsfaehig erweist, probiere ich es mit anderen konzepten/DB’s, so oder so, ich kann spaeter gerne meine Ergebnisse veroeffentlichen.

Darnest

gruss - josh -

Zu Bedenke sei auch, das im Genzbereich jede Datenbank ihre Leiblingsplattform hat. Also Harware und Betriebssystem.

hi,

ich wärm ja ungerne alte themen wieder auf aber gibt es (hast
du oder jemand anderes) eine gute zusammenfassung oder
übersicht über das leistungsspekturum bzw die einsatzgebiete
aktueller datenbanken?

die ersten tests die ich durchgefuehrt habe:

System:
OS: GNU/linux debian
linux kernel 2.4

HW:
520 MB RAM
Festplatte
80 MB
7200 rpm/sec

Software:
mysql 4
gcc
java

Programm: einfache schleife, die 100 000 inserts produziert.
einfacher insert, in einer tabelle. Primaerschluessel wir auto. hochgezaehlt.
Implementierung des Frontends in java und in C.

Programm lief bisher nur auf dem Rechner der auch der DB server selbst ist.

Leistung von C:
5200 inserts/sec im Durchschnitt
benoetigte sek. 20

Leistung von java
ca. 5000 inserts/sec
24 sek.

bei der Angabe der sec. wurde die zeit nicht innerhalb des progs genommen, sondern direkt aus der DB. Beide Progs hatten selbe Leistungsansprueche und Vorraussetzungen. Kein abweichender Algorithmus, natuerlich nur 2 unterschiedliche philosophien.

Warum java hier so weit hinten liegt ist mir im wesentlichen noch unklar.

Was viel wichtiger ist, ist dass die Leistung von mysql in diesem spez. Fall noch enttaeuschend ist. das liegt aber wahrscheinlich eher daran, dass ich mysql anfaenger bin, und somit wenig erfahrung im optimeren habe. Ich habe fuer die anderen Datenbanken noch keinen entsprechenden vergleich angestellt.

Merkwuerdig, es muesste doch eigentlich irgendwo standard tests fuer mysql geben. Waere doch sehr aufschlussreich was erzielt werden kann.

Fraglich ob die Clusterung etwas bringt. Ich schaetze mal dass ich nicht davon ausgehen kann dass 2 mysql server gleichzeitig doppelte leistung bringen. Wie hoch ist der leistungsgewinn?

Wenn also ein Serve4r ca. 5000 inserts/sec schafft, wie bekomme ich ein system auf die reihe, dass das 25 fache davon hinkriegt. Ganz sicher nicht in dem ich einfach 25 mysql server laufen lasse.

Fragen ueber Fragen…

wer weiss was?

gruss - josh -