2013-03-07 4 views
8

के साथ बहु-मानदंड खोज मैं कई क्षेत्रों में फ़िल्टरिंग, कोचडीबी से डेटा कैसे प्राप्त करूं।कॉच डीबी

उदाहरण के लिए, यदि मेरे पास नाम, राज्य, देश इत्यादि जैसे फ़ील्ड वाले व्यक्ति डेटाबेस हैं; और एक वेब पेज पर एक खोज फ़ॉर्म, मैं केवल गैर-शून्य स्थितियों पर विचार करते हुए, CouchDB से डेटा कैसे प्राप्त करूं।

एसक्यूएल में, मैं करने के लिए की स्थिति संलग्न करेंगे जहां खंड WHERE Person.Name="John" AND Person.State in ("NY","CA"), लेकिन मैं कैसे आप का उपयोग नक्शा/को कम दृश्य इस क्वेरी के रूप में एक CouchDB देखें

उत्तर

7

CouchDB में फ्रेम है। एसक्यूएल में आपको स्पष्ट रूप से कहना होगा कि किस फील्ड इंडेक्स को बनाया जाएगा। कॉच डीबी में आप कस्टम फ़ंक्शन बनाने वाले इंडेक्स लिखते हैं, इसलिए यह आपकी आवश्यकताओं के लिए अधिक विशिष्ट हो सकता है। यदि आप चाहते हैं नाम, राज्य और देश के साथ एक खोज के रूप में इस तरह के एक सरल बात के लिए सूचकांक-प्रांगण दृश्य सिर्फ एक नक्शा समारोह है:

function (doc) { 
    if (doc.name && doc.state && doc.country) 
    emit([doc.name, doc.state, doc.country], doc); 
} 

इस दृश्य आप कुंजी ["my_name", "my_state", "my_country"] के लिए खोज का उपयोग करके खोज करने के लिए। आप नाम, राज्य और देश के उप-समूह के साथ पूछताछ के लिए इसका उपयोग कर सकते हैं, जब तक कि वे उत्सर्जित सरणी का एक उपसर्ग (जैसे, name के साथ खोज रहे हैं लेकिन state और country के साथ नहीं) क्योंकि नक्शा के खोज योग्य परिणाम को शब्दावली से क्रमबद्ध किया जाता है।

सिद्धांत रूप में, दृश्य क्वेरी की कुछ क्षमताओं के साथ सूचकांक है, एसक्यूएल प्रश्नों के रूप में लचीला नहीं है। उन्हें एक बार निष्पादित किया जाता है और डिस्क पर संग्रहीत किया जाता है, और नए/संशोधित डेटा के लिए वृद्धि की गणना की जाती है। ध्यान दें कि वितरित प्रणाली में अक्षम होने वाली चीजें करना मुश्किल है (जिसके लिए कॉच डीबी डिज़ाइन किया गया है): अधिक जटिल जुड़ाव, इंडेक्स के बिना खोज ... हालांकि, कई मामलों में संरचित मॉडल में तालिकाओं के लिए कृत्रिम विभाजन आवश्यक नहीं है दस्तावेज उपलब्ध हैं और कुछ जोड़ों की आवश्यकता नहीं है।

सोफेडबी बनाम एसक्यूएल की कुछ संक्षिप्त तुलना के लिए विचारों के बारे में अधिक जानकारी के लिए this chapter of The Definitive Guide पुस्तक और अन्य अध्याय और आधिकारिक wiki देखें।

+0

मुझे लगता है कि यहाँ असली सवाल आप क्षेत्रों में से एक उच्च एक्स नंबर है जब कि क्या करना है और आप नहीं जानते कि जो खोज मापदंड के संयोजन अपने उपयोगकर्ता है:

यहाँ एक अच्छा इस सवाल का जवाब देने लेख है के लिए फ़िल्टर करना चाहते हैं। यदि आपके पास 20 फ़ील्ड हैं, तो आप संभावित खोज मानदंडों के सभी संयोजनों को संभालने के लिए आवश्यक 2.432902e + 18 दृश्य नहीं बना सकते हैं। क्या आपके पास 20 विचार हो सकते हैं और फिर किसी भी तरह से विचारों को छेड़छाड़ करने का प्रयास कर सकते हैं? –

+0

कॉच डीबी सार्वभौमिक डेटाबेस नहीं है। विशिष्ट उपयोग मामले के लिए आपको डेटा संरचना (दस्तावेज योजना और विचार) तैयार करना चाहिए। हालांकि बहुआयामी प्रश्न और अतिरिक्त प्लगइन्स के बिना उपलब्ध नहीं हैं (जैसे जियोचच या ल्यूसीन/लोचदार खोज का उपयोग करके) आप इससे बचने की कोशिश कर सकते हैं। जेएसओएन दस्तावेजों को रिलेशनल डिज़ाइन को देखने और मानचित्रण करने के लिए एसक्यूएल का सरल अनुवाद पर्याप्त नहीं है। –

0

आपको एक दृश्य बनाने की आवश्यकता है, जिसमें [doc.name, doc state] शामिल है। यह दस्तावेज़ीकरण में काफी अच्छी तरह से वर्णित है। वास्तविक समस्या यह है कि दो यादृच्छिक राज्यों से लोगों का चयन कैसे करें। Using Multiple Start and End Keys for CouchDB Views

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