Estoy trabajando en un proyecto web que incluye contenido editable por el usuario, y me gustaría poder hacer un seguimiento de la versión del contenido real, que vive en una base de datos. Básicamente, quiero implementar historiales de cambio de estilo wiki.
Al investigar un poco, veo mucha documentación sobre cómo versionar el esquema de su base de datos (la mía ya está controlada), pero cualquier estrategia existente sobre cómo rastrear los cambios en el contenido de su base de datos se pierde en la avalancha de material de versiones del esquema, al menos en mis búsquedas
Se me ocurren algunas formas de implementar mi propio seguimiento de cambios, pero todas parecen bastante crudas:
- Guarde la fila completa en cada cambio, relacione la fila de nuevo con la identificación de origen con una Clave primaria (lo que me estoy inclinando actualmente es la más simple). Sin embargo, muchos pequeños cambios podrían producir mucha hinchazón en la mesa.
- guarde antes / después / usuario / marca de tiempo para cada cambio, con un nombre de columna para relacionar el cambio con la columna correspondiente.
- guardar antes / después / usuario / marca de tiempo con una tabla para cada columna (daría como resultado demasiadas tablas).
- guarde diffs / user / timestamp para cada cambio con una columna (esto significaría que tendría que recorrer todo el historial de cambios que interviene para volver a una fecha determinada).
¿Cuál es el mejor enfoque aquí? Hacer rodar el mío parece que probablemente estoy reinventando la base de código (mejor) de otra persona.
Puntos de bonificación para PostgreSQL.