|
|
|
| Собственно сабж. Как реализовать систему отмены действий любой группы пользователей. Например как это сделано на википедии. Там выводятся все правки которые были совершены, и, если что-то не устраивает, ты отменяешь это действие и восстанавливаешь данные ранее сохраненные. Вопрос собственно в том, как все это организовать? Куда лучше записывать данные, с какой переодичностью и т.д. | |
|
|
|
|
|
|
|
для: FireTiger
(17.02.2008 в 15:28)
| | Если использовать БД - то стоит сделать отдельную таблицу для архива и там держать все старые версии. Записывать - при каждом изменении. | |
|
|
|
|
|
|
|
для: FireTiger
(17.02.2008 в 15:28)
| | Да, лучший способ это использование нескольких БД. Главное продумать логику, а так идея не нова и вполне просто реализуема. | |
|
|
|
|
|
|
|
для: morkovkin
(17.02.2008 в 17:39)
| | а зачем несколько БД?
Что мешает разместить нужные таблицы в одной базе? | |
|
|
|
|
|
|
|
для: Trianon
(17.02.2008 в 17:48)
| | Да, можно создать две разные таблицы, с актальной версией и с архивными, но а если текст очень большой (100 Кб), и страниц много (100 тыс) и каждая страница меняется каждый день по несколько раз? Что будет с базой, когда мы полную версию будем записывать при самом малом изменении и записывать вновь этот 100 килобайтный текст с измененной одной буквой? Так не выгодно... База засорится, но как быть незнаю. Есть идеи? | |
|
|
|
|
|
|
|
для: FireTiger
(18.02.2008 в 06:16)
| | делать diff и записывать его
т.е. система будет знать какой кусочек (кусочки) поменялся(лись) и на основе этого можно будет легко сделать восстановление, и пусть там хоть мегабайтный текст будет, при изменении одно буквы дифф будет маленьким и ничего страшного не будет | |
|
|
|
|
|
|
|
для: mechanic
(18.02.2008 в 11:15)
| | А где можно посмотреть пример использования diff'a? | |
|
|
|
|
|
|
|
для: FireTiger
(18.02.2008 в 11:48)
| | ээ..
да пожалста:
----------
а бв
----------
абв
----------
diff => -" " в позиции 1
вот как то так, на пальцах если
думаю идея-то понятна | |
|
|
|
|
|
|
|
для: mechanic
(18.02.2008 в 12:47)
| | хмм....а как это в php использовать? | |
|
|
|
|
|
|
|
для: mechanic
(18.02.2008 в 12:47)
| | Можете привести код на PHP для работы с diff? | |
|
|
|
|
|
|
|
для: FireTiger
(18.02.2008 в 06:16)
| | >Да, можно создать две разные таблицы, с актальной версией и с архивными, но а если текст очень большой (100 Кб), и страниц много (100 тыс) и каждая страница меняется каждый день по несколько раз? Что будет с базой, когда мы полную версию будем записывать при самом малом изменении и записывать вновь этот 100 килобайтный текст с измененной одной буквой? Так не выгодно... База засорится, но как быть незнаю. Есть идеи?
По-моему, Вы сейчас излагаете не фактическое положение дел, а придуманное.
Сто тысяч страниц по нескольку раз в день - это миллион запросов в день.
Кто будет издавать эти запросы?
Миллион в сутки запросов к diff загнет Вшу систему значительно раньше, чем самую лобовую реализацию через БД.
Совет: решите задачу в лоб. Посмотрите, как ведет себя база. Может не так страшен тойфель, как его малюют? | |
|
|
|
|
|
|
|
для: Trianon
(22.02.2008 в 11:14)
| | Согласен.. такая нагрузка врядли будет..
К тому же это уже проблема физического хранения информации, а не недочеты логической системы.
Для решения такой проблемы, можно просто хранить последнии 5-10 записей или изменение данных за месяц (к примеру), а старое удалять из БД | |
|
|
|
|
|
|
|
для: Trianon
(22.02.2008 в 11:14)
| | Насчет количества страниц и изменений, то это да, я преувеличил. Но все таки, очень хотелось бы изучить эту технологию. Можете пожалуйста или показать или ссылку дать... где можно увидеть как использовать diff в программировании на PHP? | |
|
|
|