Newsgroup: it.comp.os.linux.sys
Titolo: [concettuale] file di testo o database

Ciao, sto sviluppando una chat su protocollo http in (hype here) Ajax (no
more hype) XML HTTPrequest.
mi č sorto un dubbio di tipo concettuale appunto, attualmente mi appoggio a
un database per il rimpallo dei messaggi che i tizi si scriveranno.
mi sembra un po' esagerato come sistema, la mia domanda č:
creando n file di testo (uno per ogni coppia di utenti) potrei impiegare
meno risorse?
ponendo che ci siano ad esempio 100 persone che chattano in contemporanea
(50 files di testo (XML)) creo dello stress al filesystem tanto da poter
preferire l'utilizzo di un database?
grazie per eventuali risposte.
-- 
di lesa in lesa mi dileggio

 preferire l'utilizzo di un database?
ho dimenticato di dire, ogni file viene letto due volte ogni secondo e
scritto appena un utente manda un messaggio



Quindi il tuo server (o il client, se richiedi sempre il file XML via 
AJAX o simili) dovrebbe parsare un file XML due volte al secondo.
E il server dovrebbe riscrivere il file in toto ogni messaggio che 
arriva (gestendo eventuali collisioni di 2 post contemporanee).
La vedo pesante soprattutto quando il file inizia a diventare grande (a 
meno di tenere solo gli ultimi n messaggi).
Non per il filesystem, quanto per il processore.
Se il parsing dell'XML fosse sul server, poi, lo vedrei pesante anche 
come numero di parsing al secondo (20 utenti che chattano, sarebbero 40 
parsing al secondo di file XML arbitrariamente grandi eseguiti, nel caso 
peggiore, in contemporanea).
Non hai detto che linguaggio utilizzi server-side (per avere una idea 
delle prestazioni dello stesso, un Perl o un Php hanno prestazioni 
notevolmente differenti, soprattutto quando si tratta di analizzare 
stringhe).
Comunque penso che un DB possa essere un buon back-end, in quanto č lui 
stesso a smazzarsi la scrittura su disco (quando serve), ottimizzazioni 
di lettura e scrittura, concorrenza delle operazioni, ecc. (e ti 
permetterebbe di scalare da chat di 2 utenti a chat di n utenti senza 
troppi problemi)
Al limite puoi decidere quale database utilizzare (se PGSQL, MySQL, 
SQLLite, ecc.) per avere una cosa tagliata su misura (non hai 
specificato che volume di traffico vorresti sopportare).
Quindi, personalmente, io utilizzerei un DB.
Creare un XML ogni volta da una query mi sembra molto piů leggero che 
analizzare un XML ogni volta e ricrearlo da 0 ad ogni post gestendo 
tutte le concorrenze delle operazioni di lettura/scrittura.
LP
-- 

 
attualmente è proprio così.
non che ci sia niente di magico in questo, ma i source sono su
www.sathia.it/chat.zip


 
Proverň a darci una occhiata.
Nel frattempo, buon lavoro.
Luca
-- 

My two cents.
Circa 4 anni fa avevo creato una chat in semi-AJAX (non usavo XML) e 
lasciavo tutto nelle variabili globali dell'application server. Niente 
file e niente DB, tanto sono dati che possono anche andare persi e se il 
server salta, comunque gli utenti verrebbero sbalzati dalla chat.
Era realizzata in VB/ASP su un server terribilmente lento dove il tempo 
di "turn-around" del database (tempo necessario perché una "select" 
restituisca i dati appena inseriti) era eccessivo. Ragion per cui era 
più rapido avere una stringa con dei separatori piuttosto che un XML con 
tutto l'overhead che ne consegue.
Ogni utente aveva a livello di sessione (quindi sempre solo in memoria) 
una copia dei dati di chat dove venivano eseguite tutte le operazioni di 
  elaborazione sui messaggi, mentre lato client avveniva tutta la parte 
di formattazione.
Funzionava bene e con 20 utenti collegati non soffriva di latenze 
percepibili. Con il metodo DB invece già dopo 5 utenti andavano in vacca 
i semafori sulle risorse condivise, ma immagino sia un problema 
congenito di MS... :-)
Alex.

 
Ciao,
Michele

sto valutando di utilizzare delle RPC.
ma ne so meno che poco, mi documento un pochetto.
ciao