بحيرات البيانات وتجميع التدفقات
1) الغرض والقيمة
Data Lake/Lakehouse - طبقة مرجعية من التخزين طويل الأجل والقراءة واسعة النطاق، حيث:- التدفقات من المنتجات/الألعاب/المدفوعات تهبط بالبرونز «كما هو».
- تعمل الفضة على تطبيع وإثراء، مما يوفر مفاتيح وجودة متسقة.
- الذهب - معارض مجمعة (بما في ذلك real-/في الوقت الفعلي القريب) لـ BI، المنظم، مكافحة الاحتيال/RG.
تجميع التدفقات على عائدات Lakehouse: انخفاض وقت الإبلاغ، والتكلفة التي يمكن التنبؤ بها، وقابلية التكاثر، والطب الشرعي.
2) البنية المرجعية
1. Inster/Edge: HTTP/gRPC، OTel، نقاط نهاية الدفعة → шина (كافكا/ريدباندا).
2. البرونز (الملحق فقط): تخزين الكائنات + جداول الحمض (دلتا/Iceberg/Hudi)، التقسيمات حسب التاريخ/السوق/المستأجر ؛ تخزين الحمولة الأصلية.
3. حساب البث: Flink/Spark/Beam - وحدات النوافذ، CEP، deadup، lookups عبر الإنترنت.
4. الفضة (نظيفة/مطابقة): تطبيع العملة/المنطقة الزمنية، FK/الأدلة، SCD للقياسات.
5. التقديم/OLAP: ClickHouse/Pinot/Druid - مجاميع دقيقة/ثانية للوحات.
6. الذهب (خدمة): علب عرض يومية/كل ساعة، شرائح تنظيمية، حزم تصدير غير قابلة للتغيير (WORM).
7. حلقات التحكم: سجل المخطط، DQ-as-code، النسب، الأدلة، الأسرار/KMS، RBAC/ABAC.
3) العقود والمخططات
Schema-first: JSON/Avro/Protobuf; الحقول المطلوبة هي 'event _ time (UTC)' و 'event _ id' و 'trace _ id' و 'user _ pseudo _ id' و 'market' و' schema _ version '.
التطور: متوافقة مع الظهر → إضافة غير قابلة للإلغاء ؛ كسر → '/v2 '+ الدخول المزدوج.
الدليل: وصف النطاق، المالك، SLA الجديد، قواعد DQ، النسب.
4) تيارات الهبوط في البحيرة
بالضبط مرة واحدة في الأسفل: نشر مرة واحدة على الأقل + حوض خفي (MERGE/upsert بواسطة "event _ id').
Dedup: فخور في البث + التفرد بالفضة.
ضغط الملف: ملفات صغيرة → APTIMIZE/VACUUM للقراءة والتكلفة.
السفر عبر الزمن: يشمل التصحيح وإعادة التشغيل والتدقيق.
sql
CREATE TABLE bronze. payment_events (
event_id STRING, user_pseudo_id STRING, currency STRING,
amount DECIMAL(18,2), market STRING, event_time TIMESTAMP, payload STRING
)
PARTITIONED BY (days(event_time), market);
5) تجميع التيار: النوافذ والعلامات المائية
النوافذ:- الانهيار - ثابت (على سبيل المثال 1 دقيقة/5 دقائق) للألواح المستقرة.
- القفز - التداخل (الخطوة <النافذة) للمقاييس «السلسة».
- الجلسة - الفجوات السلوكية في الخمول.
- العلامات المائية: التحكم في البيانات المتأخرة (عادة 2-5 دقائق)، وقواعد ما قبل الإصدار/التصحيح.
sql
SELECT market,
TUMBLE_START(event_time, INTERVAL '1' MINUTE) AS ts_min,
COUNT() AS deposits_1m,
SUM(amount_base) AS sum_1m
FROM silver. payments
GROUP BY market, TUMBLE(event_time, INTERVAL '1' MINUTE);
6) تجسيد المجاميع
محرك OLAP (ClickHouse/Pinot/Druid): يخزن مجاميع دقيقة/ثانية للوحات القيادة والتحليلات التشغيلية.
Lakehouse Gold: يحتفظ بشرائح يومية/كل ساعة للإبلاغ والتوفيق (قابلية التكاثر).
sql
CREATE MATERIALIZED VIEW mv_ggr_1m
ENGINE = AggregatingMergeTree()
PARTITION BY toDate(event_time)
ORDER BY (toStartOfMinute(event_time), market, provider_id) AS
SELECT toStartOfMinute(event_time) AS ts_min,
market,
provider_id,
sumState(stake_base) AS s_stake,
sumState(payout_base) AS s_payout
FROM stream. game_events
GROUP BY ts_min, market, provider_id;
شريحة ذهبية (ليكهاوس):
sql
CREATE OR REPLACE VIEW gold. ggr_daily AS
SELECT
DATE(event_time) AS event_date,
market, provider_id,
SUM(stake_base) AS stakes_eur,
SUM(payout_base) AS payouts_eur,
SUM(stake_base) - SUM(payout_base) AS ggr_eur
FROM silver. fact_game_financials
GROUP BY 1,2,3;
7) الفضة: التطبيع والمصالحة
الوقت والعملة: 'event _ time (UTC)', 'muge _ base', 'fx _ rate _ used', 'fx _ source'.
المفاتيح/الأدلة: «user _ pseudo _ id»، «game _ id»، «provider _ id'،» market'.
SCD II: تأريخ البعد (المستخدمون/الألعاب/المزودون/RG/KYC).
قواعد DQ: التفرد الرئيسي، الأدلة، نطاقات الكمية، الصلاحية الزمنية.
8) سجل الوحدات والتعاريف «الصحيحة»
الطبقة الدلالية: صيغ GGR/NGR موحدة، الرهانات/المكاسب، التحويل، ARPPU، الكمون p95.
مقاييس النسخ: حسابات 'metric _ version' و 'as-of'.
بطاقات Dockcards: المالك، الصيغة، المصادر، استعداد SLA.
9) مرة واحدة بالضبط/الخصوصية والنظام
الحافلة: مرة واحدة على الأقل + التقسيم (النظام المحلي).
المعالجة: التخلص بواسطة 'event _ id' (TTL 24-72h)، مشغلي CEP/النوافذ مع التعديلات.
الحوض: ارتكاب المعاملات أو الاندماج/الاندماج المغفل.
Outbox/Inbox: أحداث مجال النشر من OLTP مع الضمان.
10) البيانات والتعديلات المتأخرة
التأخير المسموح به: 2-5 دقائق للعروض التشغيلية ؛ إعادة تجميع يومية للذهب.
التصحيحات: انبعاثات إضافية في OLAP وإعادة تمثيل الذهب (idempotent).
الأعلام: «متأخر = صحيح»، «تصحيح _ من = <حدث _ معرف>» للتدقيق.
11) قابلية الرصد و DQ
SLI/SLO (معالم):- p95 ingest→1 -min showcase ≤ 2-5 s ؛ الذهب اليومي جاهز حتى الساعة 06:00.
- الاكتمال ≥ 99. 5%; صلاحية المخطط ≥ 99. 9%; تغطية التتبع ≥ 98٪.
- مقاييس خطوط الأنابيب: التأخر/الإنتاجية/الوقت المزدحم/حجم الولاية، النسبة المتأخرة، معدل الانتعاش.
- لوحات القيادة DQ: النضارة/الاكتمال/الصلاحية، قمع الخسارة، بطاقة المفتاح الساخنة.
- النسب: الطريق من البرونز إلى الذهب/الصادرات ؛ وتحليل أثر التغييرات.
12) الخصوصية والإقامة والأمن
تقليل PII: تسمية مستعارة، رسم خرائط محمية منفصلة.
الإقامة: EEA/UK/BR - أدلة منفصلة ومفاتيح تشفير ؛ حظر الانضمام عبر الأقاليم دون سبب.
التشفير: TLS أثناء العبور ؛ KMS/CMK في الاستراحة ؛ توقيعات التصدير + WORM في الخنق.
DSAR/RTBF/Legal Hold: تعديلات انتقائية، تجميد حذف، عمليات وصول مدققة.
13) الأداء والتكلفة
التقسيم: حسب التاريخ/السوق/المستأجر ؛ التجميع/الترتيب Z بواسطة سمات مرشحة بشكل متكرر.
الضغط: إزالة الملفات الصغيرة، التحسين المنتظم/الفراغ.
التجسيد: دقائق/ثوان - في OLAP ؛ يوم/ساعة - بالذهب.
التخزين المتدرج: ساخن/دافئ/بارد، استرداد SLA، رد الشحن بالأمر (التكلفة/GB، التكلفة/الاستعلام).
Preaggregation/sketches: HyperLogLog/تقريباً متميز حيثما يكون مقبولاً.
14) أمثلة (شظايا)
Flink CEP - هيكلة الودائع (10 دقائق):python if count_deposits(window=10MIN) >= 3 \
and sum_deposits(window=10MIN) > THRESH \
and all(d. amount < REPORTING_LIMIT for d in window_events):
emit_alert("AML_STRUCTURING", user_id, snapshot())
SQL - التخلص عند تحميله في الفضة:
sql
CREATE TABLE silver. payments AS
SELECT EXCEPT(rn) FROM (
SELECT p., ROW_NUMBER() OVER (PARTITION BY event_id ORDER BY event_time) rn
FROM bronze. payment_events p
) WHERE rn = 1;
Iceberg/Delta - MERGE idempotent:
sql
MERGE INTO silver. fact_bets s
USING stage. fact_bets_delta d
ON s. bet_id = d. bet_id
WHEN MATCHED THEN UPDATE SET
WHEN NOT MATCHED THEN INSERT;
15) العمليات و RACI
R (مسؤول):- Data Platform (Lakehouse/catalog/ACID, compaction),
- البث (الوحدات/CEP/dedup)،
- Domain Analytics (metrics/Gold).
- ألف (مسؤول): رئيس قسم البيانات/المدير التنفيذي.
- جيم (استشاري): الامتثال/القانوني/DPO (PII/الإقامة/الحجز القانوني)، المالية (FX/GGR)، SRE (SLO/стоимость)، الأمن.
- I (مطلع): BI/Product/Marketing/Operations.
16) خارطة طريق التنفيذ
أفضل لاعب (3-5 أسابيع):1. Lakehouse Pronze/Silver (جداول ACID)، مبتذلة من كافكا، مخططات التسجيل.
2. وحدات التيار الأساسية (1-5 دقائق) في OLAP ؛ عرض الذهب. ggr_daily (D + 1 حتى 06:00).
3. DQ-as-code for Payments/Gameplay، لوحات القيادة Freshness/Compleness.
4. ضغط/APTIMIZE، الحد الأدنى لمقاييس التكلفة والإنذارات بالتأخير/التأخير/الإلغاء.
المرحلة 2 (5-10 أسابيع):- الامتداد الفضي (SCD II للمستخدمين/الألعاب/مقدمي الخدمات)، وتحليل النسب والتأثير.
- نظرات غير متزامنة (RG/KYC/ASN/BIN)، مراقبة التصحيح المتأخرة.
- طبقة دلالية من المقاييس، لوائح التصدير (WORM/signations).
- متعدد المناطق ومحاكي DR/إعادة التشغيل ونوافذ الضبط التلقائي والعلامات المائية.
- لوحات التحكم في التكاليف، واسترداد التكاليف/الحصص، والتخزين المتدرج والأرشفة.
- التوليد التلقائي لوثائق العرض وبطاقات المقاييس.
17) قائمة مرجعية قبل البيع
- المخططات والعقود في السجل ؛ اختبارات المقارنة الخلفية خضراء.
- Dedup، علامة مائية/تأخير مسموح به، بما في ذلك DLQ.
- /تحسين/تهيئة الفراغ في الموعد المحدد.
- SLO: p95 ingest→minute -view, Gold до 06:00; تنبيهات متأخرة/متأخرة/داب/حجم الولاية.
- قواعد DQ نشطة ؛ من البرونز إلى الصادرات.
- RBAC/ABAC и KMS ؛ اختبار الإقامة و DSAR/RTBF/Legal Hold.
- التكلفة تحت السيطرة (التكلفة/جيجابايت، التكلفة/الاستعلام، الحصة الباردة)، حدود الإعادة.
18) الأنماط والمخاطر المضادة
خلط البيانات الخام والمبلغ عنها في نفس الجدول: ينتهك قابلية التكاثر.
نقص الضغط: انفجار الملفات الصغيرة → الطلبات باهظة الثمن.
حساب العملات الأجنبية «بأثر رجعي»: يكسر التاريخ والتقارير.
لا توجد علامات مائية/سياسات متأخرة: واجهات المحلات والتنبيهات «تطفو».
إعادة التحميل الكامل دون داع: زيادات وتعديلات الاستخدام/الدمج.
PII في التحليلات: حافظ على فصل الخرائط، وتمكين CLS/RLS.
19) مسرد (موجز)
Lakehouse - بحيرة بيانات + جداول ACID ومحرك SQL.
البرونز/الفضة/الذهب - طبقات خام/طبيعية/تقديم.
العلامة المائية - حد الاستعداد للنافذة حسب وقت الحدث.
العرض المجسد هو عرض محسوب مسبقًا للقراءة السريعة.
السفر عبر الزمن - قراءة النسخ التاريخية من الجداول.
WORM - تخزين غير قابل للتغيير للتحف التصديرية.
20) خلاصة القول
بحيرة البيانات مع تجميع التيار المناسب هو نظام من الطبقات والعقود: البرونز «كما هو»، الفضة للتطبيع والجودة، OLAP للألواح الدقيقة، الذهب للتقارير القابلة للتكرار. إدارة النوافذ والعلامات المائية، والتفريغ والضغط، والخصوصية والتكلفة، تحصل على واجهات متاجر سريعة ويمكن التحقق منها ومتوافقة للمنتج والامتثال وإدارة التشغيل.