• Howdy, Freund! Du scheinst neu hier zu sein. Warum erstellst du dir nicht einen Forenaccount, um mitdiskutieren zu können? Du kannst dich hier registrieren.
    Du hast schon einen Forenaccount? Dann kannst du dich hier einloggen. Viel Spaß!

    Was denkst du zum Beispiel über diese Themen?

TWTimes

DeletedUser27242

Der Teil zum Thema Datenbanken ist völliger Mist, zwar sind einige Basics richtig drin, aber wir sind in 2016 Objektrelational hat ausgedient, entweder ich belasse es bei meiner klassischen relationalen Datenbank oder ich benutze gleich eine NoSQL-Datenbank, das No heißt weder Number noch "kein", sondern Not Only SQL. Diese Datenbanken verwalten große Datenmengen erheblich schneller, als konventionelle SQL-Datenbanken.

Set-Teile als Obergruppe zu nehmen macht theoretisch als auch praktisch nur wenig Sinn, da diese eigentlich extrahiert in einer n:m-Beziehung sind. Woher sollte man sonst bei einem Set-Item wissen ob das jetzt die Hose oder das Gewehr ist?

Für was auch immer du eine Sortiernummer brauchst ist mir ein Rätsel. Da Lege ich doch eine Sequence an(wenn wir bei relational bleiben). Z. B. SEQ_Boots. Die dann für jede Kategorie um 10000 erhöht, früher einfach um 10, aber das ist jetzt mal das kleinere.

Dann vergisst du, die Kategorie auszulesen, damit die Zuordnung zu einer Kategorie geschehen kann, sonst wird's lustig, denn du hättest im Inventar alles vorne. Der WHERE-Teil ist deutlich zu klein geraten.


Meine Empfehlung für Inno ist, den Zeitgeist mitzugehen und auf NoSQL umzusteigen, was sich im Web-Bereich als erheblich schneller erwiesen hat.
Denn die Daten kann man sich als JSON-Objekt holen, wodurch relativ schnell ein Objekt in der Programmiersprache gefüllt werden kann, besonders in einer Sprache wie PHP.

So wer das kauderwelsch jetzt nicht verstanden hat hier nochmal runter gebrochen:
Die Welt als Tabellen zu erfassen ist sinnfrei
Ein Stuhl ist ein Objekt, ein Auto ist ein Objekt, mit entsprechenden Werten, warum soll ich das ganze in eine Tabelle aufbrechen, wenn ich die Relevanten Daten dazu auch einfach als Objekt Stuhl mit den Attributen: (Höhe, Gewicht, Material, ...) als Objekt speichern kann und nur noch eine Abfrage zum auslesen brauche, anstelle von einer großen SQL-Abfrage, wo ich die Objekte dann Zeile für Zeile fülle.
By the way: Probleme kann es hier geben, wenn ich Infos aus der DB will, hab das ganze schön nach der 3. NF gestaltet. Nehmen wir jetzt mal einen PC als Beispiel, mich als Admin interessiert jetzt nicht nur, wie viel Arbeitsspeicher der hat, sondern auch auf welche Riegel das verteilt ist.
Jetzt muss ich zur Anzeige das Geräts eine Abfrage schreiben und dann für die Details zum Arbeitsspeicher noch eine Abfrage, damit ich über jeden einzelnen Riegel weis, was der für Daten hat.
Will ich dieses Problem mit einer einzelnen Abfrage lösen, erhalte ich vielleicht 2 oder 3 Datensätze zu einem PC, in denen sich jetzt nur die Details zum Arbeitsspeicher geändert haben.
Bei einer NoSQL-Datenbank, wo ich genau einen PC auslesen will, würde ich hier ein JSON-Objekt erhalten in dem ich die Daten ähnlich wie in einem Array bekomme:
{'Riegel 1'}->
.......{'Name'} -> Kingston DDR3 hxiel
.......{'Taktfrequenz in MHz'} -> 1600
.......{'Speicher in MB'} -> 4096
{'Riegel 2'}->
.......{'Name'} -> G.SKILL DDR3 qwerl
.......{'Taktfrequenz in MHz'} -> 1333
.......{'Speicher in MB'} -> 2048

Das Problem an der Sache ist, die NoSQL-Datenbanken sind ein klein wenig komplizierter, bedürfen dafür aber keinen Konstruktormethoden um Objekte auszuwerfen.

Sorry ich bin wieder ein wenig ausgeschweift, worum es prinzipiell geht:
Objektorientierte Programmierung mit einem relationalen Modell zu verbinden ist schlicht weg idiotisch. Ich sag ja auch nicht, ich muss jetzt erstmal 3 Tabellen anlegen, damit ich den Schrank erfassen kann, sondern mache das als Objekt, in dem ich einfach bekannte Einheiten wieder Nutze, wie z.B. Gewicht und Größe.
 

DeletedUser24725

Der Teil zum Thema Datenbanken ist völliger Mist, zwar sind einige Basics richtig drin, aber wir sind in 2016 Objektrelational hat ausgedient, entweder ich belasse es bei meiner klassischen relationalen Datenbank oder ich benutze gleich eine NoSQL-Datenbank, das No heißt weder Number noch "kein", sondern Not Only SQL. Diese Datenbanken verwalten große Datenmengen erheblich schneller, als konventionelle SQL-Datenbanken.
Völlig falsch, weil bei einfachen Abfragen es längert dauert. Daher ist auch zum Beispiel Facebook schon wieder ab von NoSQL. Andere sind davon auch schone wieder weg gegangen.
Und wenn du richtig schaust mein Beispiel ist eine klassischen relationalen Datenbank.

Set-Teile als Obergruppe zu nehmen macht theoretisch als auch praktisch nur wenig Sinn, da diese eigentlich extrahiert in einer n:m-Beziehung sind. Woher sollte man sonst bei einem Set-Item wissen ob das jetzt die Hose oder das Gewehr ist?
n:m Beziehungen kenne ich gar nicht nur n:n . Das mit den Setteilen verstehst du falsch, schaue dir Tabelle 2 richtig an.
Alle Schuhe der Sets, Alle Gürtel der Sets etc.

Meine Empfehlung für Inno ist, den Zeitgeist mitzugehen und auf NoSQL umzusteigen, was sich im Web-Bereich als erheblich schneller erwiesen hat.
Denn die Daten kann man sich als JSON-Objekt holen, wodurch relativ schnell ein Objekt in der Programmiersprache gefüllt werden kann, besonders in einer Sprache wie PHP.
Ist ein völliger Irrtum, du springst da auf ein Pferd was sich als schlecht erwiesen hat.

Lese besser noch mal ganz genau nach, auch die Nachtteile einer NoSQL Datenbank nach lesen, nicht nur Vorteile.
http://dbs.uni-leipzig.de/file/seminar_1112_tran_ausarbeitung.pdf Ab Seite 13 Punkt 5

Sorry ich bin wieder ein wenig ausgeschweift, worum es prinzipiell geht:
Objektorientierte Programmierung mit einem relationalen Modell zu verbinden ist schlicht weg idiotisch. Ich sag ja auch nicht, ich muss jetzt erstmal 3 Tabellen anlegen, damit ich den Schrank erfassen kann, sondern mache das als Objekt, in dem ich einfach bekannte Einheiten wieder Nutze, wie z.B. Gewicht und Größe.
Und dann packe mal das komplette Questsystem (mind. 10 Tabellen klassischen relationalen Datenbank) in einer NoSQL Datenbank...du gehst ganz schnell davon ab. Zeige mir mal eine NoSQL Datenbank mit meinen Beitrag aus der März-Ausgabe. Der Schrank ist ein Object dazu reicht eine Tabelle. Jedes Kleidungsstück ist ein Object. Jetzt mache mal bitte eine ganz einfache Abfrage wie viele Objekte "Strümpfe" in dem Kleiderschrank sind. Und denke daran es können mehr als ein Kleiderschrank vorhanden sein.

Möchte gerne wissen woher du dein Wissen hast (ne lieber aber nicht) du hast gefährliches Halbwissen, das mit dem NoSQL ist schon viel älter, mind 20 Jahre (so alt ist das Buch was ich zu dem Thema habe), nur schon komisch wie wenig sich das durch gesetzt hat.
So und nun möchte ich von dir es sehen wie das Inventar bei NoSQL aussieht. Und komme mir gar nicht mit: Sortiere nach ID's. Und bitte die Abfrage schön sortiert nach Schuhe etc. und auch nach den Typen der Schuhe.
 
Zuletzt bearbeitet von einem Moderator:

siraustin

Revolverheld
Ehemaliges Teammitglied
Schöne Zeitung nur leider nichts gewonnen . :(
Interesante These zur Mythosquest hoffe dies ist kein Aprilscherz ... :cool:
 

Tony Montana 1602

Revolverheld
Info an die Spieler:

Leider wurde von Support die Information ausgegeben, dass wir - die Redaktion der TWTimes - die Abwicklung der Beutetruhen übernehmen sollen.

Diese Information ist aus naheliegenden Gründen - wir sind Spieler und keine Mitglieder des The West Teams - falsch.

Wir helfen nur, die Information zu verbreiten, die Abwicklung liegt bei InnoGames und dem The West Team.
 

DeletedUser27242

Und dann packe mal das komplette Questsystem (mind. 10 Tabellen klassischen relationalen Datenbank) in einer NoSQL Datenbank...du gehst ganz schnell davon ab. Zeige mir mal eine NoSQL Datenbank mit meinen Beitrag aus der März-Ausgabe. Der Schrank ist ein Object dazu reicht eine Tabelle. Jedes Kleidungsstück ist ein Object. Jetzt mache mal bitte eine ganz einfache Abfrage wie viele Objekte "Strümpfe" in dem Kleiderschrank sind. Und denke daran es können mehr als ein Kleiderschrank vorhanden sein.

Möchte gerne wissen woher du dein Wissen hast (ne lieber aber nicht) du hast gefährliches Halbwissen, das mit dem NoSQL ist schon viel älter, mind 20 Jahre (so alt ist das Buch was ich zu dem Thema habe), nur schon komisch wie wenig sich das durch gesetzt hat.
So und nun möchte ich von dir es sehen wie das Inventar bei NoSQL aussieht. Und komme mir gar nicht mit: Sortiere nach ID's. Und bitte die Abfrage schön sortiert nach Schuhe etc. und auch nach den Typen der Schuhe.

Wieso setzt sich sowas nicht immer gleich durch?
Das ist ganz einfach beantwortet, man muss oftmals im Quellcode die Strukturen ändern, da die Antworten von Abfragen als JSON-Objekte zurückkommen. Die alten Systeme änderst du erstmal nicht, wenn du nicht meinst sie könnten durch NoSQL einen deutlichen Gewinn in der Performance bekommen.

Warum sollten mindestens 10 Tabellen schwer sein?
Ein Inventar muss ich nicht aufsplitten, ich nehme das Inventar als Hauptelement und Gruppiere das unter. Wobei das Inventar ja auch nicht das oberste Element ist.

.....
........
.......{'Inventar'} ->
..............{'Item'} Value: 'braune Wildlederstiefel'
..................... -> {'Rubrik'} Value: Schuhe
..................... -> {'Attribut'} Value: 1 Beweglichkeit
..................... -> {'Attribut'} Value: 2 Charisma
..................... -> {'Fertigkeit'} Value: 10 Schwimmen
........
.....


Sehr sehr stark vereinfacht was da rauskommt.
Zum Thema Geschwindigkeit:
Ja ich geb dir recht das 1 Abfrage auf NoSQL langsamer ist als 1 auf SQL
allerdings brauchst du auf SQL erheblich mehr als auf NoSQL.

Für kleine Datenbanken lohnt NoSQL natürlich nicht, würde ich auch nie behaupten, ich weis aber nicht, wie viele tausend Abfragen bei Inno die Minute durchschießen, das müssten sich die in Hamburg mal überlegen.
Jedenfalls hatte ich es auch schon mal, das Oracle und Mongo parallel Daten für das selbe Programm lieferten.
Ich schrieb auch nicht, das es NoSQL erst seit gestern gibt, aber die Verbreitung hat sich erst in letzter Zeit erhöht.
Jeder Spieler wäre für mich ein Dokument, beim Login "pack" ich das aus, da der Großteil sowieso direkt gebraucht wird.

So ich muss mal produktiv sein, das reicht hoffentlich fürs erste und wenn nicht GIDF oder BIDF.
 

DeletedUser24725

.....
........
.......{'Inventar'} ->
..............{'Item'} Value: 'braune Wildlederstiefel'
..................... -> {'Rubrik'} Value: Schuhe
..................... -> {'Attribut'} Value: 1 Beweglichkeit
..................... -> {'Attribut'} Value: 2 Charisma
..................... -> {'Fertigkeit'} Value: 10 Schwimmen

Schön und gut, du hast aber jetzt die Sortierung vergessen. Das was du hier zeigst ist unausgegoren. Bitte eine Vollständige Lösung mit Abfragen und Sortierung: Alle Wildlederstiefel zusammen, auch wenn eine neuer erst 2 Jahre später dazu kommt. Und auch bitte die darauf achte das die blauen immer vor die grünen kommen und dann erst die gelben. Bei Arbeitsschuhe wie auch Wildlederstiefel. Aber bitte mit Code.
Das da oben ist wieder nur reine Theorie. Also bitte wo ist die Sortierung? Nämlich darum ging es in meinen Artikel.

Außerdem brauchst du auch für die Items noch eine extra Tabelle.
.{'Item'} Value: 'braune Wildlederstiefel'
..................... -> {'Rubrik'} Value: Schuhe
..................... -> {'Attribut'} Value: 1 Beweglichkeit
..................... -> {'Attribut'} Value: 2 Charisma
..................... -> {'Fertigkeit'} Value: 10 Schwimmen

Weiterhin brauchst du für für jeden Laden eine Tabelle:
{'Laden'} ->
{'Item'} Value: 'braune Wildlederstiefel'
..................... -> {'Rubrik'} Value: Schuhe
..................... -> {'Attribut'} Value: 1 Beweglichkeit
..................... -> {'Attribut'} Value: 2 Charisma
..................... -> {'Fertigkeit'} Value: 10 Schwimmen

Ich habe deinen ersten Bericht einen gezeigt der 15 Jahre lang Datenbankadmin bei der Deutsche Bank war...er hat mit dem Kopf geschüttelt. Und bitte endlich mal lesen. Aus dem PDF-Dokument was ich verlinkt habe:
Allerdings bleiben für viele Datenbank-Probleme das RDBMS als erste Wahl.
Im Allgemeinen sind SQL-Datenbanken, im Gegensatz zu NoSQL-Datenbanken, keine
Minderheit, sondern immer noch die Lösung für die meisten Datenbankprobleme.


ich weis aber nicht, wie viele tausend Abfragen bei Inno die Minute durchschießen, das müssten sich die in Hamburg mal überlegen.
Wir haben Jahre 2016 mit PDO werden auch Abfragen gecacht.

Der Teil zum Thema Datenbanken ist völliger Mist
Diese Aussage von dir ist einfach schlichtweg falsch.
 
Zuletzt bearbeitet von einem Moderator:

DeletedUser21572

Sind freie Redakteure keine Redakteure ?
Chamberlin hat laut eurem Impressum alleine schon mehr als 10 Welten.
19 Welten gab/gibt es. Dann zieh ich die Eventwelt, die geschlossene w8 und die Welten 3 und 5 auf denen er nicht spielt ab bin ich immernoch bei 15.
19 und 18 Welten fallen ja auch weg, da die Eventwelt und w8 ja nicht mehr existieren.
Damit wären alle Antwortmöglichkeiten falsch :whistle:
Falls doch nur feste Redakteure gemeint waren sollte man das nächstes mal auch dazu schreiben.
Ansonsten möchte ich mich hier schonmal für den Gewinn bedanken.

Achja noch was:
Was hat der Hinweis beim ersten Rätsel mit den 7 Redakteuren zu tun ?
 
Zuletzt bearbeitet von einem Moderator:

DeletedUser27242

Schön und gut, du hast aber jetzt die Sortierung vergessen. [...] Diese Aussage von dir ist einfach schlichtweg falsch.

Ich habe das ganze heute mal so nebenbei geschrieben, sorry das ich im Vergleich zu dir, was zu tun habe und ein Leben besitze.
Der Ansatz ist nicht zu 100% perfekt, dennoch macht eine NoSQL durchaus Sinn. Klar das mit PDO ein Cache erstellt wird, ist mir in der Tat bekannt. Ich setze mich hier aber nicht hin und schreie Inno macht die Datenbank komplett falsch und verstößt gegen die NFs. Ich hätte nicht mal die Zeit noch die Lust hier groß Theater deswegen zumachen. Das Relational die erste Wahl für viele bleibt ist mir bekannt, ich muss auch mit relational oft genug noch arbeiten. Allerdings finde ich im direkten Vergleich die NoSQL-DBs für Entwicklung mit OO besser, da ich Objekte relativ schnell ohne Aufwand einlesen, bearbeiten und speichern kann. Bei einer serverseitigen Sprache wie PHP läuft die Arbeit egal wie auf einem Server ab und da halte ich NoSQL für sinniger.
Inno arbeitet an vielen Elementen sowieso schon mit JSON, z.B. die FKs oder auch die Rangliste und deshalb wäre eine NoSQL dort das sinnigere System in meinen Augen. Die DB-System von TW ist Postgre, damit hab ich leider noch nichts zu tun gehabt, daher weis ich nicht in wie weit das eine Hybridform zulässt an mancher stelle dokumentenbasiert bzw relational.

Ich persönlich werde in Zukunft auch weiterhin NoSQL bevorzugen, wenn ich die Entscheidung habe und das Programm mehr als 100 Zeiler werden soll.
 
Zuletzt bearbeitet von einem Moderator:

DeletedUser24725

Nochmals du bist ein reiner Theoretiker.
1. Für das ganze zu machen habe 10 Minuten gebraucht...hat was mit erfahrung zu tun.
2. Du redest immer so schön von Objekte, was du machst ist Objekt in Obejekte ablegen.
User = Objekt
Inventar = Objekt
Jedes Item = ein Objekt
{'User'} ->
{'Inventar'} ->
{'Item'}->

Und noch mal wenn du behauptest: Das mein Ansatz scheiße ist muss du auch den Gegenbeweis aufstellen...aber nicht nur Theorie sonder auch Praxis.
Das Inventar ist nicht sortiert, es werden ID's per Hand vergeben, dann stimmt was nicht.

Und jetzt bekommst du mal das Workflow von meiner Behauptung und deiner:
Mein Workflow :
1. Abfrage ausführen, schon sortiert.
2. Ergebnis in einem Array rein.
3. Array mit json_encode zu einem Json-String umwandeln.
Fertig.
Bei dir:
1. Abfrage ausführen
2. Ergebnis = Json
3. Diesen in ein Array mit json_decode umwandeln.
4. Das Array vom Inventar 2x sortieren lassen.
5. Dieses komplette Array wieder in json-String.

Und da du nicht bereit bist das ganze in 10 Minuten mal zu machen, gibt mir das recht zu behaupten das deine erste Aussage: "Der Teil zum Thema Datenbanken ist völliger Mist" der größte scheiße ist denn man schreiben kann.
Empfehlung : Lerne zuerst mal die Grundlagen einer Diskussion, wer was behauptet muss es auch nachweisen...du machst es nicht. Ich kann die sogar Tausende berichte raus suchen die deine Behauptung widerlegen.
Neu != unbedingt besser.
Wir haben in der Firma uns auch mit 10 Entwickler zusammengesetzt ob wir das neue Spiel mit NoSQL machen. Es war einstimmig das wir es nicht machen. Aber alle sind blöd nur du mit deiner schönen Theorie bist der allerbeste. Und wenn du mir nicht zeigen kannst wie es in der Praxis aussieht schweigst du besser, du machst dich sonst lächerlich.
Die DB-System von TW ist Postgre, damit hab ich leider noch nichts zu tun gehabt, daher weis ich nicht in wie weit das eine Hybridform zulässt an mancher stelle dokumentenbasiert bzw relational.
Dann schweigst du erst recht besser. Wer nicht weiß was Postgre ist sollte sich erst mal mit Datenbanken richtig auseinander setzen. Dann hast du nie eine Schulbildung über Datenbanken genossen weil dort auch Postgre erwähnt wird. Postgre = SQL, genauso wie MariaDB, Oracel, MS-SQL, InterBase.
Ich persönlich werde in Zukunft auch weiterhin NoSQL bevorzugen, wenn ich die Entscheidung habe und das Programm mehr als 100 Zeiler werden soll.
Wir reden hier von Programmen die locker die 100.000 Zeilen übersteigen können. 100 Zeiler sind Dreck ;)
 
Zuletzt bearbeitet von einem Moderator:

DeletedUser27242

nein ehrlich es gibt Programme mit mehr als 100 Zeilen? :blink:
Das war eine Metapher. Ich weis das Postgre eine relationale Datenbank ist, allerdings viel mehr drüber hinaus geht das Wissen über die Datenbank nicht.
 

Tony Montana 1602

Revolverheld
Da wir uns gedacht haben "Doppelt genäht, hält besser", haben wir nicht nur Rastlos Mythos-Aprilscherz in die Zeitung genommen, sondern müssen euch leider mitteilen, dass auch der Bericht über die freizügigere Herausgabe der Beutetruhen ein Aprilscherz war. ;)

Die Redaktion der TWTimes hätte allen Spielern den Fortschritt bei der Mythos Questreihe sowie die Beutetruhen von Herzen gegönnt - doch leider steht das nicht in unserer Macht.

PS Ein Anschreiben an den Support oder an ein Mitglied der Redaktion der TWTimes ist daher nicht mehr nötig, aufgrund von ... es gibt nix! :D
 
Zuletzt bearbeitet:

Deleted User - 175317

Die Aprilscherze waren Toll:) nur vom Mythos war ich etwas enttäuscht:(
 

Tony Montana 1602

Revolverheld
Da wir uns gedacht haben "Doppelt genäht, hält besser", haben wir nicht nur Rastlos Mythos-Aprilscherz in die Zeitung genommen, sondern müssen euch leider mitteilen, dass auch der Bericht über die freizügigere Herausgabe der Beutetruhen ein Aprilscherz war. ;)

Die Redaktion der TWTimes hätte allen Spielern den Fortschritt bei der Mythos Questreihe sowie die Beutetruhen von Herzen gegönnt - doch leider steht das nicht in unserer Macht.

PS Ein Anschreiben an den Support oder an ein Mitglied der Redaktion der TWTimes ist daher nicht mehr nötig, aufgrund von ... es gibt nix! :D


Aus gegebenem Anlass - ich erhalte immer noch Anfragen - pushe ich das hier nochmal.
 
Oben