स्लाइडिंग विंडो काउंटर और फिक्स्ड टाइम विंडो, एनालिटिक्स सिस्टम में टाइम-बेस्ड डेटा एग्रीगेशन के दो मुख्य तरीके हैं। स्लाइडिंग विंडो, इंटरवल को ओवरलैप करके ज़्यादा स्मूद और सटीक ट्रेंड विज़िबिलिटी देती हैं, जबकि फिक्स्ड विंडो बड़े पैमाने पर कैलकुलेट करने के लिए आसान और सस्ती रहती हैं।
मुख्य बातें
स्लाइडिंग विंडो बाउंड्री-स्प्लिटिंग आर्टिफैक्ट को खत्म कर देती हैं, जिससे फिक्स्ड विंडो ट्रैफिक स्पाइक्स को अंडररिपोर्ट करती हैं।
फिक्स्ड विंडो में कंप्यूट और स्टोरेज का खर्च कम होता है क्योंकि हर इवेंट सिर्फ़ एक बकेट को अपडेट करता है।
प्रोडक्शन API गेटवे में सब-सेकंड रेट लिमिटिंग के लिए स्लाइडिंग विंडो पसंदीदा मॉडल हैं।
ज़्यादातर एनालिटिक्स डैशबोर्ड और SQL-बेस्ड रिपोर्टिंग पाइपलाइन में फिक्स्ड विंडो डिफ़ॉल्ट रहती हैं।
स्लाइडिंग विंडो काउंटर क्या है?
एक टाइम-सीरीज़ एग्रीगेशन तरीका जो सटीक ट्रेंड ट्रैकिंग के लिए ओवरलैपिंग इंटरवल पर मेट्रिक्स को लगातार अपडेट करता है।
स्लाइडिंग विंडो काउंटर समय को ओवरलैपिंग बकेट में बांटते हैं, इसलिए हर पल एक साथ कई विंडो से जुड़ा होता है।
वे ज़्यादा स्मूद मेट्रिक ट्रांज़िशन करते हैं क्योंकि हर डेटा पॉइंट सिर्फ़ एक के बजाय कई आस-पास की विंडो में योगदान देता है।
आम इम्प्लीमेंटेशन में टम्बलिंग-विद-रिपेयर, स्लाइडिंग-लॉग, और स्लाइडिंग-काउंटर एल्गोरिदम शामिल हैं, जिनका इस्तेमाल प्रोडक्शन मॉनिटरिंग स्टैक में किया जाता है।
इनका इस्तेमाल रेट-लिमिटिंग सिस्टम में बड़े पैमाने पर किया जाता है, जहाँ सब-सेकंड इंटरवल में बर्स्ट डिटेक्शन मायने रखता है।
Google Cloud Monitoring और AWS CloudWatch जैसे क्लाउड प्लेटफ़ॉर्म, स्लाइडिंग विंडो एग्रीगेशन को एक कॉन्फ़िगर करने लायक ऑप्शन के तौर पर दिखाते हैं।
निश्चित समय विंडोज़ क्या है?
एक पारंपरिक एग्रीगेशन तरीका जो इवेंट्स को मिनट या घंटे जैसे नॉन-ओवरलैपिंग कैलेंडर-अलाइन्ड इंटरवल में ग्रुप करता है।
फिक्स्ड टाइम विंडो टाइमलाइन को अलग-अलग, नॉन-ओवरलैपिंग बकेट में बांट देती हैं, जो हर मिनट या घंटे की तरह क्लॉक बाउंड्री से अलाइन होती हैं।
वे ज़्यादातर रिलेशनल डेटाबेस में डिफ़ॉल्ट एग्रीगेशन मॉडल हैं जो टाइमस्टैम्प कॉलम पर GROUP BY क्वेरी चलाते हैं।
फिक्स्ड विंडो एज आर्टिफैक्ट बना सकती हैं, जहां ट्रैफिक स्पाइक्स दो बकेट में बंट जाते हैं और असल में जितने होते हैं, उससे छोटे दिखते हैं।
उन्हें कम से कम स्टोरेज की ज़रूरत होती है क्योंकि हर इवेंट को एक ही बकेट में ठीक एक बार गिना जाता है।
Google Analytics, Matomo जैसे टूल और ज़्यादातर लॉग एनालिटिक्स डैशबोर्ड अपनी डिफ़ॉल्ट रिपोर्ट के लिए फिक्स्ड विंडो एग्रीगेशन पर निर्भर करते हैं।
तुलना तालिका
विशेषता
स्लाइडिंग विंडो काउंटर
निश्चित समय विंडोज़
एकत्रीकरण मॉडल
ओवरलैपिंग अंतराल जो लगातार स्लाइड करते हैं
क्लॉक बाउंड्री के साथ अलाइन किए गए नॉन-ओवरलैपिंग इंटरवल
खिड़की के किनारों पर सटीकता
उच्च - कोई किनारा विरूपण नहीं
लोअर — स्पाइक्स को बाउंड्री के पार बांटा जा सकता है
कम्प्यूटेशनल लागत
ज़्यादा — हर इवेंट के लिए कई बकेट अपडेट किए गए
कम करें — हर इवेंट में एक बकेट अपडेट किया जाता है
भंडारण आवश्यकताएँ
अधिक — ओवरलैपिंग डेटा को बनाए रखना होगा
मिनिमल — हर इवेंट एक बार स्टोर होता है
कार्यान्वयन जटिलता
मध्यम से उच्च
कम
सबसे उपयुक्त
दर सीमित करना, विसंगति का पता लगाना, SLO निगरानी
रिपोर्टिंग डैशबोर्ड, बिलिंग, आसान एनालिटिक्स
विलंबता संवेदनशीलता
सब-सेकंड ग्रैन्युलैरिटी को अच्छी तरह से हैंडल करता है
सबसे अच्छा, बारीक या मोटे दानेदारपन पर
सामान्य एल्गोरिदम
स्लाइडिंग लॉग, स्लाइडिंग काउंटर, टम्बलिंग विंडो रिपेयर के साथ
टम्बलिंग विंडो, कैलेंडर बकेट एग्रीगेशन
विस्तृत तुलना
हर तरीका समय को कैसे संभालता है
फिक्स्ड टाइम विंडो समय को अलग-अलग बकेट की एक सीरीज़ की तरह मानती हैं जो पहले से तय क्लॉक बाउंड्री पर शुरू और खत्म होती हैं। इसके उलट, स्लाइडिंग विंडो काउंटर हर इवेंट को एक साथ कई ओवरलैपिंग विंडो पर असर डालने देते हैं, जिसका मतलब है कि 10:59:30 पर कैलकुलेट किया गया मेट्रिक सिर्फ़ मौजूदा मिनट बकेट के बजाय पिछले कुछ मिनटों का डेटा दिखाता है। यह ओवरलैपिंग डिज़ाइन ही स्लाइडिंग विंडो को उनकी खास स्मूदनेस देता है।
सटीकता और किनारे के प्रभाव
सबसे बड़ा प्रैक्टिकल अंतर विंडो बाउंड्री पर दिखता है। फिक्स्ड विंडो के साथ, 10:59:55 पर शुरू होने वाला और 11:00:05 पर खत्म होने वाला ट्रैफिक स्पाइक दो बकेट में बंट जाता है, जिससे पीक असल में जितना था उससे छोटा दिखता है। स्लाइडिंग विंडो काउंटर इस आर्टिफैक्ट से बचते हैं क्योंकि स्पाइक उन विंडो में योगदान देता है जो बाउंड्री को फैलाती हैं। SLO ट्रैकिंग और अलर्टिंग के लिए, यह अंतर किसी असली घटना के पकड़े जाने या छूट जाने का कारण हो सकता है।
लागत और प्रदर्शन में उतार-चढ़ाव
स्लाइडिंग विंडो ज़्यादा महंगी होती हैं क्योंकि हर आने वाला इवेंट सिर्फ़ एक काउंटर के बजाय कई काउंटर अपडेट करता है। हर सेकंड लाखों इवेंट हैंडल करने वाले हाई-थ्रूपुट सिस्टम में, यह ओवरहेड मायने रखता है। फिक्स्ड विंडो सस्ती और प्रेडिक्टेबल रहती हैं, इसीलिए वे ज़्यादातर एनालिटिक्स वेयरहाउस और रिपोर्टिंग टूल में डिफ़ॉल्ट रहती हैं। इसका नतीजा यह होता है कि बेहतर टेम्पोरल रिज़ॉल्यूशन के बदले में ज़्यादा कंप्यूट और स्टोरेज का पेमेंट करना पड़ता है।
कार्यान्वयन जटिलता
फिक्स्ड विंडो को लागू करना आसान है — एक छोटे टाइमस्टैम्प पर एक सिंपल GROUP BY लगभग किसी भी डेटाबेस में काम करता है। स्लाइडिंग विंडो के लिए ज़्यादा सोचना पड़ता है, जिसमें अक्सर रिंग बफ़र, वेटेड काउंटर, या रिपेयर के साथ स्लाइडिंग विंडो काउंटर जैसे एप्रोक्सिमेशन एल्गोरिदम शामिल होते हैं। इंजीनियर आमतौर पर इन्हें शुरू से बनाने के बजाय लाइब्रेरी या मैनेज्ड सर्विस का इस्तेमाल करते हैं।
विशिष्ट उपयोग के मामले
फिक्स्ड विंडो बिज़नेस रिपोर्टिंग, बिलिंग सिस्टम और किसी भी ऐसी सिनेरियो में सबसे ज़्यादा इस्तेमाल होती हैं, जहाँ कैलेंडर-अलाइन्ड नंबर्स प्रिसिजन से ज़्यादा मायने रखते हैं। स्लाइडिंग विंडो रेट लिमिटिंग, फ्रॉड डिटेक्शन और रियल-टाइम ऑब्ज़र्वेबिलिटी में सबसे अच्छी होती हैं, जहाँ एक छोटी सी अनोमली को मिस करना महंगा पड़ सकता है। कई प्रोडक्शन सिस्टम असल में दोनों को मिलाते हैं — लॉन्ग-टर्म रिपोर्टिंग के लिए फिक्स्ड विंडो और शॉर्ट-टर्म ऑपरेशनल फैसलों के लिए स्लाइडिंग विंडो का इस्तेमाल करते हैं।
लाभ और हानि
स्लाइडिंग विंडो काउंटर
लाभ
+सुचारू मीट्रिक संक्रमण
+सीमाओं पर सटीक
+विसंगति का पता लगाने के लिए बढ़िया
+उप-सेकंड ग्रैन्युलैरिटी
सहमत
−उच्च कंप्यूट लागत
−अधिक संग्रहण की आवश्यकता है
−लागू करना जटिल
−ऐतिहासिक रूप से बैकफ़िल करना कठिन
निश्चित समय विंडोज़
लाभ
+लागू करने में आसान
+कम संसाधन उपयोग
+आसान SQL एकत्रीकरण
+पूर्वानुमानित बकेट संरेखण
सहमत
−किनारे-विभाजन कलाकृतियाँ
−मोटे तौर पर रुझान की दृश्यता
−स्पाइक अंडररिपोर्टिंग
−रियल-टाइम अलर्ट के लिए कम उपयुक्त
सामान्य भ्रांतियाँ
मिथ
स्लाइडिंग विंडो हमेशा सही गिनती बताती हैं।
वास्तविकता
ज़्यादातर प्रोडक्शन स्लाइडिंग विंडो इम्प्लीमेंटेशन, रिपेयर के साथ स्लाइडिंग काउंटर जैसे एप्रोक्सिमेशन एल्गोरिदम का इस्तेमाल करते हैं, जो मेमोरी एफिशिएंसी में बड़े फ़ायदे के लिए थोड़ी एक्यूरेसी का ट्रेड करते हैं। ट्रू एक्ज़ैक्ट स्लाइडिंग विंडो (स्लाइडिंग लॉग) के लिए हर इवेंट को स्टोर करना ज़रूरी होता है, जो बड़े पैमाने पर शायद ही प्रैक्टिकल हो।
मिथ
फिक्स्ड खिड़कियां पुरानी हो गई हैं और उन्हें बदला जा रहा है।
वास्तविकता
डेटा वेयरहाउस, बिलिंग सिस्टम और बिज़नेस इंटेलिजेंस टूल्स में फिक्स्ड विंडो सबसे अहम एग्रीगेशन मॉडल बने हुए हैं। स्लाइडिंग विंडो उनकी जगह लेने के बजाय उन्हें पूरा करती हैं, और ज़्यादातर प्लेटफॉर्म दोनों को साथ-साथ सपोर्ट करते हैं।
मिथ
स्लाइडिंग विंडो हमेशा फिक्स्ड विंडो से ज़्यादा सटीक होती हैं।
वास्तविकता
स्लाइडिंग विंडो बाउंड्री डिस्टॉर्शन को कम करती हैं लेकिन सैंपलिंग एरर या एप्रोक्सिमेशन एरर को खत्म नहीं करती हैं। एल्गोरिदम और कॉन्फ़िगरेशन के आधार पर, कुछ मेट्रिक्स के लिए एक खराब ट्यून की गई स्लाइडिंग विंडो एक अच्छी ट्यून की गई फिक्स्ड विंडो से कम सटीक हो सकती है।
मिथ
स्लाइडिंग विंडो इस्तेमाल करने के लिए आपको एक खास डेटाबेस की ज़रूरत होगी।
वास्तविकता
हालांकि TimescaleDB और InfluxDB जैसे टाइम-सीरीज़ डेटाबेस स्लाइडिंग विंडो को आसान बनाते हैं, आप उन्हें किसी भी सिस्टम में इम्प्लीमेंट कर सकते हैं जो विंडो फ़ंक्शन को सपोर्ट करता है, जिसमें PostgreSQL, BigQuery और Apache Flink शामिल हैं।
मिथ
फिक्स्ड विंडो छोटे बर्स्ट का पता नहीं लगा सकतीं।
वास्तविकता
फिक्स्ड विंडो तब तक बर्स्ट का पता लगा सकती हैं जब तक बर्स्ट का समय विंडो साइज़ से ज़्यादा हो। इसकी कमी यह है कि एक बाउंड्री में फैले बर्स्ट बंट जाते हैं, लेकिन छोटा विंडो साइज़ (जैसे, 1 मिनट के बजाय 1 सेकंड) चुनने से कई मामलों में यह कम हो सकता है।
अक्सर पूछे जाने वाले सवाल
स्लाइडिंग विंडो काउंटर और फिक्स्ड टाइम विंडो के बीच मुख्य अंतर क्या है?
फिक्स्ड टाइम विंडो इवेंट्स को क्लॉक बाउंड्री के हिसाब से नॉन-ओवरलैपिंग बकेट में ग्रुप करती हैं, जबकि स्लाइडिंग विंडो काउंटर ओवरलैपिंग इंटरवल का इस्तेमाल करते हैं, इसलिए हर इवेंट कई विंडो में योगदान देता है। यह ओवरलैप स्लाइडिंग विंडो को बाउंड्री पर ज़्यादा स्मूद और सटीक बनाता है।
फिक्स्ड विंडो ट्रैफिक स्पाइक्स को अंडररिपोर्ट क्यों करती हैं?
जब कोई स्पाइक विंडो बाउंड्री को पार करता है, तो वह दो बकेट के बीच बंट जाता है, इसलिए कोई भी बकेट सही पीक नहीं दिखाता है। स्लाइडिंग विंडो इससे बचती हैं क्योंकि स्पाइक उन विंडो में योगदान देता है जो बाउंड्री को पार करती हैं, जिससे सही मैक्सिमम वैल्यू बनी रहती है।
रेट लिमिटिंग के लिए कौन सा तरीका बेहतर है?
रेट लिमिटिंग के लिए स्लाइडिंग विंडो काउंटर को आम तौर पर पसंद किया जाता है क्योंकि वे यूज़र्स को विंडो बाउंड्री पर बर्स्ट भेजकर सिस्टम को गेमिंग करने से रोकते हैं। कई प्रोडक्शन API गेटवे, जिनमें एन्वॉय और कोंग पर बने गेटवे भी शामिल हैं, इसी वजह से स्लाइडिंग विंडो एल्गोरिदम का इस्तेमाल करते हैं।
क्या स्लाइडिंग विंडो काउंटर चलाना महंगा है?
इनकी कीमत फिक्स्ड विंडो से ज़्यादा होती है क्योंकि हर इवेंट कई काउंटर को अपडेट करता है, लेकिन रिपेयर के साथ स्लाइडिंग काउंटर जैसे ऑप्टिमाइज़्ड एल्गोरिदम विंडो की लंबाई की परवाह किए बिना मेमोरी का इस्तेमाल लगभग एक जैसा रखते हैं। मिली एक्यूरेसी के लिए ओवरहेड आमतौर पर ठीक रहता है।
क्या मैं एक ही सिस्टम में दोनों तरीकों का इस्तेमाल कर सकता हूँ?
हाँ, और कई प्रोडक्शन सिस्टम ठीक यही करते हैं। फिक्स्ड विंडो लंबे समय की रिपोर्टिंग और बिलिंग के लिए अच्छा काम करती हैं, जबकि स्लाइडिंग विंडो अलर्टिंग और रेट लिमिटिंग जैसे कम समय के ऑपरेशनल फैसलों को संभालती हैं। ज़्यादातर मॉडर्न ऑब्ज़र्वेबिलिटी प्लेटफॉर्म दोनों को कॉन्फ़िगर करने लायक ऑप्शन के तौर पर दिखाते हैं।
रिपेयर के साथ टम्बलिंग विंडो क्या है?
यह एक हाइब्रिड एल्गोरिदम है जो अंदर से फिक्स्ड टम्बलिंग विंडो का इस्तेमाल करता है, लेकिन स्लाइडिंग विंडो का अंदाज़ा लगाने के लिए पिछली विंडो के डेटा के आधार पर एक करेक्शन फैक्टर लागू करता है। यह प्रोमेथियस जैसे सिस्टम में स्टोरेज कॉस्ट के एक हिस्से पर स्लाइडिंग-विंडो जैसी एक्यूरेसी पाने के लिए पॉपुलर है।
क्या SQL डेटाबेस स्लाइडिंग विंडो क्वेरी को सपोर्ट करते हैं?
ज़्यादातर मॉडर्न SQL इंजन ROWS BETWEEN, RANGE BETWEEN, और स्ट्रीमिंग SQL में टंबलिंग विंडो सिंटैक्स जैसे विंडो फ़ंक्शन के ज़रिए स्लाइडिंग विंडो को सपोर्ट करते हैं। PostgreSQL, BigQuery, Snowflake, और Apache Flink सभी इन पैटर्न को नेटिवली सपोर्ट करते हैं।
मैं सही विंडो साइज़ कैसे चुनूँ?
एक विंडो साइज़ चुनें जो उस बिहेवियर के टाइमस्केल से मैच करे जिसे आप डिटेक्ट करना चाहते हैं। API रेट लिमिट के लिए, सेकंड या मिनट आम हैं। बिज़नेस रिपोर्टिंग के लिए, घंटे या दिन ज़्यादा आम हैं। छोटी विंडो बेहतर रिज़ॉल्यूशन देती हैं लेकिन स्टोरेज और कंप्यूट कॉस्ट बढ़ा देती हैं।
क्या गूगल एनालिटिक्स फिक्स्ड या स्लाइडिंग विंडो का इस्तेमाल कर रहा है?
गूगल एनालिटिक्स और ज़्यादातर वेब एनालिटिक्स प्लेटफ़ॉर्म फिक्स्ड टाइम विंडो का इस्तेमाल करते हैं क्योंकि उनकी रिपोर्ट कैलेंडर के हिसाब से होती हैं (हर दिन सेशन, हर हफ़्ते यूज़र, वगैरह)। इंफ्रास्ट्रक्चर मॉनिटरिंग और रियल-टाइम फ्रॉड का पता लगाने में स्लाइडिंग विंडो ज़्यादा आम हैं।
स्लाइडिंग लॉग एल्गोरिदम क्या है?
स्लाइडिंग लॉग एल्गोरिदम विंडो में हर इवेंट के लिए एक टाइमस्टैम्प स्टोर करता है और ज़रूरत पड़ने पर उन्हें गिनता है। यह एकदम सही नतीजे देता है लेकिन इवेंट की संख्या के हिसाब से मेमोरी का इस्तेमाल करता है, जिससे यह हाई-थ्रूपुट सिस्टम के लिए प्रैक्टिकल नहीं है। ज़्यादातर प्रोडक्शन सिस्टम इसके बजाय अंदाज़े का इस्तेमाल करते हैं।
निर्णय
जब बाउंड्री पर एक्यूरेसी और स्मूद ट्रेंड विज़िबिलिटी, रॉ कॉस्ट से ज़्यादा मायने रखती है, तो स्लाइडिंग विंडो काउंटर चुनें, खासकर रेट लिमिटिंग, SLO मॉनिटरिंग और एनॉमली डिटेक्शन के लिए। रूटीन रिपोर्टिंग, बिलिंग और किसी भी वर्कलोड के लिए फिक्स्ड टाइम विंडो चुनें, जहाँ सिम्प्लिसिटी, कम ओवरहेड और कैलेंडर-अलाइन्ड बकेट प्रायोरिटी हों।