Jump to content
Unity Insider Forum

MySQL als Server


Rasly

Recommended Posts

Wie ihr nicht wisst, ich nutze ein MySQL Datenbank als Basis für mein Prototyp. Und dabei gibt es folgende Problemen:

1. Unity WebPlayer unterstützt kein MySQL.dll

2. Bei anfragen entsteht eine zusätzliche Bearbeitungszeit von 1 bis 250 ms

 

Natürlich wäre es einfach zu sagen das man es lassen soll und stattdessen ein normaler Server benutzen, doch ich habe ziemlich gute Erfahrungen damit gemacht. Es ist viel leichter einen Prototyp herzustellen, weil man die Hälfte von Server Arbeit sparen kann.

 

Damit will ich euch fragen was ihr davon hält. Soll ich den Prototyp mit MySQL betreiben bis ich Sponsoren finde oder soll ich gleich auf ein normales Server setzen?

 

Vielleicht soll ich sogar weiter MySQL benutzen, weil es gibt gute Spiele die damit ein Erfolg hatten.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Kommt drauf an, was du unter einem "normalen Server verstehst".

Generell ist n MySql Server GUT. Aber eine direkte Verbindung zum Client ist SCHLECHT.

 

Normal ist das ganze so gehandhabt:

 

Client <-> Logikserver (PHP, Javascript etc) <-> Datenserver (Hier: MySql)

 

Der Sinn des Logikservers ist, die Daten zu schützen. Heißt: Ein Client darf nicht deine Tabellen löschen. Er darf auch nur seine eigenen Daten überschreiben. Und nur für ihn relevante Daten abfragen. Außerdem legt der Logikserver evtl zu jeder Operation, die der Client ausführt noch zusätzliche Datensätze an (z.B. Logs).

Mit dem Logikserver bietest du dem Client ein Set an Funktionen an und nur diese Funktionen kann er auch nutzen.

 

Daten Speichern: MySql

Anlaufstelle für den Client: Nicht MySql

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du könntest auch alles in XML Files speichern. Das ist definitiv viel schneller. Aber komplexere abfragen sind mühsamer und es ist etwas umständlicher, nachträglich Felder zu erweitern.

 

MySql:

  • Langsam
  • Flexibel
  • Komplexe Abfragen
  • MySQL DB muss installiert sein.
  • SQL lernen.
  • Externe DLL
  • Webseiten können einfach auf die Daten zugreifen.

XML Files

  • Schnell
  • Weniger Flexibel
  • Einfache Abfragen
  • Schneller zu lernen
  • Zugriff für Websites etwas schwieriger.

Aber die Geschwindigkeit von einer MySql Datenbank sollte ja nicht problematisch sein, da man meistens die Daten in den Server liest (zum Beispiel Punkte vom Spieler) und dann muss es erst wieder am Ende der Spielrunde oder dem Ausloggen gespeichert werden.

 

1. [Client] <- [server] <- [MySql]

Die Daten werden bei Spielbeginn vom MySql Server an den Server und weiter zum Client bewegt.

 

2. [Client] <-> [server]

Während des Spiels fliessen Daten zwischen Server und Client.

 

3. [Client] [server] -> [MySql]

Nach dem Spiel/Ausloggen, speichert der Server die aktualisierten Daten wieder zurück.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bei einem PHP Server ist keine DLL nötig. Da ist die MySQL Bibliothek fast immer schon mit installiert.

 

Ich würde von XML abraten. Aus folgenden Gründen:

  • Eine ordentliche Struktur in XML aufzubauen und eine in einer MySQL Datenbank ist ca gleich aufwändig. Aber je größer die Struktur wird, desto schwerer wird es in XML.
  • Du gehst von reinen Nutzerdaten aus. Was ist mit Logs? Wo kommen die hin? Eine extra XML Datei? Analytics? Sämtliche Metadaten? Diese XML Dateien werden sehr schnell sehr groß.
  • XML muss geparst werden. XML ist nicht schneller als MySQL und je größer die XML desto langsamer wird das ganze plus der CPU und RAM Verbrauch, den man fürs Parsen braucht.

XML ist kein Datenbank Ersatz. XML ist gut, um lokal einige Infos zu speichern.

 

Edit:

 

“XML is not a database. It was never meant to be a database. It is never going to be a database. Relational databases are proven technology with more than 20 years of implementation experience. They are solid, stable, useful products. They are not going away. XML is a very useful technology for moving data between different databases or between databases and other programs. However, it is not itself a database. Don't use it like one.“
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hey, ich weiss nicht, was für ein Projekt du jetzt im Kopf hast, aber es gibt tausende verschiedener Projekte mit den verschiedensten Ansprüchen. Und XML files haben sicher ihre Berechtigung, wie auch MySql Datenbanken. Das kommt individuell darauf an, welche Anforderungen man hat.

 

Ein Dateizugriff ist sicher schneller als ein MySql Zugriff. Was du danach alles Parst oder abfragst ist natürlich relevant für die Geschwindigkeit.

 

Warum sollte man ein Logo in einer XML speichern? :blink:

Das kann man ja lokal speichern und in der XML speicherst du den Pfad.

Aber warum sollte man überhaupt ein Logo speichern müssen? In einem Server-Client-MySql System?

 

PS:

Hab oben noch 2 Punkte ergänzt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ein Dateizugriff ist sicher schneller als ein MySql Zugriff.

 

Nein, ist es nicht. Als erstes was glaubst du wo MySQL seine daten speicherst? In der Luft? Warpt es die Daten in ein Parallel Universum oder wo glaubst du speichert MySQL seine Daten das es langsamer wäre? Auch MySQL speichert seine daten in Dateien. Du könntest jetzt natürlich sagen:

 

Na aber wenn ich auf eine Datei zugreife dann ist das schneller als wenn es MySQL tut! Den siehst du, ich hab nen magischen zaubertrank getrunken, und wenn ich auf eine datei zugreife, dann wird der dateizugriff ultra beschleunigt als wenn es ein anderes programm macht, das ich nicht geschrieben habe!

 

Nun wäre zwar interessant was du da dann genau für ein Zaubertrank genommen hast, aber zurück zur Realität. Nein deine zugriffe sind nicht schneller. Und da der ganze zweck von MySQL ist daten zu zu speichern, laden und zu verändern. Es ist eher unwahrscheinlich das primitive zugriffe wie datei lesen, serialisieren und speichern schneller sind. Datenbanksysteme nutzen caching zum auslesen. Indexe zum schnellen zugriffe. Binärdateien und dateiformate so das man änderungen direkt speichern kann, ohne das man gleich eine vollständige datei neu schreiben muss. Und es kann korrekt parallele dateizugriffe händeln. Und alles noch sicher das es nicht zu datenverlust führt. (Bei MySQL sollte man dringend InnoDB nutzen, kein MyISAM)

 

Tut mir leid, aber jemanden zu empfehlen er solle XML dateien auf einem server nutzen um daten zu speichern zeugt von vollständiger ahnungslosigkeit von dem Thema!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Sicherheit ist keine Frage. Was mir wirklich sorgen macht ist die weise in der MySQL Daten übermittelt. Es schickt nicht nur ein Packet sondern viele und jedes Teil muss man extra bestellen mit Read() oder NextResult(). Dabei entsteht eine Verzögerung von 1-250 ms. Es scheint das viele Spiele damit gut leben können aber ich bin mir nicht sicher ob das der richtige weg ist.

 

Übrigens mein Prototyp basiert auf PvP, so Ping Zeit ist wichtig.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du gehst hoffenltich nicht für dein PvP einen Umweng über eine Datenbank :)

Eine Datenbank speichert Sachen für wannanders. Da kommen Level, Items und Builds rein.

Aber auf gar keinen Fall Echtzeit-Daten wie Position oder aktuelle Animation.

Kein Umweg sondern direkte Verbindung und 100% sicher. Ich versuche gerade noch herauszufinden ob diese 250 ms tatsächlich von MySQL verursacht werden. Sollte es sich herausstellen, dass es nichts mit MySQL zutun hat, dann bleibe ich bei MySQL Server, zumindest in der Phase.
Link zu diesem Kommentar
Auf anderen Seiten teilen

Das Schreiben in und Lesen von einer Datenbank ist ein völlig unnötiger Umweg über die Festplatte deines Servers.

 

Oder des Arbeitsspeichers :)

- der heisst nicht grundlos so.

Arbeitsspeicher, Festplatte, Datenbank...

 

@Sid

Niemandem empfehle ich XML Files statt MySql zu nutzen. Ich nutze selber auch fast nur MySql, aber manchmal sind XML Files oder sogar TXT Files definitiv die viel bessere wahl... egal wie grosse Romane du darüber schreiben magst ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe ein LLAPI Server erstellt und es hat bestätigt das was ich vorher gedacht habe. Das einzige was mir noch sorgen macht ist das LLAPI mit einer Verzögerung von 15 ms läuft, dazu kommt noch 10 ms Bearbeitung und es wird 25 ms. Ich habe 10 ms erwartet aber es könnten so genannte Ticks sein.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...