कोर डेटाएनालिटिक्स

Probabilistic Structures के साथ बड़े पैमाने पर गिनती

यूनिक विज़िटर, "क्या हमने यह पहले देखा है?", टॉप आइटम और फ़्रीक्वेंसी, अरबों इवेंट पर, हर एक छोटी और तय मेमोरी में।

probabilistic structures
4
हर structure की मेमोरी
Fixed
error सीमाएँ
Known
कदम 1 में से 5
यूनिक विज़िटर

विज़िटर id को HyperLogLog में जोड़ें। कितने भी आएँ, मेमोरी छोटी रहती है।

उदाहरण सेशनplaying
# यूनिक विज़िटर
hotkv> PFADD visitors:2026-10-16 user:42 user:77 user:91
(integer) 1

असली HotKV कमांड और उदाहरण रिस्पॉन्स के साथ एक एनिमेटेड वॉकथ्रू। किसी भी कदम पर क्लिक करके वहां पहुंचें। कमांड और रिस्पॉन्स अंग्रेज़ी में ही रहते हैं, ठीक वैसे जैसे आप HotKV में टाइप करते और देखते हैं।

समस्या

"कितने यूनिक यूज़र", "क्या हमने यह ईमेल पहले भेजा है" या "टॉप सर्च क्या हैं" जैसे सवालों के सटीक जवाब के लिए ऐसी मेमोरी चाहिए जो हर अलग आइटम के साथ बढ़ती है। अरबों इवेंट पर यह हर सवाल के लिए गीगाबाइट के sets और काउंटर बन जाता है।

HotKV इसे कैसे संभालता है

Probabilistic structures एक छोटी, ज्ञात error के बदले constant मेमोरी देते हैं। HyperLogLog अलग-अलग आइटम गिनता है, Bloom filters membership का जवाब देते हैं, Top-K सबसे ज़्यादा आने वाले आइटम ट्रैक करता है और Count-min sketches अनुमान लगाते हैं कि कोई भी आइटम कितनी बार आया। चारों HotKV में built-in हैं।

कदम दर कदम

क्या होता है, कमांड दर कमांड

  1. 01

    यूनिक विज़िटर

    विज़िटर id को HyperLogLog में जोड़ें। कितने भी आएँ, मेमोरी छोटी रहती है।

    PFADD visitors:2026-10-16 user:42 user:77 user:91
  2. 02

    कितने?

    अलग-अलग विज़िटर का अनुमान, छोटी standard error के साथ।

    PFCOUNT visitors:2026-10-16
  3. 03

    कभी दो बार न भेजें

    कैंपेन ईमेल भेजने से पहले जाँचें कि इस पते को वह पहले ही मिल चुका है या नहीं।

    BF.EXISTS sent:campaign:fall ada@example.com
  4. 04

    टॉप सर्च

    इवेंट स्ट्रीम होते रहने पर Top-K सबसे ज़्यादा आने वाले आइटम रखता है।

    TOPK.LIST searches:today WITHCOUNT
  5. 05

    किसी भी आइटम की कितनी बार

    Count-min sketch किसी भी आइटम की गिनती का अनुमान लगाता है, चाहे वह सूची में हो या नहीं।

    CMS.QUERY pageviews /home /pricing /blog
कहां फ़िट बैठता है

असली परिदृश्य

वेब और ऐप एनालिटिक्स

हर पेज या फ़ीचर के रोज़ाना और मासिक यूनिक यूज़र, PFMERGE से दिनों में मर्ज किए हुए।

ईमेल और नोटिफ़िकेशन

Bloom filters retries और कैंपेन के बीच duplicate भेजना रोकते हैं।

सर्च और कॉमर्स

मर्चेंडाइज़िंग के लिए टॉप क्वेरी और सबसे ज़्यादा देखे गए प्रोडक्ट लाइव ट्रैक होते हैं।

अंतर्निहित

आपको क्या मिलता है

HyperLogLog

अलग-अलग गिनती, buckets के बीच मर्ज करने योग्य।

PFADDPFCOUNTPFMERGE

Bloom filters

membership, कॉन्फ़िगर करने योग्य false positive रेट के साथ।

BF.RESERVEBF.ADDBF.EXISTS

Top-K

स्ट्रीम में सबसे ज़्यादा आने वाले आइटम।

TOPK.ADDTOPK.LIST

Count-min sketch

किसी भी आइटम की फ़्रीक्वेंसी का अनुमान।

CMS.INCRBYCMS.QUERY

आम सवाल

ये कितने सटीक हैं?

Bloom filters में आप error रेट तय करते हैं, और Count-min sketches में चौड़ाई और गहराई। HyperLogLog की standard error छोटी और तय होती है।

क्या Bloom filter कुछ ऐसा चूक सकता है जो उसने देखा हो?

नहीं। वह false positive बता सकता है, कभी false negative नहीं।

क्या मुझे कोई module चाहिए?

नहीं। ये HotKV का हिस्सा हैं।

संबंधित उपयोग के मामले

इसे अपने वर्कलोड पर आज़माएं

HotKV Redis प्रोटोकॉल बोलता है, इसलिए आप किसी मौजूदा क्लाइंट को इसकी ओर इंगित करके यही कमांड चला सकते हैं।