mmofacts.com

Doppelte Daten in Datenbank

gepostet vor 15 Jahre, 11 Monate von neonlex

Hallo,

ich habe mal eine kleine Frage wie ihr dieses Problem angehen würdet.

Ich habe in meinem Spiel mehrere Spielwelten. Und jeser User registriert sich nur auf dem Hauptserver von dem er dann auf jeder Spielwelt teilnehmen kann.

Diese Spielwelten befinden sich in anderen Datenbanken.

Nun ist die Frage ob ich auf den jeweiligen Spielwelten die Daten von dem Hauptserver Kopieren soll, oder ob ich ständig eine verbindung zu dem Hauptserver aufbauen müsste um z.B. den Username zu bekommen.

Username wird bei jeder interaktion mit einer Fremdverbindung aus dem Hauptserver geholt.

user (Hauptserver)     user (Welt)

############         ####
# id # username #  -->  # id #
############         ####

oder

Username wird auf jeder Welt gespeichert und man kann ihn ohne Fremdverbindung einbezihen.

user (Hauptserver)     user (Welt)

############         ############
# id # username #         # id # username #
############         ############

Zweiteres hätte natürlich dann z.B. mehr aufwand wenn man den Usernamen ändern möchte.

Welche Variante würdet ihr nehmen?

gepostet vor 15 Jahre, 11 Monate von Drezil

ganz klar letztere.

Weil wenn das echt auf 1 maschienen läuft, host du dir noch eine bremse (insb. netzwerklast/-auth bei non-persistenten verbindungen) mit an bord.

Wenn man es nicht redundant speichern will, sollte man es zumindest irgendwie bei systemstart ins ram laden und da vorhalten..

wie gesagt. ich würd die redundante speicherung in der db nehmen.

gepostet vor 15 Jahre, 11 Monate von neonlex

Okay danke. So werd ich das jetzt auch machen.

Da hab ich gleich noch eine Frage.

Ich bin nehmen wir mal an jetzt eingeloggt und nun aheb cih die Auswahl auf welche Welt ich gehen will.

Wie soll ich der Welt sagen welcher User ich bin, dass es noch sicher ist.

Momentan speicher ich auf den Hauptserver einen Hash der nur 30sek existiert. Diesen Hash übergebe ich noch dem Browser als GET variable.

Die Welt checkt dann die GET variable mit den hashs aus dem Hauptserver, die erfordert zwar eine Fremdverbindung, aber das kann man ja tollerieren. Und dann wird geschaut ob der hash existiert und welchem user er gehört.

Ist das die beste Methode? Oder gibt es bessere?

gepostet vor 15 Jahre, 11 Monate von buhrmi

Original von neonlex

Wie soll ich der Welt sagen welcher User ich bin, dass es noch sicher ist.

Momentan speicher ich auf den Hauptserver einen Hash der nur 30sek existiert. Diesen Hash übergebe ich noch dem Browser als GET variable.

 Verstehe nicht was du meinst :/

gepostet vor 15 Jahre, 11 Monate von neonlex

Ihr kennt das ganze bestimmt von Die Stämme.

Ich habe auf Hauptserver und Spielwelten nicht die selbe Session und muss somit irgendeinen hash übergeben damit der User sich ohne erneute Passworteingabe outen kann.

gepostet vor 15 Jahre, 11 Monate von buhrmi

Verstehe leider immernoch nicht, was es mit dem "sicher" und dem "nach 30 Sekunden löschen" auf sich hat.

Auf dem Hauptserver kannst du dir beim Einloggen einen Token speichern (oder auch einfach einen simplen Hashwert in deiner Usertabelle), und beim weiterschicken auf den Spielserver (am besten per 30x response) als Parameter mitschicken. Der Spielserver holt sich dann das Token und den zugehörigen User einmalig beim Hauptserver ab, und kann den User in der Session speichern.

gepostet vor 15 Jahre, 11 Monate von Fornax

Wir hetten vor kurzem einen ähnlichen Thread. Ich hab jetzt aber leider keinen Link und ich glaub die SuFu istnicht so toll hier :/

gepostet vor 15 Jahre, 11 Monate von neonlex

Okay cool danke. Der Link hat mir geholfen ;)

Werde die Methode mit den mehrere token in einer tabelle machen.

Auf diese Diskussion antworten