Беайбии маълумот
1) Беайбии маълумот чист
Тамомияти маълумот маҷмӯи хосиятҳо ва назоратҳоест, ки додаҳо дар тӯли тамоми давраи худ, аз манбаъҳо ва дигаргуниҳо то мағозаҳо, API ва содирот дуруст, пайваста ва пайваста мебошанд. Ҳадаф ин аст, ки ҳамон изҳорот ҳангоми такрор ҳамон ҷавоб медиҳад ва ҳама гуна тағирот пайгирӣ ва санҷида мешаванд.
2) Намудҳои беайбӣ ва дар куҷо зиндагӣ кардани онҳо
Калидҳои ибтидоии беназир, нусхабардорӣ нестанд.
Истинодҳои истинод-эътибор FK набудани истинодҳои "овезон".
Диапазонҳо ва форматҳои домейнҳо (намуд, дарозӣ, феҳристҳо).
Қоидаҳои тиҷорат: инвариантҳои мавзӯъ (тавозун ≥ 0, маблағи муомилот = 0 ва ғайра).
Муваққатӣ: мувофиқати якхела ва вақт, минтақаҳои дурусти вақт.
Сиёсати дастрасӣ: RLS/CLS мувофиқати мантиқии маълумоти намоёнро вайрон намекунад.
3) Шартномаҳо ва схемаҳои маълумот (манбаи ҳақиқат)
Мо барои маҷмӯаҳо ва чорабиниҳо шартномаҳои расмӣ бастем; мо онҳоро дар даромадгоҳ ва пас аз ҳар як тағирот ба кор мебарем.
Намуна (YAML, соддакардашуда):yaml dataset: payments primary_key: txn_id foreign_keys:
- fk: user_id -> users.user_id schema:
- {name: txn_id, type: string, unique: true}
- {name: user_id, type: string, not_null: true}
- {name: amount, type: decimal(18,2), min: 0}
- {name: currency, type: string, in: [USD,EUR,TRY,UAH]}
- {name: event_time, type: timestamp, tz: UTC}
dq_rules:
- "duplicates(txn_id)=0"
- "ref_integrity(user_id, users.user_id)=true"
- "sum(amount) >= 0"
evolution:
semver: [MAJOR, MINOR, PATCH]
breaking_changes_require: approval:data-governance
4) Кафолатҳои муомилот ва ҷудокунӣ
ACID барои OLTP: атомият, пайдарҳамӣ, ҷудокунӣ, пойдорӣ.
Сатҳи изолятсия: Хондан/Хониши такрорӣ/Сериализатсияшаванда - бо хатари хондани "ифлос "/беназир/фантом интихоб кунед.
OLAP ва кӯл: супоришҳои атомии ҷадвалҳо (сабти транзаксия), танӯраи idempotent ва схема-эволютсия бо назорати мутобиқат.
Мувофиқати формулаҳои KPI: қабати семантикӣ → як ҳақиқат барои гузоришҳо ва API.
5) Системаҳои тақсимшуда: фармоиш, такрорӣ, аблаҳӣ
Тартиби ҳодиса: 'event _ time' + 'ingested _ at', нишонаҳои об ва таҳаммулпазирии дермонӣ; агрегатҳо дар асоси вақти ҳодиса.
Бозсозӣ (ҳадди аққал як маротиба): глобалии 'event _ id', ҷадвалҳои калидҳои idempotency, боло/якҷоя бо калиди устувор.
Фармоиш: ҳисобкунии тирезаҳо, стратегияи таъхир, ҷуброн.
Маҳз як маротиба ба маънои: нақлиёт метавонад ҳадди аққал як маротиба, қабулкунанда - idempotent бошад.
6) Санҷиши якпорчагӣ (DQ) дар ҳар як қабат
Мо қоидаҳои якпорчагиро дар CI/CD ва дар вақти кор дар қубур дохил мекунем:- Тару тоза/Мукаммалӣ/Ягонагӣ/Арзишҳои дуруст/Якпорчагии истинод.
- Аномалияҳо: пардаи такрорӣ, холигии вақт, тағироти шадид дар тақсимот.
- Назорати формулаҳои KPI: версияи ҳисобҳо ва санҷишҳо барои натиҷаҳои мувофиқ (маҷмӯаҳои тиллоӣ).
- Назорати содирот - Барориши маҷмӯаҳоро бо қонуншиканиҳо (карантин) манъ кунед.
yaml expect_column_values_to_be_unique: {column: txn_id}
expect_column_values_to_not_be_null: {column: user_id}
expect_column_values_to_be_in_set: {column: currency, value_set: [USD,EUR,TRY,UAH]}
7) Тамомияти молиявӣ ва амалиётӣ
Вуруди дукарата: дебет/қарз дар тавозун; мусолиҳаҳои мухтасар дар буриш.
Инвариантҳои умумӣ: маблағи пардохт = маблағи аз ҳисоб хориҷ кардан + пардохт + тасҳеҳ.
Инвариантҳои амалиётӣ: Нишондиҳандаҳои SLA/guardrail қоидаҳои тиҷоратро вайрон намекунанд (масалан, таъмири худкор нусхабардорӣ намекунад).
8) Насл, аудит ва репродуктивӣ
Linage: манбаъ барои намоиш/хусусият; намуди зоҳирии дигаргуниҳо ва соҳибон.
Роҳҳои аудит: кӣ тағир ёфт, кай ва чаро; схема/формула/версияҳои корӣ.
Суратҳо/нуқтаҳои назоратӣ: қобилияти ҳисоб кардан ва тасдиқи гузоришҳои гузашта.
Репро: ҳамон дархост дар ҳамон як буридаи → ҳамон натиҷа (версияҳо ва қабатҳо).
9) Амният ва дахолатнопазирӣ бидуни гум кардани беайбӣ
RLS/CLS: филтрҳои сатр/сутун набояд инвариантҳоро вайрон кунанд (масалан, маблағи намунаи намоён бояд ба филтри эълоншуда мувофиқат кунад).
Ниқоб/токенизатсия: стратегияҳои детерминистӣ барои таъмин намудани нигоҳ доштани якпорчагӣ ва тамомияти истинод.
Рамзгузорӣ: дар канал ва "дар диск" пас аз фишурдан; идоракунии калидӣ ва аудити дастрасӣ.
DSAR/Нигоҳдорӣ: нест кардан/беном кардан пайвастшавиро вайрон намекунад (сиёсати каскадӣ).
10) Худмаблағгузорӣ ва таъмири автоматӣ
Карантин: ҷудокунии тарафҳо/партияҳои шубҳанок; истеъмолкунандагон - филиали "тоза".
Бозсозӣ/Backfill: Тирезаро аз дафтарчаи ивазнашаванда бозсозӣ мекунад.
Оштӣ: оштии қабат ва система (raw↔curated↔marts; istochnik↔DWH).
Dedup/Compaction/Restord: тартиботи системаи таъмири индексатсияҳо/агрегатҳо.
Policy-as-code: "кадом аномалия → кадом амал → ҳадди ниҳоӣ ва афзоиш аст".
11) Амалияи моделсозӣ ва нигоҳдорӣ
Калидҳои устувор: суррогат ПК (UUID/ULID), калидҳои табиии бетағйир дар китобҳои истинодӣ.
Normalizatsiya↔denormalizatsiya: Пайвастҳои FK дар манбаъҳо, намоишҳои ғайримуқаррарӣ бо назорати версияи мантиқӣ.
SCD1/SCD2: таърихи роҳнамо барои андозаҳо.
Гурӯҳбандӣ/кластерӣ: Харитаҳои RLE/минтақаро такмил медиҳад ва мусолиҳаро содда мекунад.
Hashes ва checksums: санҷиши тамомияти файлҳо/маҷмӯаҳо.
12) Беайбӣ бо мурури замон ва ҳисобот
Версияҳои формула: Ҳисоботи моҳи январи соли 2025 бояд бо версияи X нусхабардорӣ карда шавад.
Қатъи кор ва "бастани давра": яхдонҳои тирезаҳо ва иловаро бойгонӣ.
Далелҳои дер омада: механикаи пуркунӣ ва ҳисобҳо бо аломати версияи ҳисобот.
Ҳуҷҷатгузорӣ бекор мекунад: тасҳеҳи дастӣ - танҳо аудит.
13) Интегратсияҳо ва API
Шартномаи API: схемаҳо, намудҳо, майдонҳои зарурӣ, рамзҳои хатогӣ; версия (v1/v2).
Санҷиш дар даромадгоҳ: сарбории бадро рад кунед, "хомӯшона таъмир накунед".
Idempotent POST: калиди idempotence, дубора бехатар.
Содирот ба файлҳо: мувофиқати гурӯҳ, hashes, имзоҳо.
14) Антипаттернҳо
Дар дархостҳои фурӯш ва борони шадид интихоб кунед - бо таҳаввулоти MINOR шикаст мехӯрад.
FK "бо калимаҳо": санҷиши воқеии истинод нест.
Ислоҳоти бесими маълумот бидуни аудит ва гузориш.
Форматҳои TZ ва вақтро дар як маҷмӯъ омехта кунед.
KPI "Grip" бидуни версияҳо ва гузоришҳо сарнагун мешавад.
Калиди такрории ягона бидуни стратегияҳои бозгашт.
Нест кардани DSAR бидуни санҷиши пайвандак.
15) Харитаи роҳсозӣ
1. Инвентаризатсия ва танқид: харитаи маҷмӯа/рӯйдодҳо, соҳибон, хатарҳо, инвариантҳо.
2. Шартномаҳо ва схемаҳо: ба расмият даровардани намудҳо/маҳдудиятҳо/FK, санҷиши мутобиқати CI.
3. DQ дар лӯла: Тару тоза/Мукаммалӣ/Ягонагӣ/RI, карантин, огоҳиҳо.
4. Асоси транзаксионӣ: атом-ғалтак, боло/якҷоя, таърихи SCD, версияи формула.
5. Lineage ва аудит: директория, пайгирӣ, гузоришҳои тағирот, сабтҳои дастрасӣ.
6. Сиёсати таъмир: такрорӣ/backfill/dedup/оштӣ ҳамчун рамз; runbook 'i i SLO MTTR-маълумот.
7. Амният//: Равандҳои RLS/CLS, ниқоб, рамзгузорӣ, DSAR.
8. Ҳисобот: буридан, буридани ях, версияи KPI.
16) Рӯйхати пешакӣ/парвандаи намоишӣ
- PK/FK ва маҳдудиятҳои домейн муқаррар карда мешаванд ва санҷишҳо мегузаранд.
- Версияи схема/формула фаъол аст; схема-дифф сабз.
- Қоидаҳои DQ (тару тоза/пуррагӣ/беҳамто/диапазон/RI) сабз мебошанд.
- Вурудоти Idempotent: upsert/merge, калиди idempotence (барои рӯйдодҳо).
- Вақт: 'event _ time' ва 'ingested _ at', TZ = UTC; сиёсати деринаи маълумот.
- Lineage ва аудит намоён; карантин ва огоҳиҳоро дар бар мегирифт.
- RLS/CLS/ниқоб инвариантҳо ва RI-ро вайрон намекунад.
- DSAR/Нигоҳдорӣ санҷида шуд; буридан/бойгонӣ омода аст.
17) Қолабҳои хурд
SQL: санҷиши тамомияти истинод
sql select count() as orphans from fact_payments f left join dim_users u on f.user_id = u.user_id where u.user_id is null;
-- ожидаем orphans = 0
сиёсати карантин/таъмир (псевдо-YAML)
yaml policy: payments_integrity detect:
- rule: duplicates(txn_id) > 0
- rule: ref_integrity(user_id, users.user_id) = false auto_actions:
- quarantine_partition: {date: today}
- trigger_replay: {window: "last_2h"}
escalate_if:
- condition: violations_persist>30m page: "oncall-data"
Андозагирӣ SCD2 диаграмма
sql
-- dim_user_status (SCD2)
user_id, status, valid_from, valid_to, is_current
18) Сатри поён
Тамомияти маълумот як чек нест, балки системаи кафолати ниҳоӣ: шартномаҳо ва маҳдудиятҳои расмӣ, инвариантҳои транзаксионӣ ва тақсимшуда, тасдиқ ва автоматикунонии таъмир, насл ва аудит, дахолатнопазирӣ ва ҳуқуқҳо. Вақте ки ин унсурҳо якҷоя кор мекунанд, маълумот барои ҳалли онҳо асоси боэътимод мегардад ва ҳодисаҳо нодир, кӯтоҳ ва пешгӯишаванда мебошанд.