GH GambleHub

فرآیندهای ETL/ELT

1) هدف و زمینه

خطوط لوله ETL/ELT بارگیری، تبدیل و انتشار داده های قابل پیش بینی برای گزارش (GGR/NGR، تنظیم کننده ها)، تجزیه و تحلیل/ML و پانل های عملیاتی را فراهم می کند.

ETL: قبل از بارگیری به DWH/Lakehouse (کمتر در پشته های مدرن) تبدیل می شود.
ELT: ابتدا به Lakehouse (برنز/نقره ای) بارگیری کنید، سپس SQL/موتورها را تبدیل کنید (توصیه می شود).

2) معماری مرجع

1. مصرف/لبه: HTTP/gRPC/Batch، CDC از OLTP، S3/FTP آپلود ارائه دهنده.
2. برنز (خام، فقط ضمیمه): بارهای غیر قابل تغییر، احزاب بر اساس تاریخ/بازار/مستاجر.
3. نقره ای (تمیز/مطابق): عادی سازی، dedup، دایرکتوری ها، SCD، FX/منطقه زمانی.
4. طلا (خدمت): فروشگاه های غیرقانونی برای BI/تنظیم کننده/مدل.
5. ارکستراسیون: جریان هوا/Dagster/Prefect (DAG 'i، SLA، Retrai، Shifts).
6. DQ/قراردادها: Schema Registry + DQ - как - код، تست های مبتنی بر مصرف کننده.
7. قابلیت مشاهده: معیارهای خط لوله، تبار، سیاهههای مربوط، داشبورد هزینه.

3) انتخاب ETL در مقابل ELT

معیار هاETL هاELT (توصیه می شود)
انعطاف پذیری تخصیصپایینبالا (زمان سفر، پردازش مجدد)
هزینه هاگران تر در هنگام رشدبهینه در هنگام پوسته پوسته شدن
کنترل کیفیتدر مصرفبه نقره/طلا + DQ-as-code
تاریخچه/پزشکی قانونیمحدودکامل (ضمیمه برنز فقط)

تمرین: در iGaming - ELT + CDC: بارگیری سریع، سپس استاندارد و شمارش.

4) افزایش و CDC

رویکردهای دلتا:
  • CDC (Debezium/log replication): تغییرات OLTP → Bronze → MERGE در نقره.
  • علامت گذاری به موقع: 'به روز شده _ at> max_loaded_ts'.
  • تفاوت هش: 'md5 (ردیف)' مقایسه برای تشخیص تغییر.
  • UPSERT/MERGE: توانایی بارگیری.
مثال 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' در رویدادها/پرونده ها.
تکامل: سازگار با عقب (اضافات nullable) ؛ شکستن - '/v2 '+ دو ورودی.
فیلدهای مورد نیاز عبارتند از: event _ time (UTC)، event _ id، trace _ id، user _ pseudo _ 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) ارکستراسیون: DAG و، وابستگی ها، SLA

طراحی DAG: از منابع به فروشگاه ؛ وابستگی آشکار بین وظایف

Retrai و idempotence: عقب نشینی، «تمیز» تکرار، بازرسی.
Catchup: گرفتن شسته و رفته از دوره های از دست رفته.

SLA: طلا، به عنوان مثال. روزانه قبل از 06:00 زمان محلی آماده است ؛ هشدار در مورد تخلفات

پارامتری کردن: بازارها/مستاجران/تاریخ از طریق vars ؛ یک قالب کار واحد.

8) Idempotence و دقیقا یک بار

In ingest: duplicates are possible → dedup by «(event_id، منبع)».
در حال پردازش: upsert/ادغام ؛ توابع تبدیل «خالص».

در سینک: تعهدات معاملاتی یا نوشتن idempotent ؛ کنترل «شمارش دوگانه»

Outbox/Inbox: انتشار معاملات رویدادهای دامنه از OLTP.

9) پر کردن и پردازش مجدد

Backfill: محدوده اولیه/تاریخی.
پردازش مجدد - محاسبه زمانی که منطق تغییر/اصلاحات.
Guardrails: محدوده محدوده، سهمیه، پنجره های زمان، خشک اجرا با مقایسه متریک.
علامت گذاری: 'logic _ version'، 'reprocessed _ at'، 'recalc _ reason'.

10) مدل سازی نقره/طلا

نقره (3NF/BCNF): حقایق «واقعیت _ شرط/پرداخت/پرداخت»، ابعاد «کم _ کاربران/بازی/ارائه دهندگان/بازار (SCD II)»، استاندارد سازی ارز/منطقه زمانی.
طلا: فروشگاه های غیرقانونی برای BI/تنظیم کننده/مدل ؛ بسته های صادرات غیر قابل تغییر (WORM) + امضا.

مثال طلا: GGR روزانه

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: نشانه گذاری ؛ نقشه های شناسه های واقعی در حلقه جدا شده.
RLS/CLS: دسترسی به سیاست های نقش/صلاحیت، پوشش.
اقامت: دایرکتوری ها/کلید های جداگانه برای EEA/UK/BR ؛ ممنوعیت عضویت بین المللی بدون دلیل.
DSAR/RTBF & Legal Hold: ویرایش های انتخابی، بایگانی WORM برای گزارش، ممیزی صادرات.

12) قابلیت مشاهده و SLO

معیارهای SLI/SLO:
  • طراوت نقره p95 ≤ 15 دقیقه ؛ طلا روزانه آماده است تا 06:00 قفل. زمان.
  • کامل ≥ 99 5٪، اعتبار (طرح) ≥ 99. 9%.
  • موفقیت کسب و کار ≥ 99 0٪، حوادث MTTR ≤ 24-48 ساعت.

داشبورد: نقشه حرارتی تازه، قیف از دست دادن DQ، هزینه/پرس و جو و هزینه/GB، نمودار خطی.

13) عملکرد و هزینه

تقسیم بندی: تاریخ/بازار/مستاجر ؛ خوشه بندی/مرتبه Z توسط فیلترها.
فرمت ها: پارکت + ACID (دلتا/کوه یخ/هودی)، فشرده سازی و آمار.
فشرده سازی: مبارزه با فایل های کوچک (OPTIMIZE/VACUUM).
مواد: مصالح پایدار ؛ اجتناب از غول در پرواز می پیوندد.
بازپرداخت: بودجه، بازپرداخت سهمیه/بازپرداخت ؛ برنامه ریزی در پنجره های کم بار.

14) نمونه هایی از وظایف DAG معمولی (شبه کد جریان هوا)

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 (مسئول): مهندسی داده (DAG، مدل نقره/طلا)، پلت فرم داده (infra، رجیستری، DQ).
A (پاسخگو): رئیس داده/CDO.
C (مشورت): انطباق/حقوقی/DPO (PII/اقامت/نگهداری قانونی)، امور مالی (FX/GGR)، ریسک (RG/AML)، SRE (SLO/стоимость).
I (مطلع): BI/محصول/بازاریابی/عملیات.

16) نقشه راه پیاده سازی

MVP (3-5 هفته):

1. دریاچه برنز/نقره ای (اسید) + CDC/افزایش برای پرداخت/گیم پلی.

2. DQ-like-code (قوانین 10-15) و داشبورد Freshness/Completeness اساسی.

3. اولین نمایشگاه طلا (GGR روزانه) با SLA «تا 06:00»، صادرات WORM با امضا.

4. DAG و ارکستراسیون هشدار در SLA/DQ.

مرحله 2 (5-10 هفته):
  • پسوند دامنه، SCD II برای کاربران/بازی ها/ارائه دهندگان.
  • لایه معنایی معیارها ؛ تجزیه و تحلیل خط/تاثیر ؛ روش های پر کردن/پردازش مجدد.
  • منطقه بندی (EEA/UK)، RLS/CLS، کنترل هزینه (سهمیه/بازپرداخت).
مرحله 3 (10-16 هفته):
  • شبیه ساز پخش (چه اگر)، تولید خودکار مستندات ویترین/معیارها.
  • بهینه سازی هزینه (خوشه بندی، تحقق، TTL، فشرده سازی).
  • تمرینات DR و بازیابی زمان سفر.

17) چک لیست پیش فروش

  • قراردادها/طرح ها در رجیستری، تست سازگاری سبز.
  • CDC/increments و MERGE بی نظیر هستند ؛ dedup به مصرف.
  • قوانین DQ فعال هستند (بحرانی → شکست + DLQ)، داشبورد SLA پیکربندی شده است.
  • ویترین های طلا فرمول های متریک مستند شده در لایه معنایی هستند.
  • RBAC/ABAC، رمزگذاری، اقامت، DSAR/RTBF/حقوقی نگه تایید شده است.
  • فشرده سازی/OPTIMIZE/VACUUM در یک برنامه ؛ محدودیت های backfill/replay
  • Runbook و حوادث و پردازش مجدد، صادرات حسابرسی (WORM + هش).

18) ضد الگوهای و خطرات

بارگذاری کامل «فقط در مورد»: استفاده از CDC/افزایش.
مخلوط کردن داده های خام و گزارش شده: برنز/نقره/طلا را جداگانه نگه دارید.
فقدان DQ و اصل و نسب: بدون اثبات و تکرارپذیری.
PII در لایه های تحلیلی: جدا کردن نقشه ها، اعمال CLS/RLS.
یکپارچه «شب» jabs: له، موازی در دسته.
نادیده گرفتن هزینه: نگه داشتن چشم در فایل های کوچک، تحقق aggregates، معرفی سهمیه.

19) واژه نامه (کوتاه)

ETL/ELT - استخراج/تبدیل/بارگیری (قبل/بعد از بارگیری).
CDC - تغییرات را ضبط کنید.
SCD - تاریخچه اندازه گیری (I/II/III).
WORM - ذخیره سازی غیر قابل تغییر بسته های گزارش.
سفر در زمان - خواندن نسخه های تاریخی جداول.

20) خط پایین

ETL/ELT مدرن اسکریپت نیست، بلکه یک پلت فرم مدیریت شده است: قراردادها و DQ، افزایش ایده آل/CDC، نظم لایه برنز/نقره ای/طلا، قابلیت مشاهده و SLO، حریم خصوصی و اقتصاد. با پیروی از این راهنما، شما خطوط لوله قابل تجدید و قابل شنیدن را دریافت خواهید کرد که به طور مداوم گزارش، محصول و مدل ها را در مقیاس و بدون شگفتی ارائه می دهند.

Contact

با ما در تماس باشید

برای هرگونه سؤال یا نیاز به پشتیبانی با ما ارتباط بگیرید.ما همیشه آماده کمک هستیم!

Telegram
@Gamble_GC
شروع یکپارچه‌سازی

ایمیل — اجباری است. تلگرام یا واتساپ — اختیاری.

نام شما اختیاری
ایمیل اختیاری
موضوع اختیاری
پیام اختیاری
Telegram اختیاری
@
اگر تلگرام را وارد کنید — علاوه بر ایمیل، در تلگرام هم پاسخ می‌دهیم.
WhatsApp اختیاری
فرمت: کد کشور و شماره (برای مثال، +98XXXXXXXXXX).

با فشردن این دکمه، با پردازش داده‌های خود موافقت می‌کنید.