Я працюю над веб-проектом, який включає вміст, редагуваний користувачем, і я хотів би мати можливість відстеження версій фактичного контенту, який знаходиться в базі даних. В основному, я хочу впровадити історію змін у вікі-стилі.
Проводячи деякі фонові дослідження, я бачу багато документації щодо версії вашої схеми бази даних (моя фактично вже керована), але будь-які існуючі стратегії щодо відстеження змін вмісту вашої бази даних втрачаються принаймні в лавині версій версій схеми. в моїх пошуках.
Я можу придумати декілька способів впровадження власного відстеження змін, але всі вони здаються досить грубими:
- Збережіть весь рядок при кожній зміні, відновіть рядок назад до ідентифікатора джерела за допомогою первинного ключа (до чого я схиляюся в даний час, це найпростіше). Однак багато невеликих змін можуть призвести до великої кількості набряку таблиці.
- зберегти перед / після / користувачем / часовою позначкою для кожної зміни з назвою стовпця, щоб відновити зміни до відповідного стовпця.
- зберегти до / після / користувача / часової позначки з таблицею для кожного стовпця (це призведе до занадто багато таблиць).
- збережіть diff / user / timetamp для кожної зміни стовпцем (це означатиме, що вам потрібно буде пройти всю історію змін, що втручаються, щоб повернутися до певної дати).
Який тут найкращий підхід? Прокрутка моєї власної здається, що я, мабуть, винаходжу чужу (кращу) базу коду.
Бонусні бали за PostgreSQL.