Postgres को Rust में फिर से लिखा गया... और किसी तरह यह हर टेस्ट में पास हो गया
BBetter Stack
컴퓨터/소프트웨어창업/스타트업AI/미래기술
스크립트
00:00:00किसी ने Rust में Postgres को फिर से बनाया है, और किसी तरह इसका जारी किया गया वर्ज़न अब सभी 46,000 Postgres रिग्रेशन क्वेरीज़ को पास कर लेता है।
00:00:08यह सामान्य PSQL के साथ काम करता है। यह मौजूदा Postgres 18.3 डेटा डायरेक्टरी को भी बूट कर सकता है।
00:00:14यह एक प्रोडक्शन-रेडी रिप्लेसमेंट जैसा लगता है। यह है नहीं।
00:00:17लेकिन इस प्रोजेक्ट का सबसे रोमांचक वर्ज़न अभी रिलीज़ होना बाकी है।
00:00:21तो हम यहाँ असल में क्या देख रहे हैं? क्या यह Postgres का भविष्य है या सिर्फ एक AI प्रयोग?
00:00:30अब, यह समझने के लिए कि यह क्यों मायने रखता है, आपको समस्या को समझना होगा।
00:00:36Postgres अब तक बने सबसे बेहतरीन डेटाबेस में से एक है, इसे मानना ही पड़ेगा।
00:00:40लेकिन इसमें चार दशकों का आर्किटेक्चर और लगभग दस लाख लाइनों का C कोड भी शामिल है।
00:00:46हर क्लाइंट कनेक्शन को अपनी खुद की बैकएंड प्रोसेस मिलती है।
00:00:49यह अलगाव उपयोगी है, लेकिन इसका मतलब यह भी है कि मेमोरी का अधिक उपयोग, कनेक्शन पूलिंग का उपयोग करने का अधिक दबाव,
00:00:56और समानांतर काम में स्थिति (state) साझा करने में अधिक कठिनाई।
00:01:00PGRust एक अलग रास्ता अपनाता है।
00:01:02Postgres के व्यवहार को बनाए रखें, क्लाइंट अनुभव को बनाए रखें, डिस्क फॉर्मेट को बनाए रखें, लेकिन नीचे के इंजन को Rust से बदल दें।
00:01:09यह कोई Postgres एक्सटेंशन नहीं है।
00:01:11यह ऊपर से जोड़ी गई कोई विशेषता नहीं है।
00:01:13यह पूरी तरह से अलग है, एक ऐसा इम्प्लीमेंटेशन जो बिल्कुल Postgres की तरह व्यवहार करने की कोशिश कर रहा है।
00:01:18हम अभी बहुत सारे Rust रिवाइट्स देख रहे हैं, बिल्कुल वैसे ही जैसे हमने कुछ दिन पहले Bunn के अपने पूरे कोडबेस को Rust के साथ फिर से लिखने के बारे में कवर किया था।
00:01:25मैं इसे कहीं यहाँ डाल दूंगा।
00:01:27और अब, यह सब सुनने में अच्छा लगता है, लेकिन क्या यह वास्तव में असली Postgres जैसा लगता है?
00:01:31कम से कम ठीक से टेस्ट किया गया है।
00:01:32यदि आप ऐसे कोडिंग टूल्स का आनंद लेते हैं जो आपके वर्कफ़्लो को तेज़ करते हैं, तो सब्सक्राइब करना सुनिश्चित करें।
00:01:36हमारे पास हर समय वीडियो आ रहे हैं।
00:01:38अब, मैं आधिकारिक Docker इमेज के साथ शुरुआत कर रहा हूँ, फिर एक पूरी तरह से सामान्य PSQL क्लाइंट के साथ कनेक्ट कर रहा हूँ।
00:01:43कुछ भी कस्टम नहीं।
00:01:44अब, मैं अंदर हूँ।
00:01:46सबसे पहले, आइए वर्ज़न की जाँच करें।
00:01:48जैसा कि आप देख सकते हैं, यह खुद को नवीनतम वर्ज़न के साथ PGRust के रूप में रिपोर्ट करता है।
00:01:53अब, मैं एक टेबल बना सकता हूँ, कुछ डेटा डाल सकता हूँ और एक क्वेरी प्लान देख सकता हूँ।
00:01:59मैं बस इसे अपने टर्मिनल में यहाँ चलाने जा रहा हूँ।
00:02:01बाहर से, यह Postgres से पूरी तरह से अलग नहीं है।
00:02:05वही क्लाइंट, वही SQL, वही आउटपुट।
00:02:08आप यह भी देख सकते हैं कि क्वेरी प्लानर ने इंडेक्स स्कैन चुना और हमें वास्तविक निष्पादन आँकड़े दिए।
00:02:14अब, इसे थोड़ा और दिलचस्प बनाने के लिए, आइए 100,000 पंक्तियाँ डालें और एक और क्वेरी चलाएँ।
00:02:20यह सिर्फ डेटा की 100K पंक्तियाँ उत्पन्न की गई हैं।
00:02:23हम इसे यहाँ डालने जा रहे हैं।
00:02:25अब, इस सबका मतलब क्या है?
00:02:27ठीक है, खैर, अच्छा सवाल है।
00:02:28खैर, इस वर्तमान शुरुआती वर्ज़न रिलीज़ में, हम नियमित Postgres की तुलना में नाटकीय गति सुधार नहीं देखने जा रहे हैं।
00:02:35प्रदर्शन के बड़े दावे एक अनरिलीज़्ड डेवलपमेंट वर्ज़न से आते हैं जो थ्रेड-प्रति-कनेक्शन मॉडल पर स्विच करता है।
00:02:43हालाँकि, यह सब साबित करता है कि यह सिर्फ एक आंशिक इम्प्लीमेंटेशन नहीं है।
00:02:47इसने पूर्ण आधिकारिक Postgres रिग्रेशन टेस्ट सूट पास कर लिया है, 46,000 से अधिक क्वेरीज़।
00:02:53यह वास्तविक वायर प्रोटोकॉल बोलता है, और इसमें स्टोरेज इंजन में एक कार्यशील क्वेरी प्लान है।
00:02:59यह एक वास्तविक डेटाबेस सर्वर है।
00:03:01यह बस Rust में लिखा गया है।
00:03:03तो, इसके प्रगति के साथ, हम चीजों की गति के मामले में कुछ गंभीर प्रदर्शन वृद्धि देख सकते हैं।
00:03:08तो, अब सवाल यह है कि सिर्फ एक और Postgres एक्सटेंशन क्यों नहीं बनाया गया?
00:03:12क्योंकि एक्सटेंशन मूल Postgres कोर के ऊपर बैठते हैं।
00:03:16एक फोर्क उस कोर को बदल सकता है, लेकिन फिर यह वही आर्किटेक्चर और अपस्ट्रीम Postgres के साथ बने रहने का स्थायी कार्य विरासत में प्राप्त करता है।
00:03:25आपके पास CockroachDB और YugaByte जैसे डेटाबेस हैं, लेकिन वे स्वतंत्र वितरित डेटाबेस हैं।
00:03:31सटीक ड्रॉप-इन संगतता उनका मुख्य लक्ष्य नहीं है।
00:03:35PG Rust कुछ और कोशिश कर रहा है।
00:03:37यह विनिर्देश के रूप में वास्तविक Postgres व्यवहार का उपयोग करता है।
00:03:41वर्तमान रिलीज़ Postgres 18.3 को लक्षित करती है।
00:03:44यह डिफ़ॉल्ट रिग्रेशन सूट और अलगाव परीक्षणों को पास करता है, और यह मौजूदा Postgres 18.3 डेटा डायरेक्टरी से बूट करने के लिए पर्याप्त संगत है।
00:03:53यहाँ बड़ा प्रयोग एक अलग अप्रकाशित वर्ज़न में हो रहा है, और वह वर्ज़न कथित तौर पर Postgres के प्रति-कनेक्शन मॉडल को थ्रेड-प्रति-कनेक्शन मॉडल से बदल देता है।
00:04:05सामान्य Postgres मॉडल के साथ, प्रत्येक कनेक्शन को अपनी खुद की प्रोसेस मिलती है।
00:04:09नए मॉडल के साथ, प्रत्येक कनेक्शन को उसी प्रोसेस के अंदर एक थ्रेड मिलता है।
00:04:14यह प्रति-कनेक्शन ओवरहेड को कम कर सकता है और डेटाबेस के विभिन्न हिस्सों के लिए वास्तव में जानकारी साझा करना आसान बना सकता है।
00:04:21लेकिन इस सबके साथ, एक व्यापार-बंद (trade-off) होने वाला है, है ना?
00:04:24अलग-अलग प्रोसेस कनेक्शन के बीच उपयोगी दीवारें भी बनाती हैं।
00:04:28यदि कोई एक प्रोसेस विफल हो जाती है, तो वह अलगाव नुकसान को रोकने में मदद कर सकता है।
00:04:32थ्रेड्स के साथ, एक असुरक्षित एक्सटेंशन या मेमोरी बग सर्वर के अधिक हिस्से को प्रभावित कर सकता है।
00:04:38तो थ्रेड-प्रति-कनेक्शन स्वचालित रूप से बेहतर नहीं है।
00:04:41यह बस नए दरवाजे खोलता है, लेकिन यह कुछ सुरक्षा रेलिंग को भी हटा सकता है।
00:04:45फिर कहानी का दूसरा प्रमुख हिस्सा है, AI।
00:04:49माइकल मैलिस और जेसन सीबेल ने रिवाइट को गति देने के लिए कोडिंग एजेंटों का भारी उपयोग किया।
00:04:54प्रकाशित वर्ज़न जानबूझकर कई स्थानों पर मूल Postgres संरचना का अनुसरण करता है।
00:04:59अप्रकाशित वर्ज़न वह है जहाँ वे बड़े आर्किटेक्चरल परिवर्तनों की कोशिश कर रहे हैं।
00:05:03तो असली प्रयोग सिर्फ यह नहीं है कि, क्या Rust Postgres को तेज़ बना सकता है?
00:05:08यह कुछ ऐसा है, क्या AI इतने बड़े रिवाइट को पर्याप्त किफायती बना सकता है कि डेवलपर्स वास्तव में चीजों के नीचे के आर्किटेक्चर पर पुनर्विचार कर सकें?
00:05:16क्योंकि यहाँ AI का भारी उपयोग किया गया था।
00:05:19अब, क्या यह चीजों को बदलता है?
00:05:20खैर, यह हो सकता है।
00:05:21यह वह जगह भी है जहाँ हमें थोड़ा धीमा होने की ज़रूरत है।
00:05:25जारी किया गया वर्ज़न भारी रूप से अनुकूलित (optimized) नहीं है।
00:05:28प्रदर्शन के प्रमुख दावे अप्रकाशित थ्रेड-प्रति-कनेक्शन वर्ज़न से आते हैं, जिसे अभी हम पूरी तरह से टेस्ट नहीं कर सकते।
00:05:36देव्स लेनदेन संबंधी वर्कलोड पर लगभग 50% बेहतर प्रदर्शन का दावा करते हैं।
00:05:40वे विश्लेषणात्मक वर्कलोड पर Postgres के प्रदर्शन से लगभग 300 गुना अधिक का दावा भी करते हैं।
00:05:45वे संख्याएँ बहुत बड़ी हैं, लेकिन उन परिणामों के पीछे का कोड वर्तमान में किसी भी प्रकार के निरीक्षण या बेंचमार्किंग के लिए उपलब्ध नहीं है।
00:05:53तो, इसलिए, अभी भी बहुत अटकलें हैं।
00:05:57ऐसा लगता है कि यहाँ एक अच्छा 50-50 का विभाजन है, कम से कम ऑनलाइन पढ़ने पर, उन सवालों के साथ जो कुछ इस तरह दिखते हैं।
00:06:03ये सिर्फ GitHub पर मुद्दे हैं।
00:06:05फिर आपको इस एक जैसे एक मुद्दा भी मिलता है, है ना?
00:06:08जो कि पूरी तरह से उचित सवाल है।
00:06:10जैसे ही आप इस मुद्दे को पढ़ते हैं, देव्स वास्तव में इसे काम करने के बारे में अडिग लगते हैं।
00:06:15तो, हमारे पास अभी वास्तविक आँकड़े नहीं हैं।
00:06:17हालाँकि, इसका मतलब यह नहीं है कि संख्याएँ गलत हैं।
00:06:20इसका मतलब सिर्फ यह है कि हमें उन्हें आशाजनक दावों के रूप में देखना चाहिए, न कि तय तथ्यों के रूप में।
00:06:24और ईमानदारी से, सटीक मल्टीप्लायर सबसे महत्वपूर्ण हिस्सा नहीं हो सकता है।
00:06:28हमें यह सीखने से पहले कि कोई विचार वास्तव में काम करता है या नहीं, पूरे Postgres प्रोजेक्ट को बदलने की आवश्यकता नहीं है।
00:06:34वह स्वतंत्रता हमारे द्वारा प्राप्त किए जा सकने वाले किसी भी एकल बेंचमार्क से अधिक मूल्यवान हो सकती है।
00:06:38अब, इन सभी Rust रिवाइट्स के साथ देव्स से प्रतिक्रिया, यहाँ तक कि इस PG Rust पर भी, बहुत बड़ी रही है।
00:06:44मुख्य Hacker News चर्चा सैकड़ों अंकों और टिप्पणियों को पार कर गई, लेकिन फिर, प्रतिक्रिया विभाजित है।
00:06:50दोनों पक्ष अच्छे बिंदु बना रहे हैं।
00:06:52सबसे पहले, हर रिग्रेशन क्वेरी को पास करना एक गंभीर उपलब्धि है।
00:06:56बहुत सारे प्रोजेक्ट्स Postgres संगत होने का दावा करते हैं।
00:06:59वह वाक्यांश लगभग कुछ भी हो सकता है।
00:07:01PG Rust का एक मापने योग्य लक्ष्य है।
00:07:04वास्तविक Postgres परीक्षण इसके न्यायाधीश हैं।
00:07:07और इस रिवाइट की गति बताती है कि कोडिंग एजेंट बड़े बुनियादी ढाँचे के प्रयोगों की लागत को पूरी तरह से बदल सकते हैं।
00:07:13जो विचार कभी बहुत महंगे लगते थे, वे अब संभव होते दिख रहे हैं।
00:07:19अब, चीजों के दूसरे पहलू के लिए, रिग्रेशन परीक्षण पास करना उत्पादन विश्वास अर्जित करने के समान नहीं है।
00:07:24वे परीक्षण वर्षों के क्रैश रिकवरी और प्रतिकृति परीक्षणों को नहीं बदलते हैं, या वे डेटाबेस जो बिना रुके महीनों तक चलते हैं।
00:07:31एक प्रोजेक्ट हर ज्ञात परीक्षण को पास कर सकता है और फिर भी ऐसी स्थिति में विफल हो सकता है जिसे किसी ने टेस्ट करने के बारे में सोचा भी नहीं था।
00:07:37लाखों लाइनों का कोड उत्पन्न करना एक चुनौती है।
00:07:42एक्सटेंशन संगतता एक और बड़ा अंतर है।
00:07:45अब, क्या आपको अपने प्रोडक्शन Postgres क्लस्टर को PG Rust के साथ बदलना चाहिए?
00:07:49नहीं, बिल्कुल नहीं।
00:07:51प्रोजेक्ट खुद उत्पादन के लिए तैयार नहीं है।
00:07:53यह कहा गया है।
00:07:54यह पूरी तरह से अनुकूलित (optimized) नहीं है।
00:07:56एक्सटेंशन इकोसिस्टम सहित प्रमुख संगतता क्षेत्रों में, वे अभी भी अधूरे हैं।
00:08:02लेकिन क्या आपको इसे आज़माना चाहिए?
00:08:03बिल्कुल।
00:08:03यदि आप डेटाबेस, Rust, क्वेरी निष्पादन, संगतता परीक्षण, या AI विकास के साथ काम करते हैं, तो इसे आज़माने में क्या हर्ज है?
00:08:10Docker इमेज चलाएँ, इसके विरुद्ध अपनी क्लाइंट लाइब्रेरी का परीक्षण करें, स्रोत पढ़ें, और देखें कि क्या होता है।
00:08:16तो, टिप्पणियों में अपना फैसला छोड़ें।
00:08:18यह प्रोजेक्ट कहाँ जा रहा है?
00:08:20क्या हम Rust में और अधिक फिर से लिखना शुरू करने जा रहे हैं?
00:08:21हम पता लगाने जा रहे हैं।
00:08:23यदि आप इस तरह के कोडिंग टिप्स और ट्रिक्स का आनंद लेते हैं, तो BetterStack चैनल को सब्सक्राइब करना सुनिश्चित करें।
00:08:26हम आपको अगले वीडियो में देखेंगे।