2011-09-24 22 views
5

मैं एक क्यूइंग सिस्टम का निर्माण कर रहा हूं जो मैपोडब में capped_collections और tailable कर्सर के साथ लागू एक स्टैक के माध्यम से एक प्रक्रिया से दूसरे में एक संदेश भेजता है।mongodb capped संग्रह के बारे में प्रश्न + ट्यूटोरियल कर्सर

प्राप्त करने वाली प्रक्रियाएं capped_collection में नए दस्तावेज़ों की तलाश में असीम रूप से लूप करती हैं, और जब यह पाती है तो यह एक ऑपरेशन करता है।

मेरा प्रश्न यह है कि, यदि मैं एकाधिक प्राप्त प्रक्रियाओं को लागू करता हूं तो यह गारंटी देने का एक तरीका है कि एक नया दस्तावेज़ केवल एक ट्यूटोरियल कर्सर का उपयोग करके प्रक्रियाओं में से एक द्वारा पढ़ा जाएगा? लक्ष्य कतार में नए संदेशों की तलाश में दो प्राप्त प्रक्रियाओं के दो बार होने वाले ऑपरेशन से बचने के लिए है। मैं mongodb प्रोग्रामिंग के लिए अपेक्षाकृत नया हूँ इसलिए मुझे अभी भी इसकी सभी सुविधाओं के लिए एक महसूस हो रहा है।

उत्तर

2

MongoDB documents परमाणु अद्यतन प्राप्त करने के तरीकों का एक संपूर्ण विवरण है। आप यह सुनिश्चित नहीं कर सकते कि केवल एक प्रक्रिया को नया दस्तावेज़ प्राप्त हो लेकिन आप इसे प्राप्त करने के बाद एक परमाणु अद्यतन को कार्यान्वित कर सकते हैं ताकि यह सुनिश्चित किया जा सके कि केवल एक प्रक्रिया ही कार्य करती है।

+0

प्रश्न यह सुनिश्चित करने के बारे में था कि दो प्रतिस्पर्धी ट्यूटोरियल कर्सर को एक ही संदेश प्राप्त नहीं हुआ। मुझे नहीं लगता कि यह परमाणु अद्यतनों या आपके द्वारा प्रदान किए गए दस्तावेज़ लिंक के साथ कुछ भी करने के लिए कैसे है – mysomic

+0

आप डाउनवॉटेड हैं क्योंकि आप * स्वीकृत * उत्तर नहीं समझते हैं? शायद * आप * समझ में नहीं आते कि "ऑपरेशन से दो बार प्रदर्शन करने से बचें" परमाणु अपडेट का उपयोग कैसे करें, लेकिन सवाल पूछने वाले व्यक्ति ने स्पष्ट रूप से किया। अच्छा लगा। –

+1

मैं प्रश्न और आपका उत्तर समझता हूं। परमाणु अद्यतन * "गारंटी नहीं देंगे कि एक नया दस्तावेज़ केवल एक ट्यूटोरियल कर्सर का उपयोग कर प्रक्रियाओं में से एक द्वारा पढ़ा जाएगा" * जिसमें दोनों उपभोक्ता ** ** एक ही दस्तावेज़ प्राप्त करेंगे। डुप्लिकेट पूंछ दस्तावेज प्राप्त करने के बाद वे समन्वय कैसे करते हैं, एक और मामला पूरी तरह से और शायद परमाणु अद्यतन किसी भी तरह शामिल हो सकते हैं। तथ्य यह है कि स्वीकार्य उत्तर यह सही है कि यह सही है। – mysomic

0

मैं हाल ही में इस समस्या को देख रहा हूं और मुझे यह जानने में दिलचस्पी होगी कि परमाणु अद्यतनों पर भरोसा किए बिना एकाधिक पाठकों (उपभोक्ताओं) के अन्य तरीके हैं या नहीं।

यही वह है जो मैंने साथ आया है: अपने तर्क को दो "मॉड्यूल" में विभाजित करें। पहला मॉड्यूल ट्यूटोरियल कर्सर से नए दस्तावेज़ लाने के लिए ज़िम्मेदार होगा। दूसरा मॉड्यूल एक मनमाना दस्तावेज़ के साथ काम करने के लिए जिम्मेदार होगा। इस तरह, आपके पास केवल एक उपभोक्ता (मॉड्यूल एक) दस्तावेज प्राप्त कर सकता है जो बाद में दस्तावेज़ को एकाधिक दस्तावेज़ श्रमिकों (द्वितीय मॉड्यूल) में भेजता है।

दोनों मॉड्यूल विभिन्न प्रक्रियाओं में और यहां तक ​​कि विभिन्न भाषाओं में भी लागू किए जा सकते हैं। उदाहरण के लिए, एक नोड.जेएस ऐप दस्तावेज़ों को ला सकता है और उन्हें पाइथन में लिखी गई स्क्रिप्ट के पूल में भेजकर दस्तावेजों को संसाधित करने के लिए तैयार हो सकता है।

+0

लगता है जैसे आप गियरमैन में रूचि रख सकते हैं। http://gearman.org/ –

संबंधित मुद्दे