DokuWiki

It's better when it's simple

用户工具

站点工具


zh:faq:database

使用数据库如何?

:?: DokuWiki可以使用数据库而不是文本文件么?

:!: 那是可行的,但没有理由那么做。DokuWiki被设计为保存各种文档。那么,当你的数据库或是Web服务器宕机了而所有能让它再次恢复的文档只能通过这个Web服务器或是数据库访问时会怎样?哎呀!因此,Dokuwiki将所有的这些重要的信息保存成纯文本,即使你只有一些你心爱的服务器的一些磁带备份,这些文本文档也总是可读的。

继续读下去来看看不用数据库的更多原因。

数据库 vs. 平面文件存储

让我们打消“数据库管理系统(DBMS)”是wiki信息的理想存放处的这种假设。那不是说DBMS是一个错误的选择,而只是说那不是唯一选择,而且像Dokuwiki那样用文件系统存储对于wiki来说不是一个坏选择。

在读下去前,记住wiki数据的以下特点:

  • 经常读,而更改不那么频繁
  • 是混合的,非结构化的文本内容

文件系统是存储数据的非常高效的地方,那也是DBMS可能放置它的数据的地方。对于简单的检索,文件系统应当快于DBMS。很可能一个构造良好的DBMS应用会将常见的查询结果缓存到文件系统中以实现更快的检索!

另外,所有的现代文件系统都会将常用的文件缓存到内存。读取这些数据甚至将完全不需要触及到硬盘。

DokuWiki的大部分工作是简单检索 - 获取一个文件,可能进行一些处理,然后展示它的内容。这非常适合于文件系统。数据库在处理高度结构化的数据时以及数据的小部分频繁更新时表现优秀。Wiki们不是那样的。

Searching a wiki or more properly, indexing a wiki to enable quick searching is an area where DBMS technology can assist a wiki. DokuWiki implements its own indexing by creating a list of every “word” of three or more letters in the wiki. Partial searching is slower than it would be with a DB and it is more difficult to handle “advanced searches”, however for whole word searching it is a viable solution (i.e. the results are presented in a reasonable time when compared to other activities on the wiki). For a public wiki it's arguable that Google provides a better indexing service than any internal search could.

A DBMS can make it easier to cross the single server threshold. At its simplest, the DBMS is placed on one box and the web server / application component on another. It's arguable that DokuWiki could accomplish something similar by using NFS mounts to allow multiple locally remote (i.e. LAN connected) servers to access the wiki data directory tree.

For very large installations where the data will have to reside on multiple servers, instead of solving replication/synchronization issues the application can hand them off to a suitable DBMS.

文件系统存储同样有其他优点。由于只需要一个服务(Web服务器)而不是两个(DBMS+Web服务器)在服务器上运行, 安装wiki更简单,服务器需求更低,同时容错度更高。

备份和恢复你的数据以及移动wiki到不同的服务器只是复制文件的问题。让你的wiki数据在文件系统上可用也使得更容易用其他工具或脚本读取或操作这些数据。

另请参见:

访问数据库内容

即使DokuWiki不使用数据库,你依然可以访问数据库里存储的数据。

  • DokuWiki有内置的访问数据库里的用户认证信息的支持。参见认证后端(英文页面)
  • The data plugin adds structured data to your pages leveraging a SQLite database
  • 查看标记为database的插件以获取用于访问数据库内容的插件。
zh/faq/database.txt · 最后更改: 2024-02-15 04:32 由 functionsir

除额外注明的地方外,本维基上的内容按下列许可协议发布: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki