Se un proc memorizzato prova a fare di più, nel tentativo di evitare php mysql avanti e indietro

3

Ho un'architettura REST, che esegue PHP sul lato server che memorizza e interrogare un database Mysql.

Sto rivalutando una decisione sul design dell'architettura:

DECISION per rivalutare:

Nel tentativo di evitare le comunicazioni avanti e indietro tra PHP e Mysql:

  1. Per alcune richieste del browser (ad esempio: "GET / sessions / 4"), una richiesta richiede una risposta importante con i collegamenti degli oggetti correlati.

  2. Per queste situazioni, ho progettato alcuni grandi mysql memorizzati procedure per interrogare più tabelle. Pertanto, per una richiesta del browser, PHP avvia questo MySql memorizzato procedura che esegue. Alla ricezione dei risultati PHP, il mio codice PHP passa attraverso ogni pacchetto di risultati della query per creare oggetti e collegarli logicamente.

  3. Al termine di questo processo, PHP interroga i miei oggetti di visualizzazione logica interni per costruire la risposta formattata restituita alla richiesta del browser.

  4. L'alternativa sarebbe quella di richiedere più stored procedure e avviarle ognuna in PHP anziché all'interno di questa stored procedure.

PROBLEMI : Diventa piuttosto difficile gestire i cambiamenti nel tempo. Queste stored procedure diventano difficili da mantenere, poiché ogni tabella cambia, hanno un impatto su una di esse.

DOMANDA : Ho iniziato questo progetto, perché molti framework generati dal codice vengono criticati per la loro mancanza di efficienza nella comunicazione tra il livello PHP e Mysql. Effettuando quelle stored procedure a mano, mi aspettavo di avere le migliori prestazioni in produzione, tuttavia, la manutenzione inizia a essere fastidiosa. L'architettura ad alta efficienza della vita reale tenta di limitare il numero di comunicazioni PHP (Mysql stored procedure) avanti e indietro o sto tentando di circondare un falso problema ???

Grazie

    
posta Alain 31.03.2014 - 23:48
fonte

1 risposta

3

È possibile inviare l'intero contenuto di una procedura memorizzata da eseguire dal database e restituire lo stesso set di dati esatto o eseguire la stessa esecuzione di codice senza perdere alcuna prestazione, ma la mia ipotesi è che non è il tuo problema dato che tu? stiamo ancora mantenendo il codice in linguaggio MySQL. Ci sono probabilmente molti calcoli nella procedura memorizzata e altra logica che vorresti eseguire con la tua lingua preferita.

Prova a fare dei test per vedere dove si trova il collo della bottiglia. Nessuno sa per certo perché alcune cose sono fatte meglio nel database (set di cose) e altri tipi di cose procedurali e ripetute sono meglio fatte in altri linguaggi di programmazione.

Potresti provare a pensare a dove il tuo futuro hardware avrebbe bisogno per migliorare le prestazioni. Generalmente, è più semplice lanciare più server Web e applicazioni in un'applicazione piuttosto che creare un cluster di database di server. Questo è il motivo per cui in molti casi, il server di database ha solo un sacco di hardware generato per creare un grande server.

È davvero guidato dalle tue esigenze di app, ma probabilmente più dove sono le tue abilità o le tue abilità.

    
risposta data 01.04.2014 - 00:19
fonte

Leggi altre domande sui tag