Коркарди партия
1) Мақсад ва арзиш
Конвейерҳои партия парвандаҳои боэътимоди ҳаррӯза/соатиро барои:- Ҳисоботи танзимкунанда ва молиявӣ (GGR/NGR, андозҳо, феҳристҳои RG/AML).
- BI ва таҳлили маҳсулот (cogorts, LTV, funnels табдилдиҳӣ).
- Тафтиши дақиқ (OLTP↔DWH, провайдерҳо/PSP), таърихсозӣ (SCD).
- Омодасозии хусусиятҳо ва маҷмӯаҳои омӯзишӣ барои ML.
Хусусиятҳои асосӣ: пешгӯишаванда, мукаммалӣ, такрористеҳсолкунӣ, арзиши пасти як воҳиди маълумот.
2) Меъморӣ (истинод)
1. Inest (забти хом): HTTP/GRPC, CDC аз OLTP, провайдери боргузорӣ → биринҷӣ.
2. Лейкхаус: Биринҷӣ (хом, танҳо замима) → Нуқра (тоза/мувофиқат) → Тилло (хизмат).
3. Оркестр: Airflow/Dagster/Prefect (DAG 'ва, вобастагӣ, бозсозӣ, SLA).
4. Коркард: муҳаррикҳои Spark/Trino/DBT/SQL; тақсимот ва форматҳои ACID (Delta/Iceberg/Hudi).
5. DQ ва шартномаҳо: Феҳристи схема, қоидаҳои DQ (YAML/SQL), санҷишҳои истеъмолкунандагон.
6. Хизматрасонӣ: Қабати BI/семантикӣ, содироти гузоришшаванда (CSV/PDF/JSON + hash), API/Graph QL.
7. Мушоҳида: ченакҳои қубур, насл, гузоришҳо, арзиш (арзиш/ГБ, арзиш/дархост).
3) Басомадҳо ва SLA
Ҳар рӯз (D + 1 то 06:00 қулф.) : Ҳисоботҳои GGR, боркунии танзим, мусолиҳа.
Соат/квази-вақт: панелҳои амалиётӣ барои Ops/Finance.
Ҳар ҳафта/моҳ: finconsolidation, моделҳо ва retroprocesses.
- Намоишгоҳҳои ҳаррӯзаи тиллоӣ то соати 06:00 ба вақти маҳаллӣ омодаанд.
- Тару тоза нуқра p95 ≤ 15 дақиқа барои микробҳо/ ≤ 2 соат барои рӯз.
- Пуррагӣ ≥ 99. 5%, Эътибор (схема) ≥ 99. 9%.
4) Боргирии афзоянда ва CDC
Равишҳо:- CDC (Change Data Capture): Такрори Debezium/log
- Аломати обӣ аз рӯи вақт: 'updated _ at> max_loaded_ts'.
- Муқоисаи ҳаш: 'md5 (сатр)' барои муайянкунии тағирот.
- Upsert/Merge: Навсозиҳои нуқра/тиллоӣ.
sql
MERGE INTO silver. payments AS s
USING staging. payments_delta AS d
ON s. transaction_id = d. transaction_id
WHEN MATCHED THEN UPDATE SET
WHEN NOT MATCHED THEN INSERT;
5) SCD (таърихнигории андозагирӣ)
SCD I: навиштан (имло, ислоҳоти хурд).
SCD II: таърихи пурра ('дуруст _ аз/эътибор _ ба/is _ current').
SCD III: "пеш/пас" барои муқоисаи кӯтоҳ.
sql
MERGE INTO dim. users_scd t
USING stage. users u
ON t. user_pseudo_id = u. user_pseudo_id AND t. is_current = TRUE
WHEN MATCHED AND (t. country <> u. country OR t. rg_status <> u. rg_status)
THEN UPDATE SET t. is_current = FALSE, t. valid_to = CURRENT_TIMESTAMP
WHEN NOT MATCHED
THEN INSERT (user_pseudo_id, country, rg_status, valid_from, valid_to, is_current)
VALUES (u. user_pseudo_id, u. country, u. rg_status, CURRENT_TIMESTAMP, NULL, TRUE);
6) Backfill i Коркард
Backfill: Пуркунии ибтидоӣ/Backfill таърихӣ.
Коркард: аз нав ҳисоб кардани тирезаҳои мағоза пас аз таҳрири маълумоти мантиқӣ/ислоҳкунӣ.
- Idempotency (MERGE/upsert), тағйирнопазирии биринҷӣ, версияи мантиқӣ.
- Вақти сафар барои лаҳзаҳои такрории метамаълумот.
- Гвардияҳо: Маҳдудиятҳои диапазон, квотаҳо ва ҷойҳои кории рақобатӣ.
- Ҳуҷҷатгузорӣ: дафтарчаи корӣ бо қадамҳо ва меъёрҳои анҷомёбӣ.
7) Моделсозии қабат
Биринҷӣ:- Танҳо қисмҳои 'event _ date', 'юрисдиксия', 'иҷорагир' илова карда мешаванд.
- Мо сарбории аслиро (барои криминалистика) нигоҳ медорем, 'ingested _ at' -ро ислоҳ мекунем.
- Нормализатсия ва стандартизатсия: FK/директорияҳо, dedup, FX/timezones.
- Ҷадвалҳои факт/андоза (3NF/BCNF), SCD барои андозаҳои калидӣ.
- Дӯконҳои ғайримуқаррарӣ барои BI/танзим/молия, омодагии SLA.
- Материализатсияи агрегатҳо; артефактҳои содиротии тағйирнопазир (ҳаш + WORM).
8) Сифати маълумот (DQ-as-code)
Намунаи қоидаҳои YAML барои нуқра:yaml table: silver. payments slo:
freshness_minutes: 15 completeness_percent: 99. 5 rules:
- name: amount_positive type: range column: amount_base min: 0. 01 severity: critical
- name: currency_whitelist type: in_set column: currency set: [EUR,USD,GBP,TRY,BRL]
severity: major
- name: unique_tx type: unique columns: [transaction_id]
severity: critical
- name: fk_user type: foreign_key column: user_pseudo_id ref_table: dim. users_scd severity: critical
Сиёсати аксуламал: кори интиқодӣ → ноком + DLQ; major/minor → tag + гузориш.
9) Қабати семантикӣ ва ҳисоботдиҳӣ
Таърифҳои ягонаи ченакҳо (GGR/NGR, ARPPU, Нигоҳдорӣ) дар мағозаи семантикӣ-қабати/ченакҳо.
Андозагирии версия; Интегратсия бо бастаҳои BI/содиротӣ
Ҳисоботҳо: CSV/JSON/PDF + sha256, зеркашӣ ва дар ҳолати зарурӣ Hold Legal.
10) Махфият, иқомат, амният
Кам кардани PII: тахаллуси корбарон; харитасозӣ - дар ҳалқаи алоҳидаи муҳофизатшаванда.
Ҷойгиркунии маълумот: феҳристҳо/калидҳои алоҳида барои EEA/UK/BR; манъи пайвастшавии байниминтақавӣ бидуни асосҳои ҳуқуқӣ.
Рамзгузорӣ: TLS дар транзит; KMS/CMK дар истироҳат; назорати содирот.
DSAR/RTBF: пешгӯиҳои ҳисобшаванда, таҳрирҳои интихобӣ; аудити дастрасӣ.
Нигоҳдории ҳуқуқӣ: бойгонии WORM барои артефактҳои танзимкунанда.
11) Иҷро ва арзиши
Тақсимот аз рӯи сана/бозор/иҷорагир; Z-фармоиш/кластер аз ҷониби предикатҳои зуд-зуд.
Форматҳо: Ҷадвалҳои Parquet + ACID; фишурдасозӣ/омор, OPTIMIZE/VACUUM.
Материализатсия: агрегатҳои устувор дар тилло; аз корҳои "якранг" канорагирӣ кунед.
Квотаҳо/буҷетҳо: баргардонидани маблағ аз ҷониби гурӯҳ; маҳдудиятҳои backfill/дархостҳои вазнин.
Ҷадвал: тирезаҳои сарбории кам (шабона/истироҳат), афзалиятҳои навбат.
12) Мушоҳида ва идоракунӣ
Нишондиҳандаҳои қубур: давомнокӣ, суръати муваффақият, такрорӣ, сатрҳои коркардшуда, арзиш/дархост.
Нишондиҳандаҳои DQ: пуррагӣ, дурустӣ, беҳамтоӣ, хатогиҳои FK, дрифт.
Харитаи гармидиҳӣ: аз рӯи домен ва бозор; Панели SLA.
Насл: Таърихи биринҷӣ ба гузоришҳо; таҳлили таъсир пеш аз тағирот.
Огоҳӣ: буҷаҳои SLO, таназзули DQ, таъхирҳо, афзоиши хароҷот.
13) Намунаҳои SQL/Модел
Танзими асъор (нуқра):sql
CREATE OR REPLACE TABLE silver. payments AS
SELECT p. transaction_id,
p. user_pseudo_id,
p. currency,
p. amount_orig,
r. rate AS fx_rate_used,
p. amount_orig r. rate AS amount_base,
p. market,
CAST(p. event_time AS TIMESTAMP) AS event_time
FROM bronze. payment_events p
JOIN dim. fx_rates r
ON r. date = DATE(p. event_time)
AND r. ccy_from = p. currency AND r. ccy_to = 'EUR';
Намоиши ҳаррӯзаи GGR (тилло):
sql
CREATE OR REPLACE VIEW gold. ggr_daily AS
SELECT
DATE(b. event_time) AS event_date,
b. market,
g. provider_id,
SUM(b. stake_base) AS stakes_eur,
SUM(p. amount_base) AS payouts_eur,
SUM(b. stake_base) - SUM(p. amount_base) AS ggr_eur
FROM silver. fact_bets b
LEFT JOIN silver. fact_payouts p
ON p. user_pseudo_id = b. user_pseudo_id
AND p. game_id = b. game_id
AND DATE(p. event_time) = DATE(b. event_time)
JOIN dim. games g ON g. game_id = b. game_id
GROUP BY 1,2,3;
Назорати мукаммалӣ (DQ SQL):
sql
SELECT market, event_date, COUNT() AS n
FROM silver. fact_bets
GROUP BY market, DATE(event_time) AS event_date
HAVING n = 0;
14) Равандҳо ва RACI
R (Масъул): Муҳандисии маълумот (DAG ', Моделҳои нуқра/тиллоӣ), Платформаи маълумот (инфра, регистри ноҳиявӣ, DQ).
A (Ҳисоботдиҳанда): Роҳбари маълумот/Сармутахассиси маълумот.
C (Машварат): Мувофиқат/Ҳуқуқӣ/DPO (PII/нигоҳдорӣ), Молия (FX/GGR), Хавф (RG/AML), SRE (SLO/stoimostel).
I (Маълумот): BI/Маҳсулот/Маркетинг/Амалиёт.
15) Харитаи роҳсозӣ
MVP (4-6 ҳафта):1. Lakehouse биринҷӣ/нуқра (формати ACID), CDC/афзоиш барои 2-3 домен.
2. Рамзи DQ-монанди: 10-15 қоидаҳои пардохт/Gameplay + CI.
3. Аввалин намоиши тиллоӣ (GGR Daily) бо SLA то соати 06:00; гузориш дод содирот + hash.
4. Тару тоза/пуррагӣ/панели хароҷот, огоҳиҳои асосӣ.
Марҳилаи 2 (6-12 ҳафта):- Истифодабарандагони SCD II dlya/бозиҳо/провайдерҳо; тавсеаи домен.
- Қабати семантикии ченакҳо; санҷишҳо бо OLTP/провайдерҳо (дақиқӣ).
- Тартиби Backfill/коркард, таҳлили насл ва таъсир, минтақасозӣ (EEA/UK).
- Моделиронии худкори тағирот (хушк), буҷа/квота, пардохт.
- Ҳуҷҷатҳои худкор (саҳифаҳои маҳсулоти маълумот), машқҳои DR ва барқарорсозии вақт.
- Оптимизатсияи хароҷот (кластерӣ, материализатсия, TTL, вакуум).
16) Рӯйхати санҷиши пеш аз фурӯш
- Шартномаҳо ва схемаҳо дар Феҳрист, санҷишҳои мутобиқат сабз мебошанд.
- Зеркашиҳои афзоянда/CDC кор мекунанд, MERGE idempotent аст.
- Қоидаҳои DQ фаъоланд; critical fail ноком + DLQ; гузориш дар бораи қонунвайронкуниҳо.
- панелҳои SLA/тару тоза/пуррагӣ; ҳушдорҳо муқаррар карда мешаванд.
- PII/DSAR/RTBF/Сиёсати нигоҳдории ҳуқуқӣ, ки аз ҷониби Legal/DPO тасдиқ шудааст.
- Runbook 'ва backfill/коркард/DR озмуда шуд.
- Арзиши таҳти назорат (арзиш/дархост, арзиш/ГБ, квотаҳо).
17) Анти-намунаҳо ва чӣ гуна бояд пешгирӣ кард
Ҷабҳаҳои шабонаи монолитӣ: ба қадамҳои мустақил тақсим шуда, дар баробари тарафҳо.
Аз нав бор кардан лозим нест: истифодаи афзоишҳо/CDC/якҷояшавӣ.
Омезиши PII дар таҳлил: харитаҳоро алоҳида нигоҳ доред, CLS/RLS-ро татбиқ кунед.
Не DQ/lineage: DQ-as-code ва пайдоиши пайгирӣ ворид кунед.
Қуттиҳои "дастӣ": автоматизатсия ва ҳуҷҷат, диапазонҳои маҳдуд.
Арзиши идоранашаванда: кластерӣ, материализатсия, сиёсати нигоҳдорӣ.
18) Луғат (мухтасар)
CDC - Гирифтани тағирот аз OLTP.
SCD - андозагирии оҳиста тағирёбанда (I/II/III).
Lakehouse - маълумотҳои кӯли + ҷадвалҳои ACID.
MERGE/Upsert - амалиёти навсозии idempotent.
Вақти сафар - хондани версияҳои таърихии ҷадвалҳо.
WORM - нигоҳдории тағйирнопазири артефактҳо.
19) Сатри поён
Коркарди партия як интизоми қубурҳои пешгӯишаванда, такроршаванда ва ройгон мебошад. Бо риояи принсипҳои схемаи аввал, афзоиш/CDC, таърихнигории SCD, DQ-as-code, мушоҳида ва иқтисоди огоҳона, шумо намоишгоҳҳо ва гузоришҳои устувори тиллоӣ мегиред, ки аз ҷониби дурахшон тасдиқ карда мешаванд ва дар вақти дилхоҳ ба аудит омодаанд.