Forse sono l'ultimo a saperlo, ma spulciando il codice di Mediawiki mi sono accorto che utilizza memcached per il caching di alcune operazioni molto dispendiose.
Per chi non ne fosse a conoscenza, memcached è un sistema client-server molto interessante per il caching dei dati. La libreria originale è scritta in C, ma si possono trovare wrapper per PHP, Python e molti altri linguaggi in giro per la rete.
Diversamente da altri sistemi di cache, che salvano i dati elaborati in memoria o su disco sul computer locale, memcached propone una struttura diversa e molto efficace: l'architettura si compone di un server che alloca una porzione fissa di memoria contigua da utilizzare come deposito per i dati in cache. A questo server si connettono dei client da computer remoti (solitamente contenuti all'interno della stessa rete locale) che attraverso semplici comandi salvano e recuperano stringhe binarie di dati più o meno ampie. Queste stringhe vengono salvate in memoria e restituite quando richieste, a meno che non siano scadute.
Questo sistema che potrebbe creare qualche dubbio, in realtà è ottimo perchè:
- permette di condividere la cache tra host remoti differenti risparmiando spazio e memoria;
- permette di mettere il sistema di cache su un altro computer, ottimizzando la distribuzione della ram e del carico di lavoro;
- oltretutto risulta più efficente di molti sistemi di caching dei dati integrati con i database (vedasi la cache di MySQL) dato che questi eliminano la cache ogni volta viene effettuato un update, mentre memcached permette di mantenere comunque i dati.
Un ottimo sistema veramente.