データベースの使用について
DokuWikiは、テキストファイルの代わりにデータベースを使用できますか?
可能ですが、そうしない理由があります。 DokuWiki は、様々な種類の文書を保存するように設計されています。 データベースやWebサーバーがダウンし、このWebサーバーやデータベースを通してしか再起動のマニュアルにアクセスできない場合、どうしますか?ぎゃ~! ですから、DokuWikiは、このすべての重要な情報をプレーンテキストとして保存します。テキストなら最愛のサーバーに残っているのがテープバックアップだけだったとしても常に読み込み可能です 。
データベースを使用しない理由はまだあります。
データベース対フラットファイル記録
データベース管理システム(DBMS)がwiki情報の理想的なリポジトリであるという憶測を払い去りましょう。 DBMS は間違った選択ではないが、唯一の選択肢ではなく、DokuWikiの方法でファイルシステムを使用することは決して wiki のために悪い選択ではないと言う事です。
続ける前に、wiki データの特性を復習します:
- 読込が多く、更新はそれほど多くない
- 混在した構造化されていないテキストコンテント
ファイルシステムは、データの格納するのに非常に効率的な場所です。 DBMS がデータをファイルシステムに置くこともよくあります。 単純な検索であれば、ファイルシステムは DBMS に圧勝します。 よくできた DBMS アプリケーションは、高速な検索のために一般的なクエリの結果をファイルシステムにキャッシュする可能性が非常に高いです!
更に、今時のファイルシステムは頻繁にアクセスされるファイルをメモリーにキャッシュします。 このデータ読込はディスクにヒットすらしません。
DokuWikiの作業の多くは、単純な検索です - ファイルを取得し、おそらく、いくつかの処理を経て内容を表示します。 これはファイルシステムに最適の作業です。 高度に構造化されたデータを扱う場合、更にそのデータの小片が頻繁に更新される場面で、データベースは優れています。 Wiki はその条件に該当しません。
Wiki の検索、より正確には迅速な検索を可能にするためのwikiのインデックス作成は、DBMS技術が、Wikiを支援できる領域です。 Wiki 内の三文字以上の全「単語」一覧を作成することで DokuWiki は独自のインデックスを実装しています。 部分的な検索はDBによる検索よりも遅いですし、「高度な検索」処理はより困難ですが、単語検索全体にとっては現実的な解決策です (つまり、Wiki 上の他の作業と比較して、妥当な時間内に結果が返される)。 公共の Wiki の場合、任意の内部検索より Google の方がより良いインデックスサービスを提供できると言えるでしょう。
DBMS は単一サーバーの限界を簡単に超えます。 簡単に言うと、DBMSは1つの箱に、Webサーバー/アプリケーションコンポーネントは別の箱に配置されます。 wiki データのディレクトリーを利用するために複数の(例えば、LAN接続の)リモートサーバを許可する NFS マウントによって似たような構成を達成できるかは疑わしいです。
データが複数のサーバ上に存在する必要がある非常に大規模なインストールの場合、レプリケーション/同期の問題を解決する代わりに、アプリケーションは適切なDBMSへデータを引き継ぐことができます。
ファイルシステム記録には別の利点があります。 サーバー上で実行する必要があるサービスが2つ(DBMS+Webサーバー)ではなく1つ(Webサーバー)なので、wiki のインストールは容易、サーバ要件は低く、耐障害性は高くなります。
データのバックアップと復元、別のサーバーへの wiki の移行は、単にファイルをコピーするだけです。 ファイルシステム上に wikiデータを保存することは、他のツールやスクリプトで簡単に読んだり操作したりできるということです。
次も参照してください:
データベースコンテンツの利用
DokuWikiはデータベースを使用しないが、データベースに格納されたデータを利用できます。
- DokuWikiにはデータベース内のユーザ認証情報を利用する機能が組込まれています。認証バックエンド を参照して下さい。
- 構造化データプラグインは、SQLiteデータベースを活用して構造化されたデータをページに追加します。
- データベースコンテンツを利用するプラグインのために、database でタグ付けされたプラグインを調べて下さい。