[NaLug] info cache db

Giorgio Agrelli giorgio_a a inwind.it
Mer 4 Giu 2008 17:59:09 CEST


bisco wrote:
> Rossella Terlizzi wrote:
> 
>> Ciao ragazzi,
>> ho un'informazione da chidervi: conoscete per caso qualche prodotto che
>> può funzionare come cache per un database Oracle??
>> [...]
> non ho capito bene cosa intendi per "cache" di un db oracle, ma vuoi in
> pratica fare un proxy per non ripetere le query piu' frequenti?

Credo Rossella intenda quello... da quel che so non esiste un prodotto
del genere (tipo mysql-proxy) di terze parti per oracle... i prodotti
oracle interagiscono bene solo con prodotti oracle. In parte questo
lavoro viene assolto in ambiente clusterizzato da Oracle RAC.
Potresti vedere se esiste su oracle qualcosa tipo il federate table di
mysql [1], ma non so se porterebbe vantaggi...

Cmq ci sono soluzioni che permettono di limitare drasticamente le query
a database come cache distribuite quali memcached [2]... il problema è
che il loro utilizzo non è trasparente e occorre modificare, anche se in
maniera abbastanza semplice, le applicazioni.
Per php puo' essere estremamente vantaggioso l'uso di APC [3], che è una
cache per php ma ha come effetto collaterale anche la riduzione drastica
delle query a db. Sicuramente per ciascun altro linguaggio di
programmazione ci sono meccanismi e soluzioni simili.
Esistono driver database (i.e. jdbc) che fanno anch'essi da proxy, pero'
in genere il loro uso è ancora una volta non trasparente
all'applicazione... mi viene in mente a tal proposito il progetto c-jdbc
[4] che ho usato un paio di anni fa, ma che da quanto so si è ora
trasformato in sequoia [5] che funziona in maniera del tutto diversa...

Quindi concludendo suggerisco l'uso di memcached unito ad altre cache, e
la riduzione degli hop e delle latenze tra le macchine sulle quali gira
l'applicazione e i db (firewall mal configurati sono spessissimo causa
di problemi oltre che di cattive performance).
Le altre soluzioni IMHO sono troppo articolate e non appaganti in
termini di performance (ma forse potresti anche cavartela ottimizzando
le query o generando degli indici).

Soluzione drastica ma per esperienza efficace è *ELIMINARE* oracle...
Tra l'altro il loro supporto mi sento di dire che è pessimo oltre che
estremamente costoso... mi so no sempre trovato a che fare con gente che
ne capise meno di me (che ne capisco molto poco), e/o che tenta di
attribuire il problema ad altri (lo storage emc^2, il kernel, il disco
rotto, o il fatto che non hai aggiornato all'ultimissimo patchlevel), o
che cmq sono abituati ad ambienti dove alla gente non interessa far
funzionare le cose ma dare la colpa a qualcun'altro. Invece ad es il
supporto mysql è molto efficace, sono preparati e cortesi... peccato che
postgres non sia riuscito a guadagnarsi popolarità e successo
commerciale tali da poter avere alle spalle servizi dello stesso livello.


ciao,


g


[1] http://dev.mysql.com/doc/refman/5.0/en/federated-use.html
http://dev.mysql.com/tech-resources/articles/mysql-federated-storage.html
[2] http://en.wikipedia.org/wiki/Memcached
[3] http://pecl.php.net/package/APC
[4] http://c-jdbc.objectweb.org/
[5] http://sequoia.continuent.org/HomePage

-- 
NullPointer  ||  GnuPG/PGP Key-Id: 0x343B22E6


Maggiori informazioni sulla lista ml