HeadlinesBriefing HeadlinesBriefing.com

Readyset SQL पुनर्लेखन: डेटाफ़्लो क्वेरी

Hacker News •
×

अधिकांश डेटाबेस हर बार क्वेरी को शुरू से फिर से निष्पादित करते हैं, जिससे पढ़ने की विलंबता क्वेरी जटिलता और डेटा आकार के समानुपाती हो जाती है। Readyset एक अलग दृष्टिकोण अपनाता है: यह प्रत्येक क्वेरी को एक डेटाफ़्लो ग्राफ़ में संकलित करता है—ऑपरेटरों का एक नेटवर्क (जॉइन, फ़िल्टर, एग्रीगेशन, प्रोजेक्शन) जो डेटा बदलने पर क्वेरी के परिणाम को लगातार बनाए रखता है। जब अपस्ट्रीम में एक पंक्ति डाली, अद्यतन या हटाई जाती है, तो परिवर्तन ग्राफ़ के माध्यम से प्रसारित होता है, और कैश किया गया परिणाम वृद्धिशील रूप से अद्यतन होता है। पढ़ना पूर्ण क्वेरी निष्पादन नहीं, बल्कि पूर्व-गणना सामग्री दृश्य में देखना बन जाता है।

यह आर्किटेक्चर SQL पर संरचनात्मक बाधाएं लगाता है। बाइनरी जॉइन के लिए समानता विधेय आवश्यक हैं; रेंज विधेय या अभिव्यक्ति-आधारित जॉइन कुंजियाँ समर्थित नहीं हैं। सहसंबद्ध उपक्वेरी को समतुल्य जॉइन में पुनर्लिखित किया जाना चाहिए, क्योंकि डेटाफ़्लो में प्रति बाहरी पंक्ति निष्पादन नहीं है। व्युत्पन्न तालिकाएँ समर्थित हैं लेकिन पूरी तरह से सामग्री मध्यवर्ती नोड्स में संकलित होती हैं; पुनर्लेखन पाइपलाइन उन्हें सुरक्षित स्थानों पर आक्रामक रूप से इनलाइन करती है।

समर्थित जॉइन प्रकारों में INNER, LEFT OUTER और CROSS शामिल हैं; RIGHT और FULL OUTER लापता मिलानों को ट्रैक करने की कठिनाई के कारण समर्थित नहीं हैं। एग्रीगेशन के लिए स्पष्ट GROUP BY कॉलम संदर्भ और कम से कम एक एग्रीगेट-व्युत्पन्न प्रोजेक्शन की आवश्यकता होती है।

व्यापार-बंद यह है कि क्वेरी को उस रूप में व्यक्त किया जाना चाहिए जिसे डेटाफ़्लो इंजन संकलित कर सके—मानक SQL से अधिक प्रतिबंधात्मक—लेकिन लाभ वृद्धिशील रखरखाव और तेज़ पढ़ना है।

स्रोत: Hacker News · HeadlinesBriefing द्वारा सारांशित