yeke.io · dokümanlar

Saklama ve Arşiv

Saklama süreleri, süresi dolan kayıtların ne zaman silineceğini belirler ve her katmanda kullanılabilir. Enterprise ve PostgreSQL ile bu kayıtları silmeden önce arşivleyebilirsiniz.

Saklama süreleri

Community dahil her katmanda çalışır: kalem kalem, bit değişmeden.

Bir temizleme işlemi düzenli aralıklarla süresi geçen kayıtları siler. Süre üç ayrı ortam değişkeniyle ayarlanır ve her biri farklı bir veri sınıfını kapsar:

DeğişkenVarsayılanKapsam
YEKE_OPS_RETENTION_DAYS90 günÜç tabloyu birden sürer: operasyon kayıtları, oturumlar (sessions) ve bildirim hook’u teslim kuyruğu (yalnız teslim edilmiş/ölü satırlar).
YEKE_CHAT_RETENTION_DAYS30 günSohbet oturumu ve mesajları: operasyon saklamasından bilinçli olarak kısa, çünkü sohbet plandan çok daha fazla serbest metin taşır.
YEKE_AI_EGRESS_RETENTION_DAYS365 günAI egress kaydı, sohbetten bilinçli olarak uzun: "bu cluster'ın verisi ne zaman nereye gitti" sorusu, o turun konuşması silindikten sonra da cevaplanabilmeli.

SQLite modunda ayrıca cluster başına 1000 operasyon kaydı tavanı vardır — bu tavan süreden bağımsız çalışır ve tek dosyalık veritabanını büyümekten korur. PostgreSQL modunda bu tavan koşmaz; boyut yönetimi kurumun DBA disiplinidir.

Denetim izi kapsam dışı

Silinen tek şey silindiği için sessizce kaybolmaz.

Bu üç süre operation_events denetim kayıtlarını kapsamaz. Denetim izi append-only’dır ve temizleme işlemiyle silinmez. Operasyon kaydı silinse de kimin, ne zaman, hangi kimlikle işlem yaptığı görülebilir.

Arşiv nedir

Enterprise retention-archive özelliği, yalnız PostgreSQL modunda.

YEKE_RETENTION_ARCHIVE=1 verildiğinde, saklama süresi dolan operasyon satırları silinmeden önce aynı veritabanındaki archived_operations tablosuna kopyalanır. Bu tablo deleted_at alanına göre aylık partition'lıdır — kurumun kendi DBA'sı eski ayları DETACH PARTITION ile ayrı bir yere taşıyabilir ya da silebilir.

Silme ve arşivleme tek bir transaction içinde yapılır: arşive yazma başarısız olursa silme de gerçekleşmez, bir sonraki süpürme turunda yeniden denenir. Sessiz veri kaybı yolu yapısal olarak yoktur.

SQLite modunda bu env açık bir hatadır

YEKE_DB_URL verilmemişse (yani SQLite kullanılıyorsa) YEKE_RETENTION_ARCHIVE=1 vermek core'u açılışta durdurur — sessizce yok sayılmaz. Aynı dosyaya arşivlemek, 1000 kayıt tavanının koruduğu şeyi (dosya boyutu) geri büyütürdü.

Arşivin kapsamı

Yalnız operations tablosu; diğer sınıflar tek tek değerlendirildi.

Arşivlenen satır, plan gövdesi (plan_json), redaksiyon yolları, snapshot zarfı ve durum/zaman alanlarının silinme anındaki hâlidir. Süpürücünün sildiği diğer veri sınıfları arşivlenmez:

  • Oturumlar (sessions). Kimlik olayları zaten denetim izinde ve o iz hiç silinmiyor.
  • Sohbet oturumu ve mesajları. Kısa saklama süresi bilinçli bir gizlilik kararıdır — serbest metin taşır; arşivlemek o kararla çelişirdi.
  • AI egress kaydı, bildirim hook’u teslim kuyruğu. Kalıcı iddiaları zaten kendi alanlarında ya da denetim izinde duruyor.

Geri okuma

Bir API ucu, bu sürümde bir ekran değil.

Arşivlenmiş kayıtlar GET /api/archive/operations ile okunur (yönetici yetkisi + retention-archive): clusterId ve zaman filtresiyle, sayfalı, salt-okuma. Bu sürümde bir arayüz ekranı yoktur — uç, "geçen yıl bu cluster'da ne uygulandı" türü bir uyum sorusunun API'den cevaplanabilmesi içindir. snapshots_enc arşivde de zarf olarak durur; açmak kurulumun kendi snapshot anahtarıyla mümkündür.

Silmenin denetlenebilirliği

Bir kaydın kaybolması bile izde görünür, Community dahil.

Her temizleme turu, tablo başına bir retention.swept özeti yazar. Özet; silinen satır sayısını, tarih aralığını ve arşiv açıksa arşivlenen satır sayısını içerir. Her satır için ayrı olay üretilmez.

Bu olay her katmanda yazılır, Community dahil; izin okunması her katmanda ücretsizdir ve "neyin silindiği" o okumanın bir parçasıdır. Lisans dondurulduğunda (frozen) arşiv sürmeye devam eder: frozen'da arşivsiz silmeye devam etmek veri kaybı üretirdi ve cezalandırdığı kişi müşterinin kendi denetçisi olurdu.

Sınırlar

Arşiv yalnız bir modda var; öteki modda bugünkü davranış aynen sürüyor.

  • Arşiv yalnız PostgreSQL modunda çalışır. SQLite modunda bugünkü davranış (süre bazlı silme + 1000 kayıt tavanı) hiç değişmiyor.
  • Kapsam yalnız operasyon kayıtlarıdır. Sohbet, AI egress ve oturum verisi arşivlenmez; kendi süreleriyle silinir.
  • Geri okuma bu sürümde API'dendir. Arşiv için bir arayüz ekranı yoktur.
  • Toplam disk yönetimi kurumun işidir. Arşiv açıkken silme kısa vadede yer açmaz: eski satır silinip yenisi arşive yazıldığı için autovacuum turuna kadar iki kez yer kaplar.

Arşivin ön koşulu PostgreSQL

Arşiv, HA ile aynı veritabanı bağlantısını paylaşır. Bağlantı şekli ve lisans kapısı PostgreSQL sayfasında.