Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Important
Mevcut bir MongoDB uygulamasını geçirmek mi yoksa MongoDB Sorgu Dili (MQL) özelliklerini kullanmak mı istiyorsunuz? Azure DocumentDB'ye göz atın.
99,999% kullanılabilirlik hizmet düzeyi sözleşmesi (SLA), anında otomatik ölçeklendirme ve birden çok bölgede otomatik yük devretme ile yüksek ölçekli senaryolar için bir veritabanı çözümü mü arıyorsunuz? NoSQL için Azure Cosmos DB'yi göz önünde bulundurun.
Yaşam süresi (TTL) işlevi, veritabanının verilerin süresini otomatik olarak sonlandırmasını sağlar. MongoDB için Azure Cosmos DB, Azure Cosmos DB'nin temel TTL özelliklerini kullanır. İki mod desteklenir: koleksiyonun tamamı için varsayılan TTL değeri ayarlama ve her belge için ayrı bir TTL değeri ayarlama. MongoDB için Azure Cosmos DB'de TTL dizinlerini ve belge başına TTL değerlerini yöneten mantık , Azure Cosmos DB ile aynıdır.
TTL dizinleri
TTL'yi bir koleksiyonun tamamında etkinleştirmek için bir "TTL dizini" (yaşam süresi dizini) oluşturulması gerekir. TTL dizini, _ts alanında "expireAfterSeconds" değerine sahip bir dizindir.
MongoDB kabuk örneği:
globaldb:PRIMARY> db.coll.createIndex({"_ts":1}, {expireAfterSeconds: 10})
Önceki örnekteki komut, TTL işlevselliğine sahip bir dizin oluşturur.
Komutun çıktısı çeşitli meta verileri içerir:
{
"_t" : "CreateIndexesResponse",
"ok" : 1,
"createdCollectionAutomatically" : true,
"numIndexesBefore" : 1,
"numIndexesAfter" : 4
}
Dizin oluşturulduktan sonra veritabanı, bu koleksiyondaki son 10 saniye içinde değiştirilmemiş tüm belgeleri siler.
Note
_ts Azure Cosmos DB'ye özgü bir alandır ve MongoDB istemcilerinden erişilemez. Belgenin son değişikliğinin zaman damgasını içeren ayrılmış (sistem) bir özelliktir.
var options = new CreateIndexOptions {ExpireAfter = TimeSpan.FromSeconds(10)};
var field = new StringFieldDefinition<BsonDocument>("_ts");
var indexDefinition = new IndexKeysDefinitionBuilder<BsonDocument>().Ascending(field);
await collection.Indexes.CreateOneAsync(indexDefinition, options);
Bir belge için yaşam süresi değeri belirleme
Belge başına TTL değerleri de desteklenir. Bu özelliği kullanmak için bir veya daha fazla belgeye kök düzeyinde bir "ttl" özelliği (küçük harf) ekleyin ve daha önce açıklandığı gibi koleksiyon için bir TTL dizini oluşturun. Belgede ayarlanan TTL değeri, koleksiyonun TTL değerini geçersiz kılar.
TTL değeri bir int32 olmalıdır. Alternatif olarak int32 aralığına sığan bir int64 değeri veya int32 aralığına sığan ve ondalık basamağı olmayan bir çift değer de kullanılabilir. Bu belirtimlere uymayan TTL özelliğinin değerlerine izin verilir, ancak anlamlı bir belge TTL değeri olarak değerlendirilmez.
Belge için TTL değeri isteğe bağlıdır; TTL değeri bulunmayan belgeler de aynı koleksiyona eklenebilir. Bu durumda, koleksiyonun TTL değeri kabul edilir.
Aşağıdaki belgeler geçerli TTL değerlerine sahiptir. Belgeler eklendikten sonra, belge TTL değerleri koleksiyonun TTL değerlerini geçersiz kılar. Bu nedenle belgeler 20 saniye sonra kaldırılır.
db.coll.insert({id:1, location: "Paris", ttl: 20.0})
db.coll.insert({id:1, location: "Paris", ttl: NumberInt(20)})
db.coll.insert({id:1, location: "Paris", ttl: NumberLong(20)})
Aşağıdaki belgeler geçersiz TTL değerlerine sahiptir. Veritabanı belgeleri ekler, ancak belge TTL değerini kabul etmez. Veritabanı, koleksiyonun TTL değerine göre 10 saniye sonra belgeleri kaldırır.
db.coll.insert({id:1, location: "Paris", ttl: 20.5}) //TTL value contains non-zero decimal part.
db.coll.insert({id:1, location: "Paris", ttl: NumberLong(2147483649)}) //TTL value is greater than Int32.MaxValue (2,147,483,648).