ETL/ELT գործընթացներ
1) Նշանակումն ու համատեքստը
ETL/ELT փոխակրիչները ապահովում են կանխատեսելի բեռնումը, փոխակերպումը և տվյալների հրապարակումը հաշվետվությունների համար (GGR/NGR, կարգավորիչներ), վերլուծաբանները/ML և գործառնական։
ETL: Մենք վերափոխում ենք մինչև SNH/Lakehouse-ում (ավելի քիչ ժամանակակից ոճերում)։
ELT: Նախ բեռնում ենք Lakehouse-ում (Bronze/Silver), ապա փոխակերպում ենք SQL/շարժիչները (velovano)։
2) Ստանդարտ ճարտարապետությունը
1. Ingest/Edge: HTTP/gRPC/Batch, CDC OLTP-ից, պրովայդերական S3/FTP դուրս։
2. Bronze (rance, append-only) 'անփոփոխ payload' a, ամսաթվով/շուկա/tenantu։
3. Silver (clean/www.orm) 'նորմալացում, dedup, գրողներ, SCD, FX/timzons։
4. Gold (serve): BI/կարգավորող/մոդել։
5. Նվագախումբը ՝ Airflow/Dagster/Winf.ru (DAG 'և, SLA, retray, շարժումներ)։
6. DQ/Contracts: Schema Registry + DQ-как-код, consumer-driven tests.
7. Դիտարկումն այն է, որ պիտակները, lineage, logs, cost-dashbords։
3) ETL vs ELT ընտրությունը
Պրակտիկա 'iGaming-ELT + CDC-ում, արագ բեռնում ենք, հետո ստանդարտացնում և հավատում։
4) Redrects և CDC
Այնտեղ ինտեգրման մոտեցումները
CDC (Debez.ru/log-redication): OLTP-ի փոփոխությունները Bultze no MERGE-ում Silver-ում։
Watermark-ը ժամանակի ընթացքում '«contated _ at> max _ loaded _ ts»։
Հաշ-2019 'համեմատություն' «md5 (row)» փոփոխման համար։
Ups.ru/MERGE 'բեռնման համադրելիությունը։
MERGE (Delta/Iceberg) օրինակը
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) Պայմանագրեր և սխեմաներ
Schema-first: JSON/Avro/Corobuf Registry; «schema _ version» իրադարձություններում/ֆայլերում։
Էվոլյուցիա 'back-compatible (nullable ավելացում); breaking-ը '/v2 '+ կրկնակի ձայնագրություն է։
Պարտադիր դաշտերը ՝ «event _ time (UTC)», «event _ id», «trace _ id», «user _ pseudo _ id», «market»։
6) DQ-ի կոդը (նվազագույն հավաքածու)
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) Նվագախումբը 'DAG' և, կախված, SLA
DAG դիզայն 'աղբյուրներից մինչև վիտրիններ։ ակնհայտ կախվածություն առաջադրանքների միջև։
Retrai և impotenty: backoff, «մաքուր» կրկնություններ, www.kpoint 'a։
Տեղաշարժեր (catchup) 'բաց թողած ժամանակահատվածների կոկիկ դոգոն։
SLA 'օրինակ, Gold։ daily պատրաստ է մինչև 06: 00 ռուսական ժամանակ; խախտումների մասին նախազգուշացում։
Դելբրիզացիա 'շուկաներ/տենանտներ/ամսաթվերը vars-ի միջոցով։ ձևանմուշ է։
8) Idempotenty և exactly-once
Ingest: կրկնօրինակները հնարավոր են www.dedup '(event _ id, source) "։
Մշակման մեջ 'ups.ru/merge; «մաքուր» տրանսֆորմացիայի գործառույթները։
Sink 'գործարքային համայնքներ կամ idempotent writes; «կրկնակի հաշվարկի վերահսկումը»։
Medibox/Inbox: OLTP-ի արբիտրաժային իրադարձությունների գործարքային հրատարակումը։
9) Backfill и reprocessing
Backfill 'առաջնային լրացում/պատմական միջակայքներ։
Reprocessing: Վերահաշվարկ տրամաբանության/ուղղությունների փոփոխության ժամանակ։
Guardrails: Միջանցքների, քվոտաների, ժամանակի պատուհանների, www.y-run համեմատությամբ։
Մակնշումը '«logic _ version», «reprocessed _ at», «recalc _ reason»։
10) Silver/Gold մոդելավորումը
Silver (3NF/BCNF): փաստեր "fact _ bets/payments/payouts", չափումներ 'dult _ users/games/providers/markets (SCD II) ", արժույթի/թայմզոնի ստանդարտացում։
Gold: դենորմալիզացված վիտրիններ BI/կարգավորող/մոդելի տակ; անփոփոխ վճարային փաթեթներ (WORM) + ստորագրություն։
Օրինակ Gold: GGR Daily
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) Սեփականատիրությունն ու բնակությունը
PII-նվազեցումը 'տոկենիզացիա; mappings իրական ID-ն մեկուսացված կոնտեքստում։
RSA/CLS 'դերերի/հայտարարությունների հասանելիության քաղաքականություն, դիմակավորում։
Residency: առանձին կոմպոզիցիաներ և/բանալիներ EFC/UK/III համար; խաչաձև-տարածաշրջանային ջոինի արգելքը առանց հիմքի։
DSAR/RTBF & Legal Hold 'ընտրական խմբագրություններ, WORM արխիվներ հաշվետվությունների համար, օրինագծերի աուդիտ։
12) Դիտարկումը և SLO-ն
SLI/SLO ուղեցույցները
Freshness Silver p95-15 րոպե; Gold daily-ը պատրաստ է մինչև 06: 00 լոկ։ ժամանակը։
Completeness ≥ 99. 5%, Validity (սխեմա) 3699։ 9%.
Jb's 499 հաջողությունը։ 0%, MTTR 2424-48 ռուբլիներ
Dashbords: Freshness heatmap, DQ-2019, cost/query & cost/GB, lineage գրաֆիկ։
13) Արտադրողականությունը և արժեքը
Կուսակցությունը 'ամսաթիվը/շուկան/տենանտ; կլաստերիզացիա/Z-order ֆիլտրերի վրա։
Մոսկվա: Parquet + ACID (Delta/Iceberg/Hudi), ագրեսիան և վիճակագրությունը։
Կոմպակտիա 'small enses (OPTIMIZE/VACUUM) դեմ պայքարը։
Նյութականացում 'կայուն ագրեգատներ; խուսափել հսկա on-the-fly join-ից։
Chargeback: Բյուջեներ, քվոտաներ/backfill; պլանավորում ցածր բեռի պատուհանում։
14) DAG տեսակի առաջադրանքների օրինակներ (կեղծ Airflow)
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) Գործընթացներ և RACI
R (Responsible): Windows Engineering (DAG "և, Silver/Gold մոդելները), Pro Platform (infra, Registry, DQ)։
A (Accountable): Head of Data/CDO.
C (Consulted): Compliance/Legal/DPO (PII/residency/Legal Hold), Finance (FX/GGR), Risk (RG/AML), SRE (SLO/стоимость).
I (Informed): BI/ապրանք/Մարքեթինգ/Վիրահատություն։
16) Իրականացման ճանապարհային քարտեզը
MVP (3-5 շաբաթ)
1. Lakehouse Bultze/Silver (ACID) + CDC/rements Payments/Gameplay համար։
2. DQ-ի կոդը (10-15 կանոններ) և Freshness/Completeness հիմնական dashbords։
3. Առաջին Gold-վիտրինը (GGR Daily) SLA-ից «մինչև 06: 00», WORM էքսպորտը ստորագրությամբ։
4. DAG-ի և SLA/DQ-ի ալտերտերը։
Aleksanda 2 (5-10 շաբաթ)
Օրինագծերի ընդլայնումը, SCD II-ը users/games/providers-ի համար։
Սեմանտիկ շերտը մետրիկ է։ lineage/impact-վերլուծություն; backfill/reprocessing։
Ռեգիոնալիզացիան (EFC/UK), RSA/CLS, արժեքի վերահսկումը (քվոտաներ/chargeback)։
Բրազիլիա 3 (10-16 շաբաթ)
Repley-սիմուլյատոր (what-if), փաստաթղթերի ավտոմատ արտադրություն վիտրին/մետրիկ։
Cost-օպտիմիզացիա (կլաստերիզացիա, նյութականացում, TTL, կոմպակտիա)։
DR ուսուցումները և Time-travel վերականգնումը։
17) Չեկ թուղթ մինչև վաճառելը
- Պայմանագրեր/սխեմաներ Registry-ում, թեստերը կանաչ են։
- CDC/wwww.rems և MERGE idempotent; ingest.
- DQ կանոնները ակտիվ են (critical profail + DLQ), SLA-dashbords-ը։
- Gold-վիտրինները փաստագրված են, սիմվոլիկ շերտում մետրային բանաձևը։
- RBAC/ABAC, ծածկագրում, բնակություն, DSAR/RTBF/Legal Hold ստուգված են։
- Կոմպակտիա/OPTIMIZE/VACUUM գրաֆիկի վրա; լիմիտներ backfill/repley։
- Runbook "և reprocessing, ածխաջրածինների աուդիտ (WORM + hash)։
18) Anti-patterns և ռիսկեր
Fultreload «ամեն դեպքում», օգտագործեք CDC/wwww.rems։
Հում և հաշվետվական տվյալների խառնուրդը 'պահեք Bronze/Silver/Gold առանձին։
DQ-ի և lineage-ի բացակայությունը 'չկա ապացույց և վերարտադրողականություն։
PII-ը վերլուծական շերտերում 'մեկուսացրեք մապինգները, օգտագործեք CLS/RTS-ը։
Մոնոլիտ «գիշերային» ջոբները 'drobite, զուգահեռ կուսակցություններին։
Արժեքի անտեսումը 'հետևեք small-ի, նյութափոխանակության, քվոտաների։
19) Գլոսարիա (հակիրճ)
ETL/ELT - ոլորտ/փոխակերպում/բեռնում (մինչև/բեռնումից հետո)։
CDC-ն փոփոխությունների գրավումն է։
SCD-ը մրցույթի պատմությունն է (I/II/III)։
WORM-ը հաշվետվական տեղեկատվության անփոփոխ պահպանումն է։
Time-travel-ը աղյուսակների պատմական տարբերակների ընթերցումն է։
20) Արդյունքը
Ժամանակակից ETL/ELT-ը ոչ թե ջութակներ են, այլ կառավարվող պլատֆորմ 'պայմանագրեր և DQ, idempotent directions/CDC, Bronze/Silver/Gold, դիտարկումը և SLO-ն, մասնավորությունը և տնտեսությունը։ Հետևելով այս առաջնորդությանը ՝ դուք կստանաք վերարտադրված և ստուգված փոխակրիչներ, կայուն սնուցող հաշվետվություններ, ապրանքներ և մոդելներ մասշտաբով և առանց անակնկալների։