TTL politikalarıyla veri saklamayı yönetme

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

Geçerlilik süresi (TTL)'ye genel bakış

TTL politikalarını kullanarak eski verileri veritabanlarınızdan otomatik olarak kaldırın. TTL politikası, belirli bir alanı belirli bir koleksiyon grubundaki dokümanların geçerlilik bitiş tarihi olarak belirler. TTL ile eski verileri temizleyerek depolama maliyetlerini azaltabilirsiniz. Veriler genellikle geçerlilik tarihinden sonraki 24 saat içinde silinir.

Fiyatlandırma

TTL silme işlemleri, doküman 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

  • Koleksiyon grubu başına yalnızca bir alanı TTL alanı olarak işaretleyebilirsiniz.
  • En fazla 1.000 alan düzeyi yapılandırmanız olabilir. Bir alan yapılandırması, aynı alan için birden fazla yapılandırma içerebilir. Örneğin, aynı alandaki tek alanlı bir dizin oluşturma muafiyeti ve bir TTL politikası, sınıra göre tek bir alan yapılandırması olarak sayılır.
  • Datastore modunda Firestore müşterileri için TTL, Optimistic With Entity Groups eşzamanlılık moduyla kullanılamaz. Eşzamanlılık modunu iyimser eşzamanlılık modu olarak değiştirmeyi deneyin.

TTL silme

TTL'ye dayalı silme işleminin aşağıdaki önemli davranışlarına dikkat edin:

  • TTL aracılığıyla silme işlemi anlık olarak gerçekleşmez. Süresi dolmuş belgeler, TTL işlemi bunları gerçekten silene kadar sorgularda ve arama isteklerinde görünmeye devam eder. TTL, silme işlemlerinde daha düşük toplam mülkiyet maliyeti avantajı için silme işlemlerinin zamanında yapılmasını göz ardı eder. Veriler genellikle geçerlilik tarihi sona erdikten sonraki 24 saat içinde silinir.

  • Bir dokümanın TTL aracılığıyla silinmesi, bu dokümanın altındaki alt koleksiyonları silmez.

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

  • Bir dokümanın geçerlilik süresi geçmişteyse ve koleksiyona yeni bir TTL politikası eklerseniz doküman, TTL politikasının kurulumu tamamlanıp etkinleştirildikten sonraki 24 saat içinde silinir.

  • TTL, belgeleri son kullanma zaman damgalarıyla aynı sırayla silmez.

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

  • Cloud Firestore, geçerlilik süresini 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 tarihle güncellenirse dokümanın süresi dolmaz ve yeni tarih kullanılır.

  • Cloud Firestore, bir dokümanın süresini yalnızca TTL alanı belirli değer türlerine ayarlandığında sona erdirir. Standard Edition veritabanlarında alan Date and time değerine ayarlanmalıdır. Enterprise sürümü veritabanlarında alan, Date and time değeri veya Date and time değeri içeren bir Array değeri olarak ayarlanmalıdır. Alanın boş bırakılması veya null gibi bir değere ayarlanması, geçerlilik sürelerinin belge bazında devre dışı bırakılmasına olanak tanır.

  • TTL, diğer veritabanı etkinlikleri üzerindeki etkiyi en aza indirecek şekilde tasarlanmıştır. TTL'den kaynaklanan silme işlemleri daha düşük öncelikli olarak ele alınır. TTL kaynaklı silme işlemlerinden kaynaklanan trafik artışlarını yumuşatmak için başka stratejiler de uygulanmaktadı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

TTL alanı dizine eklenebilir veya dizine eklenemeyebilir. Ancak TTL alanı bir zaman damgası olduğundan alanın dizine eklenmesi, daha yüksek trafik oranlarında performansı etkileyebilir. Zaman damgası alanının dizine eklenmesi, en iyi uygulamalara aykırı olan yoğun noktalar oluşturabilir. Sık erişilen noktalar, dar bir belge aralığında yüksek okuma, yazma ve silme oranlarıdır.

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

İzinler

TTL politikası 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 Identity and Access Management rolleri başlıklı makaleyi inceleyin.

TTL politikası oluşturma

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

TTL, silinmeye uygun dokümanları tanımlamak için belirtilen bir alanı kullanır. Standard sürümü veritabanlarında TTL alanı Date and time değerine ayarlanmalıdır. Enterprise sürümü veritabanları için Date and time değeri veya Date and time değeri içeren bir Array değeri olarak ayarlanmalıdır. Halihazırda mevcut olan bir alanı seçebilir veya daha sonra eklemeyi planladığınız bir alanı belirleyebilirsiniz.

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

  • TTL alan değeri gelecekteki, şu anki veya geçmişteki bir zaman olabilir. Değer geçmiş bir zamansa belge hemen silinmeye uygun hale gelir. Örneğin, expireAt alanını içeren bir TTL politikası oluşturabilir ve bu politikayı mevcut dokümanlara ekleyebilirsiniz.

  • Başka bir veri türü kullanmak veya TTL alan değerini ayarlamamak, ilgili doküman için TTL'yi devre dışı bırakır.

TTL politikası oluşturmak 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. 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 bir zaman damgası alanı adı girin.

  6. İsteğe bağlı: Geçerlilik bitiş tarihi farkı yapılandırın. Bir değer girin ve bir birim (gün, saat, dakika veya saniye) seçin. Varsayılan olarak, uzaklık 0'dır.

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

Konsol, Yaşam süresi sayfasına döner. İşlem başarıyla başlatılırsa sayfadaki TTL politikaları tablosuna bir giriş eklenir. 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'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

Geçerlilik bitişi farkıyla TTL'yi etkinleştirmek için --expiration-offset işaretini ekleyin:

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

expiration_offset yerine bir süre girin. Örneğin, 7 gün için 7d veya 24 saat için 24h. Bu işareti atlarsanız son kullanma tarihi farkı varsayılan olarak 0 olur.

TTL politikası etkinleştirme süresi

TTL politikasının etkinleştirilmesi en az on dakika veya daha uzun sürebilir. Bir işlemi başlattıktan sonra terminali kapatmak işlemi iptal etmez.

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

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. Veritabanları listesinden gerekli veritabanını seçin.

  3. Gezinme menüsünde Yaşam süresi'ni tıklayın.

Konsolda, veritabanınızın TTL politikaları listelenir ve her politikanın durumu gösterilir.

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örüntüleme

CREATING durumundaki bir TTL politikası hakkında daha fazla ayrıntı görüntülemek için gcloud CLI'yı 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ıyor.

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

Bir TTL politikasını devre dışı bırakmak 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. 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ı satırını bulun. Bu tablo satırında Sil (çöp kutusu) düğmesini tıklayın.

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

Konsol, Yaşam süresi sayfasına döner. Başarılı olursa, Cloud Firestore, tablodan TTL politikasını kaldırır.

gcloud

1. TTL politikası yapılandırmak için firestore fields ttls update komutunu kullanın. gcloud CLI'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'ye bağlı 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 Geçerlilik süresi silme sayısı

TTL politikaları tarafından silinen toplam belge sayısı.

firestore.googleapis.com/document/ttl_expiration_to_deletion_delays Yaşam süresi sona ermesinden silme işlemlerindeki gecikmelere kadar

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

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