web-dev-qa-db-ja.com

データベースを使用しないことを考慮して、dokuwikiを使用する場合の欠点はありますか?

私は自分のウェブサイトにdokuwikiを使用する予定ですが、dokuwikiはデータベースを使用せず、プレーンテキストファイルにデータを保存しないため、私のウェブサイトの成長に伴いホストに多大な負担がかかり、最終的に多くの支払いをするため、生き続けるためのお金。それは本当ですか?保存方法は何に影響しますか?

2
Kia Azad

MySQLの5倍(倍)の速度で実行されるSQLベースのフラットファイルデータベースを作成しました。すごい!!しかし、私は弱点を見つけました。 iNodesを使い果たしました。おっと!それでも、ハフやパフなしで160万以上のWebページを持つWebサイトをサポートしていました。実際にMySQLに移動すると、サイトの速度が低下しました。しかし、私はデータベース用のコードを日常的に書いていたので、自分が何をしているかを知っていることに留意してください。

それぞれにプラスとマイナスがあります。従来のSQLベースのリレーショナルデータベースは、データの保存とデータの取得がはるかに効率的であり、必要なディスクスペースとI/Oがはるかに少なくて済みます。ただし、これにはオーバーヘッドがあります。すべてに転換点があります。これは、小さなデータの場合、MySQLなどのリレーショナルデータベースは適切な答えではない可能性があることを意味します。 SQLiteはまさにこの理由で作成されました。

また、小規模なニーズに最適なフラットファイルSQLベースのデータベースがまだあります。フラットファイルのデータ構造には何の問題もありません。私のウェブサイトのいくつかはまだこれらの構造を完全に使用しており、それらのすべては部分的にこれらの構造を使用しています。フラットファイルに基づくほとんどのアプリケーションは効率的です。 1つの利点は、何かがうまくいかないことです。データを修正するのがはるかに簡単です。

結局、決定は本当にあなたが必要とするものに基づいています。あなたが見ているアプリケーションがあなたが望むことをうまくやっていれば、それについて心配しないでください。サイトを展開する際に、左利きのドライバーを見つけるために友人を送ります。

2
closetnoc

DokuWiki FAQは、この質問に幅広く回答しています。 https://www.dokuwiki.org/faq:database を参照してください

DokuWikiは、あらゆる種類のドキュメントを保持するように設計されています。それでは、データベースまたはWebサーバーがダウンし、それを再度起動するためのドキュメントにこのWebサーバーまたはデータベースを介してのみアクセスできる場合、どうしますか?いいね!したがって、DokuWikiは、この重要な情報をすべて、プレーンテキストとして保存します。これは、たとえ最愛のサーバーのテープバックアップしか残っていなくても、常に読み取り可能です:-)。

データベースとフラットファイルストレージ

データベース管理システム(DBMS)がwiki情報の理想的なリポジトリであるという仮定を払拭しましょう。それはDBMSが間違った選択だと言うことではなく、それが唯一の選択ではなく、DokuWikiが行う方法でファイルシステムを使用することはウィキにとって決して悪い選択ではないということです。

読み進める前に、Wikiデータの特性を覚えておいてください。

  • 頻繁に読む、あまり頻繁に更新しない
  • 混合および非構造化テキストコンテンツ

ファイルシステムは、データを保存するための非常に効率的な場所です。これは、DBMSがデータを配置する可能性が高い場所です。簡単な取得のために、ファイルシステムはDBMSに勝るはずです。よく構築されたDBMSアプリケーションは、一般的なクエリの結果をファイルシステムにキャッシュして、検索を高速化します。

さらに、最新のファイルシステムはすべて、頻繁にアクセスされるファイルをメモリにキャッシュします。このデータを読み取っても、ディスクにヒットすることはありません。

DokuWikiの仕事の多くは単純な検索です-ファイルを取得し、おそらく何らかの処理でその内容を表示します。これは、ファイルシステムに非常に適しています。データベースは、高度に構造化されたデータを扱う場合、およびそのデータの小さな断片が頻繁に更新される場合に優れています。ウィキはそのようなものではありません。

Wikiを検索する、またはより適切に、Wikiのインデックスを作成してクイック検索を有効にすることは、DBMSテクノロジーがWikiを支援できる領域です。 DokuWikiは、Wiki内の3文字以上のすべての「単語」のリストを作成することにより、独自のインデックスを実装します。部分検索はDBを使用する場合よりも遅く、「高度な検索」を処理するのがより困難ですが、Word全体の検索では実行可能なソリューションです(つまり、他のアクティビティと比較して妥当な時間で結果が表示されます) wiki)。公開Wikiの場合、Googleが内部検索よりも優れたインデックスサービスを提供していると言えます。

DBMSを使用すると、単一サーバーのしきい値を簡単に超えることができます。最も単純な場合、DBMSは1つのボックスに配置され、Webサーバー/アプリケーションコンポーネントは別のボックスに配置されます。 DokuWikiは、NFSマウントを使用して複数のローカルリモート(つまりLAN接続)サーバーがwikiデータディレクトリツリーにアクセスできるようにすることで、同様のことを達成できると主張しています。

データが複数のサーバーに存在する必要がある非常に大規模なインストールの場合、レプリケーション/同期の問題を解決する代わりに、アプリケーションはそれらを適切なDBMSに渡すことができます。

ファイルシステムストレージには他の利点もあります。サーバーで実行する必要があるサービスは2つ(DBMS + Webサーバー)ではなく、1つ(Webサーバー)であるため、Wikiのインストールは簡単で、サーバー要件は低く、フォールトトレランスは高くなります。

データのバックアップと復元、またはウィキを別のサーバーに移動するのは、ファイルをコピーするだけです。 Wikiデータをファイルシステムで使用できるようにすると、他のツールやスクリプトを使用してデータを読んだり操作したりするのも簡単になります。

以下も参照してください:

1
selfthinker

DBを使用しないことには、次のような利点があります。

  • 最初は簡単に実装できます
  • 新しいサーバーへの移行が簡単

各リクエストがサーバーにヒットすると、DBへのヒットまたはファイルI/Oへのヒットになります。それはかなり小さな違いです、IMO。

どちらの場合も、実際のCPU使用率と消費されるストレージ容量はかなり匹敵します。

0
Octopus