Azure Cosmos DB'de depolama maliyetini iyileştirme

ŞUNLAR IÇIN GEÇERLIDIR: Nosql MongoDB Cassandra Gremlin Tablo

Azure Cosmos DB sınırsız depolama ve aktarım hızı sunar. Azure Cosmos DB kapsayıcılarınızda veya veritabanlarınızda sağlamanız/yapılandırmanız gereken aktarım hızının aksine, depolama alanı tüketim temelinde faturalandırılır. Yalnızca kullandığınız mantıksal depolama için faturalandırılırsınız ve önceden depolama alanı ayırmanız gerekmez. Depolama, Azure Cosmos DB kapsayıcısına eklediğiniz veya kaldırdığınız verilere göre otomatik olarak ölçeği büyütür ve küçültür.

Depolama maliyeti

Depolama, GB birimiyle faturalandırılır. Yerel SSD destekli depolama, verileriniz ve dizinlemeniz tarafından kullanılır. Kullanılan toplam depolama alanı, Azure Cosmos DB'yi kullandığınız tüm bölgelerde kullanılan veri ve dizinlerin gerektirdiği depolama alanına eşittir. Bir Azure Cosmos DB hesabını genel olarak üç bölgede çoğaltıyorsanız, bu üç bölgenin her birinde toplam depolama maliyeti için ödeme yapacaksınız. Depolama gereksiniminizi tahmin etmek için bkz. kapasite planlayıcısı aracı. Azure Cosmos DB'de depolama maliyeti ayda 0,25 GB ABD dolarıdır. En son güncelleştirmeler için fiyatlandırma sayfasına bakın. Azure Cosmos DB kapsayıcınız tarafından kullanılan depolama alanını belirlemek için uyarılar ayarlayabilir, depolama alanınızı izlemek için Azure Cosmos DB'yi izleme) makalesine bakın.

Madde boyutuyla maliyeti iyileştirme

Azure Cosmos DB, en iyi performans ve maliyet avantajları için öğe boyutunun 2 MB veya daha düşük olmasını bekler. 2 MB'tan büyük verileri depolamak için herhangi bir öğeye ihtiyacınız varsa, öğe şemasını yeniden tasarlamayı göz önünde bulundurun. Şemayı yeniden tasarlayamadığınız nadir durumlarda, öğeyi alt öğelere bölebilir ve bunları ortak bir tanımlayıcı (KIMLIK) ile mantıksal olarak bağlayabilirsiniz. Tüm Azure Cosmos DB özellikleri, bu mantıksal tanımlayıcıya bağlanarak tutarlı bir şekilde çalışır.

Dizin oluşturma ile maliyeti iyileştirme

Varsayılan olarak, veriler otomatik olarak dizine eklenir ve bu da tüketilen toplam depolama alanını artırabilir. Ancak, bu ek yükü azaltmak için özel dizin ilkeleri uygulayabilirsiniz. İlke aracılığıyla ayarlanmamış otomatik dizin oluşturma, öğe boyutunun yaklaşık %10-20'sine eşittir. Dizin ilkelerini kaldırarak veya özelleştirerek yazma işlemleri için ek maliyet ödemezsiniz ve ek aktarım hızı kapasitesi gerektirmezsiniz. Özel dizin oluşturma ilkelerini yapılandırmak için bkz. Azure Cosmos DB'de dizin oluşturma. Daha önce ilişkisel veritabanlarıyla çalıştıysanız , "her şeyi dizinle" ifadesinin depolamanın iki katına veya daha yükseğe çıkarıldığını düşünebilirsiniz. Ancak Azure Cosmos DB'de ortanca örnekte bu çok daha düşüktür. Azure Cosmos DB'de, düşük depolama alanı ayak izi için tasarlandığından, otomatik dizin oluşturmada bile dizin depolama yükü genellikle düşüktür (%10-20). Dizin oluşturma ilkesini yöneterek, dizin ayak izi ve sorgu performansının dengelemesini daha ayrıntılı bir şekilde denetleyebilirsiniz.

Yaşam süresi ve değişiklik akışı ile maliyeti iyileştirme

Verilere artık ihtiyacınız kalmadıktan sonra , yaşam süresini kullanarak Azure Cosmos DB hesabınızdan düzgün bir şekilde silebilir, akışı değiştirebilir veya eski verileri Azure blob depolama veya Azure veri ambarı gibi başka bir veri deposuna geçirebilirsiniz. Azure Cosmos DB, yaşam süresi veya TTL ile belirli bir süre sonra kapsayıcıdan öğeleri otomatik olarak silme olanağı sağlar. Varsayılan olarak, kapsayıcı düzeyinde yaşam süresi ayarlayabilir ve değeri öğe başına temelinde geçersiz kılabilirsiniz. TTL'yi bir kapsayıcıda veya öğe düzeyinde ayarladıktan sonra, Azure Cosmos DB bu öğeleri son değiştirilme zamanlarından sonraki sürenin sonunda otomatik olarak kaldırır. Değişiklik akışını kullanarak verileri Azure Cosmos DB'deki başka bir kapsayıcıya veya dış veri deposuna geçirebilirsiniz. Geçiş işlemi sıfıra iner ve geçişi tamamladığınızda kaynak Azure Cosmos DB kapsayıcısını silmek için yaşam süresini silebilir veya yapılandırabilirsiniz.

Zengin medya veri türleriyle maliyeti iyileştirme

Videolar, resimler vb. gibi zengin medya türlerini depolamak istiyorsanız, Azure Cosmos DB'de bir dizi seçeneğiniz vardır. Seçeneklerden biri, bu zengin medya türlerini Azure Cosmos DB öğeleri olarak depolamaktır. Öğe başına 2 MB'lık bir sınır vardır ve veri öğesini birden çok alt öğeye zincirleyerek bu sınırı önleyebilirsiniz. İsterseniz bunları Azure Blob depolama alanında depolayabilir ve azure Cosmos DB öğelerinizden bunlara başvurmak için meta verileri kullanabilirsiniz. Bu yaklaşımda bir dizi artı ve dezavantaj vardır. İlk yaklaşım, normal Azure Cosmos DB öğelerinize ek olarak gecikme süresi, aktarım hızı SLA'ları ve zengin medya veri türleri için anahtar teslimi genel dağıtım özellikleri açısından en iyi performansı elde edersiniz. Ancak destek daha yüksek bir fiyatla kullanılabilir. Azure Blob depolamada medya depolayarak genel maliyetlerinizi düşürebilirsiniz. Gecikme süresi kritikse, Azure Cosmos DB öğelerinden başvuruda bulunan zengin medya dosyaları için premium depolamayı kullanabilirsiniz. Bu, coğrafi kısıtlamayı aşmak için uç sunucudan daha düşük maliyetle görüntü sunmak için CDN ile yerel olarak tümleşir. Bu senaryonun alt tarafı, işlem maliyetlerini artırabilecek iki hizmetle ilgilenmeniz gerekir: Azure Cosmos DB ve Azure Blob depolama.

Tüketilen depolama alanını denetleme

Azure Cosmos DB kapsayıcısının depolama tüketimini denetlemek için kapsayıcıda bir HEAD veya GET isteği çalıştırabilir ve ve x-ms-request-usage üst bilgilerini inceleyebilirsinizx-ms-request-quota. Alternatif olarak, .NET SDK ile çalışırken, kullanılan depolama alanını almak için DocumentSizeQuota ve DocumentSizeUsage özelliklerini kullanabilirsiniz.

SDK’yı kullanma

// Measure the item size usage (which includes the index size)
ResourceResponse<DocumentCollection> collectionInfo = await client.ReadDocumentCollectionAsync(UriFactory.CreateDocumentCollectionUri("db", "coll"));   

Console.WriteLine("Item size quota: {0}, usage: {1}", collectionInfo.DocumentQuota, collectionInfo.DocumentUsage);

Sonraki adımlar

Daha sonra aşağıdaki makalelerle Azure Cosmos DB'de maliyet iyileştirme hakkında daha fazla bilgi edinebilirsiniz: