GH GambleHub

Озмоиши лӯлаҳои маълумот

1) Чаро қубурҳои маълумотро санҷед

Лӯлаҳои маълумот (infest → transform → service) - инфрасохтори муҳим барои ҳисоботдиҳӣ, ML ва қарорҳои амалиётӣ. Хатогиҳо ба ченакҳои нодуруст, сигналҳои қаллобӣ ва талафоти пулӣ табдил меёбанд. Санҷиш таъмин менамояд:
  • Дурустӣ ва устуворӣ.
  • Тағироти пешгӯишаванда (эволютсияи схема/мантиқ).
  • Мувофиқат бо SLO аз ҷиҳати тару тоза, мукаммалӣ, ниҳонӣ.
  • Барориши зуд (суръати озодкунӣ) аз сабаби санҷиши худкор.

2) Санҷиши пирамида

Аз поён ба боло: бисёр озмоишҳои зудтари маҳаллӣ → интегратсияи камтар → каме ба охир мерасад.

1. Санҷишҳои воҳиди тағирот (функсияҳо, UDF, SQL-views, dbt-моделҳо).
2. Санҷишҳои сифати маълумот (тозагӣ/пуррагӣ/беҳамтоӣ/қоидаҳои диапазон).
3. Шартномаҳо ва нақшаҳо (санҷишҳои схема/шартнома, эволютсия).
4. Озмоишҳои ҳамгироии қубур (DAG: захира нигоҳдорӣ табдил додани маршҳо).
5. E2E озмоишҳо (манбаъ ба мағоза/API), аз ҷумла ҳуқуқҳо (RLS/CLS) ва содирот.
6. Сарборӣ/қобилият (ҳаҷм, суръат, хароҷот барои хидмат).
7. Санҷишҳои бесарусомонии маълумот (таъхирҳо, нусхабардорӣ, фармоиш, дастнорас).

3) Намудҳои санҷишҳо: мо маҳз чиро тафтиш мекунем

3. 1 Санҷишҳои мантиқии воҳид

Функсияҳои табдилдиҳии холис; ба моликият асос ёфтааст (инвариантҳо: idempotency, якранг).
SQL/DBT: муқоисаи натиҷа бо стандарт (маҷмӯи тиллоӣ), манъи 'SELECT', санҷиши вақт филтр.

3. 2 Санҷишҳои сифати маълумот (DQ)

Тару тоза: таъхири тиреза ≤ ҳадди ҳадаф.
Пуррагӣ: миқдори пешбинишуда/фоизи ҷойгоҳ.
Ягонагӣ: калидҳои бе нусхабардорӣ.
Қоидаҳои домейн: диапазон, тамомияти истинод, инвариантҳои тиҷорат.
Аномалияҳо: хориҷиён, буридани нусхаҳо, холигии вақт.

3. 3 Шартномаҳо ва нақшаҳо

Мутобиқати тағирёбанда (Semver: MAJOR/MINOR/PATCH).
Мавҷудияти сутунҳо, намудҳо, маҳдудиятҳо.
Семантикаи собитшудаи KPI: формулаҳо ва тирезаҳои маҷмӯӣ.

3. 4 Интегратсия ва E2E

Беайбии DAG: триггерҳо, вобастагӣ, такрори idempotent.
Роҳи пурра: сарчашма → хом → curated → marts → BI/API; RLS/CLS.

3. 5 Иҷро ва хароҷот

p95/p99 таъхири кор, гузариш (сатрҳо/с), ҳаҷм/арзиш.
Санҷишҳои регрессияи фаъолият ва маҳдудиятҳои скан.

3. 6 Амният ва махфият

Маскани PII/PCI (токенизатсияи муайянкунанда).
Санҷиши RLS/CLS - Истифодабарандагон танҳо худашонро мебинанд.
Содирот/лаҳзаҳо: майдонҳои шахсии "хом" нестанд.

4) Хусусиятҳои ҷараён (Kafka/Flink/Spark Structured Streaming)

Нишонаҳои об ва дермонӣ: санҷишҳои тирезаҳо бо рӯйдодҳои дер (T + Δ), ҳисобкунии дуруст.
Маҳз як маротиба ба маънои: тарҳ аз ҷониби 'event _ id', вуруди idempotent (upsert/merge).
Фармоиш: инвариантҳо барои агрегатҳо аз ҷониби 'event _ time'; ислоҳ 'ingested _ at'.
Талафот/такрор: тарки/бозии тарафҳоро тақлид кунед, дурустии намоишҳоро тафтиш кунед.

5) Идемпотентсия ва детерминизм (чӣ ва чӣ гуна озмоиш кардан)

Бозоғозии як қадам натиҷаи якхеларо медиҳад (бо параметрҳои ҳамон тиреза).
Сабт - тавассути саҳна ва мубодилаи атом.
Якҷоя кардани мантиқ бо SCD1/SCD2 бо навиштани ғолибон, афзалияти манбаъ фаро гирифта шудааст.
Муайянкунии UDF/маҷмӯӣ: ҳамон воридот → ҳамон натиҷаҳо.

6) Идоракунии маълумотҳои санҷишӣ

Маҷмӯаҳои тиллоӣ: стандартҳои хурд бо тасдиқи дастӣ.
Синтетика + фабрикаҳои маълумот: фарогирии кунҷҳои домейн (nulls, арзишҳои шадид, Юникод, TZ).
Намунаҳои муайяншудаи prod: мувофиқати махфият.
Афсонаҳои қабати: рӯйдодҳои хом, қабатҳои фосилавӣ, намоиши ниҳоӣ.

7) Шартномаҳои маълумот - намуна ва қоидаҳо

Шартномаи YAML (соддакардашуда):
yaml dataset: orders schema:
- name: order_id; type: string; unique: true
- name: user_id; type: string; not_null: true
- name: amount; type: decimal(18,2); min: 0
- name: event_time; type: timestamp; tz: UTC freshness_sla: 10m dq_rules:
- "pct_null(user_id) < 0. 1%"
- "duplicates(order_id) = 0"
- "sum(amount) >= 0"
evolution:
allowed_minor_additions: true breaking_changes_require: approval: 'data-governance'
actions_on_violation:
- quarantine_partition
- replay_last_60m

8) Санҷишҳои мушоҳида ва SLO

Нишондиҳандаҳои содирот: тару тоза, мукаммалӣ, беҳамтоӣ, таъхир ба Графана/Прометей.
SLO ҳамчун санҷиши воҳиди "сурх" дар prod (Синтетика) ҳушдор медиҳад.
Регрессия хабар медиҳад: "пас аз баровардани X p95 * 40%".

9) CI/CD ва ВАО

CI: шартномаҳои воҳиди + DQ + PR; схема-дифф; Таҳлили статикӣ SQL (линтер).
Қуттии қуттӣ/саҳна: ҳамгироии давида ва e2e, озмоишҳои бетартибӣ бо маълумоти бехатар.
Парчамҳои хусусият: jabs канарӣ/моделҳо/формулаҳо.
Феҳристсозӣ: версияи схемаҳо, формулаҳои KPI, насл; навсозии худкори ҳуҷҷатгузорӣ.

10) Озмоиши бесарусомонӣ (Chaos-Data)

Тазриқи нусхаҳо/нуқсонҳо, таъхирҳо, фармоишӣ.
Брокер/тарки ҳизб, файлҳои "шикаста", кашиши схема.
Мо тасдиқ мекунем: таъмири худкор (дубора/бозгашт), карантин ва огоҳиҳо, MTTR-маълумот.

11) Сарборӣ ва арзиши

Генераторҳои ҳаракат бо профил/қуллаҳои p95.
Маҳдудиятҳои скан/қадам (байтҳо скан карда шудаанд, ҳадди ақалли вақт).
Профили арзиши A/B: "кӯҳна" vs "нав" модел/дархост.

12) Воситаҳо (дарсҳои намунавӣ)

DQ/Шартномаҳо: санҷишҳои dbt, интизориҳои бузург, Deq, Soda, linters Custom.
Оркестр: Airflow/Dagster/Argo/Prefect (операторҳо барои санҷишҳо дар ҳар қадам).

Платформаҳо: Биг Query/Snowflake/Redshift/Click

Сюзан: Кафка, Флинк, Spark Streaming; Зарфҳои санҷишӣ барои муҳити маҳаллӣ.
Мушоҳида: Прометей/Графана/Отел; Маълумотҳои Hub/Amundsen/Collibra.

13) Антипаттернҳо

"Ҳеҷ чиз барои санҷиш вуҷуд надорад - ин танҳо SQL аст": воҳидҳо вуҷуд надоранд ва DQ → ченакҳо танаффус доранд.
Танҳо E2E: суст, ноустувор, сабабҳои вайроншавӣ номуайян нестанд.
ИНТИХОБ: танаффусҳо дар зери эволютсияи MINOR.
Хониши мустақими OLTP дар озмоишҳо: ноустуворӣ ва қишрҳо.
Набудани маҷмӯаҳои тиллоӣ: ҳеҷ чиз барои муқоиса кардани натиҷаҳо бо.
Ягон озмоиши idempotency: rerun маълумотро вайрон мекунад.
Ҷараёни фаромӯшшуда: дурахши санҷидашуда/фармоишӣ/redelivery.

14) Харитаи роҳсозӣ

1. Асос: санҷишҳои воҳиди трансформаторҳо, маҷмӯаҳои тиллоӣ, linter SQL, top-10 намоиши қоидаҳои DQ.
2. Шартномаҳо: schema-diff дар CI, Semver, санҷиши мутобиқати автоматӣ.
3. Интегратсияҳо: санҷишҳои DAG, idempotency, e2e барои ҷараёнҳои интиқодӣ.
4. Ҷараён: нишонаҳои обӣ/дермонӣ, озмоишҳои ғарқкунандаи dedup/idempotent.
5. SLO ва бетартибӣ: ченакҳои сифат дар фурӯш, огоҳиҳо, сенарияҳои бетартибӣ, ҳадафҳои MTTR.
6. Оптимизатсия: регрессияи перф, посбонони буҷа, релизҳои канарӣ.

15) Рӯйхати назоратии пеш аз озодкунӣ

  • Санҷишҳои воҳид тағироти калидӣ ва UDF-ро фаро мегиранд.
  • Қоидаҳои DQ барои тару тоза/пуррагӣ/беҳамтоӣ/диапазонҳо мегузаранд.
  • Шартномаҳо ва схемаи фарқкунанда сабз мебошанд; ҳеҷ гуна тағироти вайроншуда бидуни тасдиқ вуҷуд надорад.
  • Idempotency озмуда шуд; корҳои танӯраи атомӣ/якҷояшавӣ.
  • Ҷараён: нишонаҳои обӣ/маълумоти дер/фармоишӣ; тарҳ дар ҷои.
  • ченакҳои SLO фош карда мешаванд; огоҳиҳо танзим карда мешаванд; runbooks мебошанд.
  • Маълумоти санҷиш бехатар аст; PII ниқоб; RLS/CLS санҷида шуд.
  • Регрессияи perf нест; скан/мӯҳлати муқарраршуда.
  • Санҷишҳои хаосии сенарияҳои асосӣ гузаштанд; Ҳадафи MTTR имконпазир аст.

16) Намунаҳои қолаби мини

16. 1 Санҷиши воҳиди SQL (псевдо-dbt):

sql
-- tests/assert_positive_amount. sql select count() as c from {{ ref('fct_payments') }}
where amount < 0 having c = 0

16. 2 Услуби интизориҳои бузург:

yaml expect_table_row_count_to_be_between:
min_value: 1000 mostly: 0. 99 expect_column_values_to_not_be_null:
column: user_id expect_column_values_to_be_unique:
column: txn_id

16. 3 Санҷиши дермонӣ дар ҷараён (псевдо-код):

python emit(events_out_of_window <= threshold)
emit(reprocessed_events == late_events_detected)

16. 4 Санҷиши шартномавӣ (схема-дифф CI):

bash schema-diff --current models/orders. yml --target prod_schema. yml --semver

17) Сатри поён

Озмоиши лӯлаҳои маълумот як интизоми система аст, на маҷмӯи чекҳои печида. Як пирамидаи озмоишҳо, шартномаҳо ва мушоҳидаҳоро бо амалияи idempotency, эволютсияи ноҳиявӣ ва инвариантҳои ҷараён якҷоя кунед. Он гоҳ релизҳо зуд мешаванд, ҳодисаҳо нодир ва кӯтоҳ мешаванд ва эътимод ба маълумот устувор хоҳад шуд.

Contact

Тамос гиред

Барои саволҳо е дастгирӣ ба мо муроҷиат кунед.Мо ҳамеша омодаем!

Telegram
@Gamble_GC
Оғози интегратсия

Email — муҳим аст. Telegram е WhatsApp — ихтиерӣ.

Номи шумо ихтиерӣ
Email ихтиерӣ
Мавзӯъ ихтиерӣ
Паем ихтиерӣ
Telegram ихтиерӣ
@
Агар Telegram нависед — ҷавобро ҳамон ҷо низ мегиред.
WhatsApp ихтиерӣ
Формат: рамзи кишвар + рақам (масалан, +992XXXXXXXXX).

Бо фиристодани форма шумо ба коркарди маълумот розӣ ҳастед.