ich bin hier bei einem spieleentwickler und wir entwickeln derzeit ein onlinespiel. dazu wird es auch nötig sein daten persistent zu speichern was sinnigerweise dann in einer DB passieren wird.
was ich mich frage ist wie es denn mit der performance bei den datenbanken ausschaut? es wird denke ich vorallem updates auf bestehende daten geben, weniger einfüge und abfrage operationen. was vertragen die db server (bei entsprechender hardware) denn so?
wenn wir jetzt z.B. ~200 updates/sekunde auf eine tabelle mit ~20000 einträgen fahren, schafft das eine postgre?
was für eine DB wäre für so ein szenario (viele updates, mäßig viele abfragen, wenig inserts) sinnvoll? ich hab gehört mysql soll z.b. eher stark bei vielen abfragen sein.
nunja was für eine Datenbank du verwendest musst du dann anhand deiner Kriterien entscheiden die du für das Spiel hast. Ich habe früher ein Online Game entwickelt das auf MySQL lief. Inzwischen würde ich sowas mit einem PostgreSQL-Server oder einen MS SQL-Server machen.
Grund ist, dass ich hier auch Logik in die DB legen kann oder mit VIEWS auch schöne Ansichten bauen kann.
Ob der Server deine Anzahl von Updates schafft kann ich nicht beantworten. Auf einer entsprechend Dimensionierten Maschine garantiert. Auch musst du halt schauen wie du das optimieren kannst (index, …). Nur was willst du mit 200 Updates pro Sekunde? Entweder solltest deine Programmierung überdenken oder wenn das wirklich nötig ist aufgrund der User, dann spielt eine entsprechende Maschine (Cluster? Entsprechendes Platten-Array?) auch keine Rolle mehr.
Im Prinzip reichen deine Angaben nicht aus um hier was konkretes zu sagen. Grundsätzlich wäre es unproblematisch, einen PostgreSQL-Server zu verwenden.
Eigentlich sollte jede der Datenbanken eure Anforderungen erfüllen. Und ganz konkret erstellt man sich ein Test Szenario und schaut, was dort als Ergebnis herauskommt. Wenn ihr dabei (bei PostgreSQL) Hilfe braucht, einfach melden.
Ach, und noch ein wichtiger Punkt, den ich hierbei gelernt habe:
Man möchte einen Application Server haben, das erspart viele Mühen und gibt einem viel Performance weg. Gleichzeitig muss man nicht alle Daten immer persistent speichern, nur die wichtigen. Den Rest kann man einfach im RAM halten.
ja, also 200 Updates/Sekunde, das erreicht man schnell wenn man mit mehreren zehntausend usern rechnet. von daher muss die DB schon was leisten.
Mit entsprechender Hardware seht ihr also keine Probleme das eine Postgre sowas schafft? Was wäre denn der Vorteil von z.B. einem MS SQL Server, einer DB2 oder ner Oracle? Können die einfach mehr vom SQL Standard? Oder sind die auch deutlich schneller? (durch komplexe indexe oder caching und so zeugs)
Eine DB ist so schnell, wie der Administrator und die Programmierer sie schaffen … ein falscher oder fehlender Index kann dir die Show vermasseln, genauso, wenn diverse Einstellungen falsch getätigt sind.
Auf der anderen Seite können die Programmierer ihre Anfragen etwas optimieren … oder einfach Performance verbraten.
Hier spielen so viele Faktoren ein, das man nicht einfach sagen kann: “Diese DB ist besser als die andere”. Speziell, wenn man die Applikation auf dieser Datenbank entwickeln kann.
Wenn man eine bestehende Applikation hat, sieht das noch mal ganz anders aus.
Zu den SQL Standards: keine Datenbank hält sich zu 100% daran, wobei PG bemüht ist, sich weitgehend an den Standard zu halten. Unterschiede sind jeweils in der Dokumentation vermerkt: bei einigen Befehlen finden sich z.B. am Ende der Dokumentationsseite entsprechende Hinweise.
Letztendlich hängt also viel davon ab, wie die Leute (vor allem die Programmierer) mit der Datenbank umgehen und die DB Feinheiten kennen.