GH GambleHub

Тарыхый маалыматтар менен иштөө

1) Максаты жана принциптери

Максаты: отчетторду, моделдерди жана иликтөөлөрдү кайталануучу, так жана компленттүү кылуу үчүн мурунку шарттарды сактоо жана иштетүү.

Принциптери:
  • Time-aware by design: схемалар жана суроо-айкын убакыт моделдери.
  • Reproducibility: D датасы үчүн бир эле отчет ар дайым бир натыйжаны берет.
  • Auditability: далилденген келип чыгышы (lineage), өзгөрүлбөс катмарлар, WORM зарыл болгон жерде.
  • Cost-aware: архивдик катмарлар, компрессия, түшүнүктүү SLA менен cold storage.
  • Privacy-by-design: retrospektiv иш жана укуктук суроо-талап боюнча PII башкаруу.

2) убакыт моделдери

Event-time: иш жүзүндө окуя убакыт (коюм, депозит).
Processing-time: система жазууну иштеткенде (ар кандай болушу мүмкүн).
Bitemporal: сактоо жана event-, жана кайра өзгөртүү үчүн processing-убакыт.
validity-интервалдары: 'valid _ from', 'valid _ to', 'is _ current'.
As-of queries: маалыматтарды тандоо "T учурда белгилүү болгондой".

Талаа үлгүсү:
sql event_time TIMESTAMP, -- event time processed_at TIMESTAMP, -- TIMESTAMP valid_from processing time, -- start of version validity valid_to TIMESTAMP, -- end of validity (NULL if current)
is_current   BOOLEAN

3) сактоо катмарлары жана форматтары

Lakehouse: Bronze (raw append-only) → Silver (таза/SCD/нормалдаштыруу) → Gold (айнек).
ACID-форматы: Delta/Iceberg/Hudi (MERGE/Upsert, time-travel, snapshots).
Tiered storage: hot/warm/cold + WORM ченемдик экспонаттар үчүн.
Партиялаштыруу: 'event _ date', 'market', 'tenant'; clusterization/Z-order тез-тез предикаттар (user/game/provider).

4) Тарыхый өлчөө (SCD)

SCD I: кайра жазуу - критикалык эмес өзгөрүүлөр үчүн.
SCD II: толук тарыхы; RG/KYC/трафик каналдары/оюндардын атрибуттары үчүн сунушталат.
SCD III: "чейин/кийин" - сейрек кездешүүчү салыштыруу учурлар.

SCD II Мисалы:
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. rg_status <> u. rg_status OR t. country <> u. country) THEN
UPDATE SET is_current = FALSE, 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);

5) фактылардын тарыхы: сүрөттөр жана bitemporal

Сүрөттөр (snapshots): күндүн/айдын акырына карата агрегаттардын сүрөттөрү (мисалы, капчыктын балансы) - тарыхый отчетторду кайра түзүүнү тездетет.
Bitemporal фактылар: кеч оңдоолорду ретроспективдүү эсептөөлөрдөн айырмалоо үчүн event-time жана processing-time жаздыруу.
Exactly-once тарыхы: Dedup 'event _ id' + emempotent MERGE.

6) Убакыт-саякат жана кайталоо

Time-travel: жадыбалдарды окуу "T учурда" туура, окуялар, салыштыруу үчүн.
Логиканын версиясы: трансформациянын артефакттары (SQL/DBT версиялары, контейнерлер) жана чыгаруу таблицаларындагы "logic_version" белгилери.
Frozen outputs: Gold-artefacts отчеттуулук жазылган жана кайра жазылган эмес, жеткиликтүү hash жана экспорт журналы.

as-of суроо мисал:
sql
SELECT
FROM silver. fact_bets VERSION AS OF 1678901234567
WHERE event_date = DATE '2025-10-31';

7) Backfill и Reprocessing

Backfill: баштапкы/тарыхый диапазону жүктөө.
Reprocessing: мүчүлүштүктөрдү оңдоо же бизнес эрежелерин өзгөртүү кийин кайра эсептөө.

Гардероб:
  • Идемпотенттүүлүк (MERGE/upsert), диапазондор, квоталар, метрикаларды салыштыруу менен "караңгы чуркоо" (dry-run).
  • Натыйжаны белгилөө: 'recalc _ reason', 'logic _ version', 'reprocessed _ at'.
Runbook (схема):

1. Freeze Учурдагы Алтын; 2) DLQ/DQ текшерүү; 3) Silver багыт; 4) метрика салыштыруу; 5) Gold кайра чогултуу; 6) жарыялоо жана кол коюу.

8) тактык текшерүү (reconciliation)

Контролдук суммалар: OLTP, PSP/провайдерлер менен жүгүртүүлөрдү/сандарды салыштыруу.
Double Circuit текшерүү: тандоодо көз карандысыз түтүк (A/B салыштыруу).
Чектер: мисалы, GGR ≤ 0 айырмачылыктары. күнүнө 2%.

SQL үлгүлөрү:
sql
-- Duplicates
SELECT transaction_id, COUNT() c
FROM silver. payments
GROUP BY transaction_id
HAVING COUNT() > 1;

-- Unknown Currencies/Markets
SELECT p. currency
FROM silver. payments p
LEFT JOIN ref. currencies r ON r. code = p. currency
WHERE r. code IS NULL;

9) Валюталары, убактысы, календары: тарыхый тууралыгы

FX күнү: 'fx _ rate _ used' жана 'fx _ source'.
Жергиликтүү базар убактысы: DST/календардык колдонмо аркылуу убакыт.
Майрамдар/сезондук: календардын өзүнчө таблицасы, моделдерде жана отчеттордо колдонулат.

FX нормалдаштыруу мисал:
sql
SELECT p. transaction_id,
p. amount_orig,
r. rate AS fx_rate_used,
p. amount_orig r. rate AS amount_base,
r. fx_source
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';

10) PII, комплаенс жана мыйзамдуу Hold

PII-минималдаштыруу: псевдонимдештирүү, өзүнчө корголгон mapping.
DSAR/RTBF: эсептөө проекциялары жана тарыхый катмарларды тандоо редакторлору; сактоонун мыйзамдуу милдети боюнча өзгөчөлүктөр документтештирилет.
Legal Hold: желектер "тоңдуруп" диапазондору/объекттерине алып салуу, WORM отчеттук экспонаттар үчүн.
Аудит: кирүү жана экспорттун өзгөрүлбөс логдору.

11) DQ жана тарых үчүн сызык

DQ-сыяктуу-код (мисал):
yaml table: silver. fact_bets slo:
completeness_percent: 99. 5 freshness_minutes: 60 rules:
- name: unique_bet type: unique columns: [bet_id]
severity: critical
- name: market_known type: in_set column: market set_ref: ref. markets
- name: ts_in_range type: temporal expression: "event_time BETWEEN date_sub(now(), interval 5 year) AND now()"

Lineage: кирүү/трансформация/чыгуу версияларын жаздыруу; көз карандылыктын графасы кайра өзгөрүүлөр үчүн милдеттүү.

12) аткаруу жана наркы

Партиялаштыруу: датасы/рыногу/тенанты боюнча; агрессивдүү кластерлештирүү 'user _ pseudo _ id '/' game _ id', эгерде биз көп чыпкалап.
Форматтар: Parquet + статистика/компрессия; үзгүлтүксүз VACUUM/OPTIMIZE.
Материалдаштыруу: precompute үчүн "кымбат" тарыхый агрегациялар; чейректик/жылдык отчеттуулук үчүн снапшоттор.
Архивдөө: эски партияларды cold storage которуу (калыбына келтирүү үчүн SLA документтештирилет).
Sample: гана изилдөө милдеттери үчүн, жөнгө салуучу/каржы үчүн эмес.

13) ML үчүн тарыхый чүчүкулак

Feature registry: ар бир fiction formula, owner, SLO, 'model _ version' бар.
Online/offline ырааттуулугу: бир коддук трансформация базасы, өтүү тесттери.
Drift белгилери: PSI/KS мезгил-мезгили менен, тарыхый бөлүштүрүү сактоо.

14) суроолор үлгүлөрү

As-of (датага): отчеттордун кайталанышы.
Cohort-талдоо: Coogorts каттоо/биринчи депозиттер, rolling терезелер.
Slowly changing facts: корректные join’ы с SCD II (`event_time BETWEEN valid_from AND COALESCE(valid_to, '9999-12-31')`).

SCD II менен join 'a мисал:
sql
SELECT b. bet_id, u. rg_status
FROM silver. fact_bets b
JOIN dim. users_scd u
ON u. user_pseudo_id = b. user_pseudo_id
AND b. event_time >= u. valid_from
AND (u. valid_to IS NULL OR b. event_time < u. valid_to);

15) Процесстер жана RACI

R (жооп): Data Engineering (моделдер/SCD/backfill), Data Platform (ACID/архив), Finance/Compliance (салыштыруу/сактоо талаптары).
A (Accountable): Head of Data/CDO.
C (Consulted): Legal/DPO (DSAR/RTBF/Legal Hold), SRE (наркы/SLA), Архитектура.
I (Informed): BI/Продукт/Маркетинг/Операциялар.

16) Ишке ашыруунун жол картасы

MVP (3-5 жума):

1. убакыт-саякат менен ACID таблицалар (Delta/Iceberg/Hudi) жана негизги партиялаштыруу.

2. негизги өлчөө үчүн SCD II (users/games/providers).

3. Күнүмдүк snapshots сынчыл агрегаттар (GGR Daily).

4. DQ-code (uniqueness/in_set/temporal) + lineage-code.

2-этап (5-10 жума):
  • Bitemporal фактылар, as-of API/SQL-шаблондор, runbooks backfill/reprocessing.
  • FX/календардык/DST-байытуу, OLTP DWH/провайдерлер.
  • cold storage Archives, WORM отчеттук топтомдор үчүн, Legal Hold.
Этап 3 (10-16 жума):
  • Толук автоматташтыруу "replay & what-if", өлчөмдөрдү жана регрессия коркунучун салыштыруу.
  • ML тарыхый чыпкалар жана дрейф контролдоо, сактоо наркы боюнча chargeback.
  • Документация "as-of" метрика жана воспроизводимые отчеты.

17) Азык-түлүктүн алдындагы чек-тизме

  • Таблицалар убакыт саякатын колдойт; VACUUM/RETENTION саясаты макулдашылган.
  • SCD II критикалык өлчөө үчүн ишке ашырылган; join's сыналган.
  • D/M боюнча негизги бирдиктердин сүрөттөрү жеткиликтүү жана жарык менен текшерилет.
  • DQ эрежелери активдүү; lineage логиканын кириши/чыгышы жана версияларын көрсөтөт.
  • DSAR/RTBF/Legal Hold тарыхый катмарларда сыналган.
  • cold storage архивдөө жана калыбына келтирүү документтештирилген жана текшерилген.
  • контролдоо боюнча сактоо наркы (cost/GB, cold үлүшү, SLA калыбына келтирүү).

18) көп каталар жана аларды качуу үчүн кантип

так убакыт модели жок: event/processing/validity кошуу.
FX "артка": ар дайым окуя учурундагы курс, сактоо 'fx _ source'.
SCD менен туура эмес join's: 'is _ current' эмес, ырааттуулук аралыгын колдонуңуз.
Мутацияланган Gold-витриналар: отчеттук чыгуулар өзгөрүлбөс болушу керек (же версиялоо менен).
lineage/DQ жок: эч кандай далилдүүлүк жана контролдук пункттары - биринчи күндөн тартып аларды киргизүү.
Башкарылбаган наркы: ысык партияларды өчүрүү, боштук, cold которуу.

19) Глоссарий

As-of Query - маалыматтарды суроо ", алар T учурда карап".
Bitemporal - бир эле учурда event жана processing убакыт бекитүү.
Snapshot - мезгилдин акырына карата абал/агрегаттардын материалдык сүрөт.
Time-travel - таблицалардын тарыхый версияларын окуу.
WORM - туруктуу сактоо (Write Once Read Many).

20) Жыйынтык

Тарыхый маалыматтар менен иштөө жөн гана "узун сактоо" эмес, убакыттын тартиби: ачык-айкын моделдер event/processing/bitemporal, SCD жана snapshots, reproducible as-of суроолор, катуу салыштыруу жана комплаенс-контролдоо, байкоо жана үнөмдүү сактоо архитектурасы. Бул көрсөтмөнү ээрчип, сиз аудитордук жана бизнес-логиканын өзгөрүшүнө туруктуу отчеттуулук, аналитика жана ML үчүн ишенимдүү тарыхый пайдубалга ээ болосуз.

Contact

Биз менен байланышыңыз

Кандай гана суроо же колдоо керек болбосун — бизге кайрылыңыз.Биз дайым жардам берүүгө даярбыз!

Telegram
@Gamble_GC
Интеграцияны баштоо

Email — милдеттүү. Telegram же WhatsApp — каалооңузга жараша.

Атыңыз милдеттүү эмес
Email милдеттүү эмес
Тема милдеттүү эмес
Билдирүү милдеттүү эмес
Telegram милдеттүү эмес
@
Эгер Telegram көрсөтсөңүз — Emailден тышкары ошол жактан да жооп беребиз.
WhatsApp милдеттүү эмес
Формат: өлкөнүн коду жана номер (мисалы, +996XXXXXXXXX).

Түшүрүү баскычын басуу менен сиз маалыматтарыңыздын иштетилишине макул болосуз.