2011-06-30 10 views
9

सिर्फ एक राय चाहते थे, या कम से कम अंगूठे का नियम जो कि कॉच डीबी के लिए डेटाबेस संरचना में बेहतर है। क्या एक दस्तावेज़ में किसी आइटम के लिए सभी संबंधित डेटा होना बेहतर है, या कई दस्तावेजों में सभी वस्तुओं के कुछ हिस्सों में बेहतर है?बड़े दस्तावेज़ बनाम कई दस्तावेज

मुझे उदाहरण दें कि मुझे एक उदाहरण देकर मेरा क्या मतलब है। मैं वर्तमान में 1 मिनट अंतराल पर, हमारे सिस्टम से 4 घटनाओं को लॉग करता हूं, उन्हें event_1, event_2, event_3 और even_4 पर कॉल करने देता है। मूल्य के बावजूद, प्रत्येक 4 घटनाओं के लिए डेटा संग्रहीत किया जाता है (यदि आप सब कुछ ठीक है, तो भी आपको हमेशा मूल्य मिलेगा)।

विकल्प 1: समूह घटनाओं, और दस्तावेज़ में नया टाइमस्टैम्प/मानों को संशोधित ...

{ 
    event_1: [ 
     { timestamp, value }, 
     { timestamp, value }, 
     { timestamp, value }, 
     ...etc 
    ] 
}, 
{ 
    event_2: [ 
     { timestamp, value }, 
     { timestamp, value }, 
     { timestamp, value }, 
     ...etc 
    ] 
}, 
{ 
    event_3: [ 
     { timestamp, value }, 
     { timestamp, value }, 
     { timestamp, value }, 
     ...etc 
    ] 
} 
...etc 

विकल्प 2:, दस्तावेजों की एक बड़ी सूची रखें नवीनतम मूल्यों के साथ (जो वास्तव में वे सिस्टम से कैसे पहुंचे जाते हैं)?

{ 
    timestamp: { 
     { event_1, value }, 
     { event_2, value }, 
     { event_3, value }, 
     { event_4, value } 
    } 
}, 
{ 
    timestamp: { 
     { event_1, value }, 
     { event_2, value }, 
     { event_3, value }, 
     { event_4, value } 
    } 
}, 
{ 
    timestamp: { 
     { event_1, value }, 
     { event_2, value }, 
     { event_3, value }, 
     { event_4, value } 
    } 
} 
...etc 

मैं वर्तमान में 2 विकल्प का उपयोग कर रहा है, लेकिन सिर्फ तुम क्या सबसे अच्छा अभ्यास पर विचार किया जाएगा ... मुझे लगता है कि करने के लिए है कि विकल्प 1 बेहतर हो सकता है शुरू कर पर लोगों की राय को देखने के लिए उत्सुक था, मार्ग के रूप में मैं रिपोर्टिंग कर रहा हूं, परिणाम ईवेंट द्वारा समूहित किए जाते हैं (प्रत्येक ईवेंट के लाइन ग्राफ़ में दिखाया गया है)।

उत्तर

8

मैं के बाद से CouchDB अपने दस्तावेजों के सभी संशोधन रहता है निश्चित रूप से अपने विकल्प 2.

पसंद करेंगे विकल्प 1. का उपयोग कर तो प्रत्येक नए मूल्य के साथ आप नए मूल्यों और यह भी की एक प्रति की दुकान विशाल स्मृति की खपत होगी पुराना। विकल्प 2 का उपयोग करके आप केवल पुराने मूल्यों को छूए बिना नए मानों को स्टोर करते हैं।

+0

@phlogratos, अच्छा बिंदु! मैंने वास्तव में अभी तक इसके बारे में सोचा नहीं था ... – crawf

+2

@phlogratos को स्पष्ट करने के लिए, कॉच डीबी केवल एक दस्तावेज़ के पुराने संशोधन पर निर्भर करता है जब तक एक कॉम्पैक्शन नहीं चला जाता। –

+6

+1। कॉच डीबी कमिश्नर क्रिस एंडरसन का कहना है, "कोच डीबी को लंबी सूची पसंद है, वसा सूची नहीं।" अपने दस्तावेज़ों को टेक्स्ट फ़ाइल में एक-प्रति-पंक्ति में कल्पना करें। कुछ बहुत बड़े दस्तावेज होने से एक वसा सूची होगी। कई बहुत छोटे दस्तावेज होने की एक लंबी सूची होगी। – JasonSmith

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