2011-12-03 10 views
1

私たちはRDBMSかNoSQLかを判断する段階にあります。別のサーバーにNoSQLデータベースを分割する必要がありますか?

NoSQL(おそらくCouchDBでもMongoDBでも構いませんが)の場合、別のサーバーのNoSQLデータベースをNoSQLサーバーの1つのインスタンスよりも分けることになりますか?

ファイル管理システムを構築し、特定のファイルやビデオを別のサーバーにグループ化します。アカウント関連ファイル/ビデオは、アカウントサーバーなどに保存されます。アカウント関連ファイルを照会するには、アカウントサーバー上のデータベースを検索する可能性が最も高くなります。

今後、「ファイルや動画の種類についてすべてのサーバーで検索できないのはなぜですか」と誰かが言うことがわかりますか?

明らかに1つのデータベースを持つ方が良いでしょう。しかし、サーバーに照会するHTTPリクエストの待ち時間を別にすれば、大規模なデータベースを持っていることや長所と短所を解決する良い方法がありますか?

JD

答えて

2

は(ほとんど)のNoSQL製品のアイデアは、彼らが水平方向のスケーラビリティを提供するということです。これは、単一の論理インスタンスが数十台のサーバー上にある可能性があることを意味します。たとえば、MongoDBでは、auto-shardingを使用できます。プログラムの場合、これは完全に透過的です。コードは、単一のデータベースサーバーで使用するコードとほぼ同じですが、データは5つのサーバーに存在します。

ありが多く五分五分である:あなたのデータベースを管理するための中心点を持っている必要があれば、あなたはすべてのデータベースで照会することができ、あなたのコード内に複数のDB接続/ wの周り混乱する必要はありません、DBは自動的にそれらのバランスをとりますクエリが許可されている場合、バランスのとれたコレクション、マップ/リダクションの操作は並行して実行できます。

私にとって最も重要なもの:管理オーバーヘッドはあまりありません。後で自動シャーディングを追加できるので、と考えました。

私は自分自身をシャーディングしようとはしません。なぜなら、ホイールを再発明しているからです。それは簡単でもありません。これは、最初はNoSQLにとって重要な要因の1つでした。

+0

ありがとう@mnemosyn。 NoSQLのアーキテクチャーに頭を下ろそうとしています。私が最初に理解したのは、各サーバーにデータベースを置いて検索するだけで、検索の集計結果を得ることでした。あなたの答えから、後でオートシャーディングすることでこれを解決できます。自動シャーディングでは、「すべてのアカウントの書類」がサーバー2にあるはずですか? –

+0

「マップ/リダクション操作がクエリで許可されていれば、並行して実行することができる」と言いましたが、何を意味するのか詳細を教えてください。 –

+1

"「すべての勘定伝票がサーバー2に登録されていますか? - まあ、実際にはありません。問題は、データをどこに置くべきかをdbに決定させるのではなく、なぜそれをやりたいのですか?パラレル化:マップ/リダクションだけでなく、いくつかのクエリを並列化することができます。 count({color:blue})はすべてのサーバーに一度に照会し、結果を追加します。詳細は私の答えのリンクを参照してください。 – mnemosyn

関連する問題