大きなmongodbセットに埋め込まれたvsリンク(ルビー)
-
29-09-2019 - |
質問
埋め込まれたリンク
接続された電子メールのニュースレタードキュメントを検索する最速の方法を探しています。これまでのところ、ニュースレター用のドキュメントと電子メール用のドキュメントを含むMongomapperを使用しています。これは、+100Kメールで非常に遅くなっています。
電子メール(「someemail@email.com」)に本当に興味があり、その周りにはロジックではないので、ニュースレター内の配列に電子メールを埋め込むのが速いと思っていました。
1)1つのドキュメントに最大100k〜500kの電子メールを埋め込むことはまったく可能ですか? 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
そして、私はこれがすべてが傷つき始めるところだと思います。
Connected Connected Class Newsletterが含まれている方法はあります。Mongomapper:: Document Many:emails ... End
Class Email
include MongoMapper::Document
key :email, String
key :newsletter_id, ObjectId
belongs_to :newsletter
end
これについてどんな助けをするのが大好きです:)
解決
Mongodb、Mongomapper、またはMongoidの最大ドキュメントサイズ16MBは現在、これに違いはありません。
見る http://www.mongodb.org/display/docs/documents
ただし、埋め込みドキュメントは、制限内のすべての電子メールを取り付けることができれば、圧迫される可能性がある場合があります。
電子メール全体を保存することが多くの場合、アレイを保存するか、完全な電子メールを参照してニュースレターを使用して電子メールアドレスを埋め込んだだけではありません。
その後、必要な速度の優位性を取得し、ニュースレターの外でメールにアクセスできるようにすることができます。