Pages

Saturday, January 30, 2010

Parametrage Postgresql pour usage datawarehouse

Le standard SQL 92 a définit une norme sur les niveaux d’isolation des transactions (source: Second Informal Review Draft ISO/IEC 9075:1992, Database Language SQL- July 30, 1992). Document très coûteux mais certainement dispo quelque part…
Il existe trois phénomènes qui peuvent apparaître durant une lecture des données dans la base: les Dirty read, les Non-repeatable read et enfin les Phantoms. Selon le niveau d’isolation choisi pour la transaction, il se peut que l’un ou plusieurs (voire aucun pour serializable) de ces phénomènes apparaisse (C.f. tableau page 69 pour ceux qui ont le document normatif).
Tout SGBD voulant être conforme avec cette norme se doit donc d’implémenter les 4 niveaux d’isolation suivants:
- READ UNCOMMITTED
- READ COMMITTED
- REPEATABLE READ
- SERIALIZABLE
Mettre en place une solution style Datawarehouse (lecture seule) avec PostgreSQL est très simple: il suffit d’éditer le fichier postgresql.conf et d’y placer les paramètres suivant:
default_transaction_isolation = ‘READ UNCOMMITTED’
default_transaction_read_only = yes
Dans la mesure où les transactions ne poserons pas de verrou exclusif sur les ressources, la lecture sera extrèmement rapide si les index sont correctement définis. On peut également penser qu’une telle base de données serait parfaitement adaptée à une pile de disques en RAID 0. Avec de bons disques et une carte Raid munie d’une bonne quantité de RAM, on devrait obtenir des perfs à faire pâlir mySQL en isam.
Conclusion: tous les bons SGBDR savent remplir ce rôle. J’ajoute qu’avant qu’une base puisse être en lecture seule il faut quand même l’avoir alimentée avec des données…

Information glannée ici

No comments:

Post a Comment