掲示板を実装するのはファイルシステムが良いか、DBが良いか?


お世話になっております。
年間2万~5万件程度の書き込みが見込まれる掲示板システムを作成しようとしています。仕様としては1階層のトピックID配下にメッセージIDが連番で並んで、タイトル、投稿者、投稿日時、投稿内容が入るごく、オーソドックスなものです。良く雑誌に載っている掲示板の作成方法は大体DBを使用して記事を入れ込んでいますが、自分の感覚ではなんだか増長に思えてなりません。

上記のような使用なので、トピックごとにフォルダを切ってメッセージIDごとのファイルに落とすものの方が効率的に思えます。

実際の運用ではどちらが良いでしょうか?
たとえば、このハテナの実装などはどうなっているのでしょうか?

ご存知の方は教えてください。
よろしくお願いします。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/05/21 20:44:29
  • 終了:2012/05/28 20:45:11

回答(2件)

id:papa-tomo No.1

パパトモ回答回数362ベストアンサー獲得回数1072012/05/21 21:38:15

規模の大きな掲示板のシステムの場合、次のケースを考慮しなければ、色々と問題が出て閉鎖することになりかねません。

  • 同時に多数が書き込むケース
  • ボットによるスパム書き込み
  • 法的に問題がある書き込みを発見する仕組み
  • 書き込みに関して司法当局から証拠保全を求められた場合

などなど。想定外のケースを考慮すると、文章を探し出したりするために管理者が検索できる機能がないと、規模の大きなBBSを運営して行けなくなります。特に法的なところは、管理者の責任が問われる事もありますから大変です。なので、応用が利くDBが使われるケースが多くなるのです。DBなら、プログラム無しで管理するツールがありますから、そういうので想定外のケースにも柔軟に対応できるからです。

はてなの場合、複数サーバで動作しているように見えます。たぶん、アクセスが集中したときの負荷分散などの理由だと思います。見た目は単純ですが、舞台裏は複雑そうですね。

他3件のコメントを見る
id:m-hasega

ありがとうございます、取りあえず、phpBBを評価して見ます。因みにperl版の掲示板システムはご存じないでしょうか?当方perl(Catalyst5.9)とphp5.4を使用していますが、phpは図形描画専用状態で、どちらかと言えばperlで実装したい気がします。

2012/05/23 12:20:51
id:papa-tomo

私もどちらかというと、perl派なので、PHPはどうもね・・・すぐ慣れると思います。

phpBBなら日本語化キットを使うと、管理画面も簡単に日本語化できます。

http://bbmods.info/bbs/viewforum.php?f=8

注意点は、一度インストールに失敗すると、結構めんどうなので、インストールは慎重に、かつ一回で済ますようにした方が良いです。

2012/05/23 13:20:55
id:TransFreeBSD No.2

TransFreeBSD回答回数664ベストアンサー獲得回数2662012/05/22 12:26:37

長くなりそうなので回答で。

一々select/insert/delete するのでしょうか?

ファイルシステムでも相当の機能はいりますよね。しかも、たぶん自分で実装しなければならない。
ファイルロックとかIDの整合性を保ちつつパフォーマンスも確保するとか、この規模なら難しくないとは思いますが、面倒ですし、何よりそれがRDBMの機能の一つですから、それを再実装するのは勉強のためか、使えないか、あとは極限までチューンナップしたいから、くらいでしょう。
あと、フレームワーク使えばより抽象化したモデルとして付いてきますし、それ使わない手もないかと思います。実際、フレームワークのデモ的なのと言えば、メッセージPOSTして、それにコメント付けれるという、ブログ的というか今回の掲示板的なのですし、それ拡張すればOKじゃないですか?
というか規模が小さいほど、多少の無駄はあっても、手間かけて無駄をそぎ落とすより、既存の汎用品を使って実装の手間を(あとバグも)減らすほうがお得な場合が多いかと。

はてなは規模違います。ファイルシステムでとか、画像や動画の実体置く以外ないです。商業ベースでその規模目指すとかじゃなければ、そこまで考える必要はないかと。
http://eighteentillidie.com/2008/07/entry-898.html

ファイルシステムをそのまま利用する利点があるとすれば、クライアントに静的ファイルとしてそのままアクセスさせるのが効率はいいし、キャッシュやCDNの恩恵も受けやすいというのはあります。今時ならjQueryとかで、クライアント側で合成させる手とかもあり得ます。
ただ、そこまで考えるほどのアクセスだと、投稿側もかなりの量でしょうから、それなりに工夫は必要でしょうし、データベースとのハイブリッドになるというか、データベース避ける理由もないと思います。

id:m-hasega

んー、取りあえずDBの方向性で考えます。どうもです。

2012/05/23 12:33:22

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません