2

埋め込みvsリンク

ニュースレターのドキュメントで接続されたメールを検索する最速の方法を探しています。これまで、MongoMapperをニュースレター用とEメール用の1つのドキュメントで使用してきました。これは、+100kの電子メールで非常に遅くなっています。

私は本当にメール('someemail@email.com')にのみ興味があり、その周りのロジックには興味がないので、ニュースレター内の配列にメールを埋め込む方が速いのではないかと考えていました。

1)1つのドキュメントに10万から50万の電子メールを埋め込むことは可能ですか?2)Mongoidはこれに対してより良い/より速いですか?

まだコレクションに含まれていない場合は、質問してメールを追加します

email = newsletter.emails.first(:email => 'someemail@email.com')
unless email
    email = Email.new(:email => 'someemail@email.com', :newsletter_id => self.id)
    email.save
end

そして、私はこれがすべてが傷つき始めるところだと思います。

これらの接続方法は次のとおりです。クラスニュースレターには、MongoMapper :: Document many:emails...endが含まれます。

Class Email
   include MongoMapper::Document
   key :email, String
   key :newsletter_id, ObjectId
   belongs_to :newsletter
end

これについての助けが欲しいです:)

4

1 に答える 1

0

現在、MongoDBの最大ドキュメントサイズは16 MBですが、MongoMapperまたはMongoidはこれに違いはありません。

http://www.mongodb.org/display/DOCS/Documentsを参照してください

ただし、すべての電子メールを制限内に収めることができれば、埋め込まれたドキュメントはかなり速くなるはずです。

電子メール全体を保存するのが大変な場合は、配列を保存するか、電子メールアドレスをニュースレターに完全な電子メールへの参照とともに埋め込んでみませんか。

その後、必要な速度の利点を得ることができ、ニュースレターの外部で電子メールにアクセスできるようになります。

于 2011-09-14T20:10:07.660 に答える