ट्रांजेक्शनल डेटाबेस लंबे समय से एप्लिकेशन डिज़ाइन का सबसे महत्वपूर्ण घटक रहा है। क्यों? क्योंकि एक स्थिर डेटाबेस आम तौर पर एक अव्यवस्थित, वितरित दुनिया में शुद्धता के लिए अंतिम प्रवर्तन बिंदु होता है। उनके बिना हम अधिक भुगतान करेंगे और कम शुल्क लेंगे। हम हवाई अड्डे से घर जाने की कोशिश में सवारियों को खो देंगे, और हम अपनी शॉपिंग कार्ट में आइटम खो देंगे। हमारे ऑनलाइन खाते खो जाएंगे, डुप्लिकेट हो जाएंगे, या दूषित हो जाएंगे और निष्क्रिय हो जाएंगे।
वास्तव में, ट्रांसेक्शनल डेटाबेस (आम तौर पर ओएलटीपी कहा जाता है - ऑनलाइन लेनदेन प्रसंस्करण के लिए संक्षिप्त रूप - डेटाबेस) एप्लिकेशन विकास के लिए इतना केंद्रीय रहा है कि, समय के साथ, इसने अधिक से अधिक एप्लिकेशन कार्यक्षमता का उपभोग किया है। हालाँकि, माइक्रोसर्विसेज और अन्य आधुनिक एप्लिकेशन आर्किटेक्चर ने एप्लिकेशन डिज़ाइन में नई जटिलताएँ पेश कीं: डेवलपर्स को विभिन्न सेवाओं में डेटा प्रबंधित करने और उनके बीच स्थिरता सुनिश्चित करने की आवश्यकता थी, जिसने उन्हें घर में जटिल डेटा सिंक्रनाइज़ेशन और प्रसंस्करण तंत्र बनाने के लिए मजबूर किया।
और इसलिए, एक उद्योग के रूप में, हम बढ़ती जागरूकता देख रहे हैं कि पारंपरिक मॉडल के बाहर लेनदेन संबंधी गारंटी की आवश्यकता है। हम देख रहे हैं ऐसी प्रणालियों का उद्भव जो डेटाबेस से परे, वितरित ऐप्स में भी मजबूत लेनदेन संबंधी गारंटी प्रदान करते हैं.
हम पिछले कुछ वर्षों से इन समाधानों पर नज़र रख रहे हैं। आम तौर पर, वे स्केलिंग चुनौतियां पैदा किए बिना और एक आधुनिक प्रोग्रामिंग वातावरण प्रदान करते हुए, एक बड़े वितरित ऐप में राज्य के लेनदेन प्रबंधन की अनुमति देने का प्रयास करते हैं।
हम पाते हैं कि ये समाधान मोटे तौर पर दो श्रेणियों में विभाजित हैं। एक श्रेणी है वर्कफ़्लो ऑर्केस्ट्रेशन. यह मूल रूप से गारंटी देता है कि विफलता की स्थिति में भी, कोड का एक ब्लॉक पूरा होने तक चलेगा। इसलिए इसका उपयोग वितरित राज्य मशीन को बिना गड़बड़ किए नियतात्मक रूप से प्रबंधित करने के उद्देश्य से किया जा सकता है। दूसरी श्रेणी है डेटाबेस + वर्कफ़्लो, जो पारंपरिक ओएलटीपी डेटाबेस डिज़ाइन का विस्तार करता है, जो समान उद्देश्य के लिए मनमाने कोड के निष्पादन की अनुमति देता है।
यह अभी भी एक बहुत ही प्रारंभिक क्षेत्र है, और नामकरण, प्रत्येक उपकरण का उपयोग व्यवहार में कैसे किया जाता है, और उनका उपयोग किसे करना चाहिए, को लेकर बहुत भ्रम है। बेहतर समझ प्राप्त करने में सहायता के लिए, हमने प्रमुख इंजीनियरिंग संगठनों के चिकित्सकों से उनके लेनदेन संबंधी स्टैक के बारे में पूछा और वे लेनदेन संबंधी कार्यभार के लिए तीन प्रमुख अवधारणाओं के बारे में कैसे सोच रहे हैं: एप्लिकेशन स्थिति, व्यावसायिक तर्क और व्यावसायिक डेटा।
हालाँकि, इन नए ढेरों की जांच करने से पहले, यह समझने में सहायता के लिए एक त्वरित अर्ध-तकनीकी विषयांतर है कि हम यहां तक कैसे पहुंचे।
लेन-देन, गारंटी और आधुनिक ऐप्स
इसका सबसे मोटा संस्करण यह है: कार्यों का एक सेट है - लेन-देन - जिन्हें आप या तो पूरा करना चाहते हैं, या कुछ भी नहीं। बीच में कुछ भी (इसे आंशिक रूप से करने पर) भ्रष्ट स्थिति में समाप्त हो जाएगा। इसकी गारंटी देना कठिन है कुछ भी एक वितरित प्रणाली में, लेकिन डेटाबेस लेनदेन के साथ इसे अच्छी तरह से करते हैं। इसलिए, कई प्रणालियों में गारंटी को संभालने का सबसे आसान तरीका सिर्फ ज्यादातर चीजों का लेनदेन करना है और डेटाबेस को उन्हें संभालने देना है।
आधुनिक ऐप्स बड़े वितरित सिस्टम हैं जिनमें बहुत सारे उपयोगकर्ता बहुत सारी चीज़ें करते हैं। इसलिए ऐप की स्थिति को सुसंगत बनाए रखना (जैसे चेक-आउट प्रवाह में विभिन्न उपयोगकर्ताओं को ट्रैक करना) एक वितरित लेनदेन समस्या में बदल जाता है। पारंपरिक मोनोलिथिक आर्किटेक्चर में, ओएलटीपी डेटाबेस के साथ एसक्यूएल का उपयोग करके लेनदेन का प्रबंधन करना कुछ हद तक प्रभावी था। लेकिन उच्च-स्तरीय एपीआई (उदाहरण के लिए आरईएसटी या जीआरपीसी) के माध्यम से बातचीत करने वाली माइक्रोसर्विसेज की नई, जटिल दुनिया में, लेन-देन की ज़रूरतें प्रकृति में वितरित हो गई हैं।
हालाँकि, माइक्रोसर्विसेज की यात्रा पर जाने वाली कई कंपनियों ने डेटाबेस से परे मजबूत लेनदेन गारंटी देने के लिए बहुत कुछ नहीं किया है। और, व्यवहार में, यही है ज्यादातर हमेशा ठीक है। लेकिन जैसे-जैसे अनुप्रयोगों का दायरा बढ़ता है, डेटा में विसंगतियां बढ़ती हैं, साथ ही व्यावसायिक डेटा में परिणामी गड़बड़ी और असमंजसित त्रुटियां भी बढ़ती हैं। जो, निस्संदेह, बेहद समस्याग्रस्त हो सकता है। यह एप्लिकेशन डेवलपर्स को विफलता परिदृश्यों और संघर्ष समाधान रणनीतियों की एक विस्तृत श्रृंखला से निपटने के लिए मजबूर करता है, और विभिन्न वास्तुशिल्प पैटर्न के माध्यम से अपनी रणनीतियों के साथ आकर राज्य की स्थिरता सुनिश्चित करता है।
परिभाषाएँव्यावसायिक डेटा ("डेटा") दृढ़ता और प्रसंस्करण के लिए पारंपरिक रूप से ओएलटीपी डेटाबेस में संग्रहीत व्यवसाय-महत्वपूर्ण डेटा को संदर्भित करता है (उदाहरण के लिए उपयोगकर्ता प्रोफ़ाइल जानकारी जैसे नाम, पता, क्रेडिट स्कोर इत्यादि)। आवेदन स्थिति सिस्टम की वर्तमान स्थिति को संदर्भित करता है; एप्लिकेशन की स्थिति डेटा स्टोरेज सिस्टम में संग्रहीत मूल्य द्वारा निर्धारित की जाती है और प्रोग्राम का निष्पादन एक सीमित राज्य मशीन में किस चरण पर होता है (उदाहरण के लिए ऑर्डर की स्थिति, जैसे "ऑर्डर प्राप्त हुआ," "इन्वेंट्री की जांच की गई," "क्रेडिट की जांच की गई) ," "भेज दिया गया," "लौटा दिया गया")। व्यापार का तर्क प्रोग्राम के उस हिस्से को संदर्भित करता है जो निष्पादन विवरण के बजाय एप्लिकेशन वास्तव में कैसे काम करता है या यह क्या करता है, से संबंधित है (उदाहरण के लिए "यदि उपयोगकर्ता आय> $ 100K और क्रेडिट_स्कोर> 650 ⇒ बंधक_अनुमोदित = TRUE")। |
इस चर्चा के प्रयोजनों के लिए, एप्लिकेशन स्थिति और व्यावसायिक डेटा में अंतर करना महत्वपूर्ण है। उदाहरण के लिए, यह जानना कि ग्राहक ने अपना क्रेडिट कार्ड दर्ज किया है लेकिन चेक आउट नहीं किया है, आवेदन स्थिति है। क्रेडिट कार्ड का डेटा और एप्लिकेशन कार्ट में आइटम व्यावसायिक डेटा हैं।
एक सामान्य प्रवाह में, एक अनुरोध फ्रंट-एंड से आता है, प्रमाणित किया जाता है, और फिर एपीआई गेटवे या ग्राफक्यूएल के माध्यम से संबंधित एंडपॉइंट पर भेजा जाता है।
उस एकल एपीआई एंडपॉइंट को अब अंतिम ग्राहक तक व्यापार लेनदेन पहुंचाने के लिए दसियों या सैकड़ों माइक्रोसर्विसेज को व्यवस्थित करना होगा। यह वह जगह है जहां डेवलपर्स आम तौर पर सबकुछ बिजनेस लॉजिक ब्लॉब्स में डालते हैं, और फिर डेटाबेस में डेटा प्राप्त करने के लिए कतार, कैश और हाथ-कोडित रिट्री तंत्र के संयोजन का उपयोग करते हैं - उम्मीद है कि पूर्ण लेनदेन के रूप में प्रतिबद्ध है।
जैसे-जैसे एप्लिकेशन का पैमाना बढ़ता है, वैसे-वैसे कतारों और कैशों को प्रबंधित करने की जटिलता भी बढ़ती है, साथ ही समस्या आने पर समाधान तर्क में तेज किनारों की संख्या भी बढ़ती है।
वर्कफ़्लो-केंद्रित और डेटाबेस-केंद्रित लेनदेन संबंधी स्टैक का उदय
ठीक है, इसलिए लेनदेन महत्वपूर्ण हैं। डेटाबेस पर LAMP पैमाने के लिए पर्याप्त नहीं था। और कतारों और पुनः प्रयास तर्क का एक विशाल हेयरबॉल बहुत भंगुर है। इससे निपटने के लिए, हमने पिछले कुछ वर्षों में नए समाधानों का उदय देखा है जो लेन-देन संबंधी तर्क में विवेक वापस लाते हैं। उन्हें मोटे तौर पर वर्कफ़्लो-केंद्रित दृष्टिकोण या डेटाबेस-केंद्रित दृष्टिकोण के रूप में वर्गीकृत किया जा सकता है।
आज तक, वर्कफ़्लो इंजन मुख्य रूप से व्यावसायिक डेटा के बजाय एप्लिकेशन स्थिति पर काम करते हैं, और पारंपरिक डेटाबेस के साथ एकीकृत करते समय अक्सर कुछ जटिलता की आवश्यकता होती है। डेटाबेस-केंद्रित दृष्टिकोण व्यावसायिक डेटा के साथ-साथ एप्लिकेशन लॉजिक भी जोड़ते हैं, लेकिन अभी तक वर्कफ़्लो इंजन के समान कोड-निष्पादन परिष्कार नहीं है।
नीचे दिया गया चित्र एक मोटा स्केच प्रदान करता है कि जावास्क्रिप्ट/टाइपस्क्रिप्ट एप्लिकेशन में वर्कफ़्लो- और/या डेटाबेस-केंद्रित दृष्टिकोण का उपयोग कैसे किया जाता है, यह मानते हुए कि दोनों उपयोग में हैं। हालांकि वे आज इस वास्तुकला के विशिष्ट टुकड़े हैं, हमने एक प्रवृत्ति के शुरुआती संकेत देखे हैं जहां डेटाबेस वर्कफ़्लो सुविधाओं को शामिल कर रहे हैं और वर्कफ़्लो टिकाऊ भंडारण को अपनाना शुरू कर रहे हैं। क्षमताओं का यह विलय इंगित करता है कि आधुनिक वास्तुकला में दोनों दृष्टिकोणों के बीच की रेखाएँ धुंधली हो रही हैं और कम विशिष्ट होती जा रही हैं।
वर्कफ़्लो-केंद्रित दृष्टिकोण विस्तार से
वर्कफ़्लो केवल कोड के ब्लॉक होते हैं जो घटनाओं या टाइमर के आधार पर निष्पादित होते हैं, जो एप्लिकेशन स्टेट मशीन को विकसित करते हैं। लेन-देन संबंधी वर्कफ़्लो मजबूत गारंटी के साथ कोड निष्पादन सुनिश्चित करता है, एप्लिकेशन में आंशिक या अनपेक्षित स्थितियों को रोकता है। डेवलपर्स तर्क लिखते हैं, और वर्कफ़्लो इंजन लेनदेन, उत्परिवर्तन और निष्क्रियता को संभालता है। अलग-अलग वर्कफ़्लो इंजन डेवलपर्स के सामने लेन-देन का कितना विवरण उजागर करते हैं, इसके संदर्भ में अलग-अलग ट्रेड-ऑफ़ करते हैं।
उदाहरण के तौर पर, ऑर्केस (कंडक्टर) पर चल रहे चेक-आउट वर्कफ़्लो का एक दृश्य प्रतिनिधित्व नीचे दिया गया है:
वहां दो कठिन दृष्टिकोण जिससे वर्कफ़्लो इंजन कर्षण प्राप्त करते हैं। एक में (Temporal.io द्वारा टाइप किया गया), डेवलपर्स मानक बैक-एंड प्रोग्रामिंग भाषाओं (जैसे गो या जावा) का उपयोग करके कोड लिखते हैं और सिस्टम यह सुनिश्चित करेगा कि कोड पूरा होने तक चलता रहे, विफलता के दौरान भी। इस मॉडल में, प्रोग्राम-कॉल स्टैक को बनाए रखा जाता है, भले ही कोड ब्लॉकिंग कॉल के पूरा होने की प्रतीक्षा कर रहा हो (उदाहरण के लिए पढ़ना या लिखना)। ऐसा करने के लिए, विफलताओं के दौरान आंशिक कोड निष्पादन को रोकने के लिए भाषा रनटाइम को संशोधित किया जाता है। इस दृष्टिकोण का लाभ यह है कि डेवलपर्स परिचित भाषाओं में लिख सकते हैं और बनाए गए कॉल स्टैक के साथ आसानी से डीबग कर सकते हैं। हम देखते हैं कि यह दृष्टिकोण बड़े, परिष्कृत ऐप्स से निपटने वाली बैक-एंड टीमों के बीच सबसे लोकप्रिय है।
नकारात्मक पक्ष यह है कि एप्लिकेशन डेवलपर्स के लिए उपयोगी और सुरक्षित इंटरफेस को उजागर करने के लिए अक्सर बहुत सारे एकीकरण कार्य और रैपर कोड की आवश्यकता होती है। एक और नकारात्मक पक्ष यह है कि यह मूल भाषा के बजाय एक कस्टम निष्पादन परत पर निर्भर करता है, और ऐसे किनारे के मामले हैं जहां निष्पादन मूल भाषा रनटाइम से भिन्न होगा। इसलिए, जबकि डेवलपर्स उन भाषाओं का उपयोग कर सकते हैं जिनसे वे परिचित हैं, फिर भी उन्हें यह समझने की आवश्यकता है कि अंतर्निहित सिस्टम कैसे काम करता है।
दूसरा दृष्टिकोण, जो एप्लिकेशन डेवलपर्स (विशेष रूप से टाइपस्क्रिप्ट/जावास्क्रिप्ट) के बीच अधिक लोकप्रिय है, वर्कफ़्लो इंजन के लिए है एसिंक फ़ंक्शंस के ऑर्केस्ट्रेटर के रूप में कार्य करें (उदाहरण के लिए इनजेस्ट, डेफ़र और ट्रिगर)। इस मॉडल में, तृतीय-पक्ष ईवेंट या फ़ंक्शंस को वर्कफ़्लो इंजन पर निर्देशित किया जाता है, जो तब एप्लिकेशन प्रोग्रामर द्वारा पंजीकृत तर्क भेज देगा, जिन्हें किसी अन्य एसिंक फ़ंक्शन पर ब्लॉक करने की आवश्यकता उत्पन्न होने पर नियंत्रण वापस देना होगा। अच्छा पक्ष यह है कि यह किसी प्रोग्राम में एकीकृत करने का कहीं अधिक हल्का तरीका है। यह कोड पर इतनी संरचना भी डालता है कि इस पर काम करने वाली टीम इसे अधिक आसानी से समझ सके। हालाँकि, टूलींग समर्थन के बिना इस दृष्टिकोण को डिबग करना अधिक कठिन हो सकता है, इसलिए डिबगिंग प्लेटफ़ॉर्म-विशिष्ट होती है।
वर्कफ़्लो इंजन विशेष रूप से शक्तिशाली होते हैं क्योंकि वे मौजूदा ऐप्स द्वारा क्रमिक रूप से अपनाने की अनुमति देते हैं। उन्हें न्यूनतम पदचिह्न के साथ कुछ वर्कफ़्लोज़ पर टुकड़ों के आधार पर लागू किया जा सकता है। जैसा कि कहा गया है, वर्कफ़्लो इंजन की दो सबसे बड़ी कमियाँ इस तथ्य से उत्पन्न होती हैं कि वे डेटाबेस में विस्तारित नहीं होते हैं। परिणामस्वरूप, एप्लिकेशन स्थिति और व्यावसायिक डेटा में सत्य का एक भी, पूछताछ योग्य स्रोत नहीं है। साथ ही, लेन-देन संबंधी शब्दार्थ आम तौर पर डेटाबेस शब्दार्थ से भिन्न होते हैं, जिसके लिए एप्लिकेशन डेवलपर्स को किनारे की स्थितियों को संभालने की आवश्यकता होती है।
हालाँकि यह आज आदर्श नहीं है, हम वैचारिक वास्तुकला का वर्णन करना चाहते हैं कि कैसे कई मामलों में वर्कफ़्लो का उपयोग लगातार डेटा स्टोर के रूप में किया जा सकता है:
डेटाबेस-केंद्रित दृष्टिकोण विस्तार से
डेटाबेस-केंद्रित दृष्टिकोण एक डेटाबेस से शुरू होते हैं, लेकिन डेटा प्रबंधन के साथ-साथ वर्कफ़्लो की अनुमति देने के लिए मनमाने कोड निष्पादन का समर्थन करने के लिए इसका विस्तार करते हैं। वे प्रोग्रामर को नियंत्रण देकर ऐसा करते हैं ताकि वे नियमित कोड ब्लॉक के लिए उत्परिवर्तन, लेनदेन और निष्क्रियता पर स्पष्ट निर्णय ले सकें - अनिवार्य रूप से सीधे ओएलटीपी शब्दार्थ को उजागर करके। प्रोग्रामर व्यावसायिक तर्क और व्यावसायिक डेटा को एप्लिकेशन स्थिति से अलग रखने के लिए जिम्मेदार है।
दरअसल, शुद्ध डेटाबेस दृश्य यह है कि एप्लिकेशन स्थिति हमेशा व्यावसायिक डेटा से प्राप्त की जा सकती है। यह आमतौर पर एप्लिकेशन स्थिति को लेनदेन के एक सेट के रूप में संग्रहीत करके किया जाता है जो डेटाबेस में व्यावसायिक डेटा को संशोधित करता है। इसे एक डेटाबेस के रूप में सोचना सबसे आसान है जो ऊपर वर्णित वर्कफ़्लो सिस्टम के समान मजबूत गारंटी के साथ कोड के ब्लॉक निष्पादित कर सकता है।
आंतरिक रूप से, हम इसे कहते हैं एप्लिकेशन लॉजिक ट्रांजेक्शनल प्लेटफ़ॉर्म (एएलटीपी) दृष्टिकोण क्योंकि, अंततः, यह एप्लिकेशन में ओएलटीपी लेनदेन का विस्तार करता है। लेकिन वास्तव में एएलटीपी की विशेषता यह है कि, ग्रीनफील्ड ऐप्स के लिए, यह ऐप डेवलपर्स के लिए सीधे बैक-एंड इंफ्रास्ट्रक्चर को प्रबंधित करने की आवश्यकता को पूरी तरह से समाप्त कर सकता है।
एएलटीपी लेंस से, सबसे अधिक इस्तेमाल किया जाने वाला दृष्टिकोण फायरबेस से शुरू हुआ, जो एक प्रदान करता है पूर्ण-सेवा "बैक-एंड अनुभव," जिसमें ऑथ, डेटा स्टोर, डेटाबेस और बहुत कुछ शामिल है। फायरबेस और सुपाबेस जैसे हालिया प्रवेशकर्ता, ग्रीनफील्ड परियोजनाओं के लिए बहुत लोकप्रिय मंच बने हुए हैं। और जबकि वे अपनी ओएलटीपी जड़ों के प्रति वफादार रहते हैं - और इसलिए लेनदेन संबंधी बैक-एंड फ़ंक्शंस के लिए मनमाने कोड निष्पादन का समर्थन नहीं करते हैं - सुपाबेस पहले से ही वर्कफ़्लो के लिए समर्थन जोड़ना शुरू कर रहा है।
हालांकि, अगली पीढ़ी की ALTP पेशकश कॉन्वेक्स की तरह डेटाबेस के साथ लेनदेन के रूप में मनमाने कोड के निष्पादन की अनुमति देता है। ये पेशकशें एक सामान्य भाषा (उदाहरण के लिए जावास्क्रिप्ट/टाइपस्क्रिप्ट) में पूरी तरह से लेन-देन के अनुरूप कोड लिखने की अनुमति देती हैं, जहां कोड का एक ब्लॉक डेटा को पढ़, लिख और बदल सकता है - एप्लिकेशन स्थिति और व्यावसायिक डेटा दोनों। एक अर्थ में, यह डेवलपर्स को सत्य का एक एकल क्वेरी योग्य स्रोत देता है, और सब्सक्रिप्शन जैसे वर्कफ़्लो प्राइमेटिव्स प्रदान करता है।
एएलटीपी वर्कफ़्लो इंजनों को डेटाबेस से अलग करने की समस्या को हल करता है, लेकिन इसके परिणामस्वरूप, उपयोगकर्ताओं को लाभ प्राप्त करने के लिए मानक ओएलटीपी के बजाय अपने डेटाबेस की पेशकश पर भरोसा करने की आवश्यकता होती है। परिणामस्वरूप, हम मुख्य रूप से टीमों को मौजूदा, जटिल बैकएंड में एकीकृत करने के बजाय, ग्रीनफ़ील्ड ऐप्स के लिए ALTP को अपनाते हुए देखते हैं।
ऊपर दिया गया चित्र उन कई ऑपरेटरों का एक मिश्रण है जिनसे हमने बात की। कुछ लोग केवल वर्कफ़्लो इंजन का उपयोग करेंगे। कुछ लोग केवल डेटाबेस-केंद्रित दृष्टिकोण का उपयोग करेंगे। लेकिन कई लोग दोनों का उपयोग करेंगे - खासकर जब वे वर्कफ़्लो को अपनाना शुरू कर रहे हों। वर्कफ़्लो इंजन के उपयोगकर्ता आज बड़े, जटिल अनुप्रयोगों से निपटने वाली बैक-एंड टीमें हैं, हालांकि हमने कई पूर्ण-स्टैक टीमों को उन्हें अपनाते हुए भी देखा है। बैक-एंड-ए-ए-सर्विस समाधान अधिक एप्लिकेशन-डेवलपर-अनुकूल होते हैं और जब ऐप प्रौद्योगिकी चयन को संचालित करता है तो इसका अधिक उपयोग किया जाता है।
अभिसरण
यह स्पष्ट होता जा रहा है कि वर्कफ़्लो-केंद्रित दृष्टिकोण और डेटाबेस-केंद्रित दृष्टिकोण टकराव के रास्ते पर हैं। इसका प्राथमिक कारण यह है कि जबकि एप्लिकेशन स्थिति और डेटाबेस स्थिति तार्किक रूप से अलग हैं, वे एक-दूसरे पर निर्भर हैं, और एक प्रणाली जो दोनों को कवर नहीं करती है उसे सही करना और डीबग करना जटिल है।
उदाहरण के तौर पर, उपयोगकर्ता की चेकआउट प्रक्रिया के लिए राज्य मशीन को ट्रैक करने के लिए उपयोग किए जा रहे वर्कफ़्लो इंजन पर विचार करें, और वह उपयोगकर्ता कार्ट में एक आइटम जोड़ रहा है। आमतौर पर, वर्कफ़्लो इंजन यह सुनिश्चित करते हैं कि विफलता की स्थिति में भी एक कोड चरण चलेगा। हालाँकि, ऐसे उदाहरण हो सकते हैं जहाँ इंजन को विफलता के दौरान दिए गए चरण को फिर से चलाने की आवश्यकता होती है क्योंकि यह पूरी तरह से निश्चित नहीं है कि चरण पूरी तरह से पूरा हो गया है या नहीं। यदि उस चरण में पारंपरिक डेटाबेस (इस मामले में, कार्ट में आइटम) में व्यावसायिक डेटा लिखना शामिल है और डेटाबेस को डुप्लिकेट पुनः प्रयास के बारे में पता नहीं है, तो यह डुप्लिकेट प्रविष्टि के साथ समाप्त हो जाएगा।
इससे निपटने के दो तरीके हैं. एक तरीका यह है कि समस्या को एप्लिकेशन डेवलपर के पास भेजा जाए, जो यह सुनिश्चित करने के लिए वर्कफ़्लो सिस्टम द्वारा प्रदान किए गए नॉन का उपयोग करेगा कि केवल एक आइटम लिखा गया है। लेकिन यह माना जाता है कि डेवलपर निष्क्रियता को समझता है, जिसे ठीक करना बेहद मुश्किल है, और यह वर्कफ़्लो सिस्टम होने के जादू को बहुत हद तक खत्म कर देता है। दूसरा तरीका वर्कफ़्लो इंजन को ऐसे डेटाबेस से जोड़ना है जो वर्कफ़्लो ट्रांसेक्शनल सिमेंटिक्स से अवगत हो। यह अभी तक घटित नहीं हुआ है, लेकिन यह विश्वास करना कठिन नहीं है कि ऐसा होगा।
दूसरी ओर, डेटाबेस-केंद्रित दृष्टिकोण यह महसूस करते हैं कि सामान्य वर्कफ़्लो एप्लिकेशन डेवलपर्स के लिए वास्तव में उपयोगी है। और इसलिए हम डेटाबेस (जैसे कॉन्वेक्स) देखना शुरू कर रहे हैं - जो पारंपरिक डेटाबेस फ़ंक्शंस जैसे क्वेरीज़, म्यूटेशन, इंडेक्स आदि का समर्थन करते हैं - शेड्यूलिंग और सब्सक्रिप्शन जैसी कार्यक्षमता को लागू करते हैं। ये उन्हें वर्कफ़्लो इंजन के रूप में उपयोग करने की अनुमति देते हैं। यानी, वे मजबूत गारंटी के साथ मनमाने कोड ब्लॉक के निष्पादन की अनुमति देते हैं।
जैसा कि इयान लिविंगस्टोन (जिन्होंने इस टुकड़े पर प्रतिक्रिया प्रदान की) ने कहा, "यह क्लासिक है 'क्या आप एप्लिकेशन लॉजिक को डेटाबेस में लाते हैं, या डेटाबेस को एप्लिकेशन लॉजिक में लाते हैं?' फिर से खेलना... इस बार मोनोलिथ को तोड़कर लाया गया।" दशकों तक यह विरोधाभास रहने के बाद, यह स्पष्ट है कि दोनों मॉडल अल्पावधि में बने रहेंगे। यह बहुत कम स्पष्ट है कि लंबे समय तक यही स्थिति बनी रहेगी।
चार्ली पॉली (डेफर), डैन फैरेल्ली (इनगेस्ट), डेविड खुर्शीद (स्टेटली), इयान लिविंगस्टोन (केप सिक्योरिटी), एनेस अकार (अपस्टैश), जेम्स काउलिंग (कॉनवेक्स), जेमी टर्नर (कॉनवेक्स), पॉल कोप्लेस्टोन (सुपाबेस) को विशेष धन्यवाद ), सैम लैम्बर्ट (प्लैनेटस्केल), टोनी होल्डस्टॉक-ब्राउन (इनगेस्ट), मैट एटकेन (ट्रिगर) इस पोस्ट की समीक्षा करने और प्रतिक्रिया देने के लिए। इसके अतिरिक्त, हमारी मदद करने के लिए बेंजामिन हिंडमैन (रिबूट), फ्रेड्रिक ब्योर्क (ग्राफबेस), ग्लौबर कोस्टा (चिसेलस्ट्राइक), गुइल्यूम सेल्स (लाइवब्लॉक्स), मैक्सिम फतेव (टेम्पोरल), स्टीवन फैबरे (लाइवब्लॉक्स), और वीरेन बरैया (ऑर्केस) को धन्यवाद। अनुसंधान।
* * *
यहां व्यक्त किए गए विचार व्यक्तिगत एएच कैपिटल मैनेजमेंट, एलएलसी ("a16z") कर्मियों के हैं जिन्हें उद्धृत किया गया है और यह a16z या इसके सहयोगियों के विचार नहीं हैं। यहां निहित कुछ जानकारी तृतीय-पक्ष स्रोतों से प्राप्त की गई है, जिसमें a16z द्वारा प्रबंधित निधियों की पोर्टफोलियो कंपनियों से भी शामिल है। जबकि विश्वसनीय माने जाने वाले स्रोतों से लिया गया, a16z ने स्वतंत्र रूप से ऐसी जानकारी को सत्यापित नहीं किया है और किसी भी स्थिति के लिए सूचना की स्थायी सटीकता या इसकी उपयुक्तता के बारे में कोई प्रतिनिधित्व नहीं करता है। इसके अतिरिक्त, इस सामग्री में तृतीय-पक्ष विज्ञापन शामिल हो सकते हैं; a16z ने ऐसे विज्ञापनों की समीक्षा नहीं की है और उनमें निहित किसी भी विज्ञापन सामग्री का समर्थन नहीं करता है।
यह सामग्री केवल सूचना के उद्देश्यों के लिए प्रदान की जाती है, और कानूनी, व्यापार, निवेश या कर सलाह के रूप में इस पर भरोसा नहीं किया जाना चाहिए। आपको उन मामलों में अपने स्वयं के सलाहकारों से परामर्श लेना चाहिए। किसी भी प्रतिभूति या डिजिटल संपत्ति के संदर्भ केवल दृष्टांत उद्देश्यों के लिए हैं, और निवेश सलाहकार सेवाएं प्रदान करने के लिए एक निवेश अनुशंसा या प्रस्ताव का गठन नहीं करते हैं। इसके अलावा, यह सामग्री किसी भी निवेशक या संभावित निवेशकों द्वारा उपयोग के लिए निर्देशित नहीं है और न ही इसका इरादा है, और किसी भी परिस्थिति में a16z द्वारा प्रबंधित किसी भी फंड में निवेश करने का निर्णय लेते समय इस पर भरोसा नहीं किया जा सकता है। (a16z फंड में निवेश करने की पेशकश केवल निजी प्लेसमेंट मेमोरेंडम, सब्सक्रिप्शन एग्रीमेंट, और ऐसे किसी भी फंड के अन्य प्रासंगिक दस्तावेज द्वारा की जाएगी और इसे पूरी तरह से पढ़ा जाना चाहिए।) किसी भी निवेश या पोर्टफोलियो कंपनियों का उल्लेख, संदर्भित, या वर्णित a16z द्वारा प्रबंधित वाहनों में सभी निवेशों के प्रतिनिधि नहीं हैं, और इस बात का कोई आश्वासन नहीं दिया जा सकता है कि निवेश लाभदायक होगा या भविष्य में किए गए अन्य निवेशों में समान विशेषताएं या परिणाम होंगे। आंद्रेसेन होरोविट्ज़ द्वारा प्रबंधित निधियों द्वारा किए गए निवेशों की सूची (उन निवेशों को छोड़कर जिनके लिए जारीकर्ता ने सार्वजनिक रूप से कारोबार की गई डिजिटल संपत्ति में सार्वजनिक रूप से और साथ ही अघोषित निवेशों का खुलासा करने के लिए a16z की अनुमति नहीं दी है) https://a16z.com/investments पर उपलब्ध है। /.
इसमें दिए गए चार्ट और ग्राफ़ केवल सूचना के उद्देश्यों के लिए हैं और निवेश का कोई भी निर्णय लेते समय उन पर भरोसा नहीं किया जाना चाहिए। पूर्व प्रदर्शन भविष्य के परिणाम का संकेत नहीं है। सामग्री केवल इंगित तिथि के अनुसार बोलती है। इन सामग्रियों में व्यक्त किए गए किसी भी अनुमान, अनुमान, पूर्वानुमान, लक्ष्य, संभावनाएं और/या राय बिना किसी सूचना के परिवर्तन के अधीन हैं और दूसरों द्वारा व्यक्त की गई राय के विपरीत या भिन्न हो सकते हैं। अतिरिक्त महत्वपूर्ण जानकारी के लिए कृपया https://a16z.com/disclosures देखें।
- एसईओ संचालित सामग्री और पीआर वितरण। आज ही प्रवर्धित हो जाओ।
- प्लेटोब्लॉकचैन। Web3 मेटावर्स इंटेलिजेंस। ज्ञान प्रवर्धित। यहां पहुंचें।
- मिंटिंग द फ्यूचर डब्ल्यू एड्रिएन एशले। यहां पहुंचें।
- स्रोत: https://a16z.com/2023/04/14/the-modern-transactional-stack/
- :है
- $यूपी
- 1
- 7
- a
- a16z
- About
- ऊपर
- अकौन्टस(लेखा)
- शुद्धता
- के पार
- वास्तव में
- इसके अलावा
- अतिरिक्त
- इसके अतिरिक्त
- पता
- अपनाना
- अपनाने
- दत्तक ग्रहण
- विज्ञापन
- सलाह
- सलाहकार
- सलाहकार सेवाएं
- सहयोगी कंपनियों
- समझौता
- हवाई अड्डे
- सब
- की अनुमति दे
- साथ - साथ
- पहले ही
- हालांकि
- हमेशा
- और
- एंड्रीसन
- आंद्रेसेन होरोविट्ज़
- अन्य
- एपीआई
- एपीआई
- अनुप्रयोग
- आवेदन
- अनुप्रयोग विकास
- अनुप्रयोगों
- लागू
- दृष्टिकोण
- दृष्टिकोण
- क्षुधा
- वास्तु
- स्थापत्य
- हैं
- क्षेत्र
- चारों ओर
- AS
- संपत्ति
- आश्वासन
- At
- Auth
- प्रमाणीकृत
- उपलब्ध
- जागरूकता
- वापस
- बैक-एंड
- आधारित
- मूल रूप से
- आधार
- BE
- क्योंकि
- बन
- बनने
- जा रहा है
- मानना
- माना
- नीचे
- लाभ
- बेंजामिन
- बेहतर
- के बीच
- परे
- बड़ा
- सबसे बड़ा
- खंड
- ब्लॉकिंग
- ब्लॉक
- टूटना
- तोड़कर
- लाना
- लाया
- निर्माण
- व्यापार
- by
- कॉल
- बुलाया
- कर सकते हैं
- क्षमताओं
- राजधानी
- कार्ड
- मामला
- मामलों
- श्रेणियाँ
- वर्ग
- केंद्रीय
- कुछ
- चुनौतियों
- परिवर्तन
- विशेषताएँ
- की विशेषता
- चेक आउट
- हालत
- क्लासिक
- स्पष्ट
- कोड
- संयोजन
- अ रहे है
- प्रतिबद्ध
- सामान्यतः
- कंपनियों
- पूरा
- पूरा
- समापन
- जटिल
- जटिलताओं
- जटिलता
- आज्ञाकारी
- अंग
- अवधारणाओं
- वैचारिक
- स्थितियां
- संघर्ष
- भ्रम
- विचार करना
- संगत
- का गठन
- प्रयुक्त
- सामग्री
- विपरीत
- नियंत्रण
- उत्तल
- भ्रष्ट
- कोर्स
- आवरण
- बनाना
- श्रेय
- क्रेडिट कार्ड
- महत्वपूर्ण
- वर्तमान
- वर्तमान स्थिति
- रिवाज
- ग्राहक
- तिथि
- आँकड़ा प्रबंधन
- डेटा भंडारण
- डाटाबेस
- डेटाबेस
- तारीख
- डेविड
- सौदा
- व्यवहार
- सौदा
- दशकों
- निर्णय
- निर्णय
- उद्धार
- निर्भर
- निकाली गई
- वर्णित
- डिज़ाइन
- विवरण
- निर्धारित
- डेवलपर
- डेवलपर्स
- विकास
- अलग
- विभिन्न
- मुश्किल
- डिजिटल
- डिजिटल आस्तियां
- सीधे
- खुलासा
- चर्चा
- अलग
- अंतर करना
- वितरित
- वितरित प्रणाली
- दस्तावेज़ीकरण
- नहीं करता है
- कर
- dont
- नीचे
- नकारात्मक पक्ष यह है
- दौरान
- e
- से प्रत्येक
- शीघ्र
- सबसे आसान
- आसानी
- Edge
- प्रभावी
- भी
- उद्भव
- का समर्थन किया
- endpoint
- टिकाऊ
- प्रवर्तन
- इंजन
- अभियांत्रिकी
- इंजन
- पर्याप्त
- सुनिश्चित
- सुनिश्चित
- घुसा
- पूरी तरह से
- संपूर्णता
- भेजे
- प्रविष्टि
- वातावरण
- त्रुटियाँ
- विशेष रूप से
- अनिवार्य
- अनुमान
- आदि
- और भी
- कार्यक्रम
- घटनाओं
- सब कुछ
- विकसित करना
- जांच
- उदाहरण
- के सिवा
- निष्पादित
- निष्पादन
- मौजूदा
- अनुभव
- उजागर
- व्यक्त
- विस्तार
- चेहरा
- विफलता
- परिचित
- विशेषताएं
- प्रतिक्रिया
- कुछ
- खोज
- Firebase
- प्रवाह
- पदचिह्न
- के लिए
- ताकतों
- से
- पूर्ण
- पूरी तरह से
- समारोह
- कार्यक्षमता
- कार्यों
- कोष
- धन
- और भी
- भविष्य
- लाभ
- प्रवेश द्वार
- सामान्य जानकारी
- आम तौर पर
- मिल
- मिल रहा
- विशाल
- देना
- दी
- देता है
- देते
- Go
- जा
- क्रमिक
- रेखांकन
- ग्रीनफील्ड
- आगे बढ़ें
- गारंटी
- गारंटी देता है
- हाथ
- संभालना
- हैंडल
- हुआ
- कठिन
- है
- होने
- मदद
- मदद
- यहाँ उत्पन्न करें
- होम
- उम्मीद है कि
- Horowitz
- कैसे
- तथापि
- HTTPS
- बेहद
- सैकड़ों
- लागू करने के
- महत्वपूर्ण
- in
- शामिल
- सहित
- शामिल
- बढ़ जाती है
- बढ़ती
- स्वतंत्र रूप से
- अनुक्रमणिका
- संकेत दिया
- इंगित करता है
- व्यक्ति
- उद्योग
- पता
- करें-
- सूचना
- इंफ्रास्ट्रक्चर
- बजाय
- घालमेल
- एकीकरण
- बातचीत
- इंटरफेस
- शुरू की
- निवेश करना
- निवेश
- निवेश सलाह
- निवेश
- निवेशक
- जारीकर्ता
- मुद्दों
- IT
- आइटम
- आईटी इस
- जेमी
- जावा
- जावास्क्रिप्ट
- यात्रा
- रखना
- कुंजी
- ज्ञान
- भाषा
- भाषाऐं
- बड़ा
- पिछली बार
- परत
- प्रमुख
- कानूनी
- हल्के
- पसंद
- पंक्तियां
- सूची
- लंबा
- खोना
- लॉट
- मशीन
- बनाया गया
- जादू
- बनाना
- बनाता है
- निर्माण
- प्रबंधन
- कामयाब
- प्रबंध
- प्रबंध
- बहुत
- सामग्री
- मैटर्स
- अधिकतम-चौड़ाई
- कहावत
- मई..
- ज्ञापन
- उल्लेख किया
- विलय
- तरीका
- microservices
- कम से कम
- आदर्श
- मॉडल
- आधुनिक
- संशोधित
- संशोधित
- अखंड
- अधिक
- अधिकांश
- सबसे लोकप्रिय
- नाम
- नवजात
- देशी
- प्रकृति
- आवश्यकता
- की जरूरत है
- नया
- साधारण
- संख्या
- प्राप्त
- of
- प्रस्ताव
- की पेशकश
- प्रसाद
- ऑफर
- on
- ONE
- ऑनलाइन
- ऑपरेटरों
- राय
- आदेश
- संगठनों
- अन्य
- अन्य
- बाहर
- अपना
- भाग
- विशेष रूप से
- अतीत
- पैटर्न उपयोग करें
- पॉल
- प्रदर्शन
- अनुमति
- हठ
- कर्मियों को
- टुकड़ा
- टुकड़े
- मंच
- प्लेटफार्म
- प्लेटो
- प्लेटो डेटा इंटेलिजेंस
- प्लेटोडाटा
- खेल
- कृप्या अ
- बिन्दु
- लोकप्रिय
- संविभाग
- पद
- शक्तिशाली
- अभ्यास
- को रोकने के
- रोकने
- मुख्यत
- प्राथमिक
- निजी
- मुसीबत
- प्रक्रिया
- प्रसंस्करण
- प्रोफाइल
- लाभदायक
- कार्यक्रम
- प्रोग्रामर
- प्रोग्रामर्स
- प्रोग्रामिंग
- प्रोग्रामिंग की भाषाएँ
- अनुमानों
- परियोजनाओं
- संभावना
- प्रदान करना
- बशर्ते
- प्रदान करता है
- प्रदान कर
- सार्वजनिक रूप से
- उद्देश्य
- प्रयोजनों
- धक्का
- रखना
- प्रश्नों
- त्वरित
- बल्कि
- पढ़ना
- महसूस करना
- कारण
- प्राप्त
- हाल
- सिफारिश
- सुलह
- संदर्भ
- निर्दिष्ट
- संदर्भित करता है
- पंजीकृत
- नियमित
- प्रासंगिक
- विश्वसनीय
- रहना
- प्रतिनिधित्व
- प्रतिनिधि
- का अनुरोध
- की आवश्यकता होती है
- की आवश्यकता होती है
- अनुसंधान
- संकल्प
- जिम्मेदार
- बाकी
- परिणाम
- जिसके परिणामस्वरूप
- परिणाम
- समीक्षा
- की समीक्षा
- सवार
- वृद्धि
- जड़ों
- लगभग
- रन
- दौड़ना
- सुरक्षित
- कहा
- सैम
- वही
- स्केल
- स्केलिंग
- परिदृश्यों
- समयबद्धन
- स्कोर
- दूसरा
- प्रतिभूतियां
- सुरक्षा
- देखकर
- चयन
- अर्थ विज्ञान
- भावना
- अलग
- सेवाएँ
- सेट
- तेज़
- खरीदारी
- कम
- चाहिए
- लक्षण
- समान
- केवल
- एक
- स्थिति
- So
- समाधान ढूंढे
- हल करती है
- कुछ
- कुछ हद तक
- परिष्कृत
- स्रोत
- सूत्रों का कहना है
- बोलता हे
- धुआँरा
- ढेर
- मानक
- प्रारंभ
- शुरू
- शुरुआत में
- राज्य
- राज्य
- रहना
- तना
- कदम
- फिर भी
- भंडारण
- की दुकान
- संग्रहित
- भंडार
- भंडारण
- रणनीतियों
- प्रयास करना
- मजबूत
- संरचना
- विषय
- अंशदान
- सदस्यता
- ऐसा
- पर्याप्त
- समर्थन
- तुल्यकालन
- प्रणाली
- सिस्टम
- लक्ष्य
- कार्य
- कर
- टीम
- टीमों
- टेक्नोलॉजी
- शर्तों
- धन्यवाद
- कि
- RSI
- भविष्य
- जानकारी
- राज्य
- लेकिन हाल ही
- उन
- इसलिये
- यहां
- इन
- चीज़ें
- विचारधारा
- तीसरे दल
- तीन
- यहाँ
- टाई
- पहर
- सेवा मेरे
- आज
- टोनी
- भी
- साधन
- ट्रैक
- ट्रैकिंग
- कर्षण
- कारोबार
- परंपरागत
- पारंपरिक रूप से
- ट्रांजेक्शन
- लेनदेन का विवरण
- लेन-देन संबंधी
- लेनदेन
- प्रवृत्ति
- ट्रिगर
- सच
- ठेठ
- आम तौर पर
- परम
- अंत में
- के अंतर्गत
- आधारभूत
- समझना
- समझ
- समझता है
- उल्टा
- us
- उपयोग
- उपयोगकर्ता
- उपयोगकर्ताओं
- आमतौर पर
- मूल्य
- वाहन
- सत्यापित
- संस्करण
- के माध्यम से
- देखें
- विचारों
- इंतज़ार कर रही
- मार्ग..
- तरीके
- कुंआ
- क्या
- या
- कौन कौन से
- जब
- कौन
- चौड़ा
- मर्जी
- साथ में
- अंदर
- बिना
- काम
- workflows
- काम कर रहे
- कार्य
- विश्व
- होगा
- लिखना
- कोड लिखें
- लिख रहे हैं
- लिखा हुआ
- साल
- आप
- आपका
- जेफिरनेट