datenbank oder textdatei?

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
Ambience
Mitglied
Beiträge: 628
Registriert: 02.09.2006 11:28
Wohnort: daheim
Kontaktdaten:

datenbank oder textdatei?

Beitrag von Ambience »

Hallo,

ich versuche mir hier gerade so eine art community zu basteln..

Jetzt stellt sich die Frage was besser ist, ob ich:

a) die anzahl der User ständig per SELECT COUNT abfragen soll
b) die anzahl der User immer in eine Textdatei schreiben soll
c) die anzahl der User in die Datenbank und cachen..(z.b. so wie bei phpBB3 in die config Tabelle oderso)

Mir geht es dabei eher darum traffic einzusparen und gleichzeitig sollte evlt. noch dazu die Performance gesteigert werden...

Ich persönlich schwanke zwischen Textdatei und Datenbank mit Cache.

Eine Suche hat mir leider auch nichts verwendbares ausgegeben, außer das Textdateien zum traffic sparen verwendet werden können, allerdings weiß ich hierbei wieder nicht, ob sich das auch positiv auf die performance ausschlägt.
Xwitz
Mitglied
Beiträge: 1104
Registriert: 21.06.2005 21:41

Beitrag von Xwitz »

Kleiner Tip: SELECT COUNT ist sehr schnell, wenn die Tabellen einen Index haben. Da wird nichts gezählt, die Zeilenzahl liegt ständig vor. Und mit Traffic hat das nichts zu tun oder?
Benutzeravatar
Banger
Ehemaliges Teammitglied
Beiträge: 375
Registriert: 03.05.2005 21:53
Wohnort: Düsseldorf
Kontaktdaten:

Beitrag von Banger »

Xwitz hat geschrieben:Kleiner Tip: SELECT COUNT ist sehr schnell, wenn die Tabellen einen Index haben. Da wird nichts gezählt, die Zeilenzahl liegt ständig vor.
...es sei denn, man filtert z.B. nur aktive Nutzer, dann sollte man zu diesem Zwecke einen Index auf user_active haben.

Wenn Du eh auf ein DBMS zurückgreifst, würde ich an Deiner Stelle auf Flatfiles verzichten, denn diese bedeuten nicht nur jeweils einen zusätzlichen Filehandler pro Seitenaufruf, sondern Du musst Dich beim Update der Daten auch noch um ein gescheites Locking kümmern (Stichwort "Race Condition": zwei User melden sich gleichzeitig an, zwei Skript-Instanzen wollen gleichzeitig das File editieren).
Von der Anwendungsseite her am komfortabelsten wäre sicherlich ein DBMS mit Triggern, welches die "Cache-Daten" eigenständig aggregiert und somit von sich aus für Datenkonsistenz sorgt - aber ok, das führt jetzt zu weit. ;-)
Benutzeravatar
easygo
Mitglied
Beiträge: 2170
Registriert: 03.09.2004 13:45
Kontaktdaten:

Re: datenbank oder textdatei?

Beitrag von easygo »

Ambience hat geschrieben:c) die anzahl der User in die Datenbank und cachen..(z.b. so wie bei phpBB3 in die config Tabelle oderso)
Würde sich erst richtig lohnen, wenns ne größere (Overall-)Statistik geben soll bei dir.

Als Beispiel: User (männlich/weiblich/witzlos/..), Foren, Themen, Beiträge usw.
oder wenn der Zähler jedesmal x Bedingungen abklappern muss.

Indexieren wär dann zwar ne Alternative, weil schneller beim Lesen..
aber dafür wirds beim Schreiben deutlich langsamer und Indizes müssen halt
nach jeder, kleinen Tabellenänderung neu angelegt werden.
Ambience hat geschrieben:Mir geht es dabei eher darum traffic einzusparen und gleichzeitig sollte evlt. noch dazu die Performance gesteigert werden...
Was du damit sparen kannst, ist Rechnerleistung / dein Server wirds dir hoffentlich danken. :wink:
Benutzeravatar
Ambience
Mitglied
Beiträge: 628
Registriert: 02.09.2006 11:28
Wohnort: daheim
Kontaktdaten:

Beitrag von Ambience »

Jetzt hab ich erstmal den Sinn von zusätzlichen Indexen verstanden.

Es wird eine funktion geben, die alles managed.. wie bei phpbb diese get_db_stat...

zum einen lasse ich mir einmal nur die user die online sind und die gesammtzahl ausgeben

Beim zweiten aufruf wird es allerding eine Full Statistik...

z.b.
User online: (zahl)
Gesamtanzahl aller User: (Zahl)
Gesammtanzahl aller Allianzen (Zahl)
Gesammtanzahl aller überweisungen(Zahl)
Gesammtsumme der überweisungen( Zahl)

etc. etc.

Wie würdet ihr dort vorgehen? - Ich persönlich würde die erste abfrage mit SELECT COUNT machen, wenn es so schnell ist..

Die zweite würde ich wenn es geht genauso machen, und dabei alle 10 Minuten neu cachen...

Was bzw. wie würdet ihr das machen. Wie vllt. schon gesagt, ich schreibe an einem kleinen Browsergame und ich will soviele Queries wie nötig aber so wenig wie möglich machen. Und das Cachen sollte eigentlich nur im Grunde die Lösung für schnelleren Seitenaufbau sein.

Ich will sozusagen einen wirklich reibungslosen ablauf, auch wenn (wer weiß) vllt. einmal 500 Leute gleichzeitig online sind. (Das Spiel wird nur für max. 500 Leute konzipiert<- So nennt man das glaube ich)...

Danke
Antworten

Zurück zu „Coding & Technik“