ETL/ELT жараяндар
1) Максаты жана контексти
ETL/ELT конвейерлери отчеттуулук (GGR/NGR, жөнгө салуучу), аналитика/ML жана оперативдүү панелдер үчүн болжолдуу жүктөөнү, трансформацияны жана маалыматтарды жарыялоону камсыз кылат.
ETL: DWH/Lakehouse жүктөп чейин өзгөртүп (азыраак заманбап Stack).
ELT: Адегенде Lakehouse (Bronze/Silver) жүктөп, андан кийин SQL/кыймылдаткычтар (сунуш кылынат).
2) Эталондук архитектура
1. Ingest/Edge: HTTP/gRPC/Batch, АЛТПдан CDC, провайдердик S3/FTP жүктөмөлөр.
2. Bronze (raw, append-only): өзгөрүлбөс payloads, датасы/рыногу/тенанты боюнча партия.
3. Silver (clean/conform): нормалдашуу, дедуп, маалымдамалар, SCD, FX/убакыт зоналары.
4. Gold (serve): BI/жөнгө салуучу/моделдердин астында денормалдаштырылган терезелер.
5. Оркестр: Airflow/Dagster/Prefect (DAG 'i, SLA, ретра, жылыштар).
6. DQ/Contracts: Schema Registry + DQ-как-код, consumer-driven tests.
7. Байкоо: Pipeline метрика, сызык, Логи, cost-дашборд.
3) ETL vs ELT тандоо
Практика: iGaming - ELT + CDC: тез жүктөп, андан кийин стандартташтыруу жана эсептөө.
4) Инкременттер жана CDC
Дельта жолдору:- CDC (Debezium/лог-репликация): Silver АЛТП → Bronze → MERGE өзгөрүүлөр.
- Watermark убакыт боюнча: 'updated _ at> max_loaded_ts'.
- Хэш-дифф: 'md5 (row)' өзгөрүүлөрдү аныктоо үчүн салыштыруу.
- Upsert/MERGE: жүктөмөлөрдүн ыктымалдыгы.
sql
MERGE INTO silver. payments s
USING stage. payments_delta d
ON s. transaction_id = d. transaction_id
WHEN MATCHED THEN UPDATE SET
WHEN NOT MATCHED THEN INSERT;
5) Келишимдер жана схемалар
Schema-first: JSON/Euro/Protobuf каттоо; 'schema _ version' окуяларда/файлдарда.
Эволюция: back-compatible (nullable кошуу); breaking - '/v2 '+ кош жазуу.
Милдеттүү талаалар: 'event _ time (UTC)', 'event _ id', 'trace _ id', 'user _ pseudo _ id', 'market'.
6) DQ-сыяктуу-код (минималдуу топтому)
yaml table: silver. payments owner: data-payments slo:
freshness_minutes: 15 completeness_percent: 99. 5 rules:
- name: unique_tx # uniqueness of transactions type: unique columns: [transaction_id]
severity: critical
- name: currency_whitelist type: in_set column: currency set: [EUR,USD,GBP,TRY,BRL]
severity: major
- name: amount_positive type: range column: amount_base min: 0. 01 severity: critical
- name: fk_user type: foreign_key column: user_pseudo_id ref_table: dim. users_scd severity: critical
7) Оркестр: DAG 'i, көз карандылык, SLA
DAG-дизайн: булактан терезелерге; милдеттердин ортосундагы айкын көз карандылыктар.
Retray жана демпотенттик: backoff, "таза" кайталоо, checkpoint's.
Жылыштар (catchup): өткөрүлгөн мезгилдердин тыкан догону.
SLA: Мисалы, Gold. daily жергиликтүү убакыт 06:00 чейин даяр; бузуулар жөнүндө эскертүүлөр.
Параметрлештирүү: рыноктор/тенанттар/даталар аркылуу vars; job's бирдиктүү үлгүсү.
8) Idempotentity жана exactly-once
На ingest: дубликаты мүмкүн → дедуп боюнча '(event_id, source)'.
Иштетүү: upsert/merge; "таза" трансформация функциялары.
В sink: транзакциялык коммиттер же idempotent writes; "кош эсепке алууну" көзөмөлдөө.
Outbox/Inbox: OLTP домендик окуялардын транзакциялык жарыялоо.
9) Backfill и reprocessing
Backfill: баштапкы толтуруу/тарыхый диапазондор.
Reprocessing: логика өзгөргөндө/түзөтүүлөрдө кайра эсептөө.
Guardrails: диапазондордун чектери, квоталар, убакыт терезелери, метриктерди салыштыруу менен dry-run.
Маркировка: 'logic _ version', 'reprocessed _ at', 'recalc _ reason'.
10) Silver/Алтын моделдөө
Silver (3NF/BCNF): фактылар 'fact _ bets/payments/payouts', өлчөө 'dim _ users/games/providers/markets (SCD II)', валюталарды/таймзондорду стандартташтыруу.
Алтын: BI/жөнгө салуучу/моделдердин астында Денормалдаштырылган терезелер; өзгөрүлбөс экспорттук топтомдор (WORM) + кол.
Gold мисал: GGR Daily
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;
11) Купуялык жана резиденттик
PII-минималдаштыруу: tokenization; обочолонгон контурда чыныгы ID карталарды.
RLS/CLS: ролдор/юрисдикциялар боюнча жетүү саясаты, жашыруу.
Residency: EEA/UK/BR үчүн өзүнчө каталогдор/ачкычтар; негизсиз кросс-аймактык join's тыюу салуу.
DSAR/RTBF & Legal Hold: тандоо редакторлору, отчеттуулук үчүн WORM-Archives, экспорттук аудит.
12) Байкоо жана SLO
SLI/SLO багыттары:- Freshness Silver p95 ≤ 15 мин; Gold daily 06:00 лок чейин даяр. убакыт.
- Completeness ≥ 99. 5%, ырааттуулугу (схема) ≥ 99. 9%.
- job's ийгилиги ≥ 99. 0%, MTTR окуялар ≤ 24-48 саат.
Dashbord: Freshness heatmap, DQ-жоготуу Huni, cost/query & cost/GB, сызык.
13) аткаруу жана наркы
Партиялаштыруу: дата/рынок/тенант; кластерлештирүү/Z-order чыпкалар боюнча.
Форматтар: Parquet + ACID (Delta/Iceberg/Hudi), компрессия жана статистика.
Компакция: small files (OPTIMIZE/VACUUM) менен күрөшүү.
Материалдаштыруу: туруктуу агрегаттар; алп on-the-fly join's алыс.
Chargeback: бюджеттер, репликалар/backfill боюнча квоталар; аз жүктөө терезелерде пландаштыруу.
14) ТОО типтүү милдеттердин мисалдары (Airflow псевдокод)
python with DAG("elt_payments_daily", schedule="@daily", start_date=..., catchup=True) as dag:
extract = BashOperator(task_id="extract_cdc", bash_command="run_cdc_to_bronze. sh {{ ds }}")
load = BashOperator(task_id="load_to_silver", bash_command="sql/run_merge_silver. sql {{ ds }}")
dq = BashOperator(task_id="dq_checks", bash_command="dq/run_checks. sh silver. payments {{ ds }}")
gold = BashOperator(task_id="build_gold_ggr", bash_command="sql/build_gold_ggr. sql {{ ds }}")
export = BashOperator(task_id="export_regulator", bash_command="export/run_worm_pack. sh {{ ds }}")
extract >> load >> dq >> gold >> export
15) Процесстер жана RACI
R (Responsible): Data Engineering (DAG 'i, Silver/Gold моделдери), Data Platform (infra, Registry, DQ).
A (Accountable): Head of Data/CDO.
C (Consulted): Compliance/Legal/DPO (PII/residency/Legal Hold), Finance (FX/GGR), Risk (RG/AML), SRE (SLO/стоимость).
I (Informed): BI/Продукт/Маркетинг/Операциялар.
16) Ишке ашыруунун жол картасы
MVP (3-5 жума):1. Lakehouse Bronze/Silver (ACID) + CDC/Payments/Gameplay үчүн инкременттер.
2. DQ-Code (10-15 эрежелери) жана Freshness/Completeness базалык дашборддору.
3. SLA менен биринчи Gold-дисплей (GGR Daily) "06:00 чейин", кол менен WORM-экспорт.
4. DAG оркестри жана SLA/DQ боюнча алерта.
2-этап (5-10 жума):- Домендерди кеңейтүү, users/games/providers үчүн SCD II.
- Метриканын семантикалык катмары; lineage/impact-талдоо; backfill/reprocessing жол-жоболору.
- Регионалдаштыруу (EEA/UK), RLS/CLS, нарк контролдоо (квота/chargeback).
- Replay-симулятор (what-if), Autogeneration Documentation Display/метрик.
- Cost-оптималдаштыруу (кластерлештирүү, материалдык, TTL, компакция).
- DR-машыгуу жана убакыт-саякат калыбына келтирүү.
17) Азык-түлүктүн алдындагы чек-тизме
- Registry келишимдер/схемалар, шайкештик тесттер жашыл.
- CDC/инкременттер жана MERGE болуп саналат; дедуп боюнча ingest.
- DQ эрежелери активдүү (critical → fail + DLQ), SLA-дашборддор орнотулган.
- Алтын-терезелер документтештирилген, семантикалык катмардагы метрикалык формулалар.
- RBAC/ABAC, шифрлөө, резиденттүүлүк, DSAR/RTBF/Legal Hold текшерилген.
- Compaction/OPTIMIZE/VACUUM тартиби боюнча; backfill/репликаларга лимиттер.
- Runbook 'жана окуялар жана reprocessing, экспорттук аудит (WORM + hash).
18) Анти-үлгүлөрү жана тобокелдиктер
Full reload "болгон учурда": CDC/инкременттерди колдонуу.
Чийки жана отчеттук маалыматтарды аралаштыруу: Bronze/Silver/Gold өзүнчө сактаңыз.
Жок DQ жана сызык: эч кандай далилдөө жана кайталоо.
Аналитикалык катмарларда PII: Mapping, CLS/RLS колдонуу.
Монолиттүү "түнкү" джобдор: бөлүү, партияларга параллелдүү.
Ignor наркы: small files мониторинг, агрегаттарды материалдык, квота киргизүү.
19) Глоссарий (кыскача)
ETL/ELT - чыгаруу/өзгөртүү/жүктөө (жүктөө чейин/кийин).
CDC - өзгөрүүлөрдү басып алуу.
SCD - өлчөө тарыхы (I/II/III).
WORM - отчеттук пакеттерди туруктуу сактоо.
Time-travel - таблицалардын тарыхый версияларын окуу.
20) Жыйынтык
Заманбап ETL/ELT скрипттер эмес, башкарылуучу платформа болуп саналат: келишимдер жана DQ, Идемпотенттик инкременттер/CDC, Bronze/Silver/Gold катмарынын дисциплинасы, байкоо жана SLO, купуялык жана үнөмдүүлүк. Бул көрсөтмөнү ээрчип, сиз ойнотула турган жана текшерилүүчү конвейерлерди, туруктуу отчеттуулукту, масштабда жана сюрпризсиз продукцияны жана моделдерди аласыз.