---
title: 'Veri Yönetişimi'
source: 'https://academia.sh/tr/kurslar/veri-muhendisligine-giris/veri-yonetisimi'
course: 'Veri Mühendisliğine Giriş'
language: tr
updated: '2026-08-17T18:08:52+00:00'
license: 'CC BY-SA 4.0'
---

# Veri Yönetişimi

Sahiplik boşluğunun ve saklama politikasının sayılması: kaynağıyla birlikte altı konum taşıyan hatta beş aşamanın üçü bir sahip taşıyor, ama altı bozulmanın altısı da sahipsiz bir konumda yakalanıyor, çünkü denetimler yalnız kaynakta ve özet katmanında koşuyor. Bulgu aşağıya yürüyerek bir sahibe ulaşıyor ve altı bulgunun üçü onarabilecek sahibe gidiyor; kalan üçünde alıcı onarım yerinden bir ile beş aşama uzakta ve kanıta erişimi yok. Onarım yeri sahipsiz olan üç sınıf, kusurlu denetim kümesiyle hiç yakalanmayan üç sınıfla birebir aynı. Altı dönemlik saklama penceresi altı dönem siliyor ama geriye dönük denetlenemez dönem yediye çıkıyor, özet 55 hücreden 25'e iniyor, soyağacının 4400 tüketim bağının 2200'ü silinmiş satıra işaret ediyor ve doğru bölüm denetimi sağlam veride yanlış alarm veriyor. Ders kursun kapanışıdır.

Bir önceki derste arama kaynağa kadar indi ve orada durdu. Soyağacı hangi satırların eksik
olduğunu söyledi, kayıp aşamasının `kaynak` olduğunu yazdı ve sustu. Kırk satırın neden gelmediği
ve bulgunun kime iletileceği kaydın söyleyemeyeceği şeylerdi. Hattın beş aşaması var, kaynak da
sayılırsa altı; bunların kaçı bir sahip taşıyor.

Bu dersin ölçtüğü şey bir **boşluktur**: bir bozulmanın yakalandığı yer ile onarılabileceği yer
arasındaki mesafe. Boşluk üç sayıyla okunur — bulgu kime gidiyor, o rol onarımı yapabiliyor mu,
kanıta bakabiliyor mu. İkinci ölçü aynı boşluğu zaman ekseninde okur: saklama penceresi
daraldığında kaç dönem geriye dönük denetlenemez hâle geliyor. Bütün sayılar sayımdır; oran
basılmaz.

- **VK47.** Kaynak, beş aşamalı hat, bozulma sınıfları ve sahiplik haritası **kurgudur** ve ders
  içinde tanımlanır. Hiçbir depo, katalog ürünü, orkestratör ya da politika metni çağrılmaz. Tohum
  20260218.
- **VK48.** **Sahip**, bir konumun çıktısını değiştirme yetkisi olan **rol sınıfıdır**; kişi ya da
  kurum değildir. **Erişim**, bir rolün hangi konumun satırlarını okuyabildiğidir.
- **VK49.** Bir bulgu **yakalandığı konumda doğar**. Konumun sahibi yoksa bulgu aşağı doğru ilk
  sahipli konuma yürür; sahipli konum kalmamışsa bulgu kimseye gitmez.
- **VK50.** **Onarım yeri**, bozulmanın giderilebileceği **en erken konumdur** ve bulgunun alındığı
  konumla aynı olmak zorunda değildir. **Uzaklık** ikisi arasındaki aşama sayısıdır.
- **VK51.** Yakalayan denetim ve yakalama gecikmesi bu kursun birinci dersinde ölçüldü; burada
  **yeniden ölçülmez**, girdi olarak alınır. Erişim denetimi, saklama politikası ve kişisel veri
  yordamı Siber Güvenlik müfredatındaki Kimlik, Erişim ve Kriptografi ile Yönetişim, Risk ve
  Uyumluluk kurslarında ölçüldü; **tekrarlanmaz**.
- **VK52.** **Saklama penceresi** son N dönemi tutar, öncesini siler. Bir dönem, tüketim satırı
  kalan kaynaktan yeniden hesaplanabiliyorsa **geriye dönük denetlenebilir** sayılır.

## Sahiplik Haritası ve Bulgunun Yürüdüğü Yol

Sahiplik bir belge değil bir eşlemedir: hangi konumun çıktısını kim değiştirebilir. Aşağıdaki
harita iki rol tanır, kalan konumlar boştur. Boşluk uydurma değil hattın doğal sonucudur; ara
katmanlar kimsenin ürünü sayılmaz.

```python
# KURGUDUR. Sahiplik, erisim ve onarim haritasi ders icinde tanimlanir; hicbir
# duzenleme metni, kurum, katalog urunu ya da orkestrator cagrilmaz.
KONUM = ["kaynak", "ayikla", "tekille", "tuketim", "ozet", "sun"]
# Sahip bir kisi degil bir rol sinifidir; sahipsiz konumun degeri None'dir.
SAHIP = {"kaynak": None, "ayikla": "hat ekibi", "tekille": "hat ekibi",
         "tuketim": None, "ozet": None, "sun": "raporlama ekibi"}
ERISIM = {"hat ekibi": {"ayikla", "tekille", "tuketim", "ozet"},
          "raporlama ekibi": {"ozet", "sun"}}
# Yakalayan denetim ve yakalama gecikmesi (asama) bu kursun birinci dersinde olculdu.
YAKALAMA = {"gec_gelen": ("dagilim", 4), "yinelenen": ("tekillik", 0),
            "sema_degisti": ("sema", 0), "birim_degisti": ("dagilim", 4),
            "eksik_bolum": ("bolum_donem", 0), "kayan_tip": ("tip", 0)}
# Bozulmanin gercekten onarilabilecegi en erken konum.
ONARIM = {"gec_gelen": "kaynak", "yinelenen": "tekille", "sema_degisti": "ayikla",
          "birim_degisti": "kaynak", "eksik_bolum": "kaynak", "kayan_tip": "ayikla"}
# Kusurlu denetim kumesiyle hic yakalanmayan siniflar, yine birinci dersten.
KACAN = {"gec_gelen", "birim_degisti", "eksik_bolum"}


def yonlendir(i):
    """Bulgu yakalandigi konumda dogar; konum sahipsizse ilk sahipli konuma yurur."""
    for j in range(i, len(KONUM)):
        if SAHIP[KONUM[j]]:
            return j, SAHIP[KONUM[j]]
    return None, None


def eh(x):
    return "evet" if x else "hayir"


print(f"bes asamanin {sum(1 for a in KONUM[1:] if SAHIP[a])} tanesi sahipli ;"
      " kaynak konumu hattin disinda ve sahipsiz")
print("\nbozulma         yakalayan  gecikme  konum sahibi  bulgu kime        onarim"
      "  uzaklik  yetki  erisim  kusurlu kumede")
yetkili = erisen = 0
for s, (yak, g) in YAKALAMA.items():
    j, alici = yonlendir(g)
    o = ONARIM[s]
    yetki, eris = SAHIP[o] == alici, o in ERISIM[alici]
    yetkili, erisen = yetkili + yetki, erisen + eris
    print(f"{s:<13} {yak:>11} {g:>8}  {SAHIP[KONUM[g]] or 'yok':>12}  {alici:<17}"
          f" {o:<7} {abs(KONUM.index(o) - j):>7}  {eh(yetki):>5}  {eh(eris):>6}"
          f"  {'kaciyor' if s in KACAN else 'yakalaniyor':>14}")
sahipsiz = {s for s in ONARIM if SAHIP[ONARIM[s]] is None}
print(f"\nbulguyu alan sahip {yetkili} bozulmada onarabiliyor ,"
      f" {erisen} bozulmada kanita erisimi var")
print(f"onarim yeri sahipsiz olan {len(sahipsiz)} sinif , kusurlu kumeyle hic yakalanmayan"
      f" {len(KACAN)} sinif , ayni kume mi: {eh(sahipsiz == KACAN)}")
```

```
bes asamanin 3 tanesi sahipli ; kaynak konumu hattin disinda ve sahipsiz

bozulma         yakalayan  gecikme  konum sahibi  bulgu kime        onarim  uzaklik  yetki  erisim  kusurlu kumede
gec_gelen         dagilim        4           yok  raporlama ekibi   kaynak        5  hayir   hayir         kaciyor
yinelenen        tekillik        0           yok  hat ekibi         tekille       1   evet    evet     yakalaniyor
sema_degisti         sema        0           yok  hat ekibi         ayikla        0   evet    evet     yakalaniyor
birim_degisti     dagilim        4           yok  raporlama ekibi   kaynak        5  hayir   hayir         kaciyor
eksik_bolum   bolum_donem        0           yok  hat ekibi         kaynak        1  hayir   hayir         kaciyor
kayan_tip             tip        0           yok  hat ekibi         ayikla        0   evet    evet     yakalaniyor

bulguyu alan sahip 3 bozulmada onarabiliyor , 3 bozulmada kanita erisimi var
onarim yeri sahipsiz olan 3 sinif , kusurlu kumeyle hic yakalanmayan 3 sinif , ayni kume mi: evet
```

Tablonun en sert sütunu dördüncüsüdür ve tek bir değer taşır: **yok**. Beş aşamanın üçü sahipli
olduğu hâlde altı bozulmanın hiçbiri sahipli bir konumda yakalanmıyor. Nedeni denetimlerin
yerleşimidir: yedi denetimin altısı kaynakta, biri özet katmanında koşuyor ve iki konum da
sahipsiz. Sahiplik hattın **ürettiği** yere yazılmış, denetimin **baktığı** yere yazılmamıştır. Bir
konumu sahiplendirmek ile orada denetim koşturmak iki ayrı karardır; örtüşmemeleri ölçülebilir bir
kusurdur.

Bulgu yürüdüğü için yine de bir alıcı buluyor, ama alıcı çoğu zaman yanlış roldür. Üç bozulmada hat
ekibi hem yetkili hem erişimlidir: `yinelenen` tekilleştirmede, `sema_degisti` ve `kayan_tip`
ayıklamada onarılır. Kalan üçünde onarım yeri `kaynak`tır ve kaynağın sahibi yoktur. `eksik_bolum`
bulgusu bir aşama uzağa düşer; `gec_gelen` ile `birim_degisti` **beş aşama** uzağa, elinde yalnız
sapmış bir sunum değeri olan raporlama ekibine gider.

Son satır bu dersin en dar bulgusudur. Onarım yeri sahipsiz olan üç sınıf, kusurlu denetim
kümesiyle hiç yakalanmayan üç sınıfla **birebir aynıdır**. İki liste bağımsız çıktı: biri
denetimlerin kapsamından, öbürü rol haritasından. Aynı olmaları, en zayıf denetlenen konumun en
zayıf sahiplenilen konum olduğunu gösterir.

## Saklama Penceresi ve Geriye Dönük Denetim

Sahiplik boşluğunun ikinci yüzü zamandadır. Silinen satır yalnız yer boşaltmaz, geriye dönük
denetimin dayanağını da götürür. Aşağıdaki blok aynı kurgu kaynağı beş saklama penceresiyle
koşturur.

```python
# KURGUDUR. Olcum aginin sayac okumalari ders icinde uretilir. Saglam kaynakta
# ilk iki asama satir dusurmedigi icin tuketim dogrudan kaynaktan hesaplanir.
TOHUM, M32 = 20260218, 0xFFFFFFFF


def uretec(t):
    x = ((t ^ (t >> 16)) * 2246822507) & M32
    x = ((x ^ (x >> 13)) * 3266489909) & M32
    s = [(x ^ (x >> 16)) & M32]

    def sonraki():
        s[0] = (s[0] * 1664525 + 1013904223) & M32
        return s[0] / 4294967296
    return sonraki


BOLGE = ["dogu", "bati", "kuzey", "guney", "merkez"]
TIP = ["mesken", "isyeri"]
DONEM = [f"2026-{a:02d}" for a in range(1, 13)]
ABONE = {}
for i in range(200):
    r = uretec(TOHUM + 37 * i)
    ABONE[f"A{i + 1:03d}"] = {"bolge": BOLGE[int(r() * 5)], "tip": TIP[int(r() * 2)],
                              "baslangic": 10000 + int(r() * 60000)}


def kaynak_uret():
    kayit = []
    for i, (ab, a) in enumerate(ABONE.items()):
        e = a["baslangic"]
        for d in DONEM:
            r = uretec(TOHUM + 101 * i + 7 * DONEM.index(d))
            e += 4 + int(r() * 46)
            kayit.append({"abone": ab, "donem": d, "bolge": a["bolge"], "tip": a["tip"],
                          "endeks": e, "birim": "m3"})
    return kayit


def ad(k):
    return (k["abone"], k["donem"])


def a3_tuketim(v):
    """Donem farkindan tuketim; onceki donem yoksa satir hesaplanamaz."""
    tablo, cikti = {ad(k): k for k in v}, []
    for k in v:
        i = DONEM.index(k["donem"])
        onceki = tablo.get((k["abone"], DONEM[i - 1])) if i else None
        if onceki is not None:
            cikti.append(dict(k, m3=k["endeks"] - onceki["endeks"]))
    return cikti


def d_bolum_donem(v):
    """Dogru bolum denetimi: her donemde her bolge yazilmis mi."""
    return {(k["bolge"], k["donem"]) for k in v} != {(b, d) for b in BOLGE for d in DONEM}


def sakla(kayit, pencere):
    """Saklama politikasi: yalniz son `pencere` donem tutulur, oncesi silinir."""
    tutulan = set(DONEM[len(DONEM) - pencere:])
    return [k for k in kayit if k["donem"] in tutulan], tutulan


kaynak = kaynak_uret()
# Her tuketim satirinin iki atasi vardir: kendi donemi ve bir onceki donem.
BAG = [x for k in a3_tuketim(kaynak)
       for x in (ad(k), (k["abone"], DONEM[DONEM.index(k["donem"]) - 1]))]
print(f"kaynak {len(kaynak)} satir , tuketim satiri {len(a3_tuketim(kaynak))} ,"
      f" tuketim bagi {len(BAG)}")
print("\npencere  silinen  kalan  yeniden uretilebilen  denetlenemez"
      "          2026-07  alarm  askida")
for p in (12, 9, 6, 3, 1):
    kalan, tutulan = sakla(kaynak, p)
    uretilebilen = sum(1 for i, d in enumerate(DONEM)
                       if i and d in tutulan and DONEM[i - 1] in tutulan)
    anahtar = {ad(k) for k in kalan}
    durum = ("silinmis" if "2026-07" not in tutulan else
             "atasi silinmis" if "2026-06" not in tutulan else "denetlenebilir")
    print(f"{p:>7}  {12 - p:>7}  {len(kalan):>5}  {uretilebilen:>20}"
          f"  {12 - uretilebilen:>12}  {durum:>15}"
          f"  {eh(d_bolum_donem(kalan)):>5}  {sum(1 for b in BAG if b not in anahtar):>6}")
```

```
kaynak 2400 satir , tuketim satiri 2200 , tuketim bagi 4400

pencere  silinen  kalan  yeniden uretilebilen  denetlenemez          2026-07  alarm  askida
     12        0   2400                    11             1   denetlenebilir  hayir       0
      9        3   1800                     8             4   denetlenebilir   evet    1000
      6        6   1200                     5             7   atasi silinmis   evet    2200
      3        9    600                     2            10         silinmis   evet    3400
      1       11    200                     0            12         silinmis   evet    4200
```

Saklama politikası sildiğinden **bir fazla** dönemi denetlenemez kılıyor: altı dönem silindiğinde
denetlenemez dönem yedi, dokuz silindiğinde on. Fazladan gelen dönem her zaman **pencerenin en
eskisidir**; satırları duruyor ama tüketim bir farktır ve o farkın öteki ucu silinmiştir. Altı
dönemlik pencerede `2026-07` satırları hâlâ yerinde, buna karşın yeniden hesaplanamıyor ve özet
katmanı 25 hücreye iniyor. Bir saklama süresi "son altı dönem denetlenebilir" diye okunursa yanlış
okunmuştur; denetlenebilir olan beş dönemdir.

Son sütun bir önceki dersin bıraktığı soruyu yanıtlar. Soyağacı 4.400 tüketim bağı yazmıştı; altı
dönemlik pencerede bunun **2.200'ü** artık var olmayan bir satıra işaret ediyor ve 200 tanesi tam
da sınır döneminin atalarıdır. Kaydın korunması izlenebilirliği korumaz; bağın gösterdiği satır
silinmişse kayıt yalnız kaybın yerini bildirir.

Alarm sütunu ikinci bedeldir. Dönem duyarlı bölüm denetimi bu kursta **doğru** denetim olarak
kuruldu. Saklama uygulandığında beklediği dönem kümesi gerçekleşmiş kümeden büyük kalıyor ve
denetim sağlam veride ateşliyor: bozulma yok, bulgu var. Doğru bir denetim, bakması gereken alan
daraltıldığında yanlış alarm üreticisine dönüşüyor, çünkü beklenen dönem kümesini politikayla
birlikte güncelleyen olmadı. Bunun kimin işi olduğu ilk bölümün sorusudur: politikanın uygulandığı
konum `kaynak`tır ve sahibi yoktur.

## Özet

- Sahiplik, bir konumun çıktısını değiştirme yetkisidir; beş aşamanın üçü sahipli olsa da altı
  bozulmanın altısı **sahipsiz** bir konumda yakalanır, çünkü denetimler kaynakta ve özet
  katmanında koşar, sahiplik ise üretilen katmanlara yazılmıştır.
- Bulgu aşağı yürüyerek alıcı bulur ama üç bozulmada alıcı onarımı yapamaz; `gec_gelen` ile
  `birim_degisti` onarım yerinden **beş aşama** uzaktaki bir role gider ve o rolün kanıta erişimi
  yoktur.
- Onarım yeri sahipsiz olan üç sınıf, kusurlu denetim kümesiyle hiç yakalanmayan üç sınıfla birebir
  aynıdır: en zayıf denetlenen konum en zayıf sahiplenilen konumdur.
- Saklama politikası sildiğinden bir fazla dönemi denetlenemez kılar; altı dönem silindiğinde
  denetlenemez dönem 7 olur, özet 25 hücreye iner ve pencerenin en eski dönemi satırları dururken
  yeniden hesaplanamaz.
- Kayıt saklamadan bağımsız değildir: 4.400 tüketim bağının 2.200'ü silinmiş satıra işaret eder ve
  doğru bölüm denetimi yanlış alarma dönüşür.

## Kurs Kapanışı

| Ders | Denetimsiz hat | Denetimli hat | Bedel |
|---|---|---|---|
| `veri-yasam-dongusu/01` — yakalanan bozulma | 0 yakalama, gecikme **tanımsız** | yedi denetim sağlam kaynakta sessiz, yanlış alarm 0 | iz 2400/2400/2200/55/5; değer başına 480 satır (588 / 372) |
| `veri-yasam-dongusu/02` — bozulmayı gören aşama (6 sınıf) | `sun` her sınıfta 5 değer: **0** | `ayikla` 1, `tekille` 1 (**+2**) | `tuketim` eksik satırı ikiye katlar: 40→80, 46→92, 200→400 |
| `veri-yasam-dongusu/03` — iki ölçüt: satır ve sapma (m3) | satır: `sema_degisti` 2200→1800, en gürültülü | sapma: aynı sınıf 0,003, `gec_gelen` **0,105** — sıralama tersine döner | `eksik_bolum` sapmayı 10,832 → 10,829 düşürür |
| `veri-yasam-dongusu/04` — kaynak sınıfının taşıdığı bozulma sınıfı | hoşgörülü dış servis 6 sınıf, gecikme 8 aşama | bildirimli tür, birincil anahtar, tutarlı okuma 3 sınıf (**−3**), 4 aşama (**−4**) | hoşgörülü ayrıştırmada 200 satır bozulur, yakalayan olmaz; satır sayısı denetimi 0,05 payla hiçbirini yakalamaz |
| `veri-yasam-dongusu/05` — bozulmanın görüldüğü dönem (kip) | toplu: dönem gecikmesi 1, 5 aşama, 13200 satır | akış: 0 (**−1**), 8 aşama (**+3**), 2400 satır (**−10800**) | akış 2600 girdi taşır; geç gelen satırda toplu 55 hücreyi doğru bırakır, akış 10'unu kirletir |
| `veri-kalitesi/01` — yakalama gecikmesi (aşama) | 0 yakalama, gecikme **tanımsız** | altı sınıfın altısı yakalanır (**+6**), gecikme 4/0/0/4/0/0 | kusurlu küme üç sınıfı hiç yakalamaz; `bolum` 46 satır eksikken yeşil kalır |
| `veri-kalitesi/02` — kaybın yakalandığı aşama | sözleşmesiz: 200 + 200 satır sessizce düşer, özet 55→45 | sözleşmeli: aşama **0**, özet yine 45 — çıktı düzelmez | katı sözleşme 1200 iyi satır engeller (özet 25); yük düzeyi 2200 engeller, çıktı yok |
| `veri-kalitesi/03` — ham satır ve sunulan değer | ekleyen depo 2400 → 4800 → 7200 | anahtarlayan yazma 2400 sabit, çoğalan satır **0** (**−4800**) | kuzey üç koşumda da 1212,55; kusurlu tekilleştirmede 2425,09 ve 3637,64 |
| `veri-kalitesi/04` — kaynağa giden aramada bakılan satır | kayıtsız 9260 satır, hedeften bağımsız | soyağacıyla 94–155 satır (**60–99 kat az**) | 11455 bağ, satır başına 1,21; gelmemiş satıra bağ yazılamaz |
| `veri-kalitesi/05` — sahiplik boşluğu ve denetlenemez dönem | sahiplik yazılmamış: bulgunun alıcısı yok, denetlenemez dönem 1 | beş aşamanın 3'ü sahipli, altı bulgunun 3'ü onarabilen sahibe gider (**+3**) | altı yakalama konumunun **0'ı** sahipli; altı dönemlik saklama denetlenemez dönemi 7'ye çıkarır (**+6**), askıda bağ 2200 |

Tablo tek bir kuralın on kez yazılmasıdır. **Bir veri hattının sayısı taşıdığı satır değil, yanlış
satırın kaç adım sonra yakalandığıdır; bozulmayı yakalayan denetimi yazılmayan hat ölçülmemiş
sayılır.** Denetimsiz sütunundaki hiçbir sayı kötü bir kodun sonucu değildir; hepsi, taşınan satır
sayıldığı hâlde doğru olup olmadığının sorulmadığı bir düzenin sayılarıdır.

**İkinci iddia da aynı tablodan okunur: eklenen denetim de bozar.** Adıyla yazan satırlar şunlardır.
`veri-kalitesi/02`'de katı sözleşme zararsız bir alan eklemesinde 1200 iyi satırı engeller ve özeti
25 hücreye düşürür — üstelik yakalanan bozulma sıfırken; aynı derste yük düzeyinde uygulama 2200
iyi satırı engelleyip hiç çıktı vermez. `veri-kalitesi/01`'de `bolum` denetimi 46 satır
yazılmamışken yeşil kalır: yanlış güvence denetimsizlikten pahalıdır. `veri-yasam-dongusu/04`'te
satır sayısı denetimi 0,05 payla hiçbir sınıfı yakalamaz. `veri-yasam-dongusu/05`'te akış kipi geç
gelen satırda 10 özet hücresini kalıcı kirletir, toplu kip aynı bozulmada 55 hücreyi doğru bırakır.
`veri-kalitesi/03`'te tekilleştirme düzeltilmiş yükü yutar. `veri-kalitesi/05`'te saklama
politikası doğru bölüm denetimini yanlış alarma çevirir.

**Üçüncü iddia sunulan sayıya bakmanın neden yetmediğidir** ve üç bozulma adıyla sayılır.
`yinelenen` beş değeri birebir aynı bırakır, çünkü tekilleştirme fazlalığı yutar;
`veri-yasam-dongusu/02`, `veri-kalitesi/01` ve `veri-kalitesi/03` bunu ayrı ayrı ölçtü. `kayan_tip`
aynı şeyi tür dönüşümünde yapar. `birim_degisti` en sessizidir: özetin on hücresini 1812946491 ile
−1812944121 arasına taşır, iki dönem birbirini iptal eder ve kuzeyin değeri 1212,55'te kalır. Üçü
de sunuma bakan hiçbir gözlemle görülemez.

On derste hattın taşıdığı satır sayıldı ve bozulmanın kaç aşama sonra yakalandığı ölçüldü. Bir şey
hiç sorulmadı: bu satırların **nerede durduğu**. Kaynak 2400 satır, özet 55 hücre, bağ 11455 kayıt
olarak anıldı — ama hangi düzende yazıldıkları, bölümlere ayrılıp ayrılmadıkları ve o düzenin bir
sorguyu **kaça katladığı** bir kez bile sayılmadı. Sonraki kurs bu düzeni bir ölçüm nesnesine
dönüştürür.
