Планирую вести историю изменений на сайте.
К примеру: есть материал. Материал храниться в БД в одной строке в таблице ну скажем posts.
Когда его кто-то меняет, необходимо схранить что именно и кем было изменено.
И вот вопрос - как это поудачнее реализовать? Поудачнее в плане больших данных.
Самое простое решение, которое вижу я - создать таблицу в БД с именем history:
| datetime-------| table | user | id- | changes |
| 12.02.15 12:48 | posts | 345 | 21 | laguage:ru=>en; ...и т.д.|
в конкретно данном случае пользователь с
id=345 в
12.02.15 12:48 изменил строку в таблице
posts c
id=21 таким образом, что значение
language было изменено с
ru на
en. И конечно сохранять изменения лучше не всей строки, а только того что конкретно было изменено. А по хорошему, можно и "ru=>" удалить. т.е. прошлое состояние, и сохранять только новое.
Всё ок, но я подозреваю рано или поздно огромный вес этой таблицы history. Как оптимизировать? Сохранять в файлы кусками? Так их потом нельзя будет нормально смотреть там же на сайте, и быстро найти изменения по фильтам...
Может в течении допустим дня - сохранять всё в эту таблицу, а по окончанию дня - просто регулярно переносить всё из неё, вообще в другую БД? Что бы основную - рабочую не перегружать.