طرح های داده و تکامل آنها
1) چرا این یک پلت فرم iGaming است
قابلیت اطمینان - تغییرات در داده ها گزارش ها، API ها یا مدل ها را خراب نمی کند.
سرعت ویژگی: با خیال راحت اضافه کردن زمینه (KYC/RG/PSP) بدون توقف جریان.
نظارتی: ردیابی و تکرارپذیری (حسابرسی/اصل و نسب، DSAR، حقوقی نگه دارید).
هزینه: به حداقل رساندن «سرریز» و خرابی backfills.
2) انواع طرح ها و جایی که آنها زندگی می کنند
رویدادها (جریانها): "پرداختها. deposit_accepted'، بازی. round_finished' است.
OLTP/DDL: جداول نرمال شده (KYC، حساب ها، محدودیت ها).
DWH/storefronts (طلا): دانه های معدنی تحت BI/ML.
فروشگاه ویژگی: مجموعه ویژگی های آنلاین/آفلاین با تضمین سازگاری.
قراردادهای شریک خارجی: PSP، ارائه دهندگان بازی، منابع بازاریابی.
نشانه ها: Avro/Protobuf (جریان)، طرح JSON (ادغام)، SQL DDL (DWH)، طرح پارکت (دریاچه).
3) سازگاری (هسته تکامل)
سازگار با عقب: تولید کنندگان جدید → مصرف کنندگان قدیمی (اضافه c زمینه پیش فرض/nullable).
سازگار با جلو: تولید کنندگان قدیمی → مصرف کنندگان جدید (خواننده جدید غیر ضروری را نادیده می گیرد).
سازگار کامل: هر دو (هدف مطلوب برای رویدادها).
Breaking-changes: تغییر نام/حذف یک فیلد، تغییر نوع/معناشناسی، تغییر کلید/پارتیشن بندی.
قانون 1: رویدادها از طریق جمع تکامل مییابند، نه از طریق تغییر
قانون 2: حذف - تنها در نسخه MAJOR از این طرح پس از دوره مستهلک.
4) نسخه های معنایی و سیاست ها
سرگرد. جزئی است. PATCH 'برای هر مجموعه طرح/ویترین/ویژگی.
MAJOR - ناسازگار (موضوع جدید/جدول/مجموعه ویژگی، دو اجرا).
MINOR - سازگار (فیلدهای جدید nullable/default، مقادیر جدید enum).
PATCH - توضیحات/محدودیت ها/نظرات را ویرایش کنید.
Field life cycle: 'experimental → active → deprecated → removed' (با تاریخ و مالک).
5) ثبت نام طرح و قراردادهای داده
Schema Registry: نسخه های فروشگاه، سازگاری، تکامل و صاحبان.
قرارداد داده: طرح + کیفیت SLO + حریم خصوصی را رفع می کند (به بخش «اعتبار سنجی داده ها» مراجعه کنید).
json
{
"type":"record","name":"deposit_accepted","namespace":"payments",
"fields":[
{"name":"event_id","type":"string"},
{"name":"occurred_at","type":{"type":"long","logicalType":"timestamp-micros"}},
{"name":"user_id","type":"string"},
{"name":"brand","type":"string"},
{"name":"country","type":"string"},
{"name":"psp","type":"string"},
{"name":"method","type":"string"},
{"name":"amount","type":{"type":"bytes","logicalType":"decimal","precision":18,"scale":2}},
{"name":"currency","type":{"type":"enum","name":"Currency","symbols":["EUR","USD","TRY","BRL"]}},
{"name":"risk_score","type":["null","int"],"default":null}, // MINOR+
{"name":"kyc_level","type":["null",{"type":"enum","name":"Kyc","symbols":["L0","L1","L2","L3"]}],"default":null}
],
"compatibility":"FULL","owner":"team-payments"
}
6) الگوهای مهاجرت
6. 1 رویدادها (جریان)
فقط افزودنی: اضافه کردن زمینه با پیش فرض/nullable ؛ مصرف کنندگان قدیمی نمی شکنند.
پسوند Enum: کاراکترهای جدید MINOR در نظر گرفته می شوند، مصرف کنندگان ملزم به داشتن شاخه «else/unknown» هستند.
مهاجرت عمده: موضوع جدید "پرداخت. deposit_accepted است. v2 '، نوشتن دوگانه، خواندن سایه، سپس تغییر مصرف کنندگان.
6. 2 DWH/فروشگاه
میزهای سبز-آبی: طلایی. revenue_v2' کنار «v1» ؛ تحقق، تأیید، تغییر BI.
Backfill: پخش با عکس های فوری + ادغام idempoint (توسط کلید/نسخه).
SCD: نوع 2 برای تغییر آهسته ویژگی ها (محدودیت ها، KYC، وضعیت های VIP).
6. 3 فروشگاه ویژگی
سرویس دوگانه: مجموعه ویژگی های قدیمی به موازات جدید خدمت می کند ؛ مدل از طریق یک روتر سرویس می شود.
سازگاری نقطه در زمان: تکامل نباید شادی های PITA را از بین ببرد (زمان بندی/دانه بندی در MINOR بدون تغییر است).
7) طبقه بندی تغییرات (چک لیست)
امن (جزئی):- اضافه کردن فیلد «nullable/default» ؛
- پسوند نام (با شاخه «ناشناخته» در مصرف کننده) ؛
- اضافه کردن یک index/comment/description غیر کلیدی.
- مقیاس/واحد تغییر (به عنوان مثال، مقدار در سنت → ارز پایه) - فقط عمده
- مرجع/انتقال مرجع - از طریق لایه ارائه.
- تغییر نام/حذف یک فیلد
- تغییر نوع/فرمت/کلید/پارتیشن
- تغییر معانی (به عنوان مثال، «bonus _ amount» از «accored» → «written off»).
8) خطوط مدار و تست سازگاری
Schema-lint: سبک نام ('snake _ case')، برچسب های مورد نیاز ('owner'، 'doc'، 'pii')، فرمت تاریخ/ارز.
Compat-test: چک کردن نسخه جدید در برابر رجیستری (عقب/جلو/کامل).
تست های مصرف کننده قرارداد: هر سرویس یک «نمونه بار» و انتظار را فراهم می کند ؛ اجرای در CI هنگام تغییر طرح.
مجموعه داده های طلایی: مجموعه ای از نمونه های واقعی و «بد» (enum جدید، زمینه های خالی/اواخر، مقادیر مرزی مبالغ).
9) دایرکتوری ها، نام و محلی سازی
داده های مرجع (کشورها/ارزها/PSP/ارائه دهندگان): نسخه های فردی و به روز رسانی SLA ؛ کد رویداد را وارد نکنید.
محلی/مناطق زمانی: ذخیره UTC در رویدادها + محلی صریح برای ارائه.
قوانین حوزه های قضایی: پرچم های سن، محدودیت های تبلیغی - در قالب دایرکتوری ها با تاریخ عمل.
10) چند برند/چند قضایی و PII
جداسازی مستاجر: «نام تجاری»، «کشور»، «مجوز» - زمینه های اجباری با enum ؛ روبوسی بر روی آنها
سیاست PII در سطح طرح: زمینه های «pii = true» را علامت گذاری کنید، ماسک ها/نشانه گذاری را اعمال کنید ؛ در حوادث، فقط نشانه.
DSAR: حضور 'source _ id/trace _ id' برای حذف/بازیابی ؛ موانع قانونی بر سر مهاجرت های بزرگ
11) DDL و نسخه دریاچه
مهاجرت DDL: مهاجرت اعلانی (Liquibase/Flyway/dbt)، ذخیره سازی در VCS، بررسی توسط صاحب دامنه.
فرمت در دریاچه: آورو/پارکت - ثبت تکامل زمینه; at MAJOR - جدول/مسیر جدید «.../v2/».
پارتیشن بندی: تغییر قطعات (به عنوان مثال، 'تاریخ' → 'تاریخ، نام تجاری') - فقط از طریق ورود عمده و دو برابر.
12) نمونه هایی از iGaming
12. 1 روش های توسعه یافته PSP
اضافه شده 'روش = «MEFETE»' به enum.
انتشار جزئی از 'doposit _ accepted v1. 8. 0`; مشتریانی که MEFETE را نمی شناسند، یک شاخه را به «unknown _ method» ارسال می کنند.
12. 2 ارائه دهنده بازی زمین اضافه شده
بازی بود. round_finished' اضافه شده 'jackpot _ id' (nullable).
نمایش طلا game_rounds_v3' جزئی دریافت می کند ؛ گزارش های قدیمی کار می کنند، جکپات های جدید شمارش می شوند.
12. 3 ویژگی های RG
انتقال از Boolean "self _ excluded" به وضعیت "rg _ state ∈ {هیچ، محدود کردن، cooldown، self_excluded}' - MAJOR، موضوع جدید + نوشتن دوگانه + مهاجرت ویترین ها و مدل ها.
13) فرآیند تکامل (از ایده به سوئیچ)
1. پیشنهاد (ADR): چرا تغییر، نوع سازگاری، ارزیابی ریسک و مصرف کنندگان تحت تاثیر قرار گرفته است.
2. طراحی و قرارداد: طرح ثبت نام، semver، سیاست سازگاری.
3. تست ها: linters، compat، قراردادهای مصرف کننده، پخش در مجموعه های طلایی.
4. استقرار: دو نوشتن/آبی سبز/سایه خواندن ؛ هشدار ها
5. آشتی: تعادل کسب و کار/ناوردا (نگاه کنید به اعتبار سنجی داده ها).
6. سوئیچ: سوئیچ مصرف کنندگان/BI/ویژگی ها.
7. استهلاک: مسدود کردن طرح قدیمی، فضل دوره، حذف و بایگانی.
14) معیارها و SLO های تکامل
نرخ موفقیت مهاجرت، زمان اجرای دوگانه، سهم رویدادهای فرمت جدید، حجم backfill، تاخیر/طراوت.
حوادث سازگاری (P1/P2)، کیفیت پنجره پس از تعویض.
هزینه: $/TB سرریز، $/ساعت دو نوشتن، بار خوشه.
انطباق: 0 نشت PII، SLA DSAR/Legal Hold ملاقات کرد.
15) ابزار و مصنوعات
15. 1 سیاست سازگاری (رجیستری)
yaml schema: payments. deposit_accepted compatibility: FULL default_nulls: true enums:
currency: {allow_new_symbols: true, require_consumer_unknown_branch: true}
pii: false owners: ["team-payments"]
reviewers: ["data-governance","security-dpo"]
15. 2 گذرنامه مهاجرت (الگو)
yaml change_id: MIG-2025-041 scope: game. round_finished -> v3 type: MAJOR plan:
dual_write: true shadow_reads: consumers: ["gold-rounds","rg-models"]
backfill: {from: "2025-01-01", mode: "idempotent-merge"}
validation:
invariants: ["sum_bets = sum_wins + margin + bonuses"]
freshness_delta_p95_max: "PT5M"
switch_criteria:
error_rate_max: 0. 1%
kpi_diff_pp_max: 0. 5 deprecate_after: "2025-12-31"
15. 3 لاینتر از نام ها و انواع (قوانین)
'sake _ case'، زمان بندی UTC، DECIMAL (18. 2) برای مبالغ, «کشور» برای آلفا-2 ISO-3166-1, «ارز» برای ISO-4217.
نه 'free _ text' for enum fields; کتابهای مرجع - خارجی
16) نقشه راه پیاده سازی
0-30 روز (MVP)
1. فعال کردن Schema Registry + سیاست سازگاری برای رویدادهای کلیدی (پرداخت، game_rounds، کاربر).
2. خطوط/تست های کامپکت در CI ؛ دایرکتوری مالک و بررسی SLA.
3. الگوهای ADR و گذرنامه مهاجرت ؛ چک لیست اصلی
30-90 روز
1. آبی سبز برای فروشگاه طلا ؛ نوشتن دوگانه برای موضوعات مهم
2. آزمون مصرف کننده قرارداد برای خدمات اساسی ؛ مجموعه داده های طلایی
3. آشتی تفاوت خودکار و هشدار در هنگام تعویض ؛ گزارش هزینه ها
3-6 ماه
1. تنها فرآیند حذف/حذف با دوره فضل ؛ بایگانی و نگهداری قانونی.
2. طرح های رمزگذاری جغرافیایی/مستاجر خاص و کلید ؛ انواع DP برای بازارهای حساس.
3. فرهنگ لغت داده ها و نمودارهای خطی زنده.
17) RACI
حاکمیت داده (A/R): استانداردها، رجیستری، بررسی مهاجرت، انتشار مجدد.
صاحبان دامنه (R): معنی زمینه ها، کتاب های مرجع، invariants کسب و کار.
پلت فرم داده (R): ابزارهای رجیستری، تست های کامپکت، دو اجرا/backfills.
امنیت/DPO (A/R): سیاست های PII، جغرافیایی/مستاجر، DSAR/حقوقی نگه دارید.
SRE/Observability (C): هشدار، SLO تکامل، ظرفیت.
محصول/امور مالی (C): اعتبار KPI ها، تعویض پنجره ها.
18) ضد الگوهای
«ویرایش درست در پرواز» بدون نسخه و دو اجرا می شود.
تغییر نام به جای اضافه کردن یک فیلد جدید → خرابی های عظیم.
enum سخت بدون شاخه «ناشناخته» → قطره در ارزش های جدید.
دایرکتوری واحد «در کد» برای تمام حوزه های قضایی.
پر کردن مجدد بدون idempotent ادغام و تعادل چک.
سیاهههای مربوط با PII و بدون trace_id برای جستجو/DSAR.
19) بخش های مرتبط
اعتبار سنجی داده ها، Data Origin and Path، DataOps Practices، Analytics and Metrics API، Auditing and Versioning، امنیت داده ها و رمزگذاری، کنترل دسترسی، MLOps: بهره برداری از مدل.
مجموع
تکامل طرح ها یک فرآیند است، نه یک مهاجرت یک طرفه: رجیستری، نسخه ها و قابلیت همکاری ؛ دو اجرا و آبی سبز به جای «سوئیچ در نیمه شب»; آزمون سازگاری و invariants کسب و کار به جای شانس. بنابراین داده ها ثابت باقی می مانند، مدل ها قابل پیش بینی هستند، گزارش ها درست هستند و تنظیم کننده ها آرام هستند.