ईटीएल/ईएलटी प्रक्रियाएँ
1) उद्देश्य और संदर्भ
ईटीएल/ईएलटी पाइपलाइनें रिपोर्टिंग (जीजीआर/एनजीआर, नियामक), एनालिटिक्स/एमएल और परिचालन पैनल के लिए डेटा का पूर्वानुमानित लोडिंग, परिवर्तन और प्रकाशन प्रदान करती हैं।
ETL: DWH/Lakehouse (आधुनिक ढेर में कम बार) में लोड करने से पहले रूपांतरण।
ईएलटी: पहले लेकहाउस (कांस्य/रजत) में लोड करें, फिर एसक्यूएल/इंजन (अनुशंसित) को बदल दें।
2) संदर्भ वास्तुकला
1. Ingest/Edge: HTTP/gRPC/Batch, OLTP से CDC, प्रदाता अपलोड S3/FTP।
2. कांस्य (कच्चा, केवल): अपरिवर्तनीय पेलोड, तिथि/बाजार/किरायेदार द्वारा पार्टियां।
3. सिल्वर (स्वच्छ/अनुरूप): सामान्यीकरण, डीडअप, निर्देशिका, एससीडी, एफएक्स/टाइमजोन।
4. गोल्ड (सेवा): BI/नियामक/मॉडल के लिए खंडित स्टोरफ्रंट।
5. ऑर्केस्ट्रेशन: एयरफ्लो/डागस्टर/प्रीफेक्ट (DAG 'i, SLA, रिट्राई, शिफ्ट्स)।
6. DQ/अनुबंध: स्कीमा रजिस्ट्री + DQ- -, उपभोक्ता द्वारा संचालित परीक्षण।
7. अवलोकन: पाइपलाइन मैट्रिक्स, वंश, लॉग, लागत-डैशबोर्ड।
3) ईटीएल बनाम ईएलटी चयन
अभ्यास: iGaming में - ELT + CDC: जल्दी से लोड करें, फिर मानकीकरण और गिनती करें।
4) वृद्धि और सीडीसी
डेल्टा दृष्टिकोण:- CDC (डेबेजियम/लॉग प्रतिकृति): OLTP चांदी में → कांस्य → MERGE बदलता है।
- समय के अनुसार वाटरमार्क: 'अद्यतन _ at> max_loaded_ts'।
- हैश डिफ: 'md5 (पंक्ति)' परिवर्तन का पता लगाने के लिए तुलना।
- Upsert/MERGE: डाउनलोड की पहचान।
sql
MERGE INTO silver. payments s
USING stage. payments_delta d
ON s. transaction_id = d. transaction_id
WHEN MATCHED THEN UPDATE SET
WHEN NOT MATCHED THEN INSERT;
5) संविदाएं और योजनाएं
स्कीमा-पहला: रजिस्ट्री में JSON/Avro/Protobuf; घटनाओं/फ़ाइलों में 'schema _ version'।
विकास: बैक-संगत (शून्य परिवर्धन); ब्रेकिंग - '/v2 '+ डबल एंट्री।
आवश्यक क्षेत्र 'event _ time (UTC)', 'event _ id', 'trace _ id', 'user _ seudo _ id', 'market' हैं।
6) DQ-as-code (न्यूनतम सेट)
yaml table: silver. payments owner: data-payments slo:
freshness_minutes: 15 completeness_percent: 99. 5 rules:
- name: unique_tx # uniqueness of transactions type: unique columns: [transaction_id]
severity: critical
- name: currency_whitelist type: in_set column: currency set: [EUR,USD,GBP,TRY,BRL]
severity: major
- name: amount_positive type: range column: amount_base min: 0. 01 severity: critical
- name: fk_user type: foreign_key column: user_pseudo_id ref_table: dim. users_scd severity: critical
7) ऑर्केस्ट्रेशन: डीएजी 'और, निर्भरता, एसएलए
डीएजी डिजाइन: स्रोतों से स्टोरफ्रंट तक; कार्यों के बीच स्पष्ट निर्भरता।
रेट्राई और आइडेम्पोटेंस: बैकऑफ, "क्लीन" रिप्ले, चौकियों।
कैचप: मिस्ड पीरियड्स का एक साफ कैच।
SLA: सोना, उदाहरण के लिए। स्थानीय समयानुसार 06:00 बजे से पहले दैनिक तैयार उल्लंघन पर अलर्ट।
पैरामेटराइजेशन: बाजार/किरायेदारों/तारीखों के माध्यम से; एक एकल कार्य टेम्पलेट।
8) पहचान और बिल्कुल एक बार
निगरानी में: डुप्लिकेट संभव है '( , स्रोत)' द्वारा dedup।
प्रसंस्करण में: अपसर्ट/विलय; "शुद्ध" परिवर्तन कार्य।
सिंक में: ट्रांजेक्शनल कमिट या आइडेम्पोटेंट लिखते हैं; "डबल काउंटिंग" का नियंत्रण।
आउटबॉक्स/इनबॉक्स: OLTP से डोमेन घटनाओं का लेन-देन प्रकाशन।
9) बैकफिल - पुनर्संसाधन
बैकफिल: प्राथमिक भरण/ऐतिहासिक रेंज।
पुनर्संसाधन - पुनर्गणना जब तर्क परिवर्तन/सुधार।
गार्ड: रेंज लिमिट, कोटा, टाइम विंडो, मीट्रिक तुलना के साथ ड्राई-रन।
चिह्नः 'logic _ version', 'reprocsed _ at', 'recalc _ couse'.
10) सिल्वर/गोल्ड मॉडलिंग
सिल्वर (3NF/BCNF): तथ्य 'तथ्य _ शर्त/भुगतान/भुगतान/भुगतान', आयाम 'डिम _ यूजर्स/गेम/प्रदाता/बाजार (SCD II)', मुद्रा मानकीकरण/टाइमजोन।
स्वर्ण: द्वि/नियामक/मॉडल के लिए खंडित स्टोरफ्रंट; अपरिवर्तनीय निर्यात पैकेज (WORM) + हस्ताक्षर।
गोल्ड उदाहरण: जीजीआर डेली
sql
CREATE OR REPLACE VIEW gold. ggr_daily AS
SELECT
DATE(b. event_time) AS event_date,
b. market,
g. provider_id,
SUM(b. stake_base) AS stakes_eur,
SUM(p. amount_base) AS payouts_eur,
SUM(b. stake_base) - SUM(p. amount_base) AS ggr_eur
FROM silver. fact_bets b
LEFT JOIN silver. fact_payouts p
ON p. user_pseudo_id = b. user_pseudo_id
AND p. game_id = b. game_id
AND DATE(p. event_time) = DATE(b. event_time)
JOIN dim. games g ON g. game_id = b. game_id
GROUP BY 1,2,3;
11) गोपनीयता और निवास
पीआईआई कम से कम: टोकन; पृथक लूप में वास्तविक आईडी के मैपिंग।
आरएलएस/सीएलएस: भूमिका/अधिकार क्षेत्र, मास्किंग द्वारा नीतियों तक पहुंच।
रेजीडेंसी: EEA/UK/BR के लिए अलग निर्देशिका/कुंजियाँ; बिना कारण के क्रॉस-रीजनल जोड़ों पर प्रतिबंध लगाना।
DSAR/RTBF और कानूनी होल्ड: रिपोर्टिंग, निर्यात ऑडिट के लिए चयनात्मक संपादन, WORM अभिलेखागार।
12) अवलोकन और एसएलओ
SLI/SLO बेंचमार्क:- ताजगी सिल्वर p95 ≤ 15 मिनट; सोना रोज 06:00 बजे तक तैयार होता है। समय।
- पूर्णता ≥ 99। 5%, वैधता (योजना) ≥ 99। 9%.
- नौकरियों की सफलता ≥ 99। 0%, MTTR की घटनाएँ ≤ 24-48 h।
डैशबोर्ड: फ्रेशनेस हीटमैप, डीक्यू लॉस फ़नल, लागत/क्वेरी और लागत/जीबी, वंश ग्राफ।
13) प्रदर्शन और लागत
विभाजन: तिथि/बाजार/किरायेदार; फ़िल्टर द्वारा क्लस्टरिंग/जेड-ऑर्डर।
प्रारूप: Parquet + ACID (डेल्टा/आइसबर्ग/हुडी), संपीड़न और सांख्यिकी।
कम्पैक्शन: छोटी फ़ाइलों से लड़ ना (OPTIZE/VECUUM)।
भौतिककरण: स्थिर समुच्चय; विशाल ऑन-द-फ्लाई जोड़ से बचें।
चार्जबैक: बजट, रीप्ले कोटा/बैकफिल; कम लोड विंडो में शेड्यूलिंग।
14) विशिष्ट डीएजी कार्यों के उदाहरण (एयरफ्लो स्यूडोकोड)
python with DAG("elt_payments_daily", schedule="@daily", start_date=..., catchup=True) as dag:
extract = BashOperator(task_id="extract_cdc", bash_command="run_cdc_to_bronze. sh {{ ds }}")
load = BashOperator(task_id="load_to_silver", bash_command="sql/run_merge_silver. sql {{ ds }}")
dq = BashOperator(task_id="dq_checks", bash_command="dq/run_checks. sh silver. payments {{ ds }}")
gold = BashOperator(task_id="build_gold_ggr", bash_command="sql/build_gold_ggr. sql {{ ds }}")
export = BashOperator(task_id="export_regulator", bash_command="export/run_worm_pack. sh {{ ds }}")
extract >> load >> dq >> gold >> export
15) प्रक्रियाएं और आरएसीआई
आर (जिम्मेदार): डेटा इंजीनियरिंग (डीएजी, सिल्वर/गोल्ड मॉडल), डेटा प्लेटफॉर्म (इन्फ्रा, रजिस्ट्री, डीक्यू)।
ए (जवाबदेह): डेटा के प्रमुख/सीडीओ।
सी (परामर्श): अनुपालन/कानूनी/डीपीओ (पीआईआई/निवास/कानूनी पकड़), वित्त (एफएक्स/जीजीआर), जोखिम (आरजी/एएमएल), एसआरई (SLO/стоимость)।
I (सूचित): BI/उत्पाद/विपणन/संचालन।
16) कार्यान्वयन रोडमैप
एमवीपी (3-5 सप्ताह):1. लेकहाउस कांस्य/रजत (ACID) + भुगतान/गेमप्ले के लिए वृद्धि।
2. डीक्यू-जैसे कोड (10-15 नियम) और बुनियादी ताजगी/पूर्णता डैशबोर्ड।
3. SLA के साथ पहला गोल्ड शोकेस (GGR डेली) "06:00 तक", हस्ताक्षर के साथ WORM निर्यात।
4. SLA/DQ पर DAG और अलर्ट ऑर्केस्ट्रेशन।
चरण 2 (5-10 सप्ताह):- डोमेन एक्सटेंशन, उपयोगकर्ताओं/खेलों/प्रदाताओं के लिए SCD II।
- मैट्रिक्स की शब्दार्थ परत; वंश/प्रभाव विश्लेषण; बैकफिल/पुनर्संसाधन प्रक्रियाएं।
- क्षेत्रीयकरण (ईईए/यूके), आरएलएस/सीएलएस, लागत नियंत्रण (कोटा/चार्जबैक)।
- रीप्ले सिम्युलेटर (क्या-अगर), शोकेस/मैट्रिक्स प्रलेखन की ऑटो-पीढ़ी।
- लागत अनुकूलन (क्लस्टरिंग, भौतिककरण, टीटीएल, संपीड़न)।
- डीआर अभ्यास और समय-यात्रा वसूली।
17) प्री-सेल चेकलिस्ट
- रजिस्ट्री में अनुबंध/स्कीमा, संगतता परीक्षण हरा।
- सीडीसी/वेतन वृद्धि और MERGE निष्क्रिय हैं; dedup निगरानी के लिए।
- DQ नियम सक्रिय हैं (महत्वपूर्ण → विफल + DLQ), SLA डैशबोर्ड कॉन्फ़िगर किए गए हैं।
- गोल्ड शोकेस प्रलेखित हैं, अर्थ परत में मीट्रिक सूत्र।
- RBAC/ABAC, एन्क्रिप्शन, रेजिडेंसी, DSAR/RTBF/लीगल होल्ड सत्यापित।
- अनुसूची पर संपीड़न/ऑप्टिमाइज ़/वैक्यूम; बैकफिल/रीप्ले सीमा।
- रनबुक 'और घटनाओं और पुनर्संसाधन, ऑडिट निर्यात (WORM + हैश)।
18) एंटी-पैटर्न और जोखिम
पूर्ण पुनः लोड "सिर्फ मामले में": सीडीसी/वेतन वृद्धि का उपयोग करें।
कच्चे और रिपोर्ट किए गए डेटा को मिलाएं: कांस्य/रजत/गोल्ड को अलग रखें।
डीक्यू और वंश की कमी: कोई उत्पादकता और प्रजनन क्षमता नहीं।
विश्लेषणात्मक परतों में पीआईआई: मैपिंग को अलग करें, सीएलएस/आरएलएस लागू करें।
अखंड "रात" जैब्स: क्रश, बैचों में समानांतर।
लागत की अनदेखी करें: छोटी फाइलों पर नजर रखें, समुच्चय को भौतिक करें, कोटा पेश करें।
19) शब्दावली (संक्षिप्त)
ETL/ELT - निष्कर्षण/परिवर्तन/लोडिंग (लोडिंग से पहले/बाद में)।
सीडीसी - कैप्चर परिवर्तन।
एससीडी - माप इतिहास (I/II/III)।
WORM - रिपोर्ट पैकेजों का अपरिवर्तनीय भंडारण।
समय-यात्रा - तालिकाओं के ऐतिहासिक संस्करण पढ़ ना।
20) नीचे की रेखा
आधुनिक ईटीएल/ईएलटी स्क्रिप्ट नहीं है, लेकिन एक प्रबंधित मंच: अनुबंध और डीक्यू, पहचान वेतन वृद्धि/सीडीसी, कांस्य/रजत/गोल्ड परत अनुशासन, अवलोकन और एसएलओ, गोपनीयता और अर्थव्यवस्था। इस गाइड का अनुसरण करके, आपको प्रजनन योग्य और श्रव्य पाइपलाइनें मिलेंगी जो लगातार पावर रिपोर्टिंग, उत्पाद और मॉडल को पैमाने पर और बिना आश्चर्य के।