0

私はMongoDBとRubyonRailsを使用してWebサービスを構築しています。私は約10GBのデータを持っています。データ内のコレクション(RDBMSのテーブルと同様)は国の州ごとに分割されており、コレクション内のフィールドはコレクションごとにわずかに異なります。私は60のコレクションを持っています。nosqlデータベースを使用しているので、2〜3個のコレクションを異なるフィールドと組み合わせても問題はありません。

私の問題私のコレクションを組み合わせていない場合は、Railsアプリケーションに60のモデルがあります。それらをすべて組み合わせると、コレクションが非常に大きくなり、パフォーマンスが低下します。サーバーリソースが限られているため、最適な選択は何ですか。3〜4個の異なるパラメーターに基づいてデータベースにクエリを実行します。たとえば、特定のエリアのみを検索したり、個人が所有する特定のライセンスタイプを検索したり、あるいはその両方を検索したりする場合があります。

4

1 に答える 1

0

Sergioが言ったように、クエリを実行する3〜4フィールドのインデックスを持つ1つの大きなコレクションがおそらく最適に機能します。

ただし、60のモデルを用意する必要はなく、動的フィールドを使用するだけです。これは、MongoDBを使用する主な利点の1つです。ここでモンゴイドでそれについて読むことができます。基本的には、コレクション内のすべてのドキュメントに共通するフィールドを定義し、必要に応じて動的フィールドを設定して取得するだけです。

ここでの1つの落とし穴は、メソッド( "。"、dot)属性アクセサーは、その属性が設定されるまで機能しないということです。したがって、model [:attribute]="blah"またはmodel.attribute="blah"で設定するまで、model.attributeと言うことはできません。

于 2012-05-18T18:06:53.783 に答える