Как да съхранявате wiki сайтове (vcs)

като личен проект се опитвам да напиша wiki с помощта на django. Аз съм начинаещ, когато става въпрос за уеб разработка. На (ранна) точка съм, когато трябва да реша как да съхранявам wiki сайтовете. Имам предвид три подхода и бих искал да знам вашето предложение.

Плоски файлове

Обмислих подход с плосък файл със система за контрол на версиите като git или mercurial. Първо, бих искал да разгледам няколко примерни уикита като http://hatta.sheep.art.pl/. Второ, vcs вероятно ще се справи с конфликтите при редактиране и запазването на хронологията на редактирането, така че няма да се налага да преоткривам колелото. И трето, вероятно бих могъл лесно да клонирам wiki хранилището, така че аз (или други) да мога да имам офлайн копие на wiki.

От друга страна, доколкото знам, не мога да използвам django модели с плоски файлове. След това, ако искам да добавя полета към уики сайт, като категория, ще трябва по някакъв начин да запазя препратка към този плосък файл, за да свържа полетата в базата данни с плоския файл. Освен това, не знам дали е добра идея всички уики сайтове да са в едно хранилище. Предполагам, че е по-естествено да има нещо като хранилище за уики сайт, респ. файл. Не на последно място, не съм сигурен, но мисля, че използването на плоски файлове би ограничило възможностите ми за внедряване, защото уеб хостовете може би не позволяват създаване на файлове (мисля например за Google App Engine)

Съхраняване в база данни

Като съхранявам уики сайтовете в базата данни, мога да използвам django модели и да свързвам произволни полета с уики сайта. Вероятно също така ще имам по-лесен живот с внедряването на wiki. Но не бих получил vcs функции като история и разрешаване на конфликти сами по себе си. Потърсих django-extensions, които да ми помогнат, и намерих django-reversion. Въпреки това не разбирам напълно дали отговаря на нуждите ми. Проследява ли промените в модела, като например ако променя файла на модела django, или проследява съдържанието на моделите (което би отговаряло на нуждите ми). Плюс това, не виждам дали връщането на django би ми помогнало с конфликти при редактиране.

Съхраняване на vcs хранилище в поле на база данни

Това би било моето идеално решение. Той би комбинирал предимствата на двата предишни подхода без недостатъците. Това е; Бих имал vcs функции, но бих запазил уики сайтовете в база данни. Проблемът е: нямам представа колко е възможно това. Просто си представям запазване на wiki сайт/източник заедно с git/mercurial хранилище в поле на база данни. И все пак някак си се съмнявам, че полетата на базата данни работят по този начин.

Така че съм отворен за всякакви други подходи, но това е, което измислих. Освен това, ако се интересувате, можете да намерите скапания ранен тест, върху който работя тук http://github.com/eugenkiss/instantwiki-test


person Eugen    schedule 23.05.2010    source източник
comment
свързани въпроси, ако ви помогне да отговорите на моя въпрос stackoverflow.com/questions/873801/ stackoverflow.com/questions/1583595/   -  person Eugen    schedule 24.05.2010


Отговори (2)


В нито един от вашите избори не сте обмислили дали искате да можете да търсите във вашата wiki. Ако това е съображение, наличието на „живо“ копие на всяка страница в база данни с пълнотекстово търсене би било изключително полезно. Поради тази причина аз лично бих отишъл да съхранявам страниците в база данни всеки път - в противен случай ще трябва да създадете свой собствен индекс някъде.

Що се отнася до регистрирането на версията, трябва само да съхранявате копието на живо в индексируем формат. Можете автоматично да създадете елемент от историята във вашия модел „страница“, когато променена страница бъде записана обратно в базата данни. Можете да намалите разходите за съхранение на по-ранни ревизии на страници, като компресирате данните, ако това стане необходимо.

Ако очаквате огромно количество регистриране на промени, може да искате да прочетете този отговор тук:

Как се съхранява ефективно историята на редакциите?

person Steve Mayne    schedule 27.05.2010
comment
Сигурно съм забравил да спомена, че търсенето не е важно за мен. Що се отнася до вашия отговор: предполагам, че трябва да го маркирам като правилните отговори, защото това е и това, до което стигнах. Някак си не можех да си представя как да имам исторически модел, но този коментар ме просветли: lethain.com/entry/2008/oct/15/ Също така вашата връзка за ефективно съхраняване на редакциите на историята е интересна - person Eugen; 28.05.2010

Създаването на уики е забавно и възнаграждаващо, но вече има много готови софтуерни пакети за уики. Предлагам Списък на wiki софтуер на Wikipedia. По-специално, MoinMoin и Trac са добри. И накрая, Джон Съдърланд създаде wiki с помощта на Django.

person mcandre    schedule 25.05.2010