अनुक्रमण विश्लेषणात्मक भंडार
1) आईगेमिंग प्लेटफॉर्म को अनुक्रमित क्यों करें
एनालिटिक्स गति: GGR/NET, रूपांतरण, RG/AML और A/B प्रयोगों पर रिपोर्ट SLA में फिट होती है।
लागत: कम बाइट्स स्कैन करने के लिए → कम गणना/गोदाम बिल।
विश्वसनीयता: स्थिर p95/p99 डैशबोर्ड विलंबता और एपीआई मैट्रिक्स।
स्केल: "पूर्ण स्कैन" नारकीय मूल्य के बिना दर्जनों ब्रांड/बाजार/पीएसपी/प्रदाता।
2) लोड मॉडल (अनुक्रमण से पहले)
Факты: 'भुगतान', 'गेम _ राउंड्स', 'सेशन', 'बोनस _ इवेंट्स'।
आयाम: 'dim _ user' (PII के बिना), 'dim _ privider', 'dim _ psp', 'dim _ compant'।
अनुरोध: "अंतिम एन दिन", 'ब्रांड/देश/प्रदाता/psp' द्वारा एकत्रीकरण, स्थिति क्षेत्र द्वारा फिल्टर, सरोगेट-कुंजियों से जुड़ ना, JSON विशेषताओं (भुगतान विधि, उपकरण), शीर्ष-के/प्षकण।
हम चयनात्मकता, कार्डिनैलिटी और उपयोग की आवृत्ति के आधार पर सूचकांकों का चयन करते हैं।
3) सूचकांकों के प्रकार और उन्हें कब लेना है
3. 1 क्लासिक्स
बी-ट्री: उच्च चयनात्मक स्तंभों के लिए समानता/रेंज ('user _ sorogate _ id', 'heased _ at', 'राशि').
हैश: शुद्ध समानता; एनालिटिक्स में कम बार (रेंज कमजोर के खिलाफ)।
बिटमैप: कम कार्डिनैलिटी और लगातार जुड़े हुए फिल्टर ('देश', 'kyc _ level', 'rg _ state', 'ब्रांड')। मास्क को सम्मिलित करने के लिए अलग।
3. 2 स्तम्भ विशिष्टता
मिन-मैक्स (डेटा स्किपिंग): स्वचालित आंकड़े "न्यूनतम/अधिकतम" लकड़ी की पट्टियों/भागों में - इंजन छोड़ देता है। फ़िल्टर किए गए फ़ील्ड द्वारा छांटे जाने पर बेहतर काम करता
ब्लूम इंडेक्स: ब्लॉक में मान से संबंधित त त्वरित संभाव्य परीक्षण ('उपयोगकर्ता _ आईडी', 'लेनदेन _ आईडी', 'पीएसपी' के लिए उपयोगी)।
ब्रिन (ब्लॉक रेंज इंडेक्स): अगर डेटा स्वाभाविक रूप से ऑर्डर किया जाता है (समय) तो ब्लॉक करने के लिए सस्ता "पॉइंटर्स"। समय-श्रृंखला के लिए सस्ता लेकिन प्रभावी।
3. 3 उन्नत/विशिष्ट
GiST/GIN (उल्टे): JSON/arrays/text, नेस्टेड गुणों द्वारा फ़िल्टर ('मेटाडेटा। विधि = 'पापारा', 'डिवाइस। ओएस में [...] ')।
शामिल हों/प्रक्षेपण (क्लिकहाउस/एमपीपी): शामिल होने/एग में तेजी लाने के लिए सामग्री (प्री-जॉइन कुंजी तथ्य, प्रारंभिक एकत्रीकरण के बगल में संग्रहीत है)।
वेक्टर (एएनएन): समान एम्बेडिंग (सिफारिशों/विरोधी धोखाधड़ी व्यवहार) के लिए खोज करें - आईवीएफ/एचएनएसडब्ल्यू/फ्लैट "निकटतम पड़ोसी सूचकांक" के रूप में।
जेड-ऑर्डर/जेड-ऑर्डर (लेकहाउस/डाटाब्रिक्स )/क्लस्टर कुंजी (स्नोफ्लेक )/ऑर्डर बाय (क्लिकहाउस): बेहतर डेटा स्किपिंग के लिए डिस्क पर डेटा का बहुआयामी क्लस्टरिंग।
4) विभाजन, छंटाई, क्लस्टरिंग
पार्टियां (तिथि/देश/ब्रांड): छोटी फाइलों के अभिशाप से बचने के लिए बड़ा (दिन/सप्ताह)। "हम व्हेयर/एक्सेस अधिकारों में उच्च चयनात्मकता वाले क्षेत्रों का चयन करते हैं।
एक पार्टी के भीतर छंटनी: 'ऑर्डर बाय (occurred_at, ब्रांड, psp)' या जेड-ऑर्डर बाय '(ब्रांड, कंट्री, प्रदाता) - इस तरह से मिन-मैक्स और ब्लूम बेहतर काम करते हैं।
क्लस्टर/रिक्लस्टर: इलाके को बनाए रखने के लिए आवधिक पुनर्वर्गीकरण।
टीटीएल और प्रतिधारण: पुराने भागों/खंडों का स्वचालित विलोपन।
5) भौतिक दृष्टिकोण और अनुमान
हॉट स्लाइस के लिए एमवी: 'भुगतान _ 7d _ by _ by _ brand _ psp', 'राउंड _ 1d _ by _ provider'। हम स्ट्रीमिंग अपसर्ट का समर्थन करते हैं।
क्लिकहाउस/एग्रीगेट टेबल-प्रीसेट्स, रोल-अप लेवल (chas→den→nedelya)।
परिणाम कैश: पुनरावृत्त डैशबोर्ड के लिए क्वेरी परिणाम कैश/गोदाम परिणाम कैश (क्वेरी टोकन और डेटा ताजगी द्वारा मान्य)।
6) अर्ध-संरचित डेटा (JSON/VARIANT)
पथ द्वारा सूचकांक: उलटा/जीआईएन सूचकांक json पथ पर ('$ .device। ओएस ',' $ .psp. विवरण। विधि ')।
स्तंभों में महत्वपूर्ण विशेषताओं का भौतिककरण: स्थिर फिल्टर (भुगतान विधि, उपकरण, अनुप्रयोग संस्करण) के लिए।
मुख्य आंकड़े: एक चयनात्मक योजना के लिए वितरण एकत्र करना।
7) डेटा झीलें: आइसबर्ग/डेल्टा/हुडी
मैनिफेस्ट इंडेक्स: लकड़ी की फ़ाइलों के बारे में मेटाडेटा (मिनट-मैक्स, नल-काउंट, ब्लूम) → पार्टीशन प्रूनिंग + फ़ाइल स्किपिंग।
फ़ाइल संपीड़न/विलय: छोटी फ़ाइलों का नियमित विलय "इष्टतम" आकार (128-1024 एमबी) में होता है।
क्लस्टरिंग/जेड-ऑर्डर: सहसंबद्ध क्षेत्रों के लिए फ़ाइलों को फिर से तैयार करना (उदा। 'ब्रैंड, देश, hease _ at')।
मिटाएँ/अद्यतन सूचकांक: विलय-ऑन-रीड को गति देने के लिए स्थिति डेल्टास और खिलना।
8) सूचकांक कैसे चुनें: व्यावहारिक चेकलिस्ट
1. शीर्ष N निवेदन (लोड का 90%) एकत्र करें →/जुड़ें/समूह फ़िल्टर फ़ील्ड।
2. प्रत्येक क्षेत्र के लिए, चयनात्मकता 'सेल = 1 - विशिष्ट (मान )/पंक्तियों' और कार्डिनैलिटी का मूल्यांकन करें।
3. स्थिर फिल्टर/एक्सेस के साथ समय + 1-2 माप द्वारा बैच।
4. फ़िल्टर से मेल खाने और कुंजियों में शामिल होने के लिए सॉर्ट/क्लस्टर कुंजी।
5. बिंदु आईडी के लिए खिलना, कम कार्डिनैलिटी के लिए बिटमैप जोड़ें।
6. गर्म एकत्रीकरण → एमवी/अनुमान।
7. JSON पथ - उलटा सूचकांक + भौतिककरण।
8. झीलों पर - एक शेड्यूल पर संघनन और क्लस्टरिंग।
9. SLO दर्ज करें: p95 विलंबता, बाइट स्कैन/निवेदन, छोड़ा डाटा दर.
9) समर्थन और रखरखाव
विश्लेषण/आंकड़े: कार्डिनलिटी और हिस्टोग्राम अपडेट करें; अन्यथा, अनुकूलक "अंधा" है।
VECUUM/OPLIZE/RECLUSTER: अपवित्रता और पुनर्वर्गीकरण।
सूचकांक के उपयोग की निगरानी: "कवर दर", "अप्रयुक्त सूचकांक सूची", "बाइट्स स्कैन/बाइट्स छोड़ दिया"।
ऑटो-सलाहकार: क्लस्टर कुंजियों के लिए आवधिक सिफारिशें और क्वेरी लॉग के आधार पर छंटाई।
प्रतिगमन परीक्षण: नई कुंजियों को कम करने से पहले - अनुरोध प्रोफ़ाइल और लागत की तुलना करना।
10) मेट्रिक्स और एसएलओ इंडेक्सिंग
तकनीकी: p95/p99 विलंबता, स्कैन किए गए बाइट्स/क्वेरी, स्किप्ड बाइट्स%, फ़ाइलें छुईं, कैश हिट-रेट।
अर्थव्यवस्था: $/अनुरोध, $/डैशबोर्ड, $/टीबी स्कैन।
संचालन: संघनन समय, पुनर्वर्गीकरण कतार, "छोटी फ़ाइलों" का हिस्सा।
योजनाओं की गुणवत्ता: सूचकांकों/अनुमानों का उपयोग करके प्रश्नों का अनुपात, कार्डिनलिटी की सटीकता।
11) आईगेमिंग मामले (तैयार व्यंजनों)
11. 1 भुगतान/पीएसपी: ड्रॉप्स/रिफ्यूसल
पार्टी: 'दिन के हिसाब से'। '(ब्रांड, देश, occurred_at)' सॉर्ट करें।
ब्लूम: 'ट्रांजेक्शन _ id', 'user _ id'। बिटमैप: 'psp', 'स्थिति'।
एमवी: 'भुगतान _ 7d _ by _ brand _ psp (स्थिति, गिरावट)'।
परिणाम: 8 के साथ p95 ↓। 2 से 1 तक। 1s, स्कैन किए गए बाइट्स ↓ на 87%।
11. 2 गेम राउंड: प्रदाता/खेल
जेड-ऑर्डर/ऑर्डर बाय: '(प्रदाता, game_id, occurred_at)'।
प्रक्षेपण/agg: 'राउंड _ 1d _ by _ provider _ game'।
BRIN (यदि पोस्टग्रेस जैसा भंडारण): 'hease _ at' द्वारा।
परिणाम: शीर्ष-के गेम/घंटे - हॉट कैश पर उप-दूसरा।
11. 3 आरजी/एएमएल प्रतिबंध/स्व बहिष्करण घटनाएं
बिटमैप: 'rg _ state', 'kyc _ level'। JSON-पथ GIN: '$ .reason'।
एमवी: "30 दिनों के लिए सक्रिय प्रतिबंध" + पीआईआई के बिना उपयोगकर्ता-स्तर का भौतिककरण।
परिणाम: पूर्ण स्कैन अरब घटनाओं के बिना अनुपालन के लिए त्वरित नमूने।
11. 4 एंटीफ्राड: मार्ग और उपकरण
भौतिककरण JSON→kolonki: 'डिवाइस। ओएस ',' डिवाइस। मॉडल ',' भुगतान। विधि '।
ब्लूम: 'ग्राफ _ डिवाइस _ आईडी'। क्लस्टर: '(ब्रांड, देश, उपकरण। os) '।
वेक्टर इंडेक्स: एम्बेडिंग "7d डिपॉजिट बिहेवियर" - इसी तरह की विसंगतियों के लिए फास्ट के-एनएन।
12) सुरक्षा और गोपनीयता
अनुक्रमित क्षेत्रों और योजना लॉग में शून्य-पीआईआई।
ऑन-डिस्क एन्क्रिप्शन: इंडेक्स/आंकड़ेडेटा के समान ही एन्क्रिप्ट किए गए हैं।
समुच्चय की के-गुमनामी: एमवी/अनुमान केवल ≥N समूहों द्वारा प्रकाशित किए जाते हैं।
भू/किरायेदार-अलगाव: पार्टियों/कुंजियों में 'ब्रांड/देश/लाइसेंस' शामिल हैं।
कानूनी पकड़: सूचकांक/मैनिवेस्ट भी "फ्रीज" में आते हैं।
13) एंटी-पैटर्न
सूचकांक "एक पंक्ति में सभी" → वॉल्यूम विस्फोट और लेखन-प्रवर्धन।
छोटे दलों (घंटे/मिनट) → तख्तों का तूफान और "छोटी फाइलें"।
कुंजियाँ सॉर्ट करें जो शून्य डेटा स्किपिंग फ़िल्टर से मेल नहीं खाती हैं।
आंकड़ों की कमी - खराब योजनाएं, पूर्ण स्कैन।
पथ सूचकांकों के बिना और गर्म विशेषताओं को भौतिक किए बिना JSON।
2-4 सप्ताह में संघनन और निष्कर्ष - गिरावट को अनदेखा करें।
14) साँचा (उपयोग के लिए तैयार)
14. 1 क्लस्टरिंग/इंडेक्सिंग पॉलिसी (YAML)
yaml dataset: gold. payments partition_by: ["date"]
order_by: ["brand","country","occurred_at"]
indexes:
bloom: ["transaction_id","user_surrogate_id"]
bitmap: ["psp","status","rg_state"]
materialized_views:
- name: mv_payments_7d_brand_psp group_by: ["brand","psp","status"]
window: "7d"
slo:
p95_latency_ms: 1200 scanned_bytes_per_query_max_mb: 256 maintenance:
compact_small_files: true recluster_cron: "0 /6 "
privacy:
pii_in_index: false
14. 2 झील संपीड़न योजना (आइसबर्ग/डेल्टा)
yaml compaction:
target_file_size_mb: 512 small_file_threshold_mb: 64 zorder_by: ["brand","country","occurred_at"]
run_every: "PT6H"
max_concurrency: 4
14. JSON क्षेत्रों के लिए 3 सूचकांक
sql
-- GIN/inverted index on device attributes
CREATE INDEX idx_device_json ON gold. sessions
USING GIN ((device_json));
-- Materialization of critical pathways
ALTER TABLE gold. sessions ADD COLUMN device_os TEXT;
UPDATE gold. sessions SET device_os = device_json->>'os';
CREATE BITMAP INDEX idx_device_os ON gold. sessions(device_os);
14. 4 सूचकांक निगरानी एसएलओ
yaml monitoring:
skipped_bytes_share_min: 0. 70 index_usage_rate_min: 0. 85 stats_freshness_max_hours: 24 small_files_share_max: 0. 10
15) कार्यान्वयन रोडमैप
0-30 दिन (एमवीपी)
1. शीर्ष N निवेदन और स्कैन प्रोफाइल एकत्र किया जा रहा है।
2. तारीख से विभाजन + फ़िल्टर के साथ मेल खाता है।
3. डेटा स्किपिंग (न्यूनतम) सक्षम करें और आईडी फ़ील्ड के लिए खिलें.
4. हॉट मीट्रिक के लिए एक एमवी (भुगतान 7 डी)।
5. डैशबोर्ड SLI: p95, स्कैन किए गए बाइट्स, स्किप्ड शेयर, छोटी फ़ाइलें।
30-90 दिन
1. JSON पथ: उलटा सूचकांक + भौतिककरण।
2. झील: 2-3 कुंजियों द्वारा संपीड़न और जेड-क्रम/क्लस्टरिंग।
3. कुंजी/प्रक्षेपण ऑटो सलाहकार; नियमित विश्लेषण।
4. बैचों (day→week) का संशोधन जहां "छोटी फ़ाइलें"।
3-6 महीने
1. वर्शनिंग और एसएलए के साथ एमवी/प्रोजेक्शन कैटलॉग।
2. सिफारिशों/विरोधी धोखाधड़ी के लिए वेक्टर सूचकांक।
3. एकीकृत एसएलओ नीति और बजट $/अनुरोध; गिरावट अलर्ट।
4. सूचकांक गोपनीयता लेखा परीक्षा, भू/किरायेदार अलगाव।
16) RACI
डेटा प्लेटफ़ॉर्म (आर): पार्टियाँ/सूचकांक/कॉम्पैक्ट, ऑटो-सलाहकार, निगरानी।
एनालिटिक्स/बीआई (आर): डैशबोर्ड के लिए एमवी/अनुमान, क्वेरी प्रोफाइलिंग।
डोमेन ओनर्स (C): हॉट स्लाइस और फिल्टर के लिए मानदंड।
सुरक्षा/डीपीओ (ए/आर): गोपनीयता, पीआईआई नीतियां, भू/किरायेदार कुंजी।
SRE/ऑब्जर्वेबिलिटी (C): SLO/अलर्टिंग, कॉम्पैक्ट के लिए कपासिटी।
वित्त (सी): बजट $/क्वेरी और इंडेक्स से बचत।
17) संबंधित अनुभाग
डेटा स्कीमा और एवोल्यूशन, डेटा सत्यापन, डेटाऑप्स प्रैक्टिसेस, एनोमली और सहसंबंध विश्लेषण, एनालिटिक्स और मेट्रिक्स एपीआई, डेटा क्लस्टरिंग, आयाम कटौती, एमएलओपी: मॉडल शोषण।
कुल
विश्लेषणात्मक भंडारण अनुक्रमण एक रणनीति है, न कि "हर चीज पर एक सूचकांक बनाएं। "सही विभाजन और छंटाई, डेटा लंघन और खिलना, विचारशील एमवी/अनुमान और नियमित संपीड़न एक नियंत्रित लागत पर और गोपनीयता के लिए जोखिम के बिना तेजी से और पूर्वानुमानित प्रश्न देते हैं। आईगेमिंग के लिए, इसका मतलब है भुगतान, प्रदाताओं और आरजी/एएमएल के लिए परिचालन समाधान - एसएलए और बजट के भीतर।