آنالیز و خطوط لوله ETL
(بخش: تکنولوژی و زیرساخت)
خلاصه ای کوتاه
خط لوله تحلیلی تبدیل «خام» رویدادهای عملیاتی iGaming (شرط, سپرده, PSP webhooks, سیاهههای مربوط به بازی) را به ویترین متریک پایدار (GGR/NGR, LTV, حفظ, سیگنال های ضد تقلب). اصول پشتیبانی: یک مدل تک لایه (برنز/نقره/طلا)، نظم و انضباط ابزار DQ/اصل و نسب، افزایش و idempotence، مشاهده و SLO، کنترل هزینه. تصمیمات با توجه به مشخصات بار (قله مسابقات)، مقررات (PII/محلی سازی) و الزامات کسب و کار برای طراوت داده ها ساخته شده است.
1) معماری: ETL در مقابل ELT، دسته در مقابل جریان
استخراج → تبدیل → بار تبدیل قبل از بارگذاری به DWH. مناسب در جایی که تحولات نیاز به یک محیط کنترل شده/اسرار قبل از «ابر».
ELT (Extract → Load → Transform): مواد اولیه در دریاچه/دریاچه/DWH، سپس SQL/موتور (اسکریپت DBT/SQL). مناسب برای موتورهای ستون و تکرارهای انعطاف پذیر.
دسته: پنجره های برنامه ریزی شده (هر 5/15/60 دقیقه، شبانه). ارزان و قابل پیش بینی
جریان: почти زمان واقعی (Kafka → Flink/ksqlDB → OLAP). برای پنجره های نزدیک به زمان واقعی (5-60 ثانیه) و سیگنال های ضد تقلب/CRM.
ترکیبی: برنز با جریان، نقره/طلا - مدل های دسته ای افزایشی پر می شود.
توصیه: در iGaming ELT + جریان را حفظ کنید: رویدادها از طریق CDC/outbox → برنز (طراوت دقیقه)، تحولات افزایشی در نقره/طلا.
2) مدال
برنز (خام): رویدادهای خام/CDC بدون منطق کسب و کار. پارکت/ORC فرمت، طرح به عنوان است، اعتبار حداقل.
نقره ای (مطابق): تمیز کردن، deduplication، عادی سازی شناسه، ابعاد SCD، واحد پول/منطقه زمانی.
طلا (Marts): موارد کسب و کار (حقایق/ابعاد، مکعب)، دیدگاه های مادی شده، پیش فرض ها (روزها/کشورها/محصولات).
مزایا: تکرارپذیری، تکامل شفاف، SLO های مختلف و TTL ها با لایه.
3) منابع و بارگیری: CDC، صندوق پستی، پرونده ها
CDC (Change Data Capture): تغییر جریان از OLTP (Postgres/MySQL) با سفارش تضمین شده و idempotency.
الگوی Outbox: رویدادها در جدول/مجموعه outbox در معامله سرویس نوشته می شوند → اتصال به اتوبوس/دریاچه منتشر می شود.
آپلود فایل: آپلود PSP، گزارش شریک ؛ استفاده از مانیفست ها، checksum و دریافت دایرکتوری ها.
شیوه ها: منابع نسخه (نسخه طرح)، برای هر منبع - قرارداد زمینه ها و انتظارات کیفیت.
4) ارکستراسیون: DAG، وابستگی ها، استقرار
DAGs: وابستگیهای صریح (raw → staging → dims → facts → marts).
توانایی کار: دوباره بدون عوارض جانبی (partition-overwrite, 'MERGE '/upsert).
جداسازی محیط ها: Dev/Stage/Prod، ارتقاء مصنوعات، «تایید دستی» برای پر کردن هزینه های گران قیمت.
برنامه ریزی: cron/time windows + event triggers (با توجه به ورود فایل ها/احزاب).
اسرار: از مدیر مخفی ؛ جلوگیری از اسرار در کد DAG.
python with DAG("dwh_daily", schedule="0 ") as dag:
bronze = ingest_cdc(source="payments", partition=hour())
silver = dedup_normalize(input=bronze)
dims = build_dimensions(input=silver)
facts = build_facts(input=silver, dims=dims)
marts = build_marts(input=facts)
bronze >> silver >> [dims, facts] >> marts
5) کیفیت داده ها (DQ) و اصل و نسب
DQ-چک: کامل بودن (شمارش، ورود دیر)، منحصر به فرد بودن کلیدها، محدوده/قوانین دامنه (مقدار ≥ 0، ارز در دایرکتوری).
آستانه ماشه: توقف سخت/نرم شکست با هشدار بسته به بحرانی از جدول.
خط/کاتالوگ: از گزارش به منبع (جداول، ستون ها، معیارها)، صاحبان، مستندات، طبقه بندی PII.
کنترل طرح: تست سازگاری خودکار (عقب/جلو سازگار)، هشدار برای تغییرات «شکستن».
6) شبیه سازی: SCD، کلید های جایگزین، عادی سازی
SCD2 برای ابعاد «valid _ from/valid _ to/is _ current»، کلید جایگزین («_ sk») و کلید طبیعی («_ id») هستند.
SCD1-Overwrites برای ویژگی های جزئی (به عنوان مثال، رابط محلی).
کلید های جانشین: پایدار '_ sk' برای پیوستن، کلید های طبیعی برای منحصر به فرد.
نرمال سازی ابعاد: برف ریزه که در آن سلسله مراتب عمیق است ؛ در غیر این صورت ستاره برای سرعت.
7) مدل های افزایشی و پارتیشن بندی
واترمارک («به روز شده _ at»، «مصرف _ ts»): فقط خطوط جدید/تغییر یافته را بخوانید.
استراتژی های افزایشی: «MERGE» با کلید های کسب و کار، «INSERT OVERWRITE» با تعداد زیادی، «DELETE + INSERT» برای تعداد زیادی کوچک.
تقسیم بندی: بر اساس تاریخ/ساعت/منطقه ؛ خوشه بندی (مرتب سازی کلید/Z-منظور) با فیلتر کردن و پیوستن به کلید.
نماهای تحقق یافته: پیش تجمع GGR/NGR، حافظه پنهان بخش های محبوب.
واحدهای تقریبی: HLL/approx_distinct برای ویترین های ارزان قیمت بالا.
sql
MERGE INTO fact_deposits f
USING staging_deposits s
ON (f. deposit_id = s. deposit_id)
WHEN MATCHED THEN UPDATE SET amount = s. amount, status = s. status, updated_at = s. updated_at
WHEN NOT MATCHED THEN INSERT (...)
VALUES (...);
8) پر کردن، پردازش مجدد و مدیریت داستان
Backfill: DAG های فردی با محدودیت منابع و پنجره ها ؛ یک پنجره روشن از حقیقت (به عنوان مثال 2024-01-01.. 2025-11-05).
پردازش مجدد: تبدیل قطعی → تکرار اجرا می شود همان نتیجه را می دهد. ثبت نسخههای کد مدل.
زمان سفر/نسخه جدول: مناسب برای تحقیقات و DR «خطاهای منطقی».
Retraction: سیاست (حذف/اصلاح) را با ورود به سیستم حذف کنید.
9) نوار نقاله CLO/SLA/SLO
تازگی: برنز ≤ 1-5 دقیقه، ≤ نقره ای 15 دقیقه، طلا ≤ 60 دقیقه (به عنوان مثال).
قابلیت اطمینان: DAG ≥ 99 نرخ عبور x٪.
عملکرد: مدت زمان گره p95/p99 ؛ بودجه زمانی حزب
نظارت بر تاخیر: تاخیر جریان ورودی، عمق صف، سهم «داده های دیرهنگام».
هشدارها: نقض طراوت/حجم، فایل های DQ، افزایش هزینه اسکن، تخریب MV.
10) هزینه: پیش بینی و بهینه سازی
پارتیشن ها و خوشه ها حجم اسکن را به حداقل می رسانند.
مواد از نشانگرهای داغ (روز/کشور/محصولات).
نتایج کش/MV ها برای داشبورد اغلب استفاده می شود.
نظارت بر فرکانس راه اندازی مجدد (بدون هیچ دلیلی «هر 5 دقیقه»).
TTL: احتباس برنز تهاجمی، نقره متوسط، طلای بلند (فقط سنگدانه).
برنامه ریزی ظرفیت: معیارهای کاتالوگ، پیش بینی قله های مسابقات/مبارزات انتخاباتی.
11) ایمنی، PII و محلی سازی
طبقه بندی داده ها: PII/مالی/عملیاتی.
رمزگذاری: در حالت استراحت و در حمل و نقل ؛ دسترسی مبتنی بر نقش/KMS.
De-identification: hashing/masking، ستون های جداگانه با کلید.
RLS/کولاک برای چند اجاره (توسط 'tenant _ id').
محلی سازی: مناطق ذخیره سازی و پردازش بر اساس منطقه (EU/TR/LATAM) ؛ صادرات فقط به مکان های مجاز
حسابرسی: خواندن/نوشتن به جداول بحرانی، دسترسی به دایرکتوری.
12) قابلیت مشاهده: معیارها، سیاههها، مسیرها
معیارهای خط لوله: مدت زمان کار, صف, خطاها, retrays, بایت/ردیف پردازش, هزینه.
سیاهههای مربوط: ساختار ؛ همبستگی در 'trace _ id '/' run _ id'.
ردیابی: از منبع به نمایشگاه (مصرف → تبدیل → بار → BI).
داشبورد: طراوت لایه ها، موفقیت DAG ها، درخواست های گران قیمت، p95/p99.
13) ابزار (معیار نقش)
ارکستراسیون: ارکسترهای DAG (با زمانبندی، بازبینی، هشدار، اسرار).
تبدیل: مدل سازی SQL («مدل به عنوان کد»)، تست واحد مدل ها، مستندات.
DQ/قراردادها: چارچوب اعتبار سنجی و SLA در مجموعه داده ها.
خط/کاتالوگ: نمودار وابستگی خودکار، مالک را پیدا کنید.
جریان: پردازنده های پنجره/جمع آوری، اتصالات سینک/منبع.
(فروشندگان خاص برای پشته شرکت و نیازهای امنیتی انتخاب شده اند.)
14) قالب نمونه
GGR نمایشگاه الگو (عمومی SQL)
sql
CREATE OR REPLACE TABLE mart_ggr_daily AS
SELECT
DATE(b. ts) AS d,
c. country_code,
SUM(b. stake) AS stake_sum,
SUM(b. win) AS win_sum,
SUM(b. stake - b. win) AS ggr
FROM fact_bets b
JOIN dim_country c ON c. country_sk = b. country_sk AND c. is_current
WHERE b. ts >= DATE_SUB(CURRENT_DATE, INTERVAL 60 DAY)
GROUP BY d, c. country_code;
مدل علامت گذاری افزایشی
sql
INSERT INTO fact_bets PARTITION (dt)
SELECT
FROM staging_bets
WHERE updated_at > (SELECT COALESCE(MAX(watermark), '1970-01-01') FROM _meta_watermarks WHERE table='fact_bets');
-- then update watermark
DQ چک (ایده)
sql
-- 1) key uniqueness
SELECT deposit_id FROM fact_deposits GROUP BY deposit_id HAVING COUNT()>1;
-- 2) negative amounts (error)
SELECT FROM fact_deposits WHERE amount < 0;
15) چک لیست پیاده سازی
1. دیکشنری متریک (GGR/NGR/LTV/Retention) و مالکان را تعریف کنید.
2. ثبت تازگی SLO در سراسر لایه های برنز/نقره/طلا.
3. قراردادهای منبع استاندارد (schemas، DQ، SLA).
4. یک نمودار DAG با گام های idemotent و اسرار جدا شده ایجاد کنید.
5. افزایش (MERGE/بازنویسی توسط حزب) و علامت های سفید را اجرا کنید.
6. شامل DQ (چک های بحرانی/نرم)، خطوط و دایرکتوری داده ها.
7. قابلیت مشاهده (معیارها، سیاههها، مسیرها) و هشدارها را تنظیم کنید.
8. سیاست حفظ/TTL و پر کردن/پردازش مجدد را وارد کنید.
9. کنترل PII، رمزگذاری، RLS و محلی سازی را ارائه دهید.
10. صرف روز بازی: تقلید از افت منبع، طرح های «شکستن»، پر کردن توده ای.
16) ضد گلوله
«یک شب ETL برای همه چیز» بدون احزاب و بدون افزایش.
فقدان DQ و اصل و نسب → گزارش های متناقض و شکار شبح.
تجدید نظر کامل از جداول در هر راه اندازی (انفجار هزینه).
بسته نرم افزاری سخت در زمان واقعی بدون بافر/retraces.
ترکیب PII و فروشگاه های عمومی بدون تقسیم بندی و پوشش.
بدون سیاست حذف/حذف (اشتباهات را نمی توان اصلاح کرد).
خلاصه
خط لوله تجزیه و تحلیل قوی در iGaming ELT + بارگذاری جریان به یک مدل لایه ای با DQ/lineage سخت، مدل های افزایشی، ارکستراتور شفاف و SLO های قابل اندازه گیری است. اضافه کردن کنترل هزینه، PII/سیاست محلی سازی، به طور منظم backfill/تمرینات DR - و پلت فرم تحلیلی خود را قابل اعتماد به قله مسابقات مقیاس، پاسخ به کسب و کار با داده های طراوت و کیفیت مورد نظر.