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