Я хотел бы понять, как работает wiki, по крайней мере, с высокого уровня. Когда пользователь сохраняет изменения, всегда ли он вставляет новую строку в базу данных для этой статьи wiki (10 ревизий, 10 строк в базе данных).
Что происходит с тем, чтобы перевернуть вашу собственную вики, используя С# и sql?
Ответ 1
Я согласен со всеми ответами. Вики обычно обрабатывают каждое редактирование как новую запись в базе данных.
Вы можете быть заинтересованы в ознакомлении с полной версткой схемы базы данных MediaWiki, вики-движка Wikipedia.
Обратите внимание, что полный текст каждой ревизии хранится в поле MEDIUMBLOB
в text
таблице.
Ответ 2
На самом деле я написал вики на С#. Одна вещь, которую я хотел бы добавить ко всем остальным, - это то, что вы захотите сравнить две версии. Для этого в С# я настоятельно рекомендую реализацию С# библиотеки diff_match_patch от Google. Это довольно быстро, и это довольно легко расширить, если вам нужно больше на пути к печати или обработке структурированного текста, такого как HTML.
Ответ 3
Каждая запись внутри вики - это новая запись внутри базы данных. Таким образом, можно отслеживать изменения. Это все об обществе и отслеживании. За кулисами база данных хранит дату и время, внесенные изменения и т.д.
Ответ 4
Да, да. В противном случае невозможно будет увидеть полную историю страниц, что ожидается от реализации Wiki.
Ответ 5
Да.
...
Кажется немного коротким. Позвольте просто сказать, что вы должны сохранить оригинальную статью, а затем подробную информацию о каждом изменении впоследствии. Таким образом, у вас может быть таблица статей и таблица изменений. Таким образом, вы можете вернуться в любое предыдущее состояние.
Конечно, дизайн таблиц, логика снятия пересмотренного текста с оригинала и хранения его отдельно, довольно сложна.
Ответ 6
Вот блог разработчиков для TWiki, который может дать вам полезную информацию. http://twiki.org/cgi-bin/view/Blog/WebHome?category=Development.
Является ли требование Sql проектом? На данный момент существует много движений вокруг NoSql, и вики, похоже, хорошо вписываются в базу данных хранилища документов. Некоторую информацию об этом можно найти здесь http://nosql-database.org/.
Существует реализация на Codeplex в http://wikiplex.codeplex.com/. Это из другого сообщения в stackoverflow asp.net mvc wiki.
Ответ 7
Возможно, вам захочется проверить, может ли быть использован механизм управления версиями для текстовых частей (пользователям и т.д. может понадобиться база данных), поскольку большинство систем управления версиями имеют все необходимые функции (история, различие, записи журнала для изменений,...), что сэкономит вам много работы.