Usa il client per accedere al database o al server per accedere al database

0

Sto creando un'applicazione client server in cui ho bisogno di aggiornare un particolare database. Sto usando Python con MySQL. Ci sono due opzioni:

Utilizzo un client.py e server.py, il client.py può inviare i dati compressi in JSON al server, il server.py gestirà il database e invierà i dati della query sotto forma di JSON.

La seconda opzione è che non esiste un file server.py, invece il client accede ai database e alle query direttamente con il server MySQL.

C'è qualche vantaggio nell'usare un metodo con un altro?

Modifica

Ci possono essere circa 100 client e invieranno i dati per tutto il giorno con un ritardo di circa 20 secondi.

    
posta Kartik Anand 13.04.2013 - 18:02
fonte

2 risposte

2

Ciò che stai chiedendo qui è la classica decisione a 2 livelli contro 3 livelli (o n-tier).

Prima di tutto, non c'è una risposta intrinsecamente corretta. La tua scelta dipende molto da quali sono i tuoi obiettivi.

In una configurazione client-server, ci si connette direttamente al database dal client. Il vantaggio di questo è che è una configurazione semplice. Lo svantaggio è che stai essenzialmente dando accesso diretto al database a chiunque stia eseguendo il client (che include le informazioni sulla connessione al database). Potresti anche aver bisogno di verificare che tutti i driver di database corretti siano installati sulle macchine che eseguono il client (questo potrebbe non essere un problema per i programmi python / mysql).

In un sistema a 3 livelli, i client comunicano con un server delle applicazioni e quel server delle applicazioni è l'unico programma che interagirà con il server del database. Un vantaggio è la sicurezza: il database può essere al sicuro fuori dalla portata dei clienti. E non devi preoccuparti di configurare i driver del database su ciascun client. Inoltre, hai la funzionalità del server delle applicazioni se espandi alle applicazioni web e mobili. Lo svantaggio naturalmente è che il suo lavoro più da impostare - è necessario creare / implementare il server delle applicazioni (che può, btw, essere solo un server web).

tl / dr ... leggi su design a 2 livelli e 3 livelli

    
risposta data 13.05.2013 - 21:29
fonte
0

Il vantaggio di avere client.py connettersi direttamente alla porta 3306 è che non è necessario scrivere (e eseguire il debug) alcun codice di marshalling JSON. E non avrai bisogno di distribuire e mantenere istanze di server.py. Mantieni semplice, attua e annota alcune misurazioni temporali.

Non hai descritto i requisiti di latenza o velocità effettiva per la tua applicazione. Il numero di host che esegue client.py è importante. La velocità del leggero ritardo tra il client e il server è importante. Il pool di connessioni DB potrebbe rivelarsi utile. Implementa la cosa più semplice che possa funzionare, prendi le misure e esegui l'iterazione da lì.

    
risposta data 13.04.2013 - 18:20
fonte

Leggi altre domande sui tag