【最大10000ポイント】当たる!!質問投稿キャンペーン!

数万人規模のコミュニティサイトをxoopsで立ち上げようと考えました。
データベースの使用は初めてです。
この数万人のユーザーは、過去の自分の行動の履歴を自由に見れるようにします。
一日の書き込みは1万~2万と想定しています。
従来、cgiで同様のシステムを組んだ時にはmakefileでユーザーごとのファイルを用意し
ユーザーが過去の履歴を参照する場合は自分のファイルを見に行けば参照できました。
(個々のファイルであればせいぜい数千行です)
今回、SQL + xoopsで立ち上げることを考え、xoops用のフリーモジュールを研究してみたの
ですが、買い物かごなど不特定多数のユーザーが利用するモジュールを見ても、
「cgiでユーザー登録ごとにmakefileとしてユーザーファイルを作成した」ことに相当する
「ユーザーごとにテーブルを作成、用意する」という形にはなっていないようです。
ということは、SQLの場合、ユーザーの行動に対しては、全てひとつのテーブル内に延々記録
していくのだと思います。
(ID 32003の書き込み。ID 12045の書き込み。 ID 23102 の書き込み」というのがたった
一つのテーブルに記録される)
この形だと1日に1万の書き込みがあるとすると、100日で100万行になってしまいます。

掲示板であれば、「上から20個参照しあとは不要」というプログラムを組めば問題ありませんが、
過去の履歴をユーザーごとに表示させるとなると、ユーザーのリクエストのたびに「100万行の
中からID32003をサーチする」プログラムを組むことになります。
これが数万人規模のユーザーから行われたらどんな高スペックのサーバーであっても足りない
ように思えます。
一方、MixiもMySQLで出来ていると聞いています。
大規模なSQLというのは、このような場合、どうやって解決しているのでしょうか?
(単に「サーバー増強が不可欠よ。」ということであればcgiでmakefileの方が簡単な気がします)
SQLの優位性がさっぱり分からなくなった私に、どうかご教授を願います。
makefile より、こういう点でSQLが有利だよということでも構いません。
複数の方のアドバイスを頂けると嬉しいです。
宜しくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

>indexを張るにしても、サーバー内部では100万行をサーチしているのですよね。


インデックスに従いサーチ範囲が絞られます。
「ユーザIDで検索」のように単純な仕組みなら、素直に数1000分の1のコストで検索できるかと。。。

>ちなみにmakefile方式で各ユーザーファイルを見に行く方式であれば、10年前の低スペックサーバー(「1GHzX2CPU」「メモリ2GB」程度)で4万人のユーザーを問題なく処理できていました。
「xx:xx~yy:yyの時間帯処理」の検索や「商品●●の販売履歴」なんかのユーザをまたがった処理は可能なんですかね?(まあ業務的に不要ならいいのですけど)
また、トランザクションの一貫性保証や障害時のリカバリ手順なんかも用意できているんでしょうか?

この回答への補足

インデックスに従いサーチ範囲が絞られます。
「ユーザIDで検索」のように単純な仕組みなら、素直に数1000分の1のコストで検索できるかと。。。

有難うございます。このような回答をお待ちしていました。

また、トランザクションの一貫性保証や障害時のリカバリ手順なんかも用意できているんでしょうか?

おっしゃる通りで、バグ退治が日常茶飯にあったためDBというものに興味を持ったものです。

もうひとつだけ教えてください。
xoopsだと、たかだかユーザー認証に膨大な時間(1秒)を要します。この間サーバーの資源が消費されているように感じます。
今回作るコミュニケーションサイトは、特定時間にログインが集中します。(数千ログイン/15分くらい)

xoopsはこのような使用用途に適しているかアドバイス頂ければと思います。

補足日時:2011/07/02 10:46
    • good
    • 0
この回答へのお礼

有難うございました。
ご教授頂いた情報でSQL化を推進することといたします。
ベストアンサーとさせて頂きます。

お礼日時:2011/07/03 18:43

>過去の履歴をユーザーごとに表示させるとなると、ユーザーのリクエストのたびに「100万行の中からID32003をサーチする」プログラムを組むことになります。


インデックス張るだけかと思いますが。
その他の突っ込みどころは放置ってことで

この回答への補足

早速のご回答ありがとうございます。失礼しました。 indexを張るにしても、サーバー内部では100万行をサーチしているのですよね。その負荷は凄いのではないかと思い質問しました。データベースの場合、数百万行のテーブルというのは普通に処理できる「全然問題ないレベル」のものななのでしょうか?
サーバーが固まったらシャレにならないので。
というのが質問の趣旨です。(プログラムを組むというのは間違いです)

ちなみにmakefile方式で各ユーザーファイルを見に行く方式であれば、10年前の低スペックサーバー(「1GHzX2CPU」「メモリ2GB」程度)で4万人のユーザーを問題なく処理できていました。

補足日時:2011/07/02 08:33
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング