TTL politikalarıyla veri saklamayı yönetme

Bu sayfada, kullanım süresi (TTL) politikalarını yapılandırmak için Google Cloud Console ve Google Cloud CLI'nin 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 süresi olarak belirler. TTL ile eski verileri temizleyerek depolama maliyetlerini azaltabilirsiniz. Veriler genellikle son kullanma 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ı bölümüne bakın.

Sınırlar ve kısıtlamalar

  • Her koleksiyon grubu için 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, aynı alandaki tek alanlı dizine ekleme muafiyeti ve TTL politikası, sınıra doğru bir alan yapılandırması olarak sayılır.
  • Datastore modundaki Firestore müşterileri için TTL, Öğe Gruplarıyla Optimistic eşzamanlılık moduyla kullanılamaz. Eşzamanlılık modunu iyimser eşzamanlılık modu olarak değiştirmeyi düşünebilirsiniz.

TTL silme

TTL'ye dayalı 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 onları gerçekten silene kadar sorgularda ve arama isteklerinde görünmeye devam eder. TTL, silme işleminin zamanında yapılmasını silme işlemlerinin toplam sahip olma maliyetini düşürme avantajıyla takas eder. 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 toplama grubuna bir TTL politikası uygulanması, süresi dolan tüm verilerin yeni TTL politikasına göre toplu olarak silinmesine neden olur. Bu toplu silme işleminin de anında gerçekleşmediğini ve ilgili koleksiyon grubunda ne kadar veri bulunduğuna bağlı olduğunu unutmayın.

  • Bir dokümanın geçerlilik süresi geçmişse ve koleksiyona yeni bir TTL politikası eklerseniz doküman, TTL politikasının kurulumu tamamlayıp etkin hale gelmesinden sonraki 24 saat içinde silinir.

  • TTL, dokümanları geçerlilik bitiş zaman damgalarıyla aynı sırayla silmez.

  • Silme işlemleri işlemsel olarak yapılmaz. Aynı son kullanma süresine sahip dokümanlar aynı anda silinmez. 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ı kullanır. Örneğin, süresi dolmuş ancak henüz silinmemiş bir belgenin TTL alanı daha sonraki bir tarihle güncellenirse belgenin 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'ye dayalı silme işlemlerinden 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ü işleyicileri ve Cloud Functions Cloud Firestore tetikleyicilerini çağırır.

TTL alanları ve dizinler

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ığında yüksek okuma, yazma ve silme oranlarıdır.

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

İzinler

TTL politikasını yapılandıran asıl kullanıcının projede aşağıdaki izne sahip olması gerekir:

  • TTL politikalarını görüntülemek için datastore.indexes.list ve datastore.indexes.get izinleri gerekir.
  • TTL politikalarını değiştirmek 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 başlıklı makaleyi inceleyin.

Başlamadan önce

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

gcloud components update

TTL politikası oluşturma

TTL politikası oluşturduğunuzda, bir koleksiyon grubundaki dokümanların geçerlilik bitiş tarihi olarak bir doküman alanı belirlersiniz.

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

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şteki bir zamansa doküman hemen silinmeye uygun olur. Örneğin, expireAt alanını içeren bir TTL politikası oluşturabilir ve daha sonra bu politikayı mevcut belgelere 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 Console'da Veritabanları sayfasına gidin.

    Veritabanları'na gidin

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

  3. Gezinme menüsünde Yaşam 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. İşlem başarısız olursa sayfada bir hata mesajı gösterilir.

gcloud

TTL politikası yapılandırmak için firestore fields ttls update komutunu kullanın. gcloud CLI'nin 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 TTL politikasının etkinleştirilmesi on dakika veya daha uzun sürebilir. Terminali kapatmak, başlattığınız işlemi iptal etmez.

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

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

Google Cloud Console

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

    Veritabanları'na gidin

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

  3. Gezinme menüsünde Yaşam 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ını 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örüntüleme

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ıtta, işlemin ilerleme durumuyla ilgili bir tahmin yer alır.

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 Console'da Veritabanları sayfasına gidin.

    Veritabanlarına git

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

  3. Gezinme menüsünde Yaşam 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. İşlem başarılı olursa Cloud Firestore, TTL politikasını tablodan kaldırır.

gcloud

1. TTL politikasını yapılandırmak için firestore fields ttls update komutunu kullanın. gcloud CLI'nin 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'ye dayalı silme işlemleriyle ilgili metrikleri görüntülemek için Cloud Monitoring simgesini kullanabilirsiniz. Cloud Firestore, TTL için aşağıdaki metrikleri sağlar:

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 Süresi dolan öğelerin silinmesi için gecikme

Bir belgenin TTL politikası uyarınca geçerlilik süresinin dolduğu zaman ile belgenin gerçekten silindiği zaman arasında geçen süre.

Cloud Firestore metriklerinin yer aldığı bir kontrol paneli oluşturmak için özel kontrol panelini yönetme ve kontrol paneli widget'ları ekleme başlıklı makaleleri inceleyin.