دریاچه های داده و تجمع جریان
1) هدف و ارزش
Data Lake/Lakehouse - یک لایه مرجع از ذخیره سازی طولانی مدت و خواندن در مقیاس بزرگ، که در آن:- جریان از محصولات/بازی/پرداخت زمین در برنز «به عنوان».
- نقره ای عادی و غنی، ارائه کلید سازگار و کیفیت.
- ویترین های جمع آوری شده طلا (از جمله واقعی/نزدیک به زمان واقعی) برای BI، تنظیم کننده، ضد تقلب/RG.
تجمع جریان در دریاچه بازده: تاخیر گزارش کم، هزینه قابل پیش بینی، تکرارپذیری، و پزشکی قانونی.
2) معماری مرجع
1. مصرف/لبه: HTTP/gRPC، OTel، نقاط پایانی دسته ای → шина (Kafka/Redpanda).
2. برنز (فقط ضمیمه): ذخیره سازی شی + جداول ACID (Delta/Iceberg/Hudi)، پارتیشن ها بر اساس تاریخ/بازار/مستاجر ؛ ذخیره سازی محموله اصلی.
3. محاسبه جریان: Flink/Spark/Beam - واحدهای پنجره، CEP، مرده، جستجوی آنلاین.
4. نقره (تمیز/مطابق): عادی سازی ارز/منطقه زمانی، FK/دایرکتوری ها، SCD برای اندازه گیری.
5. خدمت/OLAP: ClickHouse/Pinot/Druid - مصالح دقیقه/ثانیه برای پانل ها تحقق یافته است.
6. طلا (خدمت): موارد نمایش روزانه/ساعتی، برش های نظارتی، بسته های صادرات غیر قابل تغییر (WORM).
7. حلقههای کنترل: Schema Registry, DQ-as-code, lineage, directories, secrets/KMS, RBAC/ABAC.
3) قراردادها و طرح ها
طرح اول: JSON/Avro/Protobuf ؛ فیلدهای مورد نیاز عبارتند از «event _ time (UTC)»، «event _ id»، «trace _ id»، «user _ pseudo _ id»، «market»، «schema _ version».
تکامل: سازگار → اضافه کردن nullable ؛ شکستن →/v2 + دو ورودی.
دایرکتوری: شرح دامنه، مالک، SLA تازه، قوانین DQ، اصل و نسب.
4) فرود جریان به دریاچه
دقیقا یک بار در پایین: حداقل یک بار انتشار + سینک ظرفشویی (MERGE/upsert توسط «event _ id»).
Dedup: حالت در جریان + منحصر به فرد در نقره.
فشرده سازی فایل: فایل های کوچک → به طور منظم OPTIMIZE/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)'، 'amount _ 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) دقیقا یک بار/idemotency و نظم
اتوبوس: حداقل یک بار + پارتیشن بندی (سفارش محلی).
پردازش: dedup توسط 'event _ id' (TTL 24-72h)، اپراتورهای CEP/پنجره با تنظیمات.
غرق شدن: متعهد معامله یا upsert idemotent/ادغام.
Outbox/Inbox: انتشار رویدادهای دامنه از OLTP با ضمانت.
10) اطلاعات و تنظیمات دیرهنگام
تاخیر مجاز: 2-5 دقیقه برای نمایش عملیاتی ؛ بازسازی روزانه برای طلا
اصلاحات: انتشار اضافی در OLAP و انعطاف پذیری طلا (idempotent).
پرچم ها: 'late = true'، 'correction _ of = <event _ id>' برای ممیزی.
11) قابلیت مشاهده و DQ
SLI/SLO (نشانه ها):- p95 مصرف → 1 ویترین -min ≤ 2-5 ثانیه ؛ طلا روزانه آماده است تا 06:00 قفل.
- کامل ≥ 99 5%; اعتبار طرح ≥ 99. 9%; پوشش ردیابی ≥ 98٪
- معیارهای خط لوله: تاخیر/توان/زمان مشغول/اندازه دولت، نسبت اواخر، نرخ dup.
- DQ-داشبورد: تازگی/کامل بودن/اعتبار، قیف از دست دادن، کارت کلید داغ.
- اصل و نسب: راه از برنز به طلا/صادرات ؛ تحلیل تاثیر بر تغییرات
12) حفظ حریم خصوصی، اقامت، امنیت
کمینه سازی PII: pseudonymization، نقشه برداری محافظت شده جداگانه.
اقامت: EEA/UK/BR - دایرکتوری های جداگانه و کلید های رمزگذاری ؛ ممنوعیت عضویت بین المللی بدون دلیل.
رمزگذاری: TLS در حمل و نقل ؛ KMS/CMK در حالت استراحت ؛ امضای صادرات + WORM در خفه کردن.
DSAR/RTBF/Legal Hold: ویرایش های انتخابی، حذف، دسترسی های حسابرسی شده.
13) عملکرد و هزینه
تقسیم بندی: بر اساس تاریخ/بازار/مستاجر ؛ خوشه بندی/مرتبه Z با ویژگی های اغلب فیلتر شده است.
تراکم: حذف فایل های کوچک، به طور منظم OPTIMIZE/VACUUM.
تحقق: دقیقه/ثانیه - در OLAP ؛ روز/ساعت - در طلا.
ذخیره سازی چند لایه: گرم/گرم/سرد، بازیابی SLA، بازپرداخت توسط فرمان (هزینه/GB، هزینه/پرس و جو).
Preaggregation/sketches: HyperLogLog/تقریبا متمایز که در آن قابل قبول است.
14) نمونه ها (قطعات)
فلینک 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 - dedup هنگامی که به نقره بارگذاری می شود:
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;
کوه یخ/دلتا - ادغام 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 (مسئول):- بستر های نرم افزاری داده (دریاچه/کاتالوگ/اسید، تراکم)،
- جریان (واحد/CEP/dedup)،
- تجزیه و تحلیل دامنه (متریک/طلا).
- A (پاسخگو): رئیس داده/CDO.
- C (مشورت): انطباق/حقوقی/DPO (PII/اقامت/نگهداری قانونی)، امور مالی (FX/GGR)، SRE (SLO/стоимость)، امنیت.
- I (مطلع): BI/محصول/بازاریابی/عملیات.
16) نقشه راه پیاده سازی
MVP (3-5 هفته):1. Lakehouse برنز/نقره ای (جداول اسید)، مصرف از کافکا، طرح های رجیستری.
2. واحدهای جریان اصلی (1-5 دقیقه) در OLAP ؛ نمایش طلا ggr_daily (D + 1 تا 06:00)
3. DQ-as-code برای پرداخت/گیم پلی، داشبورد Freshness/Completeness.
4. Compaction/OPTIMIZE، حداقل معیارهای هزینه و هشدار تاخیر/دیر/dup.
مرحله 2 (5-10 هفته):- فرمت نقره ای (SCD II برای کاربران/بازی ها/ارائه دهندگان)، تجزیه و تحلیل خطی و تاثیر.
- جستجوی ناهمگام (RG/KYC/ASN/BIN)، کنترل اصلاح دیرکرد.
- لایه معنایی معیارها، مقررات صادرات (WORM/signatures).
- شبیه ساز چند منطقه ای، DR/replay، پنجره های تنظیم خودکار و علامت های سفید.
- داشبورد هزینه، بازپرداخت/سهمیه، ذخیره سازی و بایگانی لایه.
- تولید خودکار مستندات ویترین و کارت های متریک.
17) چک لیست پیش فروش
- طرح ها و قراردادها در ثبت نام ؛ تست های back-compat سبز هستند.
- Dedup، علامت سفید/اجازه تاخیر، DLQ گنجانده شده است.
- /OPTIMIZE/VACUUM در برنامه پیکربندی شده است.
- SLO: p95 → دقیقه نمایش، до طلا 06:00 ؛ alerts lag/late/dup/state اندازه.
- قوانین DQ فعال هستند ؛ خط از برنز به صادرات قابل مشاهده است.
- RBAC/ABAC и KMS ؛ اقامت و DSAR/RTBF/نگهداری قانونی تست شده است.
- هزینه تحت کنترل (هزینه/GB، هزینه/پرس و جو، سهم سرد)، محدودیت در تکرار.
18) ضد الگوهای و خطرات
مخلوط کردن داده های خام و گزارش شده در همان جدول: تکرارپذیری را نقض می کند.
عدم فشرده سازی: انفجار فایل های کوچک → درخواست های گران قیمت.
محاسبه FX «retroactively»: تاریخ و گزارش ها را می شکند.
بدون علامت/سیاست های دیرهنگام: فروشگاه ها و هشدارها «شناور».
بارگذاری مجدد کامل بدون نیاز: استفاده/MERGE افزایش و تنظیمات.
PII در تجزیه و تحلیل: نقشه ها را جداگانه نگه دارید، CLS/RLS را فعال کنید.
19) واژه نامه (کوتاه)
دریاچه خانه - دریاچه داده + جداول اسید و موتور SQL.
برنز/نقره/طلا - لایه های خام/نرمال/خدمت.
واترمارک - محدودیت آمادگی پنجره بر اساس زمان رویداد.
Materialized View یک ویترین از پیش محاسبه شده برای خواندن سریع است.
سفر در زمان - خواندن نسخه های تاریخی جداول.
WORM - ذخیره سازی غیر قابل تغییر مصنوعات صادرات.
20) خط پایین
یک دریاچه داده با تجمع جریان مناسب، نظم و انضباط لایه ها و قراردادها است: برنز «همانطور که هست»، نقره ای برای عادی سازی و کیفیت، OLAP برای پانل های دقیقه، طلا برای گزارش های تجدید پذیر. مدیریت پنجره ها و علامت های سفید، deduplication و فشرده سازی، حفظ حریم خصوصی و هزینه، شما می توانید فروشگاه های سریع، قابل اعتماد و سازگار برای محصول، انطباق و مدیریت عملیاتی.