---
title: 'Veri Saklama Politikası'
source: 'https://academia.sh/tr/kurslar/veri-depolama-mimarileri/veri-saklama-politikasi'
course: 'Veri Depolama Mimarileri'
language: tr
updated: '2026-08-17T18:08:50+00:00'
license: 'CC BY-SA 4.0'
---

# Veri Saklama Politikası

Arşive taşımanın kazandırdığının ve kapattığının sayılması: altı dönemlik sıcak pencerede sıcak katman 2200 satırdan 1200'e, 55 dosyadan 30'a iner, anahtar dışı süzgeç kullanan sorgu 11000 yerine 6000 öder ve arşivlenen 1000 satır 25 özet girişine indiği için on iki dönemlik bölge toplamı 11000 yerine 6675'e mal olur; arşivlendikçe tam tarihli sorgu ucuzlar. Bedel çözünürlüktedir: bölge kırılımı on bir dönemin tamamında yanıtlanır ve sıcak katman ile arşiv toplamı tam veriyle birebir aynı çıkar, buna karşılık tip, abone ve bölge artı tip kırılımları yalnız altı dönemde yanıtlanır ve sırasıyla 10, 1000 ve 50 kova kapanır. Korumasız bir tip sorgusu hata vermez, işyeri toplamını 29932 yerine 16818 döndürür ve 13114 metreküp görünmez kalır. Ders kursun kapanışıdır.

Bir önceki dersin bütün düzenlerinde on iki dönemin tamamı aynı yerde duruyordu; en eski dönem en
yenisiyle aynı bedelle okunuyordu. Oysa dosya sabiti her dosya için aynıdır ve bölümlü bir düzende
dosya sayısı dönemle birlikte büyür: bir yıl sonra aynı sorgu iki katı dosyaya dokunacaktır.

Bu ders o birikimi bir karara çevirir. Saklama politikası eski dönemleri arşive taşır ve üç şey
ölçülür: sıcak katmanda kalan dosya ile maliyet, arşivden okumanın bedeli, ve geriye dönük olarak
**hangi sorunun artık yanıtlanamadığı**. Üçüncüsü asıl bulgudur; ilk ikisi kazançtır ve tek
başlarına kararı hep aynı yöne çevirir.

- **AM56.** Kaynak, tüketim satırları, sıcak katman ve arşiv **kurgudur** ve ders içinde üretilir.
  Hiçbir ambar, göl, bulut servisi ya da sorgu motoru çağrılmaz. Tohum 20260218.
- **AM57.** **Saklama penceresi (retention window)** son N dönemi sıcak katmanda tutar. Sıcak
  katman `donem`+`bolge` bölümlemesiyle yazılır ve sorgu iki sütun okur; ikisi de önceki iki derste
  ölçüldü, burada sabit tutulur.
- **AM58.** **Arşivleme (archiving)** silme değildir: satırlar kalır ama **başka bir çözünürlükte**
  kalır. Arşiv onları tek dosyada `bolge` ile `donem` toplamına indirger, abone ve tip kırılımı
  taşınmaz; dersin bütün kayıp sayıları bu seçime bağlıdır.
- **AM59.** Arşiv girişi üç hücredir: bölge, dönem, toplam. **Arşiv sabiti 600**, sıcak katmanın
  dosya sabitinin beş katıdır; ikisi de seçimdir.
- **AM60.** Saklama ve yaşam süresi yordamı Bulut Bilişim müfredatındaki Bulutta Depolama ve Veri
  kursunda ölçüldü; **tekrarlanmaz**. Silmenin geriye dönük denetime etkisi Veri Mühendisliğine
  Giriş kursundaki Veri Yönetişimi dersinden **girdi** alınır: altı dönemlik pencere altı dönem
  silerken denetlenemez dönemi **1'den 7'ye** çıkarıyordu.

## Arşive Taşımanın Kazandırdığı

Aşağıdaki blok sıcak pencereyi on iki dönemden bire daraltır; her adımda kalan dosyayı, anahtar
dışı süzgeçli sorgunun maliyetini, arşivin büyüklüğünü ve on iki dönemlik bölge toplamının uçtan
uca maliyetini basar.

```python
# KURGUDUR. Olcum aginin sayac okumalari , tuketim satirlari , sicak katman ve
# arsiv ders icinde uretilir; hicbir ambar , gol , bulut servisi ya da sorgu
# motoru cagrilmaz.
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)]
SICAK_SABIT = 120          # sicak katmanda bir dosyaya dokunmanin sabit bedeli
ARSIV_SABIT = 600          # arsivde bir dosyaya dokunmanin sabit bedeli , bir secim
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 satirlar():
    # Hattan cikan tuketim satirlari. Saglam kaynakta ayikla ve tekille satir
    # dusurmedigi icin tuketim dogrudan kaynaktan , donem farkiyla hesaplanir.
    ham = []
    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)
            ham.append({"abone": ab, "donem": d, "bolge": a["bolge"], "tip": a["tip"],
                        "endeks": e, "birim": "m3"})
    tablo, cikti = {(k["abone"], k["donem"]): k for k in ham}, []
    for k in ham:
        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 yaz(kayitlar, bolumleme=()):
    duzen = {}
    for k in kayitlar:
        duzen.setdefault(tuple(k[a] for a in bolumleme), []).append(k)
    return duzen


def sorgu(duzen, bolumleme, secilen, suzgec=None):
    # Anahtardaki alan dosya budar , anahtar disindaki budamaz.
    suzgec = {} if suzgec is None else suzgec
    budayan = {a: v for a, v in suzgec.items() if a in bolumleme}
    dosya, hucre = 0, 0
    for anahtar, kayit in duzen.items():
        if budayan:
            es = dict(zip(bolumleme, anahtar))
            if any(es[a] != v for a, v in budayan.items()):
                continue
        dosya += 1
        hucre += len(kayit) * len(secilen)
    return {"dosya": dosya, "hucre": hucre, "maliyet": dosya * SICAK_SABIT + hucre}


def arsivle(kayitlar):
    # Satirlar tek dosyada bolge x donem toplamina iner; abone ve tip tasinmaz.
    ozet = {}
    for k in kayitlar:
        ozet[(k["bolge"], k["donem"])] = ozet.get((k["bolge"], k["donem"]), 0) + k["m3"]
    return ozet


BOL = ("donem", "bolge")
SEC = ("bolge", "m3")
TUM = satirlar()
print(f"hattan cikan satir {len(TUM)} , tuketim tasiyan donem"
      f" {len(set(k['donem'] for k in TUM))} , sicak sabit {SICAK_SABIT} ,"
      f" arsiv sabiti {ARSIV_SABIT}")
print("\npencere  sicak satir  sicak dosya   B sicak  arsiv satir  ozet giris"
      "  arsiv mal   12 donem toplami")
for p in (12, 9, 6, 3, 1):
    tut = set(DONEM[len(DONEM) - p:])
    sicak = [k for k in TUM if k["donem"] in tut]
    soguk = [k for k in TUM if k["donem"] not in tut]
    d = yaz(sicak, BOL)
    b = sorgu(d, BOL, SEC, {"tip": "isyeri"})
    ozet = arsivle(soguk)
    # Arsiv tek dosyadir , giris basina uc hucre: bolge , donem , toplam.
    am = ARSIV_SABIT + 3 * len(ozet) if soguk else 0
    print(f"{p:>7}  {len(sicak):>11}  {len(d):>11}  {b['maliyet']:>8}  {len(soguk):>11}"
          f"  {len(ozet):>10}  {am:>9}  {sorgu(d, BOL, SEC)['maliyet'] + am:>18}")
```

```
hattan cikan satir 2200 , tuketim tasiyan donem 11 , sicak sabit 120 , arsiv sabiti 600

pencere  sicak satir  sicak dosya   B sicak  arsiv satir  ozet giris  arsiv mal   12 donem toplami
     12         2200           55     11000            0           0          0               11000
      9         1800           45      9000          400          10        630                9630
      6         1200           30      6000         1000          25        675                6675
      3          600           15      3000         1600          40        720                3720
      1          200            5      1000         2000          50        750                1750
```

İlk satır bir önceki dersin bıraktığı yerdir: sıcak katman 55 dosya taşır, anahtar dışı süzgeçli
sorgu **11000** öder. Aşağı inen her satır bir dönemi çıkarır ve maliyeti tam **1000** birim
düşürür — bir dönem beş dosya ile 400 hücredir.

Altıncı sütun sürprizdir: arşiv büyüdükçe maliyeti **630, 675, 720, 750** olarak neredeyse yerinde
sayar, çünkü arşive giden her dönem 200 satır götürüp yalnızca **5 giriş**, yani 15 hücre bırakır.
Son sütun bu ikisinin toplamıdır ve beklentiyi tersine çevirir: **arşivlendikçe tam tarihli sorgu
ucuzlar** — bölge toplamı arşivsiz **11000**, altı dönem arşivlendiğinde **6675**, bir dönem
dışında her şey arşivlendiğinde **1750** eder. Arşiv yavaş değil, **önceden toplanmış** bir
katmandır.

Karar iki sabite de duyarlıdır, ama ayrı biçimde. Arşiv sabitinin başabaş değeri **985**'tir: bir
dönemi arşivden okumak sabit artı on beş hücre, sıcak katmandan okumak **1000** birimdir. Sıcak
katmanın dosya sabiti ise **yönü değiştirmez** — bir dönemi çıkarmak sorgudan beş dosya ile 400
hücre siler, arşive on beş hücre ekler; sabit 120'de kazanç 985, sabit 0'da bile 385'tir. Yönü
belirleyen indirgemenin varlığı, büyüklüğü belirleyen 120 seçimidir.

## Arşivin Kapattığı Soru

Bu sütunlar yalnız kazanç gösterir ve tek başlarına pencereyi bire kadar daraltmayı önerir.
Aşağıdaki blok bedeli sayar.

```python
# Bu blok ilk bloktaki satirlar() , yaz() , sorgu() , arsivle() , TUM , BOL ve SEC
# tanimlarini surdurur. Pencere alti donem.
PENCERE = 6
TUT = set(DONEM[len(DONEM) - PENCERE:])
SICAK = [k for k in TUM if k["donem"] in TUT]
OZET = arsivle([k for k in TUM if k["donem"] not in TUT])
SICAK_DONEM = sorted(set(k["donem"] for k in SICAK))
ARSIV_DONEM = sorted(set(d for _, d in OZET))
KIRILIM = {"bolge": ("bolge",), "tip": ("tip",), "abone": ("abone",),
           "bolge+tip": ("bolge", "tip")}


def toplam(kayitlar, alanlar):
    t = {}
    for k in kayitlar:
        ad = tuple(k[a] for a in alanlar)
        t[ad] = t.get(ad, 0) + k["m3"]
    return t


print(f"pencere {PENCERE} donem , sicak donem {len(SICAK_DONEM)} ,"
      f" arsiv donemi {len(ARSIV_DONEM)}")
print("\nkirilim     kova  sicaktan  arsivden  yanitlanan donem  kapali donem  kapali kova")
for ad, alanlar in KIRILIM.items():
    kova = len(toplam(TUM, alanlar))
    arsivden = len(ARSIV_DONEM) if set(alanlar) <= {"bolge"} else 0
    yanit = len(SICAK_DONEM) + arsivden
    kapali = len(SICAK_DONEM) + len(ARSIV_DONEM) - yanit
    print(f"{ad:<11} {kova:>5}  {len(SICAK_DONEM):>8}  {arsivden:>8}  {yanit:>16}"
          f"  {kapali:>12}  {kapali * kova:>11}")

karma = {b: v for (b,), v in toplam(SICAK, ("bolge",)).items()}
for (b, _), v in OZET.items():
    karma[b] = karma.get(b, 0) + v
print(f"\nbolge toplami , tam veri ile sicak+arsiv birebir ayni mi:"
      f" {toplam(TUM, ('bolge',)) == {(b,): v for b, v in karma.items()}}")
tam, sic = toplam(TUM, ("tip",))[("isyeri",)], toplam(SICAK, ("tip",))[("isyeri",)]
print(f"isyeri toplami , on bir donem {tam} ; yalniz sicak katmandan {sic} ;"
      f" gorunmeyen {tam - sic} m3")
```

```
pencere 6 donem , sicak donem 6 , arsiv donemi 5

kirilim     kova  sicaktan  arsivden  yanitlanan donem  kapali donem  kapali kova
bolge           5         6         5                11             0            0
tip             2         6         0                 6             5           10
abone         200         6         0                 6             5         1000
bolge+tip      10         6         0                 6             5           50

bolge toplami , tam veri ile sicak+arsiv birebir ayni mi: True
isyeri toplami , on bir donem 29932 ; yalniz sicak katmandan 16818 ; gorunmeyen 13114 m3
```

İlk satır arşivin doğru yaptığı şeydir: bölge kırılımı **on bir dönemin tamamında** yanıtlanır ve
sıcak katmanla arşivin toplamı tam veriyle **birebir aynıdır**. Arşiv yaklaşıklık değil, kendi
çözünürlüğünde kesindir.

Kalan üç satır kaybı verir. `tip`, `abone` ve `bolge`+`tip` yalnız **altı dönemde** yanıtlanır,
beş dönem için **hiç** yanıtlanamaz; kapalı kova sırasıyla **10, 1000 ve 50**'dir. Maliyet bu
satırlarda tanımsızdır, çünkü cevap hiçbir bedele okunamaz: bir düzen bazı soruları pahalı değil
**imkânsız** kılar.

Saklamanın iki biçimi burada ayrılır. Silme **dönem** kaybettirir: önceki kurs altı dönemlik
pencerenin denetlenemez dönemi 1'den 7'ye çıkardığını ölçtü. Arşivleme **sütun** kaybettirir:
hiçbir dönem yok olmaz, beş dönem üç kırılımından ikisini bırakır. Biri zaman, öbürü kırılım
eksenini keser.

Son satır dersin en tehlikeli sayısıdır. Tip kırılımı arşivde yoktur ama sıcak katmanda vardır;
korumasız bir sorgu hata vermez, elinin altındakini toplar ve işyeri toplamını **29932 yerine
16818** döndürür. **13114 metreküp** uyarısız görünmez kalır: sorgu yanlış yazılmamış, veri
bozulmamış, hiçbir denetim ateşlememiştir. Yanıt **daha küçük bir soruya** aittir; iki sorunun
sözcükleri aynıdır.

## Özet

- Pencere bir dönem daraldığında anahtar dışı süzgeçli sorgu tam **1000** birim ucuzlar: 11000'den
  altı dönemlik pencerede **6000**'e iner.
- Arşiv önceden toplanmış olduğu için ucuzdur: her dönem 200 satır götürüp **5 giriş** bırakır, on
  iki dönemlik bölge toplamı **11000'den 6675'e** iner, başabaş arşiv sabiti **985**'tir.
- Kayıp çözünürlüktedir: bölge kırılımı tam veriyle birebir aynı kalır ama `tip`, `abone` ve
  `bolge`+`tip` beş dönem için hiç yanıtlanamaz (kapanan kova **10, 1000, 50**); silme dönem
  kaybettirir, arşivleme sütun.
- Korumasız bir tip sorgusu hata vermeden eksik yanıt verir: işyeri toplamı **29932 yerine 16818**
  çıkar.

## Kurs Kapanışı

Satırlar ortak birim taşımaz; her satırın **hangi ölçütle** okunduğu ders adının yanındadır.
Parantezdeki fark düzenli kurulum eksi düzensiz tabandır: **eksi ucuzlama, artı pahalılaşma**.

| Ders | Düzensiz taban | Düzenli kurulum | Bedel |
|---|---|---|---|
| `depolama-yaklasimlari/01` — dönem sorgusunun maliyeti | bölümlemesiz ve satırlı, 15400 hücre, **15520** | `donem` bölümlü ve sütunlu, 400 hücre, **520** (**−15000**) | anahtar dışı süzgeçte 5720 (**+1200**); şema kapısı 400 satırı atar, ölçümleri sağlamdır |
| `depolama-yaklasimlari/02` — dönem sorgusunun maliyeti | ham göl, 14400 hücre, **14520** | ambar, 400 hücre, **520** (**−14000**) | göl yazmada 1000 hücre kazanır, tek sorguda 14000 geri öder; iki tüketici 48004 ve 58454 m3 bulur |
| `depolama-yaklasimlari/03` — yakalanan bozulma sınıfı ve saklanan hücre | dayatmasız düzenek **0/6**, gecikme tanımsız, 14400 hücre | okumada dayatan düzenek **6/6**, ortalama 1,33 aşama (**+6**) | saklanan hücre **29800**; alan adı değişiminde 1800 yerine 2200 satır, `birim_degisti` hiçbir kapıya takılmaz |
| `depolama-yaklasimlari/04` — üç soruluk kümenin maliyeti | bölümlemesiz ambar **13.560** | iki pazar **2.580** (**−10.980**) | 3.322 fazladan satır, satır başına 2,51 kopya; ayrışan tazelemede 126 çift, aynı soruya 4.707 ile 5.340 |
| `depolama-yaklasimlari/05` — karar veren taraf / dokunulan düzen, altı soruluk karışım | merkezî **1/1**, **3.120** | veri örgüsü **1/5**, **2.000** (**−1.120**) | veri ağı 5/5 ve **6.280** (**+3.160**); ölçülmemiş anahtar tek başına 2.450 |
| `depolama-yaklasimlari/06` — beş aramada bakılan giriş | katalogsuz **295** | katalogla **29** (**−266**) | bayat katalogda 406'ya karşı 251; iki arama katalogsuzdan pahalı biter (129/122, 104/100) |
| `analitik-modelleme/01` — sorgu maliyeti ve saklanan hücre | düz tablo, 15400 hücre, **4520** | olgu ve iki boyut, 7236 hücre, **5040** (**+520**) | birleştirme 0'dan **2200**'e, sonuç aynı; bölge adı düzeltmesi 506 yerine 46 satır |
| `analitik-modelleme/02` — sorgu maliyeti ve birleştirme | yıldız: 2200 birleştirme, 212 boyut satırı, **5040** | kar tanesi: 4400, 217, **5170** (**+130**) | beş satır için birleştirme ikiye katlanır, sonuç aynı; tek nitelikte 10 hücre kaybı, altıda 965 kazanç |
| `analitik-modelleme/03` — işyeri toplamı (m3) ve maliyet | üzerine yazan boyut **35893**, 200 satır, **7240** | tarihçe tutan boyut **33145**, 2200 satır, **13440** (**+6200**) | **2748 m3 yanlış kovada**, kovaların toplamı 58454'te aynı, dört denetim yeşil |
| `analitik-modelleme/04` — iki sütunluk sorgunun okuduğu hücre | satırlı, 1400 hücre, **1520** | sütunlu, 400 hücre, **520** (**−1000**) | fark yedinci sütunda **0**; sıkıştırmayla yedi sütun 851'e karşı 1400; bölge sıralaması `m3` koşusunu 196'dan 200'e çıkarır |
| `analitik-modelleme/05` — anahtar dışı süzgecin maliyeti | bölümlemesiz **4520** | `donem`+`bolge` **11000** (**+6480**) | farkın tamamı dosya sabitinin 54 kez fazladan ödenmesi; budayan sorguda hücre 400 sabitken maliyet 520, 1000, 1600 |
| `analitik-modelleme/06` — on iki dönemlik bölge toplamı | arşivsiz, 55 dosya, **11000** | altı dönemlik pencere, 30 dosya, **6675** (**−4325**) | üç kırılım beş dönem için kapanır (10 / 1000 / 50 kova); korumasız sorgu 29932 yerine **16818** |

Tablo tek bir kuralın on iki kez yazılmasıdır. **Bir depolama düzeninin sayısı sakladığı satır
değil, bir sorgunun ona dokunmak için ödediğidir; hangi sorgu için seçildiği yazılmayan düzen
ölçülmemiş sayılır.** İlk sütundaki ölçüt adı kuralın kendisidir: aynı 2200 satır on iki kez
saklandı ve on iki ayrı sayı verdi, hiçbiri verinin büyüklüğünden gelmedi.

**İkinci iddia aynı tablodan okunur: düzen de bozar.** Artı işaretli satırlar bunlardır.
`analitik-modelleme/05` en açığıdır: anahtar dışı süzgeçte **+6480** ve farkın tamamı dosya
sabitidir; aynı derste budayan sorguda bile hücre 400'de dururken maliyet üç katına çıkar.
`depolama-yaklasimlari/01` aynı şeyi küçük ölçekte (**+1200**), `/05` dağıtık kurulumda
(**+3.160**) yazar, `/03`'te altı sınıfı yakalamak saklanan hücreyi 14400'den 29800'e çıkarır.
`analitik-modelleme/01` ve `/02` ayrımın ve normalleştirmenin okumaya yazdığı **+520** ile
**+130**'u taşır, `/04`'te bir sorgu için seçilen sıralama başka bir sütunu sıkıştırmasız değerine
geri iter. `depolama-yaklasimlari/04`'te pazarın bölge kazancı sıfır, `/06`'da bayat katalog iki
aramayı katalogsuzdan pahalı bitirir.

**Üçüncü iddia bir satırda adıyla durur: düzen cevabı sessizce yanlışlar.**
`analitik-modelleme/03`'te tarihçe tutmayan boyut sorguyu yavaşlatmaz, işyeri toplamını **33145
yerine 35893** yapar; **2748 metreküp** yanlış kovaya gider, kovaların toplamı 58454'te aynı kalır,
dört denetim yeşildir. İki yankısı vardır: `/06`'da korumasız sorgu 29932 yerine 16818 döndürür,
`depolama-yaklasimlari/04`'te aynı soru iki adreste 4.707 ve 5.340 verir. Üçünde de hata yoktur,
yalnızca cevap vardır.

On iki derste verinin nerede ve hangi düzende durduğu ölçüldü. Bu düzeni **kimin, ne zaman ve
hangi sırayla** doldurduğu hiç sorulmadı; dosyalar hep yazılmış, boyutlar hep hazır, arşiv hep
taşınmış kabul edildi. Bir adım başarısız olduğunda geri kalanın ne yapacağı, aynı adımın ikinci
kez koşturulmasının satırları çoğaltıp çoğaltmadığı ve bir hattın **kendini yeniden
çalıştırabilmesinin** bedeli sayılmadı. Sonraki kurs düzeni değil, düzeni dolduran sırayı ölçüm
nesnesine dönüştürür.
