Backend Entwicklung - Konzept fragen

Status
Nicht offen für weitere Antworten.

maikk

Neues Mitglied
Guten Tag,
ich erkläre mal die allgemeine Situation, ich entwickle momentan ein Browsergame und dafür benötige ich ein Backend System.
Meine Idee ist es, das mein Frontend eigentlich nur dafür zuständig ist die Daten anzuzeigen und Befehle in einige spezielle Tabellen zu übergeben. Ein Java Programm im Hintergrund, nimmt diese befehle entgegen und verarbeitet sie.

Ich entwickle eine Wirtschaftssimulation in der die Benutzer/Spieler den Inhalt festlegen. Also die Produkte können von Spielern erstellt werden. Meine Idee war zuerst es einfach per PHP zu machen also Produzieren beim neu landen der Seite und so weiter. Jedoch denke ich dass es mein System sehr viel mehr beanspruchen würde, da PHP die Daten für jedes Objekt jedes mal wieder aus der DB holen muss.

Ich könnte mit Java alle Produkte cachen und würde dann in Zeitintervallen einfach Produzieren und das Lager updaten.

Meine Idee war nun auf die MySQL Datenbank mittels Hibernate zugreifen, um einfach mit Objekten in meinem Java Quellcode zu arbeiten.
90% der Datenbank besteht aus INT Werten damit halte die die Datenmenge gering.
Ich habe also eine Tabelle Products dort gibt es eine ID, owner, type, amount, quality anhand des types kann man den Namen aus der Tabelle product_types erfahren. Was aber für den Backend Prozess unwichtig ist.

Ich plane dies im Folgenden sinne umzusetzen.
Mein Server lädt wenn er, das erste mal startet die Produkte, Benutzer und Lager Daten.
Wenn ein neues Produkt erstellt wird, bekommt er einen Befehl ein neues Produkt zu erstellen und fügt das zu seiner gecachten Liste hinzu.
Alle 5 Minuten wird nun ein "Wirtschaftstick" ausgelöst per Event und der Server updatet die Lagerdaten und speichert sie anschließend in die Datenbank.

Soweit würde ich sagen dass kann man auch einfach per PHP machen jedoch nun kommt dass was mein Spiel anders macht.
Produzieren sorgt dafür, dass Maschinen Schaden bekommen, Produkte in den Lagern verrotten, Eisenerz natürlich langsamer als Brot. Bei der Produktion spielen viele Faktoren eine Rolle.
Qualität der Maschine entscheidet maximal Qualität des Produktes. Einstellung der Arbeiter entscheidet über die Produktions Geschwindigkeit und Qualität. Arbeiter die gut bezahlt werden, erstellen gute Produkte. Arbeiter die gehetzt werden produzieren schneller aber schlechter und es gibt mehr Fehler. Gleichzeitig spielen die Komponenten für jedes Produkt eine Rolle. Wenn eine Komponente Schaden hat oder schlechte Qualität erhöht es die Chance auf Fehler.

Ich denke ihr könnt etwa nachvollziehen, wie komplex mein Spiel wird und was eben das Backend leisten muss.

Glaubt ihr mein Ansatz ist richtig?
- Alle Daten (Benutzer Produkte Lagerdaten und so weiter) Cachen. Mithilfe von Hibernate.
- Wirtschaftsticks Produzieren waren und führen andere Tätigkeiten aus.
- Änderungen in Form von Befehlen über die MySQL Datenbank.
Beispiel: Maschinen ID, Aktions ID (z.B. 4 = ändere Produktion), Neue Produkt ID
Es währen also nur 3 INT werte die eine Maschine veranlassen würden, beim nächsten Tick etwas anderes zu produzieren.
- Backend speichert die Daten zurück in die Datenbank.

Mein Spielprinzip sieht nicht vor, dass meine DB mit Leichen übersät ist. Irgendwann verrottet alles und wenn das Geld alle ist verschwinden die Gebäude und so weiter.

Mit freundlichem Gruß
MaikK :applaus:
 

Kaffeebohn

Bekanntes Mitglied
Also ich bin ja kein Profi, aber ich dachte immer, hibernate kümmert sich darum, Objekte in einer relationalen, also nicht objektorientierten Datenbank abzulegen und wieder als Objekte bereitzustellen. Wüsste nicht dass man damit Daten cachen kann.

Das Cachen würde ich eher dem DBMS überlassen, da es dafür konzipiert ist, möglichst schnell auf benötigte Daten zuzugreifen, und - falls dein Spiel mal ein Renner wird - auf einer eigens dafür ausgelegten Hardware laufen wird.

Hibernate ist außerdem nicht gerade die allerschnellste Möglichkeit, um einfache Werte aus einer Datenbank zu lesen, da es ja naturgemäß einen hohen Mapping-Aufwand betreibt.

Für "Wirtschaftsticks" wie ich sie jetzt verstanden habe eignen sich üblicherweiße sog. C(h?)ronjobs. Die rufen in einem angegebenen Intervall immer wieder eine URL auf, wo dann berechnungen durchgeführt werden.

Die Änderungen an der MySQL-Datenbank werden wie bereits erwähnt auch durch Hibernate durchgeführt.

So ich hoffe ich habe dich richtig verstanden, und meine Antworten bringen dich etwas weiter.

Liebe Grüße
 

tfa

Top Contributor
Also ich bin ja kein Profi, aber ich dachte immer, hibernate kümmert sich darum, Objekte in einer relationalen, also nicht objektorientierten Datenbank abzulegen und wieder als Objekte bereitzustellen. Wüsste nicht dass man damit Daten cachen kann.
Zur einem ORM gehört Caching schon dazu. Hibernate bietet 1st und 2nd-Level Caching und konfigurierbare Cachingstrategien. Die Implementierung des Cache ist ebenfalls einstellbar (Link).


Hibernate ist außerdem nicht gerade die allerschnellste Möglichkeit, um einfache Werte aus einer Datenbank zu lesen
Aber eine der besten (und dabei schnell genug).
 

ralfgc

Mitglied
Hallo,

weiß ja nicht wie die objekte in bezug auf verschiedene nutzer interagieren...also ob es
wichtig ist die datenbank aktuell zu halten.
Aber wenn sollte das nicht vor regem Datenbankzugriff abschrecken. Denn die sind
schließlich dafür da das mit denen gearbeitet wird.

Gruß
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Front-/Backend in Java Allgemeine Java-Themen 14
P Frontend- Zugriff auf WS- Backend Allgemeine Java-Themen 0
B Technikfrage bzgl Verbindung von Frontend und Backend Allgemeine Java-Themen 0
R GUI und Backend - Zyklenproblem Allgemeine Java-Themen 7
R GUI und Backend gescheit kombinieren Allgemeine Java-Themen 4
Kirby.exe Software Entwicklung Allgemeine Java-Themen 9
K GUI-Entwicklung - Dispose, enabling und mehrere Controller Allgemeine Java-Themen 1
K Entwicklung von Batchverarbeitung etc. in Java Allgemeine Java-Themen 5
ruutaiokwu META-INF-daten bei ungepackten library-projekten während der entwicklung mit einbeziehen...? Allgemeine Java-Themen 2
A Java Entwicklung übers Internet Allgemeine Java-Themen 10
M Data Dump für Entwicklung Allgemeine Java-Themen 2
S Algorhitmus Entwicklung zu den Gefälleplatten Allgemeine Java-Themen 7
O Entwicklung eines Codegenerators Allgemeine Java-Themen 7
G OO-Problem bei Entwicklung von Reversi Allgemeine Java-Themen 16
W Timer Konzept-Frage Allgemeine Java-Themen 16
S Suche Konzept: Korrektheit des Aufrufers feststellen Allgemeine Java-Themen 7
J MVC Konzept Allgemeine Java-Themen 1
reibi log4j - Bestes Konzept Allgemeine Java-Themen 10
E Super erzwingen, konzept/pattern gesucht. Allgemeine Java-Themen 8
D GUI-Controller Konzept Allgemeine Java-Themen 6
G UML Konzept Allgemeine Java-Themen 3
E Wie anfangen? Konzept / Designfrage Allgemeine Java-Themen 17
R Konzept eines Software-Rollout/Synchronisation via WebService Allgemeine Java-Themen 5
D Observer/Observable Pattern vs. Listener-Konzept Allgemeine Java-Themen 4
MQue Thread Konzept Allgemeine Java-Themen 8
G MVC-Konzept - effizienz beim "notify" Allgemeine Java-Themen 2
MQue Konzept- Frage zum Button-Aktualisieren Allgemeine Java-Themen 5
S Frage zum Java-Konzept Allgemeine Java-Themen 6
H GUI - Konzept Allgemeine Java-Themen 3
S Konzept: Innere Klasse, Anwendungsbeispiel? Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben