GH GambleHub

Деректер көлдері және ағындарды агрегациялау

1) Мақсаты және құндылығы

Data Lake/Lakehouse - ұзақ сақтау және масштабты оқу тірек қабаты, мұнда:
  • Өнімдерден/ойындардан/төлемдерден ағындар Bronze «қалай болса солай» қонады.
  • Silver келісілген кілттер мен сапаны қамтамасыз ете отырып, қалыпқа келтіреді және байытады.
  • Gold - BI, реттегіш, антифрод/RG үшін біріктірілген витриналар (оның ішінде real-/near-real-time).

Lakehouse-дағы ағындарды біріктіру: есептердің төмен кідірісін, болжамды құнын, қайталануын және форензиясын береді.

2) Референс-сәулет

1. Ingest/Edge: HTTP/gRPC, OTel, batch endpoints → шина (Kafka/Redpanda).
2. Bronze (append-only): объектілік сақтау орны + ACID-кестелер (Delta/Iceberg/Hudi), by date/market/tenant партиялары; бастапқы payload сақтау.
3. Stream Compute: Flink/Spark/Beam - терезе агрегаттары, CEP, дедуп, online-lookups.
4. Silver (clean/conform): валюталардың нормалануы/таймзон, FK/анықтамалықтар, өлшеу үшін SCD.
5. Serving/OLAP: ClickHouse/Pinot/Druid - панельдерге арналған материалданған минуттық/секундтық агрегаттар.
6. Gold (serve): күндізгі/сағаттық сөрелер, реттегіш кесінділер, өзгермейтін экспорттық пакеттер (WORM).
7. Басқару контурлары: Schema Registry, DQ-код, lineage, каталогтар, құпиялар/KMS, RBAC/ABAC.

3) Келісімшарттар мен схемалар

Schema-first: JSON/Avro/Protobuf; міндетті өрістер: 'event _ time (UTC)', 'event _ id', 'trace _ id', 'user _ pseudo _ id', 'market', 'schema _ version'.
Эволюция: back-compatible → nullable қосу; breaking → '/v2 '+ қос жазба.
Каталог: домен сипаттамасы, иесі, SLA жаңалық, DQ ережелері, lineage.

4) Көлге ағындардың қонуы

Exactly-once түбінде: at-least-once жарияланымы + іспеттес sink (MERGE/upsert 'event _ id' бойынша).
Дедуп: ағындағы stateful + Silver бірегейлігі.
Файлдарды жинақтау: small files → Тұрақты OPTIMIZE/VACUUM оқу және құны үшін.
Time-travel: жөндеу, реплика және audit қамтиды.

Iceberg партияландыру мысалы (DDL идеясы):
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) Ағындарды біріктіру: терезелер және watermarks

Терезелер:
  • Tumbling - тұрақты панельдер үшін бекітілген (мысалы, 1 мин/5 мин).
  • Hopping - «тегіс» метриктер үшін жабылатын (қадам <терезе).
  • Session - белсенділік бойынша мінез-құлық үзілістері.
  • Watermarks: late data басқару (әдетте 2-5 минут), қосымша эмиссия/түзету ережелері.
Flink SQL - нарықтар бойынша 1 минуттық депозиттер:
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: есеп беру және салыстыру үшін тәуліктік/сағаттық бөліктерді сақтайды.

ClickHouse - materialized view (минутына GGR):
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;
Gold - күндізгі тілік (Lakehouse):
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) Silver: қалыпқа келтіру және келісу

Уақыт және валюта: 'event _ time (UTC)', 'amount _ base', 'fx _ rate _ used', 'fx _ source'.
Кілттер/анықтамалықтар: 'user _ pseudo _ id', 'game _ id', 'provider _ id', 'market'.
SCD II: өлшемдерді тарихтау (users/games/providers/RG/KYC).
DQ-ережелер: кілттердің бірегейлігі, анықтамалықтар, сомалардың диапазондары, temporal-валидациясы.

8) Агрегаттар тізілімі және «дұрыс» анықтамалар

Semantic Layer: GGR/NGR бірыңғай формулалары, ставкалар/ұтыстар, конверсия, ARPPU, latency p95.
Есептеудің 'metric _ version' және 'as-of' өлшемдерін нұсқалау.
Док-карточкалар: owner, формула, көздер, дайындықтың SLA.

9) Exactly-once/теңсіздік және тәртіп

Шина: at-least-once + партиялану (жергілікті тәртіп).
Өңдеу: 'event _ id' бойынша дедуп (TTL 24-72ч), СЕР/түзетулері бар терезе операторлары.
Sink: транзакциялық коммиттер немесе idempotent upsert/merge.
Outbox/Inbox: OLTP домендік оқиғаларын кепілдікпен жариялау.

10) Late data және түзетулер

Allowed lateness: жедел витриналар үшін 2-5 мин; Gold үшін тәуліктік қайта жинау.
Түзетулер: OLAP-қа қосымша эмиссиялар және Gold (idempotent) қайта іріктеу.
Жалаушалар: 'late = true', 'correction _ of = <event _ id>' аудит үшін.

11) Бақылау және DQ

SLI/SLO (бағдарлар):
  • p95 ingest → 1-мин витрина ≤ 2-5 с; Gold daily сағат 06: 00-ге дейін дайын.
  • Completeness ≥ 99. 5%; Schema validity ≥ 99. 9%; Trace coverage ≥ 98%.
  • Пайплайн өлшемдері: lag/throughput/busy time/state size, late-ratio, dup-rate.
  • DQ-дашбордтар: Freshness/Completeness/Validity, шығын құйғышы, «ыстық» кілттердің картасы.
  • Lineage: Bronze Gold/экспорт жолы; өзгерістер кезіндегі impact-талдау.

12) Құпиялылық, резиденттік, қауіпсіздік

PII-азайту: бүркеншік атау, жеке қорғалған маппинг.
Residency: EEA/UK/BR - жеке каталогтар мен шифрлау кілттері; негізсіз кросс-өңірлік join 'oларға тыйым салу.
Шифрлау: TLS in-transit; KMS/CMK at-rest; реттегіштегі экспорт + WORM қолтаңбалары.
DSAR/RTBF/Legal Hold: селективті редакциялау, жоюды тоқтату, аудиттелетін қолжетімділік.

13) Өнімділік және құн

Партиялануы: күні/нарығы/теңгерімі бойынша; жиі сүзілетін атрибуттар бойынша/Z-order кластерлеу.
Компакция: small files, тұрақты OPTIMIZE/VACUUM жою.
Материалдану: минут/секунд - OLAP; тәулік/сағат - Gold.
Tiered storage: hot/warm/cold, SLA қалпына келтіру, командалар бойынша chargeback (cost/GB, cost/query).
Алдын ала топтау/Скетч: HyperLogLog/approx-distinct қолайлы жерде.

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 - Silver бағдарламасына қотару кезіндегі дедуп:
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 іспеттес:
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 (Responsible):
  • Data Platform (Lakehouse/каталог/ACID, компакция),
  • Streaming (агрегаттар/CEP/dedup),
  • Domain Analytics (метриктер/Gold).
  • A (Accountable): Head of Data/CDO.
  • C (Consulted): Compliance/Legal/DPO (PII/residency/Legal Hold), Finance (FX/GGR), SRE (SLO/стоимость), Security.
  • I (Informed): BI/Өнім/Маркетинг/Операциялар.

16) Енгізу жол картасы

MVP (3-5 апта):

1. Lakehouse Bronze/Silver (ACID-кестелер), Kafka-дан ingest, registry схемалары.

2. OLAP-та базалық стрим-агрегаттар (1-5 мин); Gold витринасы. ggr_daily (D + 1 06:00 дейін).

3. DQ-ретінде-код үшін Payments/Gameplay, дашбордтар Freshness/Completeness.

4. Компакция/OPTIMIZE, минималды cost-метриктер және lag/late/dup алерталары.

2-фаза (5-10 апта):
  • Silver кеңейтімі (users/games/providers үшін SCD II), lineage және impact-талдау.
  • Асинхронды lookups (RG/KYC/ASN/BIN), late-түзетулерді басқару.
  • Метриканың семантикалық қабаты, экспорт регламенті (WORM/қолтаңба).
3-фаза (10-16 апта):
  • Көп аймақ, DR/реплей-симулятор, auto-tuning терезелер және watermarks.
  • Cost-дашбордтар, chargeback/квоталар, tiered storage және мұрағаттау.
  • Витриналар мен метрика карточкалары құжаттамасының автогенерациясы.

17) Азық-түлік алдындағы чек-парағы

  • Тізілімдегі схемалар мен келісімшарттар; back-compat тестілері жасыл.
  • Дедуп қосылған, watermark/allowed lateness, DLQ.
  • /OPTIMIZE/VACUUM компакциясы кесте бойынша теңшелген.
  • SLO: p95 ingest→minute-view, Gold до 06:00; алерты lag/late/dup/state size.
  • DQ-ережелер белсенді; lineage Bronze экспортқа дейін көрінеді.
  • RBAC/ABAC и KMS; резиденттік және DSAR/RTBF/Legal Hold сыналған.
  • Бақылаудағы құн (cost/GB, cost/query, cold үлесі), репликаларға арналған лимиттер.

18) Анти-паттерндер және тәуекелдер

Бір кестеде шикі және есеп деректерін араластыру: reproducibility бұзады.
Компакцияның жоқтығы: жарылыс small files → қымбат сұраулар.
FX «артқы күнмен» есептеу: тарих пен есептерді бұзады.
watermarks/late-саясаты жоқ: сөрелер мен алаңдар «жүзіп жатыр».
Қажетсіз Full reload :/MERGE инкременттерін және түзетулерді пайдаланыңыз.
PII талдауда: маппингтерді бөлек ұстаңыз, CLS/RLS қосыңыз.

19) Глоссарий (қысқаша)

Lakehouse - data lake + ACID-кестелер және SQL-қозғалтқыш.
Bronze/Silver/Gold - шикі/қалыпқа келтірілген/сервингтік қабаттар.
Watermark - терезелердің event-time бойынша дайындық шегі.
Materialized View - жылдам оқуға арналған алдын ала жазылған витрина.
Time-travel - кестелердің тарихи нұсқаларын оқу.
WORM - экспорттық артефактілерді өзгеріссіз сақтау.

20) Қорытынды

Дұрыс стрим-агрегациясы бар деректер көлі - бұл қабаттар мен келісімшарттардың тәртібі: Bronze «бұрынғыдай», қалыпқа келтіру және сапа үшін Silver, минуттық панельдер үшін OLAP, ойнатылатын есептер үшін Gold. Терезелерді және watermarks, дедуп және компакцияны, жеке және құнды басқару арқылы сіз өнім, комплаенс және операциялық басқару үшін жылдам, тексерілетін және комплаенстік витриналарды аласыз.

Contact

Бізбен байланысыңыз

Кез келген сұрақ немесе қолдау қажет болса, бізге жазыңыз.Біз әрдайым көмектесуге дайынбыз!

Telegram
@Gamble_GC
Интеграцияны бастау

Email — міндетті. Telegram немесе WhatsApp — қосымша.

Сіздің атыңыз міндетті емес
Email міндетті емес
Тақырып міндетті емес
Хабарлама міндетті емес
Telegram міндетті емес
@
Егер Telegram-ды көрсетсеңіз — Email-ге қоса, сол жерге де жауап береміз.
WhatsApp міндетті емес
Пішім: +ел коды және номер (мысалы, +7XXXXXXXXXX).

Батырманы басу арқылы деректерді өңдеуге келісім бересіз.