NoSQL

2012-03-02 10 views
13

में डुप्लिकेट डेटा में परिवर्तनों को कैसे प्रबंधित करें हम आगामी प्रोजेक्ट के लिए NoSQL का मूल्यांकन कर रहे हैं। मुझे आरडीबीएमएस तरीके से चीजों के बारे में सोचना पड़ता है और सामान्यीकरण की कमी को अवधारणा में परेशानी हो रही है।NoSQL

मैं समझता हूं कि डुप्लिकेटिंग डेटा को NoSQL में गलत नहीं माना जाता है। मुझे समझ में परेशानी हो रही है जो विसंगतियों को रोकने के लिए डेटा में परिवर्तन को ठीक कर रहा है। उदाहरण द्वारा प्रश्न का

स्पष्टीकरण:

आप पोकर टूर्नामेंट की एक श्रृंखला का आयोजन कर रहे हैं। आपके पास खिलाड़ी हैं, स्थान, और टूर्नामेंट की घटनाएं। जैसा कि मैं इसे समझता हूं, एक टूर्नामेंट ईवेंट में एक स्थान और खिलाड़ियों का संग्रह हो सकता है। यह सभी प्लेयर डेटा रखने की आवश्यकता नहीं है, लेकिन यदि आप नाम और अगले टूर्नामेंट में जाने वाले सभी के घर के पते प्राप्त करना चाहते हैं, तो जानकारी टूर्नामेंट संग्रह में होनी चाहिए।

किसी ने शादी कर ली है और अपना अंतिम नाम बदलकर पता बदल दिया है। क्या एप्लिकेशन को प्लेयर संग्रह और टूर्नामेंट संग्रह को अपडेट करने की आवश्यकता है? या संग्रह का मेरा मॉडल गलत है? डेवलपर "ट्रैक रखें" कहां से जानकारी डुप्लिकेट की जाती है?

उत्तर

10

मॉडल है कि मैं काफ़ी हाल ही में उपयोग किया जा रहा डेटा की एक अपरिवर्तनीय "मास्टर" संग्रह (आपके मामले में, खिलाड़ियों की सूची, प्रत्येक टूर्नामेंट मॉडलिंग "में खिलाड़ियों के साथ टूर्नामेंट की सूची है relationally ", जहां टूर्नामेंट रिकॉर्ड में खिलाड़ी आईडी की एक सूची है), और एक denormalized सूची (आपके मामले में, पूरी तरह से आबादी वाले खिलाड़ी डेटा के साथ टूर्नामेंट की एक सूची) जिसे केवल" मास्टर "पर आवधिक प्रक्रिया चलाकर अपडेट किया जाता है " डेटा।

इस तरह एप्लिकेशन को केवल मास्टर डेटा को अपडेट करने की आवश्यकता है, और आवधिक अद्यतन प्रक्रिया अंततः denormalized परिणाम का पुनर्निर्माण करेगा।

+0

जब आप कहते हैं "अपरिवर्तनीय" क्या आप का शाब्दिक अर्थ यह है कि यदि उस मास्टर ऑब्जेक्ट पर * कुछ भी * बदलता है, तो आप इसे हटा रहे हैं और एक नया बना रहे हैं? –

+1

क्षमा करें, शायद वहां शब्द का गलत उपयोग। अपरिवर्तनीय रूप से, मेरा मतलब था कि मास्टर सूची को denormalized सूची बनाने की प्रक्रिया में संशोधित नहीं किया गया है। –

9

एक चीज करना है कि आपके पास प्रत्येक प्रकार के डेटा के लिए "रिकॉर्ड सिस्टम" या मास्टर होना है। सभी डेटा के लिए एकल स्रोत होने की आवश्यकता नहीं है लेकिन प्रत्येक के पास एक होना चाहिए।

डेटा संस्करण (ऐतिहासिक परिवर्तनों को बनाए रखने) को बनाने के लिए एक और उपाय है ताकि डेटा को अपरिवर्तनीय बनाया जा सके - आपके उदाहरण में अतीत में हुए टूर्नामेंट के लिए प्लेयर डेटा उस समय के लिए सही है। यदि कोई खिलाड़ी तब से एक नए पते पर चलेगा तब से आप वर्तमान पते प्राप्त करने के लिए प्लेयर की "रिकॉर्ड सिस्टम" पर जाकर प्राप्त कर सकते हैं लेकिन टूर्नामेंट रिकॉर्ड उस समय उसके पते को दर्शाता है।

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