00:00:00जब आप एक नया प्रोजेक्ट शुरू कर रहे होते हैं और आपको एक डेटाबेस की जरूरत होती है, तो सबसे पहला विकल्प
00:00:03क्या दिमाग में आता है? SQLite? शायद SQLite ही है, है न? मेरा मतलब है, यह बेहतरीन और भरोसेमंद है,
00:00:09इसमें जीरो कॉन्फिग है और यह एक इंडस्ट्री स्टैंडर्ड है। लेकिन जैसे-जैसे हमारा लोकल डेटा भारी होता जाता है और हमारी क्वेरीज
00:00:14जटिल होती जाती हैं, हम उस सीमा तक पहुँचने लगते हैं जो एक सिंगल थ्रेडेड फाइल लॉकिंग
00:00:20इंजन कर सकता है। लेकिन अब बाजार में एक नया खिलाड़ी है जो इन समस्याओं को हल करने की कोशिश कर रहा है।
00:00:25इसका नाम Stulab है और यह पूरी तरह से Rust में लिखा गया एक डेटाबेस इंजन है और इसने अभी-अभी
00:00:31एक नेटिव Node.js ड्राइवर रिलीज किया है जो सच में बहुत जबरदस्त परफॉर्मेंस दिखा रहा है। यह
00:00:36डेटाबेस SQLite से 138 गुना ज्यादा तेज है। तो इस वीडियो में, हम Stulab की बारीकियों को
00:00:43देखेंगे, समझेंगे कि यह कैसे काम करता है और एक लाइव बेंचमार्किंग टेस्ट करेंगे यह देखने के लिए कि क्या यह वाकई
00:00:50उतना ही शक्तिशाली है जितना यह दावा करता है। इसमें बहुत मजा आने वाला है, तो चलिए शुरू करते हैं। तो आखिर Stulab क्या है?
00:01:00देखा जाए तो, Stulab मूल रूप से एक एम्बेडेड OLAP या ऑनलाइन एनालिटिकल प्रोसेसिंग डेटाबेस है। अब अगर
00:01:06आप SQLite या Postgres जैसे स्टैंडर्ड डेटाबेस के आदी हैं, तो वे आम तौर पर OLTP या ऑनलाइन
00:01:14ट्रांजैक्शन प्रोसेसिंग डेटाबेस होते हैं, जो जैसा कि नाम से पता चलता है, ट्रांजैक्शन के लिए अनुकूलित होते हैं। लेकिन
00:01:20Stulab अलग है। इसे एनालिटिकल वर्कलोड के लिए डिजाइन किया गया है और इसे हाई-स्पीड डेटा प्रोसेसिंग पर ध्यान देते हुए
00:01:27पूरी तरह से Rust में बनाया गया है। इसे SQLite फाइल जैसी पोर्टेबिलिटी वाले,
00:01:33लेकिन DuckDB या BigQuery जैसी रॉ एनालिटिकल पावर वाले इंजन के रूप में देखें। लेकिन सबसे अच्छी बात
00:01:39यह है कि अब आप इसके नेटिव Node ड्राइवर की मदद से इसे Node.js के साथ इस्तेमाल कर सकते हैं। अब जब मैं कहता हूँ कि
00:01:45यह एक नेटिव ड्राइवर है, तो मैं किसी साधारण रैपर की बात नहीं कर रहा हूँ। आमतौर पर जब कोई डेटाबेस
00:01:49Rust या C++ जैसी किसी दूसरी भाषा में लिखा होता है, तो आपके Node.js ऐप को उससे एक ब्रिज के जरिए बात करनी पड़ती है।
00:01:56अक्सर इसका मतलब है कि आपके डेटा को JSON या किसी अन्य फॉर्मेट में बदलना, उसे लोकल नेटवर्क
00:02:02सॉकेट पर भेजना और फिर दूसरी तरफ उसे वापस बदलना। इसे सीरियलाइजेशन ओवरहेड कहा जाता है और
00:02:08यह परफॉर्मेंस को बहुत कम कर देता है। लेकिन Stulab Node चीजें अलग तरह से करता है। यह NAPI-RS का उपयोग करता है,
00:02:15जो एक ऐसा फ्रेमवर्क है जो Rust इंजन को एक नेटिव बाइनरी में कंपाइल करने की अनुमति देता है जो
00:02:21सीधे आपके Node.js प्रोसेस में लोड हो जाती है। इसलिए बीच में कोई ब्रिज और कोई ट्रांसलेटर नहीं है। जब आप
00:02:27एक क्वेरी भेजते हैं, तो Node.js और Rust असल में एक ही मेमोरी स्पेस साझा कर रहे होते हैं। और Stulab के
00:02:33इतना तेज होने के तीन बड़े कारण हैं। पहला, यह MVCC या मल्टी-वर्जन कॉन्करेंसी कंट्रोल का उपयोग कर रहा है।
00:02:40SQLite के विपरीत जहाँ एक अकेला राइटर पूरे डेटाबेस को लॉक कर सकता है, Stulab एक ही समय में
00:02:47कई रीडर्स और राइटर्स को काम करने की अनुमति देता है। दूसरा, यह पैरेलल एग्जीक्यूशन का उपयोग करता है। Stulab
00:02:53Rayon नाम के शेड्यूलर का उपयोग करता है। और Rayon के साथ, जब आप कोई बड़ी क्वेरी चलाते हैं, तो उसे एक CPU कोर पर भेजने के बजाय,
00:03:00यह उस क्वेरी को छोटे टुकड़ों में बाँट देता है और आपकी मशीन के हर कोर का उपयोग करता है। और तीसरा, यह कॉस्ट-बेस्ड
00:03:06ऑप्टिमाइज़र का उपयोग करता है। तो यह आपके SQL को आँख बंद करके एग्जीक्यूट नहीं करता, यह असल में आपके डेटा का विश्लेषण करता है,
00:03:13अलग-अलग रास्तों की लागत का अनुमान लगाता है, और आपके परिणामों तक पहुँचने का सबसे तेज़ तरीका चुनता है। तो यही वो चीजें हैं
00:03:19जो कथित तौर पर Stulab को SQLite की तुलना में बहुत तेज़ बनाती हैं। लेकिन चलिए इसे परखते हैं कि क्या यह वाकई सच है।
00:03:25इस टेस्ट के लिए, हम एक साधारण Node.js प्रोजेक्ट का उपयोग करेंगे और हम Stulab और
00:03:30SQLite दोनों को डिपेंडेंसी के रूप में इंस्टॉल करेंगे। तो एक सबसे बड़ी जीत जहाँ Stulab वास्तव में चमकता है, वह है count distinct का उपयोग।
00:03:37तो मैं यह जानने के लिए बहुत उत्सुक हूँ कि क्या वास्तव में ऐसा ही है। तो मैंने यह साधारण स्क्रिप्ट तैयार की है जहाँ हम
00:03:43प्रत्येक डेटाबेस का एक इन-मेमोरी वर्जन शुरू करते हैं और एक साधारण सेल्स टेबल बनाते हैं। फिर हम इस टेबल को
00:03:49रैंडम सेल्स डेटा की 10,000 पंक्तियों से भरते हैं जहाँ प्रत्येक पंक्ति एक ऐसे यूजर की सेल दिखाती है जिसकी ID 0 से 1,000
00:03:56के बीच हो सकती है और जिसकी एक विशिष्ट कैटेगरी है। फिर हम दोनों डेटाबेस में डेटा को
00:04:03बैच इंसर्ट करेंगे और फिर बेंचमार्क चलाएंगे जहाँ हम एक विशिष्ट कैटेगरी पर एक विशिष्ट
00:04:10यूजर द्वारा की गई सेल्स की डिस्टिंक्ट काउंट चुनेंगे और प्रत्येक डेटाबेस की परफॉर्मेंस को मापेंगे। अब मुझे
00:04:16यह बताना होगा कि यह थोड़ा निराशाजनक है कि अभी के लिए पैकेज इंस्टॉलेशन काम नहीं कर रहा है। अगर हम अभी
00:04:22बेंचमार्क टेस्ट चलाते हैं, तो हम देखते हैं कि यह मिसिंग नेटिव बाइंडिंग की शिकायत कर रहा है। तो प्रोजेक्ट के
00:04:28लेखक स्पष्ट रूप से बाइनरीज जोड़ना या पैकेज में सही बाइनरीज को लिंक करना भूल गए हैं। इसलिए मुझे
00:04:34इसे सोर्स से बिल्ड करना पड़ा। तो मैंने रेपो को क्लोन किया, उसके अंदर बिल्ड चलाया और फिर वापस
00:04:39अपने बेंचमार्क प्रोजेक्ट पर आया और अपनी सोर्स डायरेक्टरी को डिपेंडेंसी के रूप में लिंक किया। यह इस समय
00:04:44थोड़ा निराशाजनक है, इसलिए मुझे उम्मीद है कि प्रोजेक्ट के लेखक भविष्य में इसे ठीक कर देंगे। लेकिन
00:04:49फिर भी, ऐसा करने के बाद, हम आखिरकार बेंचमार्क चलाने में सक्षम हैं। तो चलिए इसे अभी करते हैं।
00:04:54जैसा कि आप देख सकते हैं, count distinct ऑपरेशन वास्तव में Stulab पर बहुत तेज़ है, हालाँकि उतना नहीं
00:05:01जितना विज्ञापन में दिया गया था। यह केवल चार गुना तेज़ है। तो क्या होगा अगर हम डेटा की संख्या में एक और
00:05:07जीरो जोड़ दें और फिर 1,000,000 पंक्तियों के साथ टेस्ट फिर से चलाएं? तो चलिए इसे अभी आजमाते हैं।
00:05:12तो दस लाख पंक्तियों के लिए भी, Stulab केवल छह गुना तेज़ है, 138 गुना नहीं। लेकिन फिर भी,
00:05:20यह अभी भी एक शानदार परिणाम है। तो यह था count distinct टेस्ट। मैंने एक और बेंचमार्क टेस्ट
00:05:26करने का फैसला किया ताकि distinct + order by ऑपरेशन को परखा जा सके। और इस दूसरे टेस्ट में, मैंने एक ऐसा सेटअप किया जहाँ हम
00:05:33अलग-अलग IP एड्रेस और स्टेटस कोड के साथ कुछ रैंडम लॉग्स डालते हैं, और फिर IP एड्रेस और स्टेटस कोड
00:05:39पेयर द्वारा डिस्टिंक्ट लॉग्स खोजने की कोशिश करते हैं, और फिर उन्हें IP असेंडिंग और स्टेटस कोड
00:05:47डिसेंडिंग के अनुसार व्यवस्थित करते हैं। और जैसा कि आप देख सकते हैं, एक बार जब हम यह टेस्ट चलाते हैं, तो Stulab अभी भी SQLite से बेहतर
00:05:53परफॉर्म करता है, लेकिन 14 गुना नहीं, बल्कि केवल 1 से 1.5 गुना तेज़। तो मेरी राय में, यहाँ दी गई
00:06:01माप थोड़ी बढ़ा-चढ़ाकर बताई गई हैं। लेकिन फिर भी, Stulab वास्तव में SQLite से तेज़ है, जैसा कि हमने अभी टेस्ट में देखा।
00:06:08निष्पक्ष होने के लिए, लेखक ने उन क्षेत्रों का भी उल्लेख किया है जहाँ SQLite अभी भी Stulab से बेहतर प्रदर्शन करता है।
00:06:13और ये ज्यादातर ऐसी स्थितियाँ हैं जहाँ आप सिंगल रो ऑपरेशन्स करते हैं। इसलिए Stulab एनालिटिकल
00:06:19और जटिल क्वेरीज के लिए बेहतरीन है। तो क्या Stulab, SQLite को खत्म कर देगा? सच कहूँ तो, नहीं। वे
00:06:26बिल्कुल अलग चीजों के लिए बने हैं। SQLite अभी भी ट्रांजैक्शन के लिए आपका भरोसेमंद डेली ड्राइवर है,
00:06:32लेकिन Stulab डेटा विश्लेषण के लिए आपकी हाई परफॉर्मेंस रेस कार हो सकता है। लेकिन यह तथ्य कि अब
00:06:38हमारे पास एक शुद्ध Rust एनालिटिकल इंजन है जिसे हम NAPI-RS के साथ किसी Node.js प्रोजेक्ट में डाल सकते हैं,
00:06:45काफी अच्छी बात है। प्रोजेक्ट मालिकों को बस यह सुनिश्चित करना होगा कि वे अपने वर्तमान NPM पैकेज को पैच करें,
00:06:50ताकि हमें इसे सोर्स से बिल्ड न करना पड़े। तो दोस्तों, यह था संक्षेप में Stulab।
00:06:55लेकिन आप इसके बारे में क्या सोचते हैं? क्या परफॉर्मेंस बूस्ट Stulab पर स्विच करने के लायक है, या आप
00:07:01SQLite की विश्वसनीयता के साथ ही बने रहेंगे? हमें नीचे कमेंट्स में बताएं। और दोस्तों, अगर आपको यह
00:07:06वीडियो उपयोगी लगा, तो कृपया वीडियो के नीचे उस लाइक बटन को दबाकर मुझे बताएं। और यह भी
00:07:11मत भूलना कि हमारे चैनल को सब्सक्राइब करें। मैं Better Stack से Andris हूँ और मैं आपसे
00:07:17अगले वीडियो में मिलूँगा।