2016-01-28 17 views
5

कहें कि मेरे पास दो संग्रह हैं, प्रत्येक एक दूसरे से स्वतंत्र मूल्य के साथ, लेकिन प्रत्येक एक दूसरे से संबंधित है। वे photos और users हैं। उपयोगकर्ताओं और तस्वीरों के बीच एक से अधिक संबंध हैं।NoSQL में denormalized स्थिरता को बनाए रखने के लिए कैसे?

denormalized डेटा का एक उदाहरण:

users: 
{ 
    "id": "AABC", 
    "name": "Donna Smith" 
} 

photos: 
{ 
    "id": "FAD4", 
    "description": "cute dog", 
    "user_id": "AABC", // This is the relationship 
    "user_name": "Donna Smith" // This is the denormalized value from the "users" collection 
} 

मैं photos संग्रह जब उपयोगकर्ता "AABC" "डोना स्मिथ" के लिए "डोना चांग" से नाम बदल में दस्तावेजों के साथ संगति यह कैसे सुनिश्चित कर सकते हैं?

गैर-लेनदेन होने के नाते, मुझे लगता है कि स्थिरता अंतिम होने जा रही है।

उपयोगकर्ता (एएबीसी) सभी उपयोगकर्ताओं को अपडेट करने के लिए उपयोगकर्ता "एएबीसी" में परिवर्तन के बाद एक साधारण (बेवकूफ) कार्यान्वयन पृष्ठभूमि पृष्ठभूमि को ट्रिगर कर सकता है। और एक ही अद्यतन के मामले में, यह अच्छी तरह से काम करेगा। लेकिन यह एक बहु-उपयोगकर्ता वातावरण है, और समवर्ती रूप से सभी दिशाओं में उड़ानें अपडेट होने जा रही हैं। क्या होगा, उदाहरण के लिए, "डोना स्मिथ" को "डोना चांग" में बदलने के लिए तस्वीरों के पृष्ठभूमि अपडेट के माध्यम से आधे रास्ते, उपयोगकर्ता "एएबीसी" का नाम वापस "डोना स्मिथ" में बदल दिया गया है?

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

मैंने "भौतिक दृश्यों" के विषय पर Thomas Wanschik's excellent blog articles पढ़ा है और वास्तव में इस परिदृश्य के लिए पृष्ठभूमि अपडेट पढ़े हैं। लेकिन मैं छोड़ रहा हूँ चिंतित हैं कि:

  1. पृष्ठभूमि नौकरियों अधिकतम समय अद्यतन (कैसे मुझे लगता है कि देरी का निर्धारण है के लिए अनुमति दी से अधिक से अधिक एक पूर्व निर्धारित मात्रा में विलंबित किया जाना चाहिए क्या एक ऑपरेशन में अधिक समय लगता है, तो ?), तथा;
  2. यह केवल चर्चा है जिसे मैंने अभी तक एक व्यावहारिक समाधान पाया है। नोएसक्यूएल एक बड़ा सौदा सही है, मैं इस बारे में और अधिक चर्चा क्यों नहीं देख रहा हूं? मैं क्या खो रहा हूँ?
+0

कोई विचार? मैंने नोएसक्यूएल की लोकप्रियता के साथ सोचा होगा, यह एक "हल" समस्या होगी। – Snixtor

उत्तर

0

नोएसक्यूएल की मेरी प्रारंभिक समझ है कि उपयोगकर्ता/एप्लिकेशन पर बड़ी मात्रा में डेटा वितरित करते समय लागत का सही विश्लेषण होता है।

अपने आवेदन में अपनी तस्वीरों को वापस वितरित करते समय, अधिक बार होने की संभावना अधिक होती है? तस्वीरों की डिलीवरी उपयोगकर्ता और शायद उनके दोस्तों को जो उन्हें देख रहे हैं ... या उपयोगकर्ता के नाम को बदलना?

चूंकि उपयोगकर्ता के नाम को बदलने से एप्लिकेशन में एक कम आम उदाहरण है, इसलिए नोएसक्यूएल के डेनोर्मलाइजेशन का दावा प्रसिद्धि का दावा है कि आप पारंपरिक सामान्यीकृत में जॉइन की कीमत के बिना उपयोगकर्ताओं को फोटो डेटा के हाई-स्पीड गोब्स वितरित कर सकते हैं/आरडीबीएमएस पर्यावरण।

इन दिनों वहां मौजूद कुछ औजारों का उपयोग करना (क्योंकि आपने इसे काफी समय पहले लिखा था) इस तरह की स्थितियों में सहायता कर सकते हैं, लेकिन आप अनिवार्य रूप से सही थे कि आप इसे संभालने के लिए कोड परिवर्तन शेड्यूल कर सकते हैं .. यह धीमा हो जाएगा ... यह महंगा होगा .... लेकिन यह काम करेगा ... और आपको अभी भी अपनी तस्वीरों को एप्लिकेशन में वितरित करने की गति का लाभ होगा, जो अनिवार्य रूप से आपके मुख्य उद्देश्य है एप्लिकेशन।

यह प्रश्न एक महाकाव्य उपन्यास में बढ़ता है जिसमें एक तरफ एसक्यूएल डिफेंडर और दूसरे पर "रैबल" नोएसक्यूएल अनुयायी हैं। गति के लिए समझौता संरचना के विचार पर पारंपरिक डीबीए की कड़वाहट, लेकिन बहुत पहले की पुरानी "सुपर टेबल" अवधारणा के रूप में नोएसक्यूएल के बारे में सोचें, जहां हम इस बात के बारे में सोचते थे कि बनाम क्या होगा। अनिवार्य रूप से ... इसने नोएसक्यूएल अवधारणा को जन्म दिया और यह बड़े पैमाने पर अनुप्रयोगों और बड़ी डेटा रिपोर्टिंग में बहुत उपयोगी साबित हो रहा है।

मुझे पता है कि यह एक पुराना सवाल है, लेकिन मुझे उम्मीद है कि मेरा जवाब दूसरों के जैसे इस प्रकार के प्रश्न की बात करते समय नोएसक्यूएल लाभों को नष्ट करने में मदद करता है।

+0

मेरा प्रश्न 2 सप्ताह से कम पुराना नहीं है। @ इंडी-जोन्स, आप कुछ अच्छे * चर्चा * अंक उठाते हैं, लेकिन मैंने अलग-अलग स्थानों पर इन बिंदुओं को कई बार देखा है। जो मैं खोज रहा हूं वह "धीमी, महंगी अद्यतन" के लिए पैटर्न के कार्यान्वयन के लिए पैटर्न और/या उपकरण है। मुझे आश्चर्य है कि यह गैर-मामूली इंजीनियरिंग कार्य एप्लिकेशन डेवलपर को छोड़ दिया गया है। – Snixtor

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