Je travaille sur un projet Web qui implique un contenu modifiable par l'utilisateur, et j'aimerais pouvoir faire un suivi de version du contenu réel, qui vit dans une base de données. Fondamentalement, je veux implémenter des historiques de changements de style wiki.
En faisant des recherches de base, je vois beaucoup de documentation sur la façon de mettre à jour votre schéma de base de données (le mien est en fait déjà contrôlé), mais toutes les stratégies existantes sur la façon de suivre les modifications du contenu de votre base de données sont perdues dans l'avalanche de trucs de version de schéma, au moins dans mes recherches.
Je peux penser à quelques façons d'implémenter mon propre suivi des modifications, mais elles semblent toutes plutôt grossières:
- Enregistrez la ligne entière à chaque changement, reliez la ligne à l'ID source avec une clé primaire (ce vers quoi je me penche actuellement, c'est la plus simple). Beaucoup de petits changements pourraient cependant produire beaucoup de ballonnement.
- enregistrer avant / après / utilisateur / horodatage pour chaque modification, avec un nom de colonne pour relier la modification à la colonne appropriée.
- enregistrer avant / après / utilisateur / horodatage avec une table pour chaque colonne (entraînerait trop de tables).
- enregistrer les différences / utilisateur / horodatage pour chaque modification avec une colonne (cela signifierait que vous devrez parcourir l'intégralité de l'historique des modifications pour revenir à une certaine date).
Quelle est la meilleure approche ici? Rouler le mien semble que je réinvente probablement la (meilleure) base de code de quelqu'un d'autre.
Points bonus pour PostgreSQL.