2017-08-03 21 views
5

मैंने हाल ही में एक परियोजना के लिए कॉसमॉस डीबी का उपयोग करना शुरू कर दिया है और मैं कुछ डिज़ाइन मुद्दों में भाग रहा हूं। एक एसक्यूएल पृष्ठभूमि से आ रहा है, मैं समझता हूं कि संबंधित डेटा को नोएसQL डीबी पर दस्तावेजों के भीतर घोंसला होना चाहिए। इसका मतलब यह है कि दस्तावेज़ काफी बड़े हो सकते हैं।Azure कॉसमॉस डीबी अपडेट पैटर्न

चूंकि आंशिक अद्यतन समर्थित नहीं हैं, इसलिए जब आप दस्तावेज़ पर एक ही संपत्ति को अपडेट करना चाहते हैं तो लागू करने के लिए सबसे अच्छा डिज़ाइन पैटर्न क्या है?

क्या मुझे संपूर्ण दस्तावेज़ सर्वर पक्ष पढ़ना चाहिए, मूल्य अपडेट करना और दस्तावेज़ को अद्यतन करने के लिए दस्तावेज़ को वापस लिखना चाहिए? यदि समस्याएं बड़ी हैं तो यह समस्याग्रस्त प्रतीत होता है, जो अनिवार्य रूप से होगा यदि आपका सभी डेटा घोंसला हो।

यदि मैं आईडी पर आधारित कई छोटे दस्तावेज़ और अनुमानित रिश्ते बनाने का दृष्टिकोण लेता हूं तो मुझे लगता है कि यह अद्यतन चिंता के लिए अनावश्यक रूप से पढ़ने/लिखने को हल करेगा, लेकिन ऐसा लगता है कि मैं नोएसक्यूएल की अवधारणा के खिलाफ जा रहा हूं और संक्षेप में एक रिलेशनल डीबी का निर्माण कर रहा हूँ।

धन्यवाद

+0

एक उत्कृष्ट सवाल में मदद मिलेगी। ऐसा लगता है कि समुदाय यह भी पूछ रहा है: https://feedback.azure.com/forums/263030-azure-cosmos-db/suggestions/6693091-be-able-to-do-partial-updates-on- दस्तावेज़ यहां निहितार्थ यह है कि 'छोटे दस्तावेज़/अनुमानित संबंध' पैटर्न अब के लिए जाने का तरीका है। एक श्वेत पत्र देखने के लिए सुंदर होगा या इस तरह के 'छोटे दस्तावेज़' कितना छोटा होगा। – Holf

+2

ध्यान दें कि दस्तावेजों के लिए कॉसमॉस डीबी में सीमा 2 एमबी है, इसलिए आपको अपेक्षाकृत छोटी फाइलों का उपयोग करने के लिए मजबूर होना पड़ता है। – influent

उत्तर

2

लॉकिंग और latching। अगर आंशिक अपडेट संभव हो तो ऐसा होने की आवश्यकता है। < 15ms लॉकिंग के साथ विलंबता एसएलए लिखने के लिए यह एक कठिन इंजीनियरिंग समस्या है।

यह दस्तावेज बड़ा होता है यदि दस्तावेज़ बड़े होते हैं तो वे अनिवार्य रूप से होंगे यदि आपका सभी डेटा घोंसला हो।

अपने डर को परिभाषित करें — जला अनुरोध इकाइयों, ऐप होस्ट मेमोरी, प्रवेश/नेटवर्क नेटवर्क यातायात? आपको विश्वास है कि यह एक समस्या है लेकिन आप ठोस परिणाम बता रहे हैं। मैं यह नहीं कह रहा हूं कि आप गलत हैं या आंशिक अद्यतन दृष्टिकोण की दक्षता पर संदेह करते हैं, मैं बस कह रहा हूं कि तर्क पतला है।

आमतौर पर आप JOIN NoSQL में कुछ भी नहीं चाहते हैं, इसलिए मैं आपके साथ अंतिम पैराग्राफ पर पूरी तरह से हूं।

+0

प्रतिक्रिया के लिए धन्यवाद। यह वास्तव में एक तर्क नहीं है, चिंता का अधिक है। मुझे लगता है कि आपके द्वारा परिभाषित किए गए सभी डर वैध हैं, मैं केवल कॉसमॉस डीबी के साथ अनुभवी किसी व्यक्ति से सलाह की तलाश कर रहा था।कोई भी जो कह सकता है "हां, आपको पूरे दस्तावेज़ को पढ़ना है, नेस्टेड प्रॉपर्टी में सूची के माध्यम से पुनरावृत्ति करना है, उस सूची में किसी आइटम पर एक ही ध्वज अपडेट करना है और पूरे दस्तावेज़ को वापस लिखना है"। यदि यह "सही" तरीका है या कॉसमॉस डीबी के साथ अद्यतनों को संभालने का अनुशंसित तरीका है तो मैं उससे खुश हूं। – Ross

0

जब भी आप एक दस्तावेज़ बनाने के लिए कोशिश कर रहे हैं इस पर विचार करने के लिए प्रयास करें:

  • दस्तावेज़ का हिस्सा अलग एक्सेस करने की आवश्यकता है। यदि हां तो एक संदर्भित दस्तावेज़ बनाएं और यदि नहीं तो एक एम्बेडेड दस्तावेज़ बनाएं।

    और अगर आप को पता है कि चयन करना चाहते हैं, मुझे लगता है कि आप MongoDB के लिए इस सवाल का अपने पर एक नज़र लेने की जरूरत चाहिए, लेकिन आप Embedded vs Referenced Document

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