[MontelLUG] Opinione su db open source per cluster

Samuele Zanin samuele.zanin a tiscali.it
Lun 11 Ago 2008 13:29:04 CEST


Enrico Pesce wrote:
> Il giorno 08/ago/08, alle ore 12:54, Samuele ha scritto:

> Che sistema di clustering utilizzi? Linux-HA? RedHat cluster suite?
Attualmente uso Linux-HA (heartbeat 2 + drbd 8 + Iscsi enterprise target
0.4.16) su una Debian Etch.

> Ricordiamoci che un DATABASE è un contenitore di dati e l'RDBMS deve
> assicurare a tutti i costi
> l'integrità dei dati! E' stupido dire che Mysql è piu veloce e
> PostgreSql no! Facciamo prima una verifica di cosa
> può assicurare MySql come integrità di dati su delle stupidissime
> tabelle MyISAM ad esempio.. ha senso avere un
> sistema veloce ma che non ci assicura niente e non ci da la possiblità
> di usare l'integrità referenziale tanto per fare un esempio?

Concordo pienamente con il tuo discorso. Anche per me prima viene
l'integrità dei dati che è sacrosanta, poi una volta che questa è garantita,
cominciamo a parlare di performance.
Avevo accennato a MySql in quanto avevo letto che le ultime versioni erano
"ACID compliant", anche se in realtà nella mia esperienza il server MySql
era di altra società e l'ho usato per prendere dei dati da esportare verso
il nostro applicativo su altro database server.

> MySQL è semplicemente un bel giocattolino, PostgreSQL è un signor
> DATABASE! Se sono richieste alte performance
> si usa un signor database con un sistema bilanciato serio o con hw
> serio!
Adesso spero di non scatenare un flame, effettivamente mi sono espresso
male, non confrontavo MySql con PostgreSQL ma con mssql. Ti espongo
velocemente la breve esperienza che ho avuto con PosgreSQL.
Posgres: db di 15 giga circa, tabella di interfaccia con qualche centinaio
di record, tabella con testate documenti 700.000 record circa.
Installato su una macchina con 8 cpu logiche e 4 giga di ram, dischi in raid
su storage esterno (non ho potuto verificare se fiber channel o altro), il
tutto per una 30ina di postazioni di lavoro.

Per fare una query tipo:
SELECT i.* FROM interfaccia i
INNER JOIN testate t ON t.campo1 = i.campo1 AND t.campo2 = i.campo2
WHERE i.flag_importato = 'N'

avevo tempi di risposta per ritornare una ventina di record che variavano
dai 5 ai 40 secondi. Tieni conto che "testate" aveva la chiave primaria sui
campi in join, mentre "interfaccia" aveva il suo indice sul campo
flag_importato.
Non sono io l'amministratore del server PostgreSQL, quindi può essere che
magari cambiando qualche cosa si riusciva ad ottimizzare la cosa.
Però una query del genere, su un database simile su mssql ho i risultati nel
giro di qualche secondo a farla lunga e su macchine più piccole.

Altra considerazione, sempre da stesso cliente, mi sono dovuto prendere il
backp di quel database e portarlo in ditta per fare delle prove. Il backup
era fatto tramite un pg_dump_all. Per tirarlo su, su un pc normale, mi ci è
vuluta quasi una giornata. Faceva la insert di ogni record di ogni tabella.

La cosa che ho notato, è che Postgres, per ogni connessione ha un processo
separato in memoria e questo molto probabilmente gli impedisce di avere una
cache in ram del database come fa invece mssql, motivo che forse gli fa
diminuire la velocità.

Ovviamente, per una comparazione seria tra db bisogna mettersi li e fare
molte altre prove, questo che ho scritto era solo la mia esperienza senza
voler incominciare una guerra su è meglio questo o quello.

P. S.: se poi qualcuno tra di voi vuole aggregarsi al talk che sto
preparando basta che si faccia vivo.

Intanto grazie a tutti.
Ovvia





More information about the montellug mailing list