Маалыматтардын бүтүндүгү
1) маалыматтардын бүтүндүгү деген эмне
Берилиштердин бүтүндүгү - булактар жана трансформациялардан тартып, витриналарга, APIлерге жана экспортко чейин, берилиштер туура, макулдашылган жана бардык жашоо циклинде карама-каршылыксыз болушун камсыз кылган касиеттердин жана контролдуктардын жыйындысы. Максаты - бир эле билдирүү кайталоодо бирдей жооп бериши, ал эми ар кандай өзгөрүүлөр трассаланышы жана текшерилиши.
2) Бүтүндүктүн түрлөрү жана алар жашаган жер
Маанилүү (Entity): уникалдуу баштапкы ачкычтар, дубликаттардын жоктугу.
Шилтеме (Referential): FC туура байланыштар; "илинип" шилтемелер жок.
Домен (Домен): жол берилген диапазондор жана форматтар (түрү, узундугу, колдонмолор).
Бизнес эрежелери: предметтик аймактын инварианттары (баланс ≥ 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) Транзакциялык кепилдиктер жана изоляция
ALTP үчүн ACID: атомдук, консистенттүүлүк, изоляция, бышык.
Изоляция деңгээли: Read Committed/Repeatable Read/Serializable - "кир "/кайталангыс/фантомдук окууну тандоо.
OLAP жана lakehouse: атомдук committes таблицалар (transaction log), idempotent sink жана шайкештик контролдоо менен schema-evolution.
KPI формулаларынын шайкештиги: семантикалык катмар → отчеттор жана API үчүн бир чындык.
5) Бөлүштүрүлгөн системалар: тартип, кайталоо, демпотенттик
Иш-чаралардын тартиби: 'event _ time' + 'ingested _ at', watermarks жана lateness кабыл алуу; event time негизинде агрегаттар.
Кайра жеткирүү (at-least-once): глобалдык 'event _ id', таблицалар idempotency keys, upsert/туруктуу ачкыч боюнча өлчөө.
Out-of-order: терезелерди кайра эсептөө, кечигүү стратегиясы, компенсация.
Exactly-once мааниси боюнча: транспорт at-least-once болушу мүмкүн, кабылдагыч - idempotent.
6) Ар бир катмарда бүтүндүктү валидациялоо (DQ)
Биз CI/CD жана рантайм пайплайндарга бүтүндүк эрежелерин киргизебиз:- Freshness/Completeness/Uniqueness/Valid Values/Referential Integrity.
- Аномалиялар: дубликаттардын жарылуусу, убакыттын үзүлүшү, бөлүштүрүүнүн кескин өзгөрүшү.
- KPI формулаларын контролдоо: эсептөөлөрдүн версиясы жана натыйжалардын дал келүү тесттери (golden sets).
- Экспорттук көзөмөл: топтомдорду (quarantine) берүү тыюу салынат.
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 консолидацияланган текшерүүлөр.
Жыйынтыктоочу инварианттар: төлөмдөрдүн суммасы = эсептен чыгаруулардын суммасы + комиссиялар + оңдоолор.
Операциялык инварианттар: SLA/guardrail-метриктер бизнес эрежелерин бузбайт (мисалы, авто оңдоо дубликаттарды жаратпайт).
8) Сызык, аудит жана кайталоо
Линидж: булактан терезелерге/бетке; трансформациялардын жана ээлеринин көрүнүшү.
Аудит-трейлер: ким, эмне, качан жана эмне үчүн өзгөрдү; Схемалардын/формулалардын/жоболордун версиялары.
Снепшоттор/контролдук пункттар: мурунку отчетторду кайра саноо жана тастыктоо мүмкүнчүлүгү.
Repro: бирдей кесүү боюнча бирдей суроо-талап → бирдей натыйжа (версиялар жана катмарлар).
9) Коопсуздук жана бүтүндүгүн жоготпостон купуялуулук
RLS/CLS: саптарды/колонкаларды чыпкалары инварианттарды бузбашы керек (мисалы, көрүнгөн үлгүдөгү сумма жарыяланган менен дал келиши керек).
Маскировка/токенизация: Дедуп жана референциалдык бүтүндүктү сактоо үчүн детерминацияланган стратегиялар.
Шифрлөө: кысылгандан кийин каналда жана "дискте"; ачкычтарды башкаруу жана жеткиликтүүлүктү текшерүү.
DSAR/Retention: алып салуу/атын атагысы келбеген байланыш (каскаддык саясат).
10) Өзүн-өзү тейлөө жана автоматтык оңдоо
Quarantine: шектүү партияларды/батчаларды изоляциялоо; керектөөчүлөргө - "таза" бутак.
Replay/Backfill: өзгөрүлбөгөн чийки журналынан терезени кайра ойнотуу.
Reconcile: катмарларды жана системаларды салыштыруу (сырдалган marts; (DWH булагы).
Dedup/Compaction/Rebuild: индекстерди/агрегаттарды оңдоо системалык жол-жоболору.
Саясат-as-code: "кандай аномалия → кандай иш-аракет → босого → эскалация".
11) моделдөө жана сактоо практикасы
Туруктуу ачкычтар: суррогат PK (UUID/ULID), колдонмолордо туруктуу табигый ачкычтар.
Нормалдаштыруу Денормалдаштыруу: булактарында FK-байланыш, логика нускасын контролдоо менен Денормалдаштырылган терезелер.
SCD1/SCD2: өлчөө үчүн башкарылуучу окуя.
Сорттоо/кластерлештирүү: RLE/zone-карталарды жакшыртат жана текшерүүнү жөнөкөйлөтөт.
Хеш жана контролдук суммалар: файлдардын/партиялардын бүтүндүгүн текшерүү.
12) Убакыттын жана отчеттун бүтүндүгү
Формулалардын версиялары: 2025-жылдын январь айындагы отчет X версиясынын формуласы менен кайталанышы керек.
Cut-off жана "мезгилди жабуу": терезелерди жана архивдик кесимдерди тоңдуруу.
Late arriving facts: эсептөө жана кайра эсептөө механикасы отчеттун нускасын белгилөө менен.
Кайра аныктоолорду документтештирүү: кол менен оңдоолор - аудит менен гана.
13) Интеграция жана API
API келишими: схемалар, түрлөрү, милдеттүү талаалар, ката коддору; версиялоо (v1/v2).
Кириштеги валидация: reject жаман payload's, "унчукпай оңдоо".
Idempotent POST: idempotentity ачкычы, кайталоо коопсуз.
Файлдарга экспорт: партиялардын шайкештиги, хэштер, кол тамгалар.
14) Антипаттерндер
SELECT прод-суроо-талап жана бургулоо - MINOR-эволюция менен бузулат.
FK "сөз менен айтканда": шилтемелерди реалдуу текшерүүнүн жоктугу.
Аудит жана отчеттуулук жок маалыматтарды унчукпай оңдоо.
Бир топтомдо TZ жана убакыт форматтарын аралаштыруу.
Версиялары жана журналдары жок "калемдер" менен KPI кайра аныктоо.
Запастык стратегиясыз дедупликациянын жалгыз ачкычы.
Байланыштарды каскаддык текшерүүсүз DSAR аркылуу алып салуу.
15) Ишке ашыруунун жол картасы
1. Inventory & Criticity: комплект/иш-чаралардын картасы, ээлери, тобокелдиктер, башка.
2. Контракттар жана схемалар: түрлөрүн/чектөөлөрдү/FK, CI-шайкештикти текшерүү.
3. DQ пайплайн: Freshness/Completeness/Uniqueness/RI, quarantine, Алерт.
4. Транзакциялык негиз: atomic-sink, upsert/merge, SCD тарыхы, формулалардын версиясы.
5. Lineedge жана аудит: каталог, tracking, change-logs, access-logs.
6. Оңдоо саясаты: replay/backfill/dedup/reconcile код катары; runbook’и и SLO MTTR-data.
7. Коопсуздук/priv: RLS/CLS, жашыруу, шифрлөө, DSAR процесстери.
8. Отчеттуулук: cut-off, freeze-тилкелери, KPI версияларын башкаруу.
16) Комплект/витрина бошотулганга чейин чек
- PK/FK жана домендик чектөөлөр белгиленген жана сыноодон өтөт.
- Схемаларды/формулаларды версиялоо камтылган; schema-diff жашыл.
- DQ эрежелери (жаңы/толук/уникалдуулугу/диапазондору/RI) жашыл.
- Idempotent Records: upsert/merge, Idempotent ачкычы (окуялар үчүн).
- Убакыт: 'event _ time' жана 'ingested _ at', TZ = UTC; late data саясаты.
- Сызык жана аудит көрүнүп турат; quarantine жана alerts кирет.
- RLS/CLS/masking invariants жана RI бузган жок.
- DSAR/Retention сыналган; cut-off/архив даяр.
17) Mini үлгүлөрү
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/repair саясаты (psevdo-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) Жыйынтык
Маалыматтардын бүтүндүгү - бул бир гана текшерүү эмес, кепилдиктердин толук системасы: формалдуу келишимдер жана чектөөлөр, транзакциялык жана бөлүштүрүлгөн инварианттар, валидация жана оңдоо автоматикасы, линеедж жана аудит, купуялуулук жана укуктар. Бул элементтер чогуу иштегенде, маалыматтар чечимдер үчүн ишенимдүү негиз болуп калат, ал эми окуялар сейрек, кыска жана алдын ала айтууга болот.