मैंने देखा है के बारे में एक ट्यूटोरियल DDD में जो यह कहते हैं कि अगर मैं सकल जड़ SnackMachine है, जो 30 से अधिक बच्चे तत्व बच्चे तत्व होना चाहिए में अलग-अलग कुल. उदाहरण के लिए, SnackMachine के बहुत सारे है PurshaseLog (30 से अधिक) और यह बेहतर है के लिए PurshaseLog में होना करने के लिए एक अलग समग्र. ऐसा क्यों है?
कारण को सीमित करने के लिए समग्र आकार की एक समग्र है, क्योंकि आप हमेशा के कुल स्मृति में है और आप हमेशा की दुकान पूर्ण कुल transactionally. एक बहुत बड़ा कुल कारण होगा तकनीकी समस्याओं.
उस ने कहा, वहाँ कोई नहीं है इस तरह के "30 बच्चे तत्वों" शासन में समग्र डिजाइन और यह मनमाने ढंग से लगता है के रूप में एक नियम है । उदाहरण के लिए, कम से कम बहुत बड़े बच्चे तत्वों हो सकता है तकनीकी रूप से भी बदतर की तुलना में 30 बहुत प्रकाश बच्चे के तत्वों. एक अच्छी तरह से भंडारण के समुच्चय के रूप में json दस्तावेज़, यह देखते हुए कि आप हमेशा पढ़ने और लिखने के दस्तावेजों के रूप में परमाणु के संचालन । यदि आपको लगता है कि यह इस तरह, आपको एहसास होगा कि एक समग्र डिजाइन का तात्पर्य है कि एक बहुत बड़े या यहां तक कि कभी-बढ़ते बच्चे के संग्रह के अंत में होगा समस्याओं के कारण. एक PurhaseLog की तरह लगता है में से एक कभी बढ़ती संग्रह.
के दूसरे भाग का नियम है कि कहते हैं, "यह एक अलग समग्र" भी सही नहीं है. आप नहीं बनाने के लिए समुच्चय, क्योंकि आप की जरूरत करने के लिए कुछ डेटा स्टोर और इसे में फिट नहीं है एक मौजूदा कुल. तुम बनाने के लिए समुच्चय, क्योंकि आप की जरूरत है लागू करने के लिए कुछ व्यापार तर्क और इस व्यवसाय तर्क की आवश्यकता होगी कुछ डेटा है, तो आप दोनों बातें एक साथ में एक समग्र.
तो, हालांकि, आप क्या समझाने के लिए अपने प्रश्न में बातें कर रहे हैं ध्यान में लेने के लिए जब डिजाइनिंग समुच्चय से बचने के लिए तकनीकी समस्याओं, मैं सुझाव है कि आप अपने ध्यान करने के लिए वास्तविक जिम्मेदारियों के कुल.
में अपने उदाहरण के लिए, क्या कर रहे हैं की जिम्मेदारियों SnackMachine? क्या यह सच में की जरूरत है (पूर्ण) की सूची PurchaseLogs? क्या संचालन होगा SnackMachine का पर्दाफाश? चलो का कहना है कि यह दिखाता है की खरीदउत्पाद की(productId) और LoadProduct(productId, मात्रा). निष्पादित करने के लिए अपने व्यापार के तर्क, इस कुल की आवश्यकता होगी उत्पादों की एक सूची और गिनती रखने के अपने मात्रा में उपलब्ध है, लेकिन यह नहीं होगा की जरूरत स्टोर करने के लिए खरीद लॉग इन करें. इसके बजाय, हर खरीद, यह हो सकता है एक घटना प्रकाशित ProductPurchased(SnackMachineId, ProductId, दिनांक, AvailableQuantity). तो बाहरी सिस्टम सदस्यता ले सकता है के लिए इस घटना है. एक ग्राहक रजिस्टर सकता PurchaseLog रिपोर्टिंग उद्देश्यों के लिए है और एक अन्य ग्राहक भेज सकता है कोई पुनः लोड करने के लिए मशीन जब शेयर कम था की तुलना में एक्स