TTL politikalarıyla veri saklamayı yönetme

Bu sayfada, geçerlilik süresi (TTL) politikalarını yapılandırmak için Google Cloud Platform Console ve Google Cloud CLI'ın nasıl kullanılacağı açıklanmaktadır. Bu sayfayı okumadan önce Cloud Firestore veri modelini anlamanız gerekir.

Geçerlilik süresine genel bakış

Veri tabanlarınızdaki eski verileri otomatik olarak kaldırmak için TTL politikalarını kullanın. TTL politikası, belirli bir alanı belirli bir koleksiyon grubundaki dokümanlar için geçerlilik bitiş süresi olarak belirler. TTL ile eski verileri temizleyerek depolama maliyetlerini azaltabilirsiniz. Veriler genellikle geçerlilik bitiş tarihinden sonraki 24 saat içinde silinir.

Fiyatlandırma

TTL silme işlemleri, belge silme maliyetlerinize dahil edilir. Silme işlemlerinin fiyatlandırması için Cloud Firestore fiyatlandırmasına bakın.

Sınırlar ve kısıtlamalar

  • Koleksiyon grubu başına yalnızca bir alan, TTL alanı olarak işaretlenebilir.
  • Toplam 200 alan düzeyinde yapılandırmaya izin verilir. Bir alan yapılandırması, aynı alan için birden fazla yapılandırma içerebilir. Örneğin, tek alanlı dizine ekleme muafiyeti ve aynı alandaki bir TTL politikası, sınıra dahil olan tek bir alan yapılandırması olarak sayılır.
  • Datastore modunda Firestore müşterileri için TTL, Varlık Gruplarıyla İyimser eşzamanlılık moduyla kullanılamaz. Eşzamanlılık modunu İyimser eşzamanlılık modu olarak değiştirmeyi deneyin.

TTL silme

TTL odaklı silme işleminin aşağıdaki temel davranışlarına dikkat edin:

  • TTL yoluyla silme işlemi anlık bir süreç değildir. Süresi dolan belgeler, TTL işlemi tarafından silene kadar sorgularda ve arama isteklerinde görünmeye devam eder. TTL, silme işlemleri için toplam sahip olma maliyetinin azaltılması avantajına yönelik olarak takas silme zaman çizelgelerini uygular. Veriler genellikle geçerlilik bitiş tarihinden sonraki 24 saat içinde silinir.

  • TTL aracılığıyla bir belge silindiğinde, söz konusu belgenin altındaki alt koleksiyonlar silinmez.

  • Mevcut bir koleksiyon grubuna TTL politikası uygulandığında, süresi dolmuş tüm veriler yeni TTL politikasına göre toplu olarak silinir. Bu toplu silme işleminin anlık olmadığını ve ilgili koleksiyon grubunda ne kadar veri olduğuna bağlı olduğunu unutmayın.

  • Bir belgenin geçerlilik süresi geçmişteyse koleksiyona yeni bir TTL politikası eklerseniz belge, TTL politikasının ayarlanması tamamlandıktan ve etkin hale gelmesinden sonraki 24 saat içinde silinir.

  • TTL, geçerlilik zaman damgalarıyla aynı sırada olan dokümanları silmez.

  • Silme işlemleri işlemsel olarak yapılmaz. Geçerlilik süresi aynı olan belgelerin aynı anda silinmesi gerekmez. Bu davranışa ihtiyacınız varsa silme işlemlerini bir istemci kitaplığı kullanarak gerçekleştirin.

  • Cloud Firestore, geçerlilik bitiş tarihini belirlemek için her zaman en son TTL alanını dikkate alır. Örneğin, süresi dolmuş ancak henüz silinmemiş bir dokümanın TTL alanı daha sonraki bir tarihe güncellenirse dokümanın süresi dolmaz ve yeni tarih kullanılır.

  • TTL, diğer veritabanı etkinlikleri üzerindeki etkiyi en aza indirmek için tasarlanmıştır. TTL ile sağlanan silme işlemleri daha düşük öncelikli olarak ele alınır. TTL odaklı silmelerden kaynaklanan trafik artışlarını azaltmak için başka stratejiler de vardır.

  • TTL aracılığıyla silme işlemi, tüm etkin anlık görüntü dinleyicilerini çağırır ve Cloud Functions Cloud Firestore tetikleyicilerini tetikler.

TTL alanları ve dizinleri

Bir TTL alanı dizine eklenebilir veya dizinden çıkarılabilir. Ancak, TTL alanı bir zaman damgası olduğundan, alanın dizine eklenmesi daha yüksek trafik oranlarında performansı etkileyebilir. Bir zaman damgası alanını dizine eklemek, en iyi uygulamalara aykırı olan hotspot'lar oluşturabilir. Hotspot'lar, dar bir belge aralığı için yüksek okuma, yazma ve silme hızlarına sahiptir.

Cloud Firestore, varsayılan olarak tüm alanlar için tek alanlı bir dizin oluşturur. Bir TTL alanında dizinleri devre dışı bırakmak için tek alanlı dizin muafiyeti oluşturabilirsiniz.

İzinler

TTL politikasını yapılandıran ana hesap, projede aşağıdaki izni gerektirir:

  • TTL politikalarını görüntülemek için datastore.indexes.list ve datastore.indexes.get izinleri gerekir.
  • TTL politikalarının değiştirilmesi için datastore.indexes.update izni gerekir.
  • TTL işlemlerinin durumunu kontrol etmek için datastore.operations.list ve datastore.operations.get gerekir.

Bu izinleri atayan roller için Cloud Firestore Kimlik ve Erişim Yönetimi rolleri sayfasına göz atın.

Başlamadan önce

TTL politikalarını yönetmek için gcloud KSA'yı kullanmadan önce bileşenleri mevcut en son sürüme güncellemek için gcloud components update komutunu kullanın:

gcloud components update

Bir TTL politikası oluşturun

TTL politikası oluşturduğunuzda koleksiyon grubundaki dokümanlar için geçerlilik süresi olarak bir doküman alanı atarsınız.

TTL, silinmeye uygun dokümanları tanımlamak için belirtilen bir alanı kullanır. Bu TTL alanı, Date and time türünde olmalıdır. Mevcut bir alanı seçebilir veya daha sonra eklemeyi planladığınız bir alanı belirtebilirsiniz.

TTL alanının değerini ayarlamadan önce aşağıdakileri göz önünde bulundurun:

  • TTL alanının değeri gelecekteki bir zaman, şimdi veya geçmişteki bir zaman olabilir. Değer geçmişte bir zamansa belge hemen silinebilir. Örneğin, expireAt alanıyla bir TTL politikası oluşturabilirsiniz. Daha sonra bu politikayı mevcut dokümanlara ekleyebilirsiniz.

  • Başka bir veri türünün kullanılması veya TTL alanı değerinin ayarlanmaması, ilgili doküman için TTL'nin devre dışı bırakılmasına neden olur.

Bir TTL politikası oluşturmak için şu adımları izleyin:

Google Cloud Console

  1. Google Cloud Platform Console'da Veritabanları sayfasına gidin.

    Veritabanlarına git

  2. Veritabanı listesinden gerekli veritabanını seçin.

  3. Gezinme menüsünden Geçerlilik süresi'ni tıklayın.

  4. Politika Oluştur'u tıklayın.

  5. Bir koleksiyon grubu adı ve zaman damgası alanı adı girin.

  6. Oluştur'u tıklayın.

Konsol Geçerlilik süresi sayfasına döner. İşlem başarıyla başlarsa sayfa, TTL politikaları tablosuna bir giriş ekler. Başarısız olursa sayfada bir hata mesajı görüntülenir.

gcloud

TTL politikası yapılandırmak için firestore fields ttls update komutunu kullanın. gcloud KSA'nın işlemin tamamlanmasını beklemesini önlemek için --async işaretini ekleyin.

 gcloud firestore fields ttls update
  ttl_field --collection-group=collection_group_name
  --enable-ttl 

TTL politikası etkinleştirme süresi

Boş bir veritabanında bile, bir TTL politikasının etkinleştirilmesi on dakika veya daha uzun sürebilir. Bir işlemi başlattıktan sonra terminalin kapatılması işlemi iptal etmez.

TTL politikalarını görüntüleyin

TTL politikalarını ve durumlarını görüntülemek için şu adımları uygulayın:

Google Cloud Console

  1. Google Cloud Platform Console'da Veritabanları sayfasına gidin.

    Veritabanlarına git

  2. Veritabanı listesinden gerekli veritabanını seçin.

  3. Gezinme menüsünden Geçerlilik süresi'ni tıklayın.

Konsol, veritabanınız için TTL politikalarını listeler ve her politikanın durumunu içerir.

gcloud

TTL politikası yapılandırmak için firestore fields ttls list komutunu kullanın. Aşağıdaki komut, tüm TTL politikalarını listeler.

   gcloud firestore fields ttls list
   

Belirli bir koleksiyon grubu altındaki TTL politikalarını listelemek için aşağıdakileri kullanın:

   gcloud firestore fields ttls list  --collection-group=collection_group_name
   

İşlem ayrıntılarını göster

CREATING durumundaki bir TTL politikası hakkında daha fazla ayrıntı görüntülemek için gcloud CLI'ı kullanabilirsiniz.

Çalışan ve yakın zamanda tamamlanan tüm işlemleri görmek için operations list komutunu kullanın:

gcloud firestore operations list

Yanıt, işlemin ilerlemesiyle ilgili bir tahmin içerir.

TTL politikasını devre dışı bırakma

Bir TTL politikasını devre dışı bırakmak için şu adımları uygulayın:

Google Cloud Console

  1. Google Cloud Platform Console'da Veritabanları sayfasına gidin.

    Veritabanlarına git

  2. Veritabanı listesinden gerekli veritabanını seçin.

  3. Gezinme menüsünden Geçerlilik süresi'ni tıklayın.

  4. TTL politikası tablosunda TTL politikasının satırını bulun. Bu tablo satırında Sil (çöp kutusu) düğmesini tıklayın.

  5. Sil'i tıklayarak işlemi onaylayın.

Konsol Geçerlilik süresi sayfasına döner. Başarıyla gerçekleştirilen Cloud Firestore, TTL politikasını tablodan kaldırır.

gcloud

1. TTL politikası yapılandırmak için firestore fields ttls update komutunu kullanın. gcloud KSA'nın işlemin tamamlanmasını beklemesini önlemek için --async işaretini ekleyin.

   gcloud firestore fields ttls update ttl_field --collection-group=collection_group_name --disable-ttl
   

TTL silme işlemlerini izleme

TTL odaklı silme işlemleriyle ilgili metrikleri görüntülemek için Cloud Monitoring'i kullanabilirsiniz. Cloud Firestore, TTL için aşağıdaki metrikleri sunar:

Metrik türü Metrik adı Metrik açıklaması
firestore.googleapis.com/document/ttl_deletion_count Canlı kalma süresi silme sayısı

TTL politikaları tarafından silinen dokümanların toplam sayısı.

firestore.googleapis.com/document/ttl_expiration_to_deletion_delays Geçerlilik süresinin dolmasından silme gecikmelerine kadar geçen süre

Bir dokümanın TTL politikası kapsamında süresinin dolması ile gerçekten silinmesi arasında geçen süre.

Cloud Firestore metrikleriyle kontrol paneli oluşturmak için özel kontrol panelini yönetme ve kontrol paneli widget'ları ekleme bölümüne bakın.