वितरित डेटा प्रवाह
वितरित डेटा प्रवाह (वितरित प्रवाह के रूप में भी संक्षिप्त) एक वितरित अनुप्रयोग या प्रोटोकॉल में परिघटनाओं के एक समुच्चय को संदर्भित करता है।
वितरित डेटा प्रवाह जावा (प्रोग्रामिंग भाषा) जैसी प्रोग्रामिंग भाषाओं में चर (प्रोग्रामिंग) या मैथड (विधि) प्राचल (कंप्यूटर विज्ञान) के अनुरूप एक उद्देश्य की पूर्ति करता है, जिसमे वे उस स्थिति का प्रतिनिधित्व कर सकते हैं जो सॉफ़्टवेयर की एक परत द्वारा संग्रहीत या संप्रेषित है। चर या पैरामीटर के विपरीत, जो एकल स्थान के स्थिति की इकाई का प्रतिनिधित्व करते हैं, वितरित प्रवाह गतिशील होते हैं; वे एक साथ एक ही समय में नेटवर्क के भीतर अनेक स्थानों पर उपस्थित होते हैं। उसी प्रकार से, वितरित प्रवाह वितरित प्रणालियों के कुछ वर्गों के संकेतार्थविज्ञान और आंतरिक कार्य को प्रतिरूपण (मॉडलिंग) करने का अधिक प्राकृतिक तरीका है। विशेष रूप से, वितरित प्रोटोकॉल के भागों के मध्य उच्च-स्तरीय तार्किक संबंधों को व्यक्त करने के लिए वितरित डेटा प्रवाह संक्षेपण का उपयोग एक सुविधाजनक तरीके के रूप में किया गया है।[1][2][3]
अनौपचारिक गुणधर्म
वितरित डेटा प्रवाह निम्नलिखित अनौपचारिक गुणधर्मों को संतुष्ट करता है।
- अतुल्यकालिक, गैर-अवरुद्ध और एकदिशिक। प्रत्येक परिघटना गैर-अवरुद्ध, एकदिशिक, अतुल्यकालिक विधि उत्क्रियण या दो परतों या सॉफ़्टवेयर घटकों के मध्य पारित होने वाले अन्य प्रकार के स्पष्ट या अस्पष्ट संदेश के एक उदाहरण का प्रतिनिधित्व करती है। उदाहरण के लिए, प्रत्येक घटना एक अंतर्निहित बहुस्त्र्पीय प्रोटोकॉल के लिए एक एप्लीकेशन परत द्वारा निर्गत किए गए पैकेट को प्रसारण करने के लिए एक अनुरोध का प्रतिनिधित्व कर सकती है। परिघटनाएं एकदिशिक और अतुल्यकालिक होना महत्वपूर्ण हैं। सामान्यतः परिणाम देने योग्य विधियों के उत्क्रियण को दो पृथक प्रवाहों के रूप में दर्शाया जाएगा: एक प्रवाह अनुरोधों तथा द्वितीय प्रवाह प्रतिक्रियाओं का प्रतिनिधित्व करता है।
- सजातीय, एकदिशीय और समरूप। वितरित प्रवाह में सभी परिघटनाएं समान कार्यात्मक और तार्किक उद्देश्य की पूर्ति करती हैं और एक दूसरे से संबंधित हैं; सामान्यतः हमें आवश्यकता होती है कि वे समान कार्यात्मक परत या समान घटकों के उदाहरणों के मध्य किन्तु संभवतः कंप्यूटर नेटवर्क के भीतर विभिन्न नोड्स पर, मैथड कॉल या संदेश विनिमय का प्रतिनिधित्व करें। इसके अतिरिक्त, सभी परिघटनाओं को समान दिशा में प्रवाहित होना चाहिए (अर्थात, एक प्रकार की परत या घटक सदैव उत्पादन करता है तथा द्वितीय सदैव परिघटनाओं का उपभोग करता है) और एक ही प्रकार का प्रदायभार (पेलोड) प्रेरित करता है। उदाहरण के लिए, परिघटनाओं का एक समुच्चय जिसमें समान बहुस्त्र्पीय प्रोटोकॉल के लिए समान एप्लिकेशन परत द्वारा निर्गत किए गए सभी बहुस्त्र्पीय अनुरोध सम्मिलित हैं जो कि एक वितरित प्रवाह है। दूसरी ओर, परिघटनाओं का एक समुच्चय जिसमें विभिन्न अनुप्रयोगों द्वारा विभिन्न बहुस्त्र्पीय प्रोटोकॉल के लिए किए गए बहुस्त्र्पीय अनुरोध सम्मिलित हैं, उन्हें वितरित प्रवाह नहीं माना जाएगा तथा न ही उन परिघटनाओं के समुच्चय होंगे जो बहुस्त्र्पीय अनुरोधों के साथ आभारोक्ति और त्रुटि सूचनाओं का प्रतिनिधित्व करते हैं।
- समवर्ती, निरंतर और वितरित। सामान्यतः प्रवाह में वे सभी घटनाएं सम्मिलित होती हैं जो सॉफ़्टवेयर की दो परतों के मध्य अलग-अलग स्थानों पर और समय की एक सीमित या अनंत अवधि में प्रवाहित होती हैं। इस प्रकार एक वितरित प्रवाह में सामान्य घटनाओं को स्थान (वे अलग-अलग नोड्स पर होते हैं) और समय (वे अलग-अलग समय पर होते हैं) दोनों में वितरित किया जाता है। उदाहरण के लिए, बहुस्त्र्पीय अनुरोधों के प्रवाह में विभिन्न नोड्स पर दिए गए एप्लिकेशन परत के उदाहरणों द्वारा किए गए ऐसे सभी अनुरोध सम्मिलित होंगे; सामान्यतः इस प्रकार के प्रवाह में वे परिघटनाएँ सम्मिलित होंगी जो दिए गए बहुस्त्र्पीय प्रोटोकॉल में सहयोगी सभी नोड्स पर घटित होती हैं। वे प्रवाह जिनमें सभी परिघटनाएँ समान नोड पर घटित होती हैं उन्हें अपह्रासित माना जाएगा।
औपचारिक प्रतिनिधित्व
औपचारिक रूप से, प्रत्येक परिघटना को वितरित प्रवाह में (x, t, k, v) रूप के चौगुने के रूप में दर्शाते हैं, जहाँ x स्थान (उदाहरण के लिए, भौतिक नोड का नेटवर्क पता) है जिस पर परिघटना होती है, t वह समय है जिस पर ऐसा घटित होता है, k एक संस्करण या विशेष घटना की पहचान करने वाली एक अनुक्रम संख्या और v एक मान है जो परिघटना पेलोड का प्रतिनिधित्व करता है (उदाहरण के लिए, मैथड कॉल में पारित सभी तर्क)। प्रत्येक वितरित प्रवाह ऐसे चतुष्कोणों का एक (संभवतः अनंत) समुच्चय है जो निम्नलिखित तीन औपचारिक गुणधर्मों को संतुष्ट करता है।
- समय t में किसी भी परिमित बिंदु के लिए प्रवाह में अनेक घटनाएँ हो सकती हैं जो समय t या उससे पूर्व घटित होती हैं। इसका तात्पर्य यह है कि उस प्रवाह में सदैव उस बिंदु को इंगित किया जा सकता है जिस पर प्रवाह उत्पन्न हुआ था। प्रवाह स्वयं अनंत हो सकता है; ऐसी स्थिति में किसी भी समय,अंततः एक नई परिघटना प्रवाह में दिखाई देगी।
- एक ही स्थान पर घटित परिघटना e_1 और e_2 के किसी भी युग्म के लिए, यदि e_1 e_2 से पूर्व समय में होता है, तो e_1 में संस्करण संख्या भी e_2 से लघुतर होनी चाहिए।
- एक ही स्थान पर घटित परिघटना e_1 और e_2 के किसी भी युग्म के लिए, यदि दो परिघटनाओं में समान संस्करण संख्याएँ हैं, तो उनके मान भी समान होने चाहिए।
उपरोक्त के अतिरिक्त, प्रवाह में कई अतिरिक्त गुणधर्म हो सकते हैं।
- 'संगतता'। एक वितरित प्रवाह को सुसंगत कहा जाता है यदि समान संस्करण वाली परिघटनाओं का सदैव मान समान होता है, यद्यपि वे विभिन्न स्थानों पर घटित हों। सुसंगत प्रवाह विशिष्ट रूप से प्रोटोकॉल या एप्लिकेशन द्वारा किए गए विभिन्न प्रकार के वैश्विक निर्णयों का प्रतिनिधित्व करते हैं।
- 'दिष्टता'। वितरित प्रवाह को दुर्बलतः एकदिष्ट कहा जाता है यदि एक ही स्थान पर घटित परिघटना e_1 और e_2 के किसी भी युग्म के लिए, यदि e_1 का e_2 से लघुतर संस्करण है, तो e_1 को e_2 से अधिक छोटा मान रखना चाहिए। वितरित प्रवाह को प्रबल एकदिष्ट (या केवल एकदिष्ट) कहा जाता है यदि यह विभिन्न स्थानों पर घटित परिघटनाओं e_1 और e_2 के युग्म के लिए भी सत्य है। प्रबल एकदिष्ट प्रवाह सदैव सुसंगत होते हैं। वे विशिष्ट रूप से विभिन्न प्रकार के अपरिवर्तनीय निर्णयों का प्रतिनिधित्व करते हैं। दुर्बलतः एकदिष्ट प्रवाह सुसंगत हो सकता है या नहीं भी हो सकता है।
संदर्भ
- ↑ Ostrowski, K., Birman, K., Dolev, D., and Sakoda, C. (2009). "Implementing Reliable Event Streams in Large Systems via Distributed Data Flows and Recursive Delegation", 3rd ACM International Conference on Distributed Event-Based Systems (DEBS 2009), Nashville, TN, USA, July 6–9, 2009, http://www.cs.cornell.edu/~krzys/krzys_debs2009.pdf Archived 2011-06-06 at the Wayback Machine
- ↑ Ostrowski, K., Birman, K., and Dolev, D. (2009). "Distributed Data Flow Language for Multi-Party Protocols", 5th ACM SIGOPS Workshop on Programming Languages and Operating Systems (PLOS 2009), Big Sky, MT, USA. October 11, 2009, http://www.cs.cornell.edu/~krzys/krzys_plos2009.pdf Archived 2011-06-06 at the Wayback Machine
- ↑ Ostrowski, K., Birman, K., Dolev, D. (2009). "Programming Live Distributed Objects with Distributed Data Flows", Submitted to the International Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA 2009), http://www.cs.cornell.edu/~krzys/krzys_oopsla2009.pdf Archived 2009-08-16 at the Wayback Machine