2014-09-22 1 views
14

मुझे पूरा यकीन नहीं है कि डेटाबेस तक पहुंचने के लिए कलाकारों का उपयोग कैसे किया जा सकता है। अक्का के लिए प्रलेखन और किताबों में इस विषय को छोड़ा जाना प्रतीत होता है।डेटाबेस एक्सेस और डीडीडी के लिए कलाकारों का उपयोग कैसे करें?

एक समाधान एक स्टेटलेस अभिनेता में एक लपेटा डीएओ हो सकता है। उदाहरण के लिए डेटाबेस में प्रत्येक तालिका (या डोमेन ऑब्जेक्ट प्रकार या कुल प्रकार) के लिए कोई एक अभिनेता बना सकता है जो सभी सीआरयूडी संचालन के लिए ज़िम्मेदार है। इसकी एक भिन्नता कमांड और प्रश्नों को अलग कर सकती है। उदाहरण के लिए प्रत्येक डेटा प्रकार 1 कमांड अभिनेता (समवर्ती के लिए) और 10 क्वेरी कलाकार (समांतरता के लिए) के लिए।

डेटाबेस में एक पंक्ति (या डोमेन ऑब्जेक्ट उदाहरण या कुल उदाहरण) का प्रतिनिधित्व करने वाले राज्यव्यापी कलाकार बनाने के लिए एक अन्य दृष्टिकोण हो सकता है। बेशक डेटाबेस इस मामले में एक ईवेंट स्टोर (जैसे एक्क्का दृढ़ता मॉड्यूल) भी हो सकता है, जिसके परिणामस्वरूप डेटाबेस, दस्तावेज़ स्टोर या कैश के अंततः लगातार प्रक्षेपण होता है। यह यहां प्रासंगिक नहीं है। यह दृष्टिकोण वास्तव में सभी लाभों और समस्याओं के साथ स्मृति कैश में एक कार्यान्वयन है। कुछ समय बाद अभिनेताओं को स्मृति से बाहर नहीं निकलने के लिए नष्ट करने की रणनीति होनी चाहिए।


मैं DDD के लिए मेरे सवाल का विस्तार होगा:

मान लें, मैं अक्का अभिनेताओं के साथ एक DDD आवेदन विकसित करना चाहते हैं। चलो कमांड भाग पर ध्यान केंद्रित करते हैं। मेरी राय में इसे इस तरह कार्यान्वित किया जाना चाहिए: प्रत्येक बाध्य संदर्भ के लिए एक बंदरगाह अभिनेता होगा, उदा। स्प्रे आरईएसटी एपीआई, जो उचित डोमेन सेवा अभिनेता को संदेश भेजती है। यह सेवा अभिनेता एक या अधिक डोमेन मॉडल समेकन के लिए एक व्यावसायिक कार्य का समन्वय करता है। प्रत्येक एकल एक स्टेटस अभिनेता है जिसे डेटाबेस से सेवा अभिनेता द्वारा बहाल किया जाता है (या नए डेटा पर बनाया जाता है)। सेवा अभिनेता सभी शामिल कुल कलाकारों को संदेश भेजता/भेजता है। प्राप्त डोमेन मॉडल अभिनेता अपने राज्य + संदेश पर व्यावसायिक सत्यापन करेंगे और फिर वे डेटाबेस में अपने परिवर्तन लिखेंगे, उदा। Slick डीएओ। सेवा अभिनेता को done वापस भेजने के बाद वे बंद हो जाते हैं। जब सभी समेकित अभिनेता done संदेश समाप्त हो जाते हैं तो संदेश संदेश के प्रेषक को वापस भेज दिया जाता है। एक भिन्नता राज्य के डोमेन मॉडल अभिनेताओं को तुरंत नहीं रोक सकती है, लेकिन एक समय के बाद, 3 मिनट कहें।

क्या यह अक्का के साथ डीडीडी के लिए एक वैध उपयोग पैटर्न है?

+0

मुझे समझ में नहीं आता कि यह करीबी वोट क्यों प्राप्त करता है। मुझे हमेशा अभिनेता मॉडल प्लेटफ़ॉर्म में एक आलसी/अच्छी तरह से प्रलेखित विषय होने के लिए डेटा पहुंच भी नहीं मिली है। मुझे लगता है (लेकिन परीक्षण नहीं किया है) कि एक इवेंट सोर्सिंग दृष्टिकोण अभिनेता के संदेशों के साथ अच्छी तरह से मिश्रण होगा क्योंकि अभिनेता संदेश अपरिवर्तनीय हैं। एक कुल दुनिया को एक संदेश भेजेगा (यानी, एक प्रेषण अभिनेता) जिसमें उसका नया राज्य होगा। फिर एक स्थिरता अभिनेता इस नए राज्य को इवेंट स्टोर में जोड़ने के लिए ज़िम्मेदार होगा। अन्य अभिनेता उस संदेश के आधार पर विज्ञापन के आधार पर कार्य कर सकते हैं। – guillaume31

+1

इवेंट सोर्सिंग वास्तव में अक्का में पहले से ही एक बिल्ड-इन सुविधा है। मैंने अभी तक इसका परीक्षण नहीं किया है क्योंकि मैं अक्का के लिए नया हूं और यह मेरे लिए एक जटिलता बूस्टर है। Http://doc.akka.io/docs/akka/snapshot/scala/persistence देखें।एचटीएमएल – Sebastian

+2

मेरे भविष्य में मुझे: पुस्तक को पढ़ने के लिए याद रखें * अभिनेता मॉडल के साथ प्रतिक्रियाशील उद्यम: स्कैला और अक्का * के लिए आवेदन और एकीकरण पैटर्न ** वॉन वर्नॉन ** वसंत 2015 [अमेज़ॅन] (http://www.amazon.co .uk/डीपी/0133846830 /) – Sebastian

उत्तर

4

आमतौर पर डीबी रीडिंग ऑपरेशंस (सीआरयूडी) किसी भी अभिनेता द्वारा सीधे किया जा सकता है। ज्यादातर मामलों में कोई विशेष हैंडलिंग करने की आवश्यकता नहीं है। भार को संतुलित करने के लिए बस एक साधारण राउंड-रॉबिन।

अद्यतन संचालन (सीआरयूडी) के लिए, उन्हें गैर अंतरंग डोमेन/शर्ड्स में विभाजित किया जा सकता है। उदाहरण के लिए, एक ही खाते के साथ सभी संचालन को एक अभिनेता द्वारा अधिमानतः संसाधित किया जाना चाहिए। किसी के पास एन लगभग स्वतंत्र प्रसंस्करण अभिनेता और राउटर हो सकता है जो उदाहरण के लिए खाता.hashCode% N के आधार पर उनमें से एक को आदेश देता है। इस प्रकार संचालन कलाकारों के बीच समान रूप से समान रूप से वितरित किए जाएंगे और प्रत्येक खाते को अनुक्रमिक रूप से संसाधित किया जाएगा।

पीएस स्काइक अक्का अनुप्रयोगों के लिए एक मूल डीबी लाइब्रेरी प्रतीत होता है।

+1

आप एक कमांड-अभिनेता प्रति डोमेन या शर्ड बनाने के लिए कहते हैं? लेकिन यह अभिनेता क्या करता है? क्या यह अभिनेता सभी संस्थाओं के लिए ज़िम्मेदार है और डेटाबेस अपडेट ऑपरेशन कर रहा है? या यह अकेले उत्तरदायित्व सिद्धांत के लिए अन्य अभिनेताओं के लिए गेटवे अभिनेता होगा? यदि दूसरा, तो मेरा प्रश्न अभी भी वही रहता है: क्या दूसरा (पदानुक्रम में गहरा) अभिनेता स्टेटलेस डीएओ (लेनदेन स्क्रिप्ट) अभिनेता या राज्यव्यापी "सक्रिय रिकॉर्ड" अभिनेता होंगे। प्रत्येक विशिष्ट इकाई या कुल के लिए एक? – Sebastian

+0

(1) एक प्रति-शर्ड अभिनेता इकाइयों के एक सबसेट के साथ संचालन को क्रमबद्ध करता है जिससे संदेशों को पुन: व्यवस्थित करने की संभावना कम हो जाती है। (विभिन्न कलाकारों द्वारा संभाले गए सबसेट बेहतर नहीं हैं।) (2) अभिनेता किसी भी प्रकार की संस्थाओं को संभालने के लिए ज़िम्मेदार है, (हालांकि, अगर किसी चीज की कुंजी में इकाई प्रकार होता है तो अलग-अलग कलाकारों के बीच संस्थाएं वितरित कर सकती हैं)। (3) वास्तविक डेटा पहुंच के लिए स्टेटलेस डीएओ को प्राथमिकता दी जाती है और इसे उसी अभिनेता द्वारा सुरक्षित रूप से किया जा सकता है या बच्चों को सौंप दिया जा सकता है। –

+0

हाँ, thanx! मैं इस तरह से सीआरयूडी (प्रति-शर्ड या डोमेन अभिनेता) लागू करूंगा, लेकिन स्टेटलेस बच्चों के कलाकारों के साथ समानांतर में लेन-देन को छेड़छाड़ नहीं करना और व्यापार तर्क को छोटे हिस्सों में विभाजित करना (एक आविष्कार के साथ उर्फ ​​योग)। – Sebastian

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