वितरित डेटा प्रवाह

वितरित डेटा प्रवाह (वितरित प्रवाह के रूप में भी संक्षिप्त) एक वितरित अनुप्रयोग या प्रोटोकॉल में परिघटनाओं के एक समुच्चय को संदर्भित करता है।

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

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

औपचारिक प्रतिनिधित्व
औपचारिक रूप से, प्रत्येक परिघटना को वितरित प्रवाह में (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 के युग्म के लिए भी सत्य है। प्रबल एकदिष्ट प्रवाह सदैव सुसंगत होते हैं। वे विशिष्ट रूप से विभिन्न प्रकार के अपरिवर्तनीय निर्णयों का प्रतिनिधित्व करते हैं। दुर्बलतः एकदिष्ट प्रवाह सुसंगत हो सकता है या नहीं भी हो सकता है।