2011-05-12 3 views
1

Je suis en train de créer une application qui effectuera 2 phases.Restreindre l'interrogation de la collection MongoDB aux blocs inactifs uniquement

  1. Exécuter la phase - La première phase est très INSERT intensive (autant inserts que le matériel peut éventuellement peut exécuter dans une seconde). C'est essentiellement une piste de journalisation du travail effectuée.
  2. phase de validation - Suivant la phase interrogera les logs générés par la phase 1 et comparer à une source externe et effectuer une UPDATE au dossier pour stocker quelques statistiques. Ce processus est la deuxième priorité à la phase 1.

Je suis en train de voir si son possible de les faire en parallèle et maintenir le verrouillage en écriture au minimum pour la phase d'exécution. Je pensais qu'une façon de le faire serait de restreindre ma phase de validation à des requêtes provenant uniquement d'anciens enregistrements qui ne sont pas dans le segment en cours d'insertion par la phase d'exécution. Y a-t-il quelque chose dans MongoDB qui limite un find() à une requête provenant uniquement de blocs qui n'ont pas été accédés depuis un certain temps configurable?

Répondre

1

Vous pouvez utiliser le jeu de réplicas mentionné avec slaveOk et mettre à jour dans le maître.

Vous pouvez utiliser un champ d'horodatage ou un ObjectId (qui contient déjà un horodatage) pour le filtrage.

+0

Très bien, merci. Je vais vérifier la documentation pour comprendre la syntaxe. Ma question immédiate est de savoir si cela nécessite deux connexions (une pour les écritures, une pour les lectures) ou peut-elle être faite au cas par cas? Je suis sûr que cela sera clair après avoir lu plus de docs. – Aaron

+0

vous avez certainement besoin de différentes connexions comme maître et esclave (s) devrait être sur des hôtes différents. BTW Je pensais que ces 2 phases sont exécutées par des processus différents, en concurrence les uns les autres .. –

2

Vous souhaitez probablement configurer le jeu de réplicas. Insérer dans le maître et extraire des secondaires. De cette façon, votre insertion ne sera pas bloquée du tout.

Questions connexes