PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 22/06/2009 12:08:44

diego76
Membre

flashbask avec POstgreSQL

Bonjour,

Sous Oracle, il existe une méthode permettant de retourner à un instant T dans une base de donnée.

Savez-vous si il existe une methode équivalente sous PostgreSQL.

Merci d'avance.

Hors ligne

#2 22/06/2009 14:22:41

gleu
Administrateur

Re : flashbask avec POstgreSQL

Le seul moyen est le log shipping mais cela n'apporte pas toutes les fonctionnalités proposées par Oracle à ma connaissance. Un autre moyen est d'utiliser le module contrib tablelog.

Pour vous en dire plus, il faudrait savoir exactement ce que vous voulez comme fonctionnalité.


Guillaume.

Hors ligne

#3 22/06/2009 14:56:10

Marc Cousin
Membre

Re : flashbask avec POstgreSQL

En fait, ce qu'il faudrait savoir, c'est de quel type de flashback on parle.

Sous Oracle, il y a :
FLASHBACK Table. C'est deux choses à la fois :
  -  une corbeille des tables effacées. Quand on fait un drop table, la table est cachée mais toujours présente (pour peu qu'il y ait suffisamment de place libre).
  -  Il y a aussi moyen de ramener une table à un SCN (numéro de transaction, mais ca passe par datapump + flashback database je crois, c'est assez lourd)

FLASHBACK Database : ca permet de ramener la base à un point dans le passé. C'est comme le PITR, mais en plus rapide : on n'a pas besoin de restaurer la base puis appliquer les redo, on a une journalisation de plus, la flashback_database_log. Uniquement en version Entreprise

FLASHBACK Query : simplement pouvoir interroger les données telles qu'elles étaient dans le passé. On fait un SELECT xxxxxx AS OF TIMESTAMP('02-MAY-07 10.55.20.000000'). Ca nécessite que les données soient encore dans l'UNDO, ce qui n'est pas garanti.

Pour la 1, on n'a rien d'équivalent.
Pour la 2, on peut faire du PITR. C'est plus lent, mais ça fournit la même chose.
Pour la 3, on ne peut pas le faire aujourd'hui (et c'est dommage, il y a à peu près tout ce qu'il faut dans postgresql avec son implémentation MVCC smile )


Marc.

Hors ligne

#4 22/06/2009 15:03:48

gleu
Administrateur

Re : flashbask avec POstgreSQL

Pour la 1, Simon Riggs en avait parlé lors du FOSDEM 2008 mais je pense qu'il a eu trop de boulot avec le HotStandby smile

Pour la 2, entièrement d'accord.

Pour la 3, il devrait être possible de faire ça avec tablelog.


Guillaume.

Hors ligne

#5 22/06/2009 15:12:32

Marc Cousin
Membre

Re : flashbask avec POstgreSQL

Oui, mais la 3, ce qui serait classe, ca serait de pouvoir
- dire à vacuum : ne purge pas ce qui a moins de x heures
- dire ensuite à select : fais comme si tu étais la transaction xxx

Ce qui est frustrant, c'est qu'à mon avis, il n'y a pas grand chose à faire pour le rendre possible ... et qu'ils en parlent régulièrement sur hackers smile


Marc.

Hors ligne

#6 22/06/2009 15:15:40

gleu
Administrateur

Re : flashbask avec POstgreSQL

Bien d'accord que ce serait intéressant.


Guillaume.

Hors ligne

#7 22/06/2009 16:21:20

diego76
Membre

Re : flashbask avec POstgreSQL

C'est bien le choix 2 que je souhaite faire.

Par contre je ne connais pas PITR (je vais regarcer...)

De plus c'est possible de le faire avec table_log mais ne fonctionne pas si la clée primaire est positionnée sur plusieurs colonne.

Hors ligne

#8 22/06/2009 18:16:20

Marc Cousin
Membre

Re : flashbask avec POstgreSQL

En fait, le flashback database d'Oracle, c'est un PITR amélioré : au lieu de revenir à la dernière sauvegarde, il applique sa log flashback jusqu'à revenir un peu avant le moment désiré, puis il réapplique de la redo log par dessus pour arriver exactement à l'adresse souhaitée. Donc ca reste du PITR, mais accéléré (et intégré).


Marc.

Hors ligne

Pied de page des forums