GH GambleHub

ETL/ELT პროცესები

1) დანიშნულება და კონტექსტი

ETL/ELT კონვეიერები უზრუნველყოფენ პროგნოზირებულ დატვირთვას, ტრანსფორმაციას და მონაცემების გამოქვეყნებას საანგარიშო მონაცემებისთვის (GGR/NGR, რეგულატორები), ანალიტიკოსები/ML და ოპერატიული პანელები.

ETL: გადაქცევა დატვირთვაზე DWH/Lakehouse (ნაკლებად ხშირად თანამედროვე სტეკებში).
ELT: ჯერ დატვირთეთ Lakehouse (Bronze/Silver), შემდეგ კი SQL/ძრავებად გადაქცევა (რეკომენდებულია).

2) სტანდარტული არქიტექტურა

1. Ingest/Edge: HTTP/gRPC/Batch, CDC OLTP- დან, პროვაიდერის S3/FTP გადმოტვირთვისთვის.
2. Bronze (raw, append-only): უცვლელი payload's, წვეულებები თარიღი/ბაზარი/ტენანტი.
3. Silver (clean/conform): ნორმალიზაცია, დედაპლატი, საცნობარო წიგნები, SCD, FX/Timesons.
4. ოქროს (სერვერი): დენორმალიზებული ფანჯრები BI/მარეგულირებელი/მოდელის ქვეშ.
5. ორკესტრი: Airflow/Dagster/Prefect (DAG 'და, SLA, retray, ძვრები).
6. DQ/Contracts: Schema Registry + DQ-как-код, consumer-driven tests.
7. დაკვირვება: payplines, lineage, logs, cost dashbords.

3) ETL vs ELT არჩევანი

კრიტერიუმიETLELT (რეკომენდებულია)
გადაანგარიშების მოქნილობადაბალიმაღალი (time-travel, reprocessing)
ღირებულებაუფრო ძვირია ზრდის დროსოპტიმალური მასშტაბის დროს
ხარისხის კონტროლიingest- ზეSilver/Gold + DQ კოდი
ისტორიულობა/წინსვლაშეზღუდულისრული (Bronze append-only)

პრაქტიკა: iGaming- ში - ELT + CDC: სწრაფად დატვირთული, შემდეგ სტანდარტიზებული და მიგვაჩნია.

4) ჩანართები და CDC

დელტას მიდგომები:
  • CDC (Debezium/log რეპლიკაცია): ცვლილებები OLTP - Bronze - MERGE Silver- ში.
  • დროულად Watermark: 'განახლება _ at> max _ loaded _ ts'.
  • Hesh: შედარება 'md5 (wow)' დეტალური ცვლილებებისთვის.
  • Upsert/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/Protobuf in Registry; 'schema _ version' მოვლენებში/ფაილებში.
ევოლუცია: უკუკავშირის დამატება; 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 და idempotence: backoff, „სუფთა“ გამეორება, checkpoint 'y.
ძვრები (catchup): გამოტოვებული პერიოდების სისუფთავე დოგონი.
SLA: მაგალითად, Gold. daily მზად არის ადგილობრივი დროით 06:00 საათამდე; გაფრთხილებები დარღვევების შესახებ.
პარამეტრიზაცია: ბაზრები/ტენანტები/თარიღები vars- ის საშუალებით; ერთი job შაბლონი.

8) Idempotence და exactly-once

ingest- ზე: დუბლიკატები შეიძლება იყოს dedup '(event _ id, წყარო)'.
დამუშავებისას: upsert/merge; ტრანსფორმაციების „სუფთა“ ფუნქციები.
სინკში: გარიგების კომუნები ან იდუმალი ჭორები; „ორმაგი აღრიცხვის“ კონტროლი.
Outbox/Inbox: დომენის მოვლენების გარიგების გამოქვეყნება OLTP- დან.

9) Backfill и reprocessing

Backfill: პირველადი შევსება/ისტორიული დიაპაზონი.
რეპროდუქცია: გადაანგარიშება ლოგიკის/კორექტირების შეცვლისას.
Guardrails: დიაპაზონის ლიმიტები, კვოტები, დროის ფანჯრები, dry-run მეტრული შედარებით.
მარკირება: 'logic _ version', 'reprocessession _ at', 'recalc _ reason'.

10) ვერცხლის/ოქროს მოდელირება

Silver (3NF/BCNF): ფაქტები 'fact _ bets/payments/payouts', გაზომვები 'dim _ users/games/providers/barkets (SCD II II)', ვალუტის/დროის სტანდარტიზაცია.
გოლდი: დენორმალიზებული ფანჯრები BI/მარეგულირებელი/მოდელების ქვეშ; უცვლელი საექსპორტო პაკეტები (WORM) + ხელმოწერა.

ოქროს მაგალითი: 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 მინიმიზაცია: ტოკენიზაცია; რეალური ID mappings იზოლირებული წრე.
RLS/CLS: როლზე/იურისდიქციებზე წვდომის პოლიტიკოსები, შენიღბვა.
Residency: ინდივიდუალური კატალოგები/გასაღებები EEA/UK/BR; ჯვრის რეგიონალური join აკრძალვის გარეშე.
DSAR/RTBF & Legal Hold: შერჩევითი რედაქტორები, WORM ანგარიშგების არქივები, ექსპორტის აუდიტი.

12) დაკვირვება და SLO

SLI/SLO სახელმძღვანელოები:
  • Freshness Silver p95-15 წთ; Gold daily მზად არის 06:00 საათამდე. დრო.
  • Completeness ≥ 99. 5%, Validity (სქემა) - 99. 9%.
  • Job- ის წარმატება 99. 0%, MTTR ინციდენტები - 24-48.

დაშბორდები: Freshness heatmap, DQ ზარალის ძაბვა, cost/query & cost/GB, ხაზის გრაფიკი.

13) პროდუქტიულობა და ღირებულება

განაწილება: თარიღი/ბაზარი/ტენანტი; კლასტერიზაცია/Z- შეკვეთა ფილტრებში.
ფორმატები: Parquet + ACID (Delta/Iceberg/Hudi), კომპრესია და სტატისტიკა.
კომპაქტური: მცირე ფილმების წინააღმდეგ ბრძოლა (OPTIMIZE/VACUUM).
მატერიალიზაცია: სტაბილური ერთეულები; თავიდან აიცილოთ გიგანტური ფრენა.
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): Data Engineering (DAG "და, Silver/Gold მოდელები), Data Platform (infre, 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 (ინფორმირებული): BI/პროდუქტი/მარკეტინგი/ოპერაციები.

16) გზის განხორციელების რუკა

MVP (3-5 კვირა):

1. Lakehouse Bronze/Silver (ACID) + CDC/ნიშნები Payments/Gameplay.

2. DQ-როგორც კოდი (10-15 წესები) და ძირითადი დაშბორდები Freshness/Completeness.

3. პირველი ოქროს ვიტრინა (GGR Daily) SLA- დან „06:00 საათამდე“, WORM ექსპორტი ხელმოწერით.

4. DAG ორკესტრაცია და ალერტები SLA/DQ.

ეტაპი 2 (5-10 კვირა):
  • დომენების გაფართოება, SCD II users/games/providers.
  • სემანტიკური მეტრიკის ფენა; ხაზოვანი/იმპაქტიური ანალიზი; backfill/reprocessing პროცედურები.
  • რეგიონალიზაცია (EEA/UK), RLS/CLS, ღირებულების კონტროლი (კვოტები/chargeback).
ეტაპი 3 (10-16 კვირა):
  • Replay simulator (what-if), ვიტრინის/მეტრიკის დოკუმენტაციის ავტომატური წარმოება.
  • Cost ოპტიმიზაცია (კლასტერიზაცია, მატერიალიზაცია, TTL, კომპონენტი).
  • აღდგენილია DR- სავარჯიშოები და time-travel.

17) ჩეკის სია გაყიდვამდე

  • კონტრაქტები/სქემები რეგისტერში, თავსებადობის ტესტები მწვანეა.
  • CDC/ნიშნები და MERGE იდემპოტენტურია; დედაპლატი ინჯესტზე.
  • DQ წესები აქტიურია (critical - fail + DLQ), SLA დაშბორდები.
  • ოქროს ფანჯრები დოკუმენტირებულია, მეტრული ფორმულა სემანტიკურ ფენაში.
  • RBAC/ABAC, დაშიფვრა, რეზიდენცია, DSAR/RTBF/Legal Hold შემოწმებულია.
  • კომპაქტური/OPTIMIZE/VACUUM გრაფიკის მიხედვით; backfill/raples ლიმიტები.
  • Runbook 'და ინციდენტები და რეპროდუქცია, ექსპორტის აუდიტი (WORM + hash).

18) ანტი შაბლონები და რისკები

Full reload „მხოლოდ შემთხვევაში“: გამოიყენეთ CDC/ნიშნები.
ნედლეული და საანგარიშო მონაცემების ნაზავი: ცალკე შეინახეთ Bronze/Silver/Gold.
DQ და ხაზის ნაკლებობა: არ არსებობს მტკიცებულება და რეპროდუქცია.
PII ანალიტიკურ ფენებში: იზოლირება mappings, გამოიყენეთ CLS/RLS.
მონოლითური „ღამის“ ჯობი: წვეულებების პარალელურად.
ფასის უგულებელყოფა: მიყევით მცირე ფილმებს, მოახდინეთ აგრეგატების მატერიალიზაცია, შეიტანეთ კვოტები.

19) გლოსარიუმი (მოკლედ)

ETL/ELT - ამონაწერი/ტრანსფორმაცია/დატვირთვა (დატვირთვის შემდეგ).
CDC - ცვლილებების დაჭერა.
SCD - გაზომვების ისტორიალიზაცია (I/II/III).
WORM - საანგარიშო პაკეტების უცვლელი შენახვა.
Time-travel - ცხრილების ისტორიული ვერსიების კითხვა.

20) შედეგი

თანამედროვე ETL/ELT არ არის სკრიპტები, არამედ კონტროლირებადი პლატფორმა: კონტრაქტები და DQ, idempotent ნიშნები/CDC, Bronze/Silver/Gold ფენების დისციპლინა, დაკვირვება და SLO, კონფიდენციალურობა და ეფექტურობა. ამ ხელმძღვანელობის შემდეგ, თქვენ მიიღებთ რეპროდუქციულ და აუდიტორულ კონვეიერებს, რომლებიც სტაბილურად კვებავენ ანგარიშგებას, პროდუქტს და მოდელებს მასშტაბით და სიურპრიზების გარეშე.

Contact

დაგვიკავშირდით

დაგვიკავშირდით ნებისმიერი კითხვის ან მხარდაჭერისთვის.ჩვენ ყოველთვის მზად ვართ დაგეხმაროთ!

Telegram
@Gamble_GC
ინტეგრაციის დაწყება

Email — სავალდებულოა. Telegram ან WhatsApp — სურვილისამებრ.

თქვენი სახელი არასავალდებულო
Email არასავალდებულო
თემა არასავალდებულო
შეტყობინება არასავალდებულო
Telegram არასავალდებულო
@
თუ მიუთითებთ Telegram-ს — ვუპასუხებთ იქაც, დამატებით Email-ზე.
WhatsApp არასავალდებულო
ფორმატი: ქვეყნის კოდი და ნომერი (მაგალითად, +995XXXXXXXXX).

ღილაკზე დაჭერით თქვენ ეთანხმებით თქვენი მონაცემების დამუშავებას.