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şken | Varsayılan | Kapsam |
|---|---|---|
YEKE_OPS_RETENTION_DAYS | 90 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_DAYS | 30 gün | Sohbet 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_DAYS | 365 gün | AI 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.