MySQL Proxy: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Riga 40:
Questa funzione richiede pochissima attività di manutenzione nella sua forma base. Per gestire i casi critici, è possibile intervenire con uno script [[Lua]]. Si tratta, peraltro, di un'applicazione ancora immatura (Settembre [[2007]]), e pertanto da usare con cautela.
Il secondo caso è differente. Per modificare la query in uscita o i risultati in entrata, è necessario scrivere un programma in [[Lua]] e lanciare il Proxy con un'opzione che lo fa caricare. Per esempio, questo script intercetta la query ''
-- simple.lua
function read_query(packet)
if packet:byte() ~= proxy.COM_QUERY then
Riga 54 ⟶ 55:
end
Per usare questo script, si lancia il Proxy con l'apposita opzione
In questo esempio, il Proxy inserisce la query modificata nella coda interna (''proxy.queries'') e la esegue.▼
mysql_proxy --proxy-lua-script=simple.lua
▲In questo esempio, se la query è ''SELECT 1'', il Proxy inserisce la query modificata nella coda interna (''proxy.queries'') e la esegue.
Usando una combinazione di read_query e read_query_result, il Proxy può effettuare una o più delle seguenti operazioni:
* Passare la query al server senza modifiche (default);
* modificare la query e passarla al server;
* eseguire una o più query prima o dopo la query originale;
* non eseguire la query e restituire un risultato (falso) coerente con la query. Per esempio, dopo un INSERT, viene restituito il numero di record modificati, anche se non è stato modificato alcun record;
* non eseguire la query e restituire un risultato diverso da quello richiesto (per esempio, dopo un INSERT, restituire uno o più record);
* non eseguire la query e restituire un messaggio di errore;
* modificare il risultato originale inviato dal server;
* sostituire il risultato del server con uno creato.
La lista qui sopra fa capire che il Proxy è uno strumento molto potente, con cui è possibile definire estensioni del linguaggio, filtrare query indesiderate, rendere l'applicazione sicura con il monitoraggio delle operazioni, e così via.
== Riferimenti ==
|