HerokuやCloudBeesなどの環境で動くウェブサービスで、この人力検索はてなのようなQ&Aサイトをある特化したジャンル・集団に絞って作ろうと考えています。
データストアの選択として、現在大きく分けて、MySQLやPostgresなどRDBをつかうのか、MongoDBやRedisなどのKVS・NoSQLを使うのかという選択があると思います。
アクセスが少ない小さなウェブサービスの場合、KVSを使うメリットはほとんど無いと考えていますが、KVSを選択したほうが有利になるのは、どのくらいの規模になったときでしょうか?
また、たとえば、一日のユニークユーザーが1000〜2000人の人力検索はてなをつくろうと想定したばあい、ベストなデータストアは何だと思いますか?
RDBMSを使うか否かという選択は、トランザクション量(ここではユニークユーザー数と仮定)ではなく、登録データの検索や2次利用(データ抽出)が多いかどうかという観点で見ます。検索・抽出の頻度が多いならRDBMSが有利ですが、そうでなければNoSQLや、場合によってはテキストファイルで十分なことがあります。
人力検索の場合、絞り込み検索の頻度がどの位あるのか分かりませんが、データ抽出はまず無いでしょうから、RDBMSを全面的に利用するメリットはそれほどないでしょう。
質問一覧に表示する項目だけをRDBMSで管理し、質問文や回答文はテキストファイル(またはXMLのような構造化テキスト)として保管し、ファイル名やハッシュ値でRDBMS側とリンクさせるのが無難なやり方です。
その意味では、ユニークユーザー数にかかわらず、インデックスはRDBMSで、コンテンツ本体はKVSで管理するのが無難と言えます。
RDBMSを使うか否かという選択は、トランザクション量(ここではユニークユーザー数と仮定)ではなく、登録データの検索や2次利用(データ抽出)が多いかどうかという観点で見ます。検索・抽出の頻度が多いならRDBMSが有利ですが、そうでなければNoSQLや、場合によってはテキストファイルで十分なことがあります。
人力検索の場合、絞り込み検索の頻度がどの位あるのか分かりませんが、データ抽出はまず無いでしょうから、RDBMSを全面的に利用するメリットはそれほどないでしょう。
質問一覧に表示する項目だけをRDBMSで管理し、質問文や回答文はテキストファイル(またはXMLのような構造化テキスト)として保管し、ファイル名やハッシュ値でRDBMS側とリンクさせるのが無難なやり方です。
その意味では、ユニークユーザー数にかかわらず、インデックスはRDBMSで、コンテンツ本体はKVSで管理するのが無難と言えます。
>一日のユニークユーザーが1000~2000人の人力検索
このレベルなら、RDBで十分対応可能です。
RDBMSは過去のノウハウもありますし、意外と高負荷に耐えれるので、これでできない規模のサイトというのは少ないかもしれません。
あと、表示部分をなるべくキャッシュする機構にして、RDBにアクセスが行かないようにすれば、かなりの高負荷にも耐えれると思います。
RDBを使うとデータの管理が容易になるというのがあります。
コメント(0件)