مخازن البيانات ونماذج OLAP
(القسم: التكنولوجيا والهياكل الأساسية)
موجز موجز
مستودع البيانات (DWH) - طبقة التحليلات الأساسية في iGaming: تقارير إلى المنظمين، والربحية حسب المنتج/السوق، وفرقة LTV، وتحليلات مكافحة الاحتيال، وتقسيم CRM ولوحات القيادة في الوقت الفعلي. تم بناء DWH المستدام على نموذج بيانات واضح (Star/Snowflake/Data Vault)، والتكامل القوي (ETL/ELT + CDC)، والأداء المدروس (محركات الأعمدة، والحفلات، و MVs)، ودلالات المقاييس الصارمة، والأمن/PI، وإدارة التكاليف.
المناهج المعمارية
كلاسيك DWH (Kimball vs Inmon)
Kimball (Dimensional/Star/Snowflake): حالات الإبلاغ السريع ؛ التركيز على الحقائق والأبعاد، تاريخ SCD. قيمة زمنية سريعة.
Inmon (Corporate Information Factory): normanized core + storefronts; أثقل في الوقت، ولكن بشكل صارم ومركزي.
Data Vault 2. 0
Hubs-Links-Satellites: نموذج «خام» قابل للتطوير لتكامل المصدر وتدقيق التغيير. يتم بناء واجهات متاجر النجوم في الأعلى.
بحيرة البيانات/ليكهاوس
Data Lake: raw files (Parquet/ORC) + directories (Hive/Glue/Unity/Metastore).
Lakehouse: طبقة واحدة للدفعة/التيار، جداول ACID (دلتا/Iceberg/Hudi)، السفر عبر الزمن، الانزعاج/الدمج، الملفات المدمجة، Z-Order/Clustering.
ميدالية (برونزية فضية ذهبية)
البرونز: بيانات خام (خام) + CDC.
الفضة: منقية ومطابقة.
الذهب: القضايا التجارية/المقاييس/المكعبات.
مناسب للهجينة (كافكا → البرونزية ؛ سيلفر в ليكهاوس ؛ الذهب в ClickHouse/BigQuery/Snowflake).
طرازات OLAP: Star و Snowflake و Data Vault
مخطط النجوم (نجم)
جداول الوقائع: المعاملات (الأسعار والودائع والدورات).
الأبعاد: لاعب، لعبة، مزود، تاريخ/وقت، جو، قناة جذب.
الإيجابيات: بهجة بسيطة، أداء متوقع.
ندفة الثلج
تطبيع الأبعاد (التسلسل الهرمي للبلد/المنطقة/المدينة، والتسلسل الهرمي للمنتجات).
الإيجابيات: ازدواجية أقل ؛ ناقص - المزيد من الفرح.
Data Vault → Star
نضيف تغييرات أولية إلى DV (التدقيق، قابلية التكاثر الكاملة)، وبناء نوافذ تقارير مثل Star/Snowflake.
التكامل: ETL/ELT، CDC، التغييرات البطيئة
خط الأنابيب
Outbox/CDC من OLTP (Postgres/MySQL) → موصلات كافكا/ → برونزية.
ELT: التنظيف، التخلص، التطبيع في الفضة.
منطق الأعمال والتجمعات في واجهات الذهب/المتاجر.
SCD (أبعاد متغيرة ببطء)
النوع 1-Overwrite (للميادين غير الأساسية).
النوع 2: التاريخ (الإصدارات القديمة) - معيار الملفات الشخصية/القنوات/الأسعار.
النوع 3: تخزين زوج من القيم (نادر).
sql
-- insert new dimension version
INSERT INTO dim_player (player_sk, player_id, country, valid_from, valid_to, is_current)
SELECT gen_sk(), s. player_id, s. country, now(), '9999-12-31', true
FROM staging_player s
LEFT JOIN dim_player d ON d. player_id = s. player_id AND d. is_current = true
WHERE d. player_id IS NULL OR d. country <> s. country;
-- closing the old version
UPDATE dim_player d
SET valid_to = now(), is_current = false
FROM staging_player s
WHERE d. player_id = s. player_id AND d. is_current = true AND d. country <> s. country;
الطبقة الدلالية والمقاييس «الحقيقية»
أدخل طبقة دلالية واحدة: GGR و NGR و Net Deposits و ARPPU و LTV و Churn و Retention Cohorts.
المقاييس كرمز (dbt metrics/LookML/Semantic Layer) → نفس الصيغ في جميع التقارير.
الجدول الزمني: جدول التاريخ/الساعة مع خصائص TZ/المناطق/عطلات نهاية الأسبوع/الحملات.
الأقبية والمحركات: اختيار الملف الشخصي
عمود وسحابة DWH
ClickHouse: مسح/تجميعات فائقة السرعة، تمثيلات ملموسة، إسقاطات ؛ يختلف عن الأحداث/القياس عن بعد وعروض التسويق.
BigQuery: بدون خدمة، مقياس، مخابئ/مجموعات تلقائية ؛ والسعر لكل فحص ؛ ملائمة للأحمال المختلطة والمخصصة.
ندفة الثلج: فرع الحوسبة/التخزين، مجموعات عند الطلب، السفر عبر الزمن ؛ شفافة لفرق مختلفة.
Redshift/Vertica/Pinot/Druid: خيارات OLAP/في الوقت الفعلي.
ضبط الملف الشخصي
التقسيم حسب التاريخ/المنطقة/القناة.
التجميع/الفرز حسب مفاتيح التصفية/الفرح.
الضغط والترميز بواسطة القواميس.
Preaggregations (rollup، مكعبات)، وجهات نظر ملموسة.
تقريبا وظائف (HyperLogLog/approx_distinct) للتقييمات الرخيصة.
هندسة الأداء
التقسيم والتجميع
الحفلة هي حدود المقصورة. حفلات اليوم/الساعة للأحداث.
التجميع (مفاتيح الفرز/الترتيب Z) - يسرع النطاقات وينضم.
الآراء الموضوعية (MVs)
GGR/NGR تقرير مسبق حسب اليوم/البلد/المنتج.
تحديث تدريجي من تيار CDC.
sql
CREATE MATERIALIZED VIEW mv_ggr_daily
ENGINE = SummingMergeTree()
PARTITION BY toYYYYMMDD(ts)
ORDER BY (country, product_id, toDate(ts)) AS
SELECT toDate(ts) AS d,
country,
product_id,
sum(stake) AS stake_sum,
sum(win) AS win_sum,
sum(stake - win) AS ggr
FROM bets
GROUP BY d, country, product_id;
النماذج الإضافية (dbt/ELT)
الاستراتيجيات "إدخال _ الكتابة الفوقية" حسب الطرف، "الدمج" بواسطة مفاتيح CDC، "العلامة المائية" بواسطة "محدث _ at'.
استراتيجيات الانضمام
نسخة طبق الأصل من القياسات في كل دفعة (denorm).
البث الخافت الصغير ؛ خلط الحقائق الكبيرة مرتبة حسب المفتاح.
التكلفة: التحكم والاستخدام الأمثل
BigQuery/Snowflake: الحد من حجم المسح الضوئي (حفلات التصميم/المجموعات)، وتمكين مخبأ النتائج/المناظر المجسدة، والحد من المهام التلقائية BI.
ClickHouse: حجم اللوت، تردد ميرجي، ميزانية التخزين (TTL للأحداث الخام، التجميعات دائمة).
تقلل دلالات المقاييس من الحساب «المزدوج».
تقليم البيانات: الاحتفاظ بالبرونز، التجميع للذهب.
جودة البيانات (DQ)، الكتالوج، النسب
شيكات DQ: الاكتمال، التفرد، النطاقات، قواعد العمل (على سبيل المثال، GGR ≥ 0 في المجاميع).
كتالوج البيانات والنسب: الجدول/أوصاف الحقل، المالكون، تصنيف PII، تتبع التقارير إلى المصدر.
مخططات التحكم: عقد الأحداث/مراكز السيطرة على الأمراض والوقاية منها، تنبيهات لتغييرات غير متوافقة.
السلامة والامتثال وتعدد الإيجارات
تجزئة PII: مناطق فردية، إخفاء/تسمية مستعارة، أعمدة مع تشفير KMS.
RBAC/ABAC: أدوار على مستوى المشروع/المخطط/الجدول/الصف (RLS)، بكرات «الحاجة إلى المعرفة».
توطين البيانات: الدلاء/المستودعات الإقليمية (EU/TR/LATAM).
مراجعة الدخول: من يقرأ/يغير واجهات المحلات والنماذج.
DR، النسخ الاحتياطية وقابلية التكاثر
Data code versioning (dbt/git), Dev/QA/Prod Environment.
لقطات ميتاستور/كتالوج + جداول السفر عبر الزمن.
الاحتفاظ/طبقات TTL البرونزية/الفضية/الذهبية ؛ تصدير واجهات المحلات التجارية الهامة.
يوم اللعبة: استعادة العروض والتحقق من سلامة المقاييس.
واجهات المتاجر الهجينة في الوقت الفعلي
البث إلى OLAP: كافكا → ClickHouse/Pinot/Druid لعروض دقيقة.
وجهات نظر ملموسة + CDC للتحديثات القريبة من الإنترنت (5-15 دقيقة).
تظل الطبقة الدلالية كما هي: المقاييس متطابقة في الوقت الفعلي والدفعة.
GGR حسب اليوم ومثال العرض القطري (Generic SQL)
sql
CREATE TABLE fact_bets (
bet_id BIGINT,
player_sk BIGINT,
game_sk BIGINT,
country_sk BIGINT,
stake DECIMAL(18,2),
win DECIMAL(18,2),
ts TIMESTAMP
) PARTITION BY DATE(ts);
CREATE TABLE dim_country (
country_sk BIGINT PRIMARY KEY,
iso2 STRING,
region STRING,
valid_from TIMESTAMP,
valid_to TIMESTAMP,
is_current BOOL
);
-- Showcase
CREATE MATERIALIZED VIEW mart_ggr_daily AS
SELECT
DATE(ts) as d,
c. region,
SUM(stake) AS stake_sum,
SUM(win) AS win_sum,
SUM(stake - win) AS ggr
FROM fact_bets f
JOIN dim_country c ON c. country_sk = f. country_sk AND c. is_current
GROUP BY d, c. region;
قائمة التنفيذ المرجعية
1. حدد المصادر والمجالات، وأصلح القاموس المتري.
2. حدد النموذج: DV للطبقات الخام/المدققة + نجمة لحالات العرض.
3. حفلات/مجموعات تصميم للاستفسارات والنوافذ الرئيسية.
4. قم بتهيئة CDC/ELT وسياسة SCD والمفاتيح البديلة.
5. أدخل طبقة دلالية (مقاييس كرمز) وتقويم تاريخ/ساعة.
6. إنشاء MVs/preaggregation للتقارير باهظة الثمن.
7. تمكين DQ/الدليل/النسب ومراقبة المخطط.
8. تعريف RBAC/PII/التوطين والتشفير ومراجعة الحسابات.
9. وضع الفقرة 95/ص 99 للرصد والتكلفة والإنذارات بشأن التدهور والتجاوز.
10. تمارين DR المنتظمة وقابلية تكرار البيئات.
الأنماط المضادة
«حقيقة عملاقة واحدة بدون أحزاب» → مسح تيرابايت والنتيجة آخذة في الازدياد.
تعاريف غير متسقة للمقاييس في لوحات القيادة المختلفة.
نقص SCD2 حيث يتطلب العمل التاريخ.
التطبيع المبكر للقياسات: فرح غير ضروري وتقارير بطيئة.
البيانات الأولية بدون فحوصات DQ وتقارير النسب → «لا شيء».
عدم وجود إذن/TTL → تخزين القمامة وانفجار التكلفة.
موجز
iGaming-DWH الموثوق به هو نموذج واضح (DV→Star)، وقاموس متري واحد، والتقسيمات/التجميع الصحيح، وواجهات المتاجر المجسدة، و DQ/السلالة الصارمة، و RBAC/PII/التوطين. أضف البث الهجين للنضارة والانضباط القائم على ELT والقيمة - واحصل على منصة تحليلات مستدامة تتسع للبطولات والتقارير التنظيمية والأبحاث المخصصة دون مفاجآت في p99 والميزانية.