代码之家  ›  专栏  ›  技术社区  ›  Byron Sommardahl

使用C和SQL开发自己的wiki有什么好处?

  •  10
  • Byron Sommardahl  · 技术社区  · 14 年前

    我想知道维基是如何工作的,至少从高层来看是这样。当用户保存更改时,是否总是在该wiki文章的数据库中插入新行(10个修订,10个数据库行)。

    7 回复  |  直到 14 年前
        1
  •  5
  •   Daniel Vassallo    14 年前

    我同意所有的答案。wikis通常将每次编辑作为数据库中的新记录来处理。

    您可能有兴趣查看完整的 Layout of the MediaWiki database diagram ,后面的wiki引擎 Wikipedia .

    Layout of the MediaWiki database diagram http://img22.imageshack.us/img22/3953/wikix.jpg

    请注意,每个修订的全文存储在 MEDIUMBLOB 中的字段 text 表。

        2
  •  4
  •   Eric    14 年前

    实际上,我刚刚用C语言写了一个维基。我想在其他人的评论中增加一点,那就是你要确保你能比较两个版本。为了在C中实现这一点,我强烈建议C实施 diff_match_patch 谷歌图书馆。它速度非常快,如果您需要在漂亮的打印或处理像HTML这样的结构化文本方面做更多的工作,它很容易扩展。

        3
  •  3
  •   JonH    14 年前

    wiki中的每个条目都是数据库中的一个新条目。 这样就可以跟踪修订。这一切都是关于社区和跟踪。 在后台,数据库存储日期时间、所做的更改等。

        4
  •  2
  •   Anton Gogolev    14 年前

    是的,是的。否则就不可能看到完整的页面历史记录,而这正是wiki实现所期望的。

        5
  •  1
  •   Will    14 年前

    对。

    好像有点短。让我们假设您必须存储原始文章,然后在以后对每个更改进行详细说明。所以您可能有一个文章表和一个修订表。这样,您就可以回滚到任何先前的状态。

    当然,表的设计,从原始文件中剥离修改后的文本并将其单独存储的逻辑是相当复杂的。

        6
  •  1
  •   Community rohancragg    7 年前

    这是twiki的dev博客,可能会给你一些有用的信息。 http://twiki.org/cgi-bin/view/Blog/WebHome?category=Development .

    SQL是项目的一项要求吗?现在有很多关于NoSQL的移动,wiki似乎很适合文档存储数据库。有关这方面的一些信息可以在这里找到 http://nosql-database.org/ .

    在处的codeplex上有一个实现 http://wikiplex.codeplex.com/ . 这是StackOverflow上的另一个帖子 asp.net mvc wiki .

        7
  •  0
  •   Morfildur    14 年前

    您可能需要检查版本控制引擎是否可以用于文本部分(用户等可能仍然需要数据库),因为大多数版本控制系统都实现了所有必要的功能(历史、差异、更改日志条目等),这将节省您大量的工作。