Bu sayfada, Google Cloud Console ve Google Cloud CLI'yı kullanarak geçerlilik süresi (TTL) politikalarını nasıl yapılandıracağınız açıklanmaktadır. Bu sayfayı okumadan önce Cloud Firestore veri modelini anlamanız gerekir.
Geçerlilik süresine 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 belgelerin geçerlilik bitiş zamanı 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, 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 500 alan düzeyi yapılandırmasına izin verilir. Bir alan yapılandırması, aynı alan için birden fazla yapılandırma içerebilir. Örneğin, aynı alandaki tek alanlı dizin oluşturma 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, 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 düşünebilirsiniz.
TTL silme
TTL'ye dayalı silme işleminin aşağıdaki temel davranışlarına dikkat edin:
TTL aracılığıyla silme işlemi anlık olarak gerçekleşmez. Geçerliliği dolmuş belgeler, TTL işlemi bunları gerçekten silene kadar sorgularda ve arama isteklerinde görünmeye devam eder. TTL, silme işlemlerinde toplam sahip olma maliyetini düşürme avantajı için silme işlemlerinin zamanında yapılmasını sağlar. Veriler genellikle geçerlilik tarihi sona erdikten sonraki 24 saat içinde silinir.
TTL aracılığıyla silinen dokümanlar, bu dokümanın altındaki alt koleksiyonları silmez.
Mevcut bir toplama 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 söz konusu koleksiyon grubu için 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ırada silmez.
Silme işlemleri, işlemsel olarak yapılmaz. Aynı geçerlilik süresine sahip dokümanlar aynı anda silinmeyebilir. Bu davranışı istiyorsanız silme işlemlerini bir istemci kitaplığı kullanarak gerçekleştirin.
Cloud Firestore, geçerlilik bitimini belirlemek için her zaman en son TTL alanını dikkate alı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.
Cloud Firestore, bir dokümanın süresini yalnızca TTL alanı
Date and time
türüne ayarlandığında sona erdirir. Alan boş bırakılırsa veyanull
gibi bir değere ayarlanırsa geçerlilik süreleri belge bazında devre dışı bırakılabilir.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 değerlendirilir. TTL'ye bağlı silme işlemlerinden kaynaklanan trafik artışlarını yumuşatmak için başka stratejiler de uygulanı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 eklenemez. Ancak TTL alanı bir zaman damgası olduğundan alanın dizine eklenmesi, yüksek trafik hızlarında performansı etkileyebilir. Zaman damgası alanının dizine eklenmesi, en iyi uygulamalara aykırı olan yoğun noktalar oluşturabilir. Hotspot'lar, dar bir belge aralığında yüksek okuma, yazma ve silme oranlarıdır.
Cloud Firestore, varsayılan olarak tüm alanlar için tek alanlı bir dizin oluşturur. TTL alanı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
vedatastore.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
vedatastore.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'yı 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 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.
Bu TTL alanı Date and time
türünde olmalıdır. Hâlihazı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 doküman 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
Google Cloud Console'da Veritabanları sayfasına gidin.
Veritabanları listesinden gerekli veritabanını seçin.
Gezinme menüsünde Yaşam süresi'ni tıklayın.
İlke oluştur'u tıklayın.
Bir koleksiyon grubu adı ve zaman damgası alanı adı girin.
Oluştur'u tıklayın.
Konsol, Geçerlilik süresi sayfasına döner. İşlem başarıyla başlatılırsa sayfa, TTL politikaları tablosuna bir giriş ekler. 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
TTL politikası etkinleştirme süresi
Boş bir veritabanında bile TTL politikasının etkinleştirilmesi 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
Google Cloud Console'da Veritabanları sayfasına gidin.
Veritabanları listesinden gerekli veritabanını seçin.
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
TTL politikalarını belirli bir koleksiyon grubu altında 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 KSA'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
TTL politikasını devre dışı bırakmak için şu adımları uygulayın:
Google Cloud Console
Google Cloud Console'da Veritabanları sayfasına gidin.
Veritabanları listesinden gerekli veritabanını seçin.
Gezinme menüsünde Yaşam süresi'ni tıklayın.
TTL politikası tablosunda TTL politikası satırını bulun. Bu tablo satırında Sil (çöp kutusu) düğmesini tıklayın.
Sil'i tıklayarak işlemi onaylayın.
Konsol, Geçerlilik süresi sayfasına döner. İşlem başarılı olduğunda 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 dolan silme sayısı |
TTL politikaları tarafından silinen dokümanların toplam sayısı. |
firestore.googleapis.com/document/ttl_expiration_to_deletion_delays | Yaşam süresi sona ermesinden silme işlemlerindeki gecikmelere kadar |
Bir belgenin TTL 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.