2010-06-22 6 views
2

Embarqué vs lienvs Embed lien sur de grands ensembles de MongoDB (rubis)

Je cherche le meilleur moyen de rechercher un document de lettre pour un e-mail connecté. Jusqu'à présent, j'ai utilisé MongoMapper avec un document pour Newsletter et un autre pour Email. Cela devient vraiment lent avec + 100k Emails.

Je pensais peut-être son plus rapide d'intégrer les e-mails dans un tableau à l'intérieur Lettre d'information depuis que je suis vraiment seulement intéressé par l'e-mail (« [email protected] ») et non une logique autour d'elle.

1) Est-il possible d'intégrer jusqu'à 100 000 courriels dans un même document? 2) Mongoid est-il meilleur/plus rapide pour cela?

J'ajoute l'e-mail si ce n'est pas déjà dans la collection en demandant

email = newsletter.emails.first(:email => '[email protected]') 
unless email 
    email = Email.new(:email => '[email protected]', :newsletter_id => self.id) 
    email.save 
end 

Et je pense que c'est là que tout commence à faire mal.

Voici comment ils sont connectés classe Bulletin comprennent mongomapper de nombreux documents : courriels ... fin

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

aimerait pour toute aide sur ce :)

Répondre

0

Il est une taille de document maximale de 16 Mo actuellement pour MongoDB, MongoMapper ou Mongoid ne fera aucune différence à cela.

voir http://www.mongodb.org/display/DOCS/Documents

documents intégrés devraient être beaucoup plus rapide si, si vous pouvez correspondez tous les e-mails dans la limite pourrait être un retrait obligatoire.

Si le stockage de l'ensemble de l'e-mail est trop important, pourquoi ne pas simplement stocker un tableau ou simplement intégrer l'adresse e-mail avec la newsletter avec une référence à l'e-mail complet.

Vous pouvez alors obtenir l'avantage de vitesse que vous voulez, et garder les e-mails accessibles en dehors de la newsletter.

+0

Merci pour la réponse. En fait, j'ai fini par créer un document avec une série d'e-mails à référencer. Environ 120 000 courriels dépasseront la limite de taille des documents - il est donc logique de créer un nouveau document de référence dans les rares cas où cela se produit. – Christian

Questions connexes