Data Lake және орталықтандырылған сақтау
(Бөлім: Технологиялар және Инфрақұрылым)
Қысқаша түйіндеме
Data Lake - шикізат пен шоғырландырылған датасеттерді орталықтандырылған сақтаудың базалық қабаты. iGaming үшін ол мөлшерлемелер/төлемдер/ойын логтары оқиғаларын, серіктестік жүктемелерді, OLTP-тен CDC қабылдайды және оларды талдауға, антифродқа, CRM және BI-ге береді. Қазіргі заманғы тәжірибе - Lakehouse: ашық баған форматтары + ACID-кесте қабаты + бірыңғай каталог + транзакциялар/деректер нұсқалары. Табыстың кілті - схемалар мен партияланудың тәртібі, құнды басқару, PII қауіпсіздігі және қатаң операциялық мәдениет (DQ, lineage, DR).
iGaming платформасындағы Data Lake рөлі
Талдау үшін шындықтың бірыңғай нүктесі: қайнар көзі мен форматына қарамастан шикі және тазартылған деректерді сақтау.
Икемділік: batch және streaming (CDC/коннекторлар, event-стримдер) қолдау.
Эволюция: дымқыл Bronze бастап конформды Silver және бизнес-витриналар Gold.
Жауапкершілікті бөлу: прод-сервистер шинаға/стейджингке жазады, аналитика/ML Lake қабаттарынан тұтынады.
Сәулет үлгілері: Lake vs Lakehouse
Data Lake (S3/ADLS/GCS + Parquet/ORC): schema-on-read, арзан сақтау орны, форматтардың икемділігі.
Lakehouse (Delta/Iceberg/Hudi Parquet үстінен): ACID-транзакциялар, upsert/merge, time-travel, ықшам файлдар, вакуум, индекстеу/кластерлеу.
Практика: iGaming үшін негізгі қабат ретінде Lakehouse тиімді, ал сыртқы OLAP (ClickHouse/BigQuery/Snowflake/Pinot) - витриналар мен арнайы қозғалтқыштар сияқты.
Қабаттардың медальон үлгісі
Bronze (Raw/Staging): көздерден алынған шикі файлдар (CDC, log-дампалар, серіктес CSV, webhooks). Минималды валидация, «қалай».
Silver (Conformed): тазалау/дедуп, валюта/уақыт белдеулерін қалыпқа келтіру, түрлерін келтіру, SCD өлшеу, консистенттік кілттер.
Gold (Marts/Serving): GGR/NGR/LTV/Retention арналған агрегаттар, BI/CRM/антифрод үшін материалданған витриналар.
TTL: Bronze агрессивті, Silver орташа, Gold агрегаттарында ұзақ мерзімді.
Пішімдер және кестелік қабаттар
Бағандылар: Parquet (де-факто стандарт), ORC.
Ашық кесте пішімдері (ACID):- Delta Lake - транзакциялар, «MERGE», time-travel, оңтайландыру/вакуум, Z-order.
- Apache Iceberg - манифесттері/снапшоттары бар кестелер, жасырын партиялануы, 'MERGE/DELETE/UPDATE', time-travel.
- Apache Hudi - copy-on-write/merge-on-read, upsert-оңтайландыру, инкрементальды алу.
- Экожүйе және upsert/стриминг/схемалар эволюциясының икемділігіне қойылатын талаптар бойынша таңдаңыз.
Каталог және метастор
Бірыңғай каталог (Hive Metastore/Unity/Glue/платформалық каталогтар) схемаларды, партияларды, нұсқаларды, құқықтарды сақтайды.
Талаптар: кесте қабатымен транзакциялық үйлесімділік, бірнеше қозғалтқыштарды қолдау (Spark, Trino/Presto, Flink, dbt), audit/lineage.
Схемалар мен эволюция
Schema contract: міндетті өрістерді, түрлерді, семантиканы белгілеңіз; көздерін нұсқалаңыз ('schema _ version').
Эволюция: опциондық өрістерді қосу, көші-қонсыз бұзатын өзгерістерге тыйым салу; пайплайндардағы автоматты схема-чекерлер.
PII-сегментация: сезімтал өрістер - шифрлау және жеке құқықтармен жеке бағандарға/кестелерге.
Деректерді партияландыру және lay-out
Күні/сағаты - оқиғалар үшін негізгі кілт; 'country', 'product', 'tenant _ id' өрістері.
Hive-style путь: `s3://lake/bronze/payments/source=pspA/dt=2025-11-05/hour=13/part-0001. parquet`.
Кластерлеу/сұрыптау: Жиі сүзілетін өрістер бойынша Z-order/Sort keys (player_id, country).
Файл өлшемі: 128-1024 МБ; «small files» дегеннен аулақ болыңыз (төменде қараңыз).
Жасырын партиялануға арналған виртуалды бағандар (Iceberg/Delta).
small files және компакшн проблемасы
Көздер кішкентай күбілерді ағызады → сканерлер мен метадеректердің тозуы.
Шешім: мерзімді optimize/compaction (coalesce), compaction-тапсырмаларды жоспарлаушы, ingestion батч-микро-bundle, 'autoOptimize' (егер бар болса).
merge-on-read vs copy-on-write саясаты - жазу жасырындылығы мен оқу жылдамдығы арасындағы теңгерім.
Инжест: batch, stream, CDC
ALTP-ден CDC (Debezium/коннекторлар) → Bronze (минуттық жаңалық).
Stream (Kafka/Flink/Spark Structured Streaming) → Silver/Gold инкрементальды (upsert/merge).
Batch (серіктестік есептер/CSV/JSON) - манифесттері бар «қабылдағыштар» арқылы, checksum бойынша қосарларды бақылау.
Idempotency: кейінірек келген жазбалар үшін кілттер (idempotency_key), дедуп (key, ts), «су белгілері» (watermarks).
Деректер сапасы (DQ) және lineage
DQ-чектер: толықтығы, кілттердің бірегейлігі, диапазондары, референттік тұтастығы (елдер/валюталар тізімі), бизнес-ережелері (GGR ≥ 0).
Сызықтық: есепке тәуелділік бағаны, үлгі кодының нұсқасы және кесте снапшоты.
Схемаларды бақылау: «бұзатын» өзгерістерді бұғаттайтын автоматты back/forward-compat тестілері.
Жүктеу аудиті: кім/қашан/қанша, қабылданбаған партиялар, ретралар.
Сервинг және кіру
SQL қозғалтқыштары: ad-hoc және трансформациялар үшін Spark/Trino/Presto; ELT үлгілері үшін dbt.
Real-time/near-real-time: Pinot/Druid/ClickHouse витриналар ретінде; Lakehouse - инкременталды sink арқылы дереккөз.
Data Sharing: көшірмесіз сыртқы командаларға кестелер/снапшоттар шарингі (егер пішім қолдау көрсетсе).
Қауіпсіздік, PII және көп теңгерімділік
Шифрлау: at-rest (KMS) және in-transit (TLS).
IAM/RBAC/ABAC: каталог/кесте/баған/жол деңгейіндегі рөлдер (бүркемелеу, динамикалық саясат).
Өңірлер бойынша сегменттеу (ЕО/Түркия/ЛатАм оқшаулау): бакеттер мен есептеу пулдарын оқшаулау.
Мульти-теңдік: namespace/жол префикстері мен каталогтары, 'tenant _ id' бойынша сүзгілер, қосымша - row-level policies.
Қол жеткізу аудиті: оқу/метадеректерді өзгерту логтары, ретеншн және түрлендірілмейтін журналдар.
Құнды басқару
Сақтау сыныптары: стандартты сыныпта ыстық (жиі оқылатын), мұрағат - TTL-саясаты бар суық/Glacier-сыныптарында.
Партиялану/кластерлер $ $ кем → сканерлеуді азайтады.
Қымбат есептерге арналған материалданған сөрелер; BI нәтижелерінің кэші.
Компакшн және «файлдың дұрыс өлшемі» - метадеректер мен I/O-дан аз.
Квоталар және бюджеттеу: compute-кластерлерге/джобтарға арналған лимиттер, есептің/команданың күніндегі құны бойынша есептер.
Қоқысты жою: «VACUUM/REWRITE» кестелік пішімде, TTL Bronze.
DR және жаңғыртылуы
Кестелерді (time-travel) және каталог снапшоттарын нұсқалау.
Бакеттер мен метадеректерді кросс-өңірлік репликалау.
PITR: кестелердің транзакция журналдарын (Delta/Iceberg/Hudi) және пайплайн логтарын сақтау.
Game-day: аймақтарды қалпына келтіру және ауыстырып қосудың тұрақты жаттығулары.
Бақылау және SLO
SLO жас: Bronze ≤ 5 мин, Silver ≤ 15-30 мин, Gold ≤ 60 мин (мысал).
Өлшемдер: файлдардың көлемі/саны, паркет-файлдың орташа өлшемі, сканерлердің уақыты, өткізілген партиялардың үлесі, compaction жиілігі, құны/күні, DQ қателері, кешіктірілген деректер.
Алерттар: small files өрісі, құнның өсуі, p95/p99 деградациясы, DQ/схемалардың бұзылуы, ағын синктердің артта қалуы.
Нейминг және жолдар конвенциялары (шаблон)
s3://<lake>/<layer>/<domain>/<dataset>/
source=<sys>/ # для Bronze dt=YYYY-MM-DD/
hour=HH/
country=XX/
Датасеттер атаулары: 'bets _ raw', 'payments _ cdc', 'players _ silver', 'mart _ ggr _ daily'.
Баған-метадеректер: 'ingest _ ts', 'source', 'schema _ version', 'trace _ id', 'tenant _ id'.
Мысалдар (жалпылама)
1) Iceberg: күні бойынша жасырын партиясы бар Silver кестесі
sql
CREATE TABLE silver. bets (
bet_id BIGINT,
player_id BIGINT,
country STRING,
stake DECIMAL(18,2),
win DECIMAL(18,2),
event_ts TIMESTAMP,
ingest_ts TIMESTAMP,
schema_version INT
)
PARTITIONED BY (days(event_ts))
TBLPROPERTIES ('format-version'='2');
2) Delta: CDC-ден инкременталды upsert
sql
MERGE INTO silver. players t
USING bronze. players_cdc s
ON t. player_id = s. player_id
WHEN MATCHED THEN UPDATE SET
WHEN NOT MATCHED THEN INSERT;
3) Bronze үшін TTL саясаты (идея)
bronze/: keep 30 days silver/: keep 365 days (non-PII), 90 days (PII masked)
gold/marts/: keep 2–3 years (aggregated)
Енгізу чек-парағы
1. Кесте пішімін (Delta/Iceberg/Hudi) және каталогты таңдаңыз; (Spark/Trino/Flink/dbt).
2. Медальон қабаттарын, TTL ережелерін және командалардың жауапкершілігін анықтаңыз.
3. schema contracts, эволюцияны бақылау, PII-сегментация және шифрлау.
4. lay-out жобалаңыз: партиялар, сұрыптау кілттері, мақсатты файл өлшемі; compaction қосыңыз.
5. Ingest (CDC/stream/batch) дегендік пен дедуппен теңшеңіз.
6. DQ/lineage, метадеректер каталогын және аудитті қосыңыз.
7. SLO жаңаруын/құнын, дашбордтар метриктерін және алаңдарын анықтаңыз.
8. DR ұйымдастырыңыз: снапшоттар/репликалау/қалпына келтіру + тұрақты жаттығулар.
9. Нейминг пен жолдарды, метаколондарды стандарттаңыз ('ingest _ ts', 'source', 'schema _ version').
10. Gold-витриналарын және real-time сервингін қолайлы OLAP/RT-қозғалтқыштарына шығарыңыз.
Антипаттерндер
Бір жалпы «қап» қабаттары жоқ және TTL → хаос және жарылыс құны.
Ел/өнімді есепке алмағанда ғана уақыт бойынша партиялануы → ауыр сканерлер.
compaction жоқ, мыңдаған ұсақ файлдарды/сағатты құрайтын ағындар.
Схемаларды бақылаудың болмауы және DQ → «сындыратын» өзгерістер және есептерге сенімсіздік.
PII-ді Gold-витриналарымен құқықтарды жасырмай/бөлмей араластыру.
Каталог пен кестелік саясаттың орнына бакеттер деңгейінде қол жеткізу құқықтарының хардкоды.
Қазіргі заманғы Data Lake for iGaming - бұл ашық кесте форматы, бірыңғай каталог және медальон моделі бар Lakehouse. Схема/партия тәртібі, compaction vs small files, DQ/lineage, PII-қауіпсіздік және құндық гигиена lak-қабатты тұрақты іргетасқа айналдырады: арзан сақтау үшін, жылдам оқу үшін, SLO бойынша болжамды және DR. мұндай іргетас жарыс шыңдарына масштабталады және қолдайды және batch және near-real-time витриналары.