Տվյալների ամբողջականությունը
1) Ի՞ նչ է տվյալների ամբողջականությունը
Տվյալների ամբողջականությունը հատկությունների և վերահսկման մի շարք է, որը երաշխավորում է, որ տվյալները ճիշտ են, համաձայնեցված և հակասական են կյանքի բոլոր ցիկլերում 'աղբյուրներից և փոխակերպումներից մինչև վիտրին, API և ալյումինե։ Նպատակը այն է, որ նույն պնդումը նույն պատասխանը տա կրկնության ժամանակ, և ցանկացած փոփոխություն հետադարձ և ստուգելի է։
2) Ամբողջականության տեսակները և որտեղ են նրանք ապրում
Էժան (Entity) 'յուրահատուկ առաջնային բանալիներ, կրկնօրինակների բացակայություն։
Հղում (Referential) 'FK ճիշտ կապերը; «կախված» հղումների բացակայությունը։
Ուղղանկյուն (Domain) 'թույլատրելի միջակայքներ և շարժիչներ (տիպ, երկարությունը, տեղեկատուներ)։
Բիզնես կանոնները 'առարկայական ոլորտի ինվարանտներ (հավասարակշռություն 240, լարերի գումարը = 0 և այլն)։
Ժամանակավոր 'միապաղաղությունն ու համակարգումը, ճիշտ խաղահրապարակային գոտիները։
Հասանելիության քաղաքականությունները ՝ RFC/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-ի համար 'ատոմականություն, կոնսիստենտություն, մեկուսացում, երկարակեցություն։
Մեկուսացման մակարդակները ՝ Read Committed/Repeatable Read/Serializable, ընտրեք «կեղտոտ «/անպարկեշտ/ֆանտոմային ընթերցումների վտանգի տակ։
OLAP-ը և lakehouse-ը 'աղյուսակների ատոմային համայնքները (transaction log), idempotent sink և schema-evolution, որոնք վերահսկում են ձեռնարկությունները։
KPI բանաձևերի համաձայն ՝ սեմանտիկ շերտը մեկ ճշմարտություն է պարունակում կոդավորման և API-ի համար։
5) Բաշխված համակարգերը 'կարգը, կրկնությունը, գաղափարախոսությունը
Իրադարձությունների կարգը 'մենք օգտագործում ենք «event _ time» + «ingested _ at», watermarks և www.lateness; ագրեգատները հիմնվելով event time-ի վրա։
Կրկնվող առաքումը (at-leport-once) 'գլոբալ «event _ id», idempotency keys, ups.ru/merge-ը համապատասխան ձևով։
Out-of-order ՝ պատուհանների վերահաշվարկ, հետաձգման ռազմավարություն, փոխհատուցում։
Exactly-once իմաստը 'տեղափոխությունը կարող է լինել at-leport-once, ընդունիչը' idempotent։
6) Ամբողջականության վալիդացիան (DQ) յուրաքանչյուր շերտի վրա
Միացրեք ամբողջականության կանոնները CI/CD-ում և rantaim plins-ում
Աննոմալիա 'կրկնօրինակներ, ժամանակի ընդմիջումներ, բաշխման կտրուկ տեղաշարժեր։
Freshness/Completeness/Uniqueness/Valid Values/Referential Integrity.
KPI բանաձևի վերահսկումը 'մրցույթի տարբերությունը և թեստերը արդյունքների համընկնելու համար (golden sets)։
Էքսպորտի վերահսկումը 'ռուսական հավաքածուի արգելքը խախտումներով (quarantine)։
Օրինակ (Great Expectronics-ոճ)
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) Ֆինանսական և վիրահատական ամբողջականությունը
Double-entry (կրկնակի ձայնագրություն) 'դեբեթ/վարկ հավասարակշռության մեջ։ cut-off։
Հիբրիդային ինվարանտներ 'վճարումների գումարը = մարման գումարը + 108 + 108։
Վիրահատական ինվարանտները ՝ SLA/guardrail-մետրիերը չեն կոտրում բիզնես կանոնները (օրինակ, մեքենայի վերականգնումը չի ստեղծում կրկնօրինակներ)։
8) Լինեժը, աուդիտը և վերարտադրողականությունը
Գծեր ՝ աղբյուրից մինչև վիտրին/ֆիչ; փոխակերպման և սեփականատերերի տեսանելիությունը։
Աուդիտ-թրեյլերը 'ով փոխեց, որ երբ և ինչու։ սխեմաների/բանաձևերի/ջոբների տարբերակներ։
Ձյունանուշները/վերահսկողական կետերը 'անցյալ հաշվետվությունները հաշվելու և հաստատելու հնարավորությունը։
Repro 'նույն հարցումը նույն կտրման վրա նույն արդյունքն է (տարբերակները և շերտերը)։
9) Անվտանգությունն ու գաղտնիությունը առանց ամբողջականության կորստի
RSA/CLS: Տողերի/զանգերի ֆիլտրերը չպետք է խախտեն ինվարանտները (օրինակ, տեսանելի ընտրության գումարը պետք է համընկնի հայտարարվածի հետ)։
Դիմակավորում/տոկենիզացիա 'դետերմինացված ռազմավարություններ, որպեսզի դեդուպը և հանրաքվեական ամբողջականությունը պահպանվեն։
Կոդավորումը 'ջրանցքում և «112-ում» սեղմումից հետո։ բաների կառավարում և հասանելի աուդիտ։
DSAR/Retention: հեռացումը/անանունացումը չեն կոտրում կապը (կասկադային քաղաքականություն)։
10) Ինքնատիրապետում և վերանորոգման ավտոմատացում
Quarantine 'կասկածելի կուսակցությունների/մարտերի մեկուսացում; սպառողներին '«մաքուր» ճյուղը։
Replay/Backfill: Պատուհանի վերագտնումը անփոփոխ rox ամսագրից։
Reconcile: Շերտերի և համակարգերի խառնուրդ (rultioncurated no marts; աղբյուրը MSH)։
Dedup/Compaction/Rebuild: ինդեքսների/ագրեգատների վերականգնման ընթացակարգերը։
Policy-as-code: «Ի՞ նչ անոմալիա է ազդում ռուսական էսկալացիայի վրա»։
11) Մոդելավորման և պահեստավորման պրակտիկան
Կայուն բանալիներ 'surrogate PK (UUID/ULID), անփոփոխ բնական բանալիներ գրքերում։
Նորմալիզացիան բացատրում է դենորմալիզացիան. FK կապերը աղբյուրներում, դենորմալիզացված վիտրինները տրամաբանության տարբերակի վերահսկմամբ։
SCD1/SCD2 'կառավարվող պատմություն ռուսական համար։
Տեսակավորումը/կլաստերիզացիան 'բարելավում է RLE/zone-maps-ը և պարզեցնում է ծալքերը։
Հեշին և վերահսկողական գումարները 'ֆայլերի/կուսակցության ամբողջականության ստուգում։
12) Ժամանակի և հաշվետվությունների ամբողջականությունը
Բանաձևի տարբերակները '2025 թվականի հունվարին զեկույցը պետք է վերարտադրվի X- ի տարբերակի բանաձևը։
Cut-off-ը և «ռուսական ժամանակահատվածը» 'վիտրինի և արխիվային կտրվածքների սառեցումը։
Late arriving facts-ը 'վերամշակման մեխանիկա և կրկնօրինակներ, որոնք ցույց են տալիս զեկույցի տարբերակը։
Վերամարմնավորման փաստարկները 'ձեռքով ձեռնարկությունները միայն աուդիտի հետ են։
13) Մոսկվա և API
API պայմանագիրը 'սխեմաներ, տեսակներ, պարտադիր դաշտեր, սխալներ։ տարբերակումը (v1/v2)։
Մուտքի վալիդացիան 'reject վատ payload' a, չի «լռել»։
Idempotent POST 'idempotenty բանալին, խոհարարը անվտանգ է։
Էքսպորտը ֆայլերին 'կուսակցության, հեշի, ստորագրության համաձայնություն։
14) Անտիպատերնի
XXIII-ը պրոդ պահանջների և վյուխների մեջ կոտրվում է MINOR-էվոլյուցիայի ժամանակ։
FK «բառերով» 'հղումների իրական ստուգման բացակայություն։
Լուռ տվյալների ուղղումներ առանց տեղեկատվության և հաշվետվությունների։
TZ-ի խառնուրդը և ժամանակի ձևերը նույն հավաքածուի մեջ։
KPI-ի վերարտադրությունը առանց տարբերակների և ամսագրերի։
Դեդուպլիզացիայի միակ բանալին առանց պահեստային ռազմավարության։
DSAR-ի հեռացումը առանց կապերի կասկադի ստուգման։
15) Իրականացման ճանապարհային քարտեզը
1. Eurentory & քննադատություն 'հավաքածուի/իրադարձությունների քարտեզը, սեփականատերերը, ռիսկերը, ինվարանտները։
2. Պայմանագրեր և սխեմաներ 'ձևավորել տեսակներ/սահմանափակումներ/FK, CI-ստուգումներ։
3. DQ-ը ռուսական pline: Freshness/Completeness/Uniqueness/RI, quarantine, alerts։
4. Գործարքային հիմքը ՝ atomic-sink, ups.ru/merge, SCD-պատմություն, բանաձևերի տարբերությունը։
5. Լինեժը և աուդիտը 'կատալոգը, ուղեղը, change-logs, 71-logs։
6. Վերականգնման քաղաքականությունները 'replay/backfill/dedup/reconcile որպես կոդ։ runbook’и и SLO MTTR-data.
7. Անվտանգություն/priv: RSA/CLS, դիմակավորում, կոդավորում, DSAR գործընթացներ։
8. Հաշվետվություններ ՝ cut-off, freeze-srezs, KPI տարբերակների կառավարում։
16) Չեկի թուղթը նախքան հավաքածուի/վիտրինի թողարկումը
- PK/FK և հիբրիդային սահմանափակումները տեղադրված են և անցնում են թեստեր։
- Սխեմաների/բանաձևերի տարբերակումը ներառված է. schema-diff կանաչ է։
- DQ կանոնները (թարմ/ամբողջական/եզակիություն/միջակայք/RI) կանաչ են։
- Idempotent գրառումներ ՝ ups.ru/merge, idempotenty բանալին (իրադարձությունների համար)։
- Ժամանակը '«event _ time» և «ingested _ at», TZ = UTC; քաղաքականությունն է։
- Լինեժը և աուդիտը տեսանելի են. ներառում են quarantine և alerta։
- RFC/CLS/դիմակավորումը չի խախտում ինվարանտները և RI-ը։
- DSAR/Retention-ը փորձարկվել է; cut-off/արխիվը պատրաստ է։
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
Quarantine/rep.ru (կեղծ-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) Արդյունքը
Տվյալների ամբողջականությունը ոչ թե միասնական ստուգում է, այլ երաշխիքների համակարգի միջոցով 'պաշտոնական պայմանագրեր և սահմանափակումներ, գործարքային և բաշխված ինվարանտներ, վալիդացիա և ավտոմատիկա վերանորոգման, վերելակ և աուդիտ, սեփականաշնորհում և իրավունք։ Երբ այս տարրերը միասին են աշխատում, տվյալները դառնում են որոշումների հուսալի, իսկ միջադեպերը հազվադեպ են, կարճ և կանխատեսելի։