Azure Cosmos DB'de depolama maliyetini iyileştirme

UYGULAMA ALANI: SQL API Cassandra API MongoDB Tablo API'si Azure Cosmos DB API'si

Azure Cosmos DB sınırsız depolama ve aktarım hızı sunar. Azure Cosmos kapsayıcıları veya veritabanlarınız üzerinde sağlamanız/yapılandırmanız gereken aktarım hızının aksine depolama alanı tüketime göre fatura edilir. Yalnızca tükettiğiniz mantıksal depolama için fatura edilirsiniz ve önceden herhangi bir depolama alanı rezervasyona gerek yok. Depolama, Azure Cosmos kapsayıcısı için ek veya kaldır verilerinize göre ölçeği otomatik olarak Cosmos sağlar.

Depolama maliyeti

Depolama,BS birimiyle faturalandırıldı. Yerel SSD ile birlikte kullanılan depolama alanı, verileriniz ve dizinlemeniz tarafından kullanılır. Kullanılan toplam depolama alanı, Azure Cosmos DB'lerini kullanmakta olduğunu tüm bölgelerde kullanılan veri ve dizinler için gereken depolama alanına eşittir. Azure Cosmos hesabını üç bölgeye genel olarak çoğaltıyorsanız, bu üç bölgeye ait toplam depolama maliyeti için ödeme alırsınız. Depolama gereksiniminizi tahmin etmek için bkz. kapasite planlayıcısı aracı. Azure Cosmos DB'de depolama maliyeti aylık 0,25 GB ABD dolarıdır. En son güncelleştirmeler için Fiyatlandırma sayfasına bakın. Depolamanızı izlemek için Azure Cosmos kapsayıcınız tarafından kullanılan depolamayı belirlemek için uyarılar ayarlabilirsiniz. Azure Cosmos DB) makalesine bakın.

Öğe 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'den büyük verileri depolamak için herhangi bir öğeye ihtiyacınız varsa, öğe şemasını yeniden tasarlamayı göz önünde bulundurabilirsiniz. Şemayı yeniden tasarlayamazsınız nadir bir durumda, öğeyi alt değerlere bölebilirsiniz ve bunları mantıksal olarak ortak tanımlayıcıyla (ID) bağabilirsiniz. Tüm Azure Cosmos DB özellikleri, bu mantıksal tanımlayıcıya sabitler ve tutarlı bir şekilde çalışır.

Dizin oluşturma ile maliyeti iyileştirme

Varsayılan olarak, veriler otomatik olarak dizinlenir 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 ayarlanmazken otomatik dizin oluşturma, öğe boyutunun yaklaşık %10-20'si kadardır. Dizin ilkelerini kaldırarak veya özelleştirerek yazmalar için ek maliyet ödemez ve ek işleme kapasitesi gerektirmezsiniz. Özel dizin oluşturma ilkelerini yapılandırmak Cosmos bkz. Azure Cosmos DB'de dizin oluşturma. daha önce ilişkisel veritabanlarıyla çalıştınız, "her şeyi dizinle" ifadesinin depolama alanını iki katına veya daha yüksek bir değere anlamına geldiğini düşünebilirsiniz. Ancak Azure Cosmos DB'de ortası çok daha düşüktür. Azure Cosmos DB'de, düşük depolama alanı için tasarlanma nedeniyle otomatik dizin oluşturma ile bile dizinin depolama yükü genellikle düşük (%10-20) olur. Dizin oluşturma ilkesi yöneterek, dizin ayak izinin ve sorgu performansının arasındaki etkiyi daha ince bir şekilde kontrol altına alın.

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

Verilere artık ihtiyacınız kalmadan, yaşam süresi, değişiklik akışı kullanarak azure Cosmos hesabınızdan uygun şekilde silebilir veya eski verileri Azure blob depolama veya Azure veri ambarı gibi başka bir veri deposuna geçirebilirsiniz. Yaşam süresi veya TTL ile, Azure Cosmos DB 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 ayarp öğe başına değeri geçersiz kılabilirsiniz. TTL değerini bir kapsayıcıda veya öğe düzeyinde ayardikten sonra, Azure Cosmos DB bu öğeleri en son değiştirildikten sonra bu öğeleri otomatik olarak kaldırır. Değişiklik akışı kullanarak, verileri Azure Cosmos DB'de veya dış veri deposuna başka bir kapsayıcıya geçirebilirsiniz. Geçiş sıfır çalışma süresi alır ve geçiş işlemini tamamlaya kadar olan zamanı silebilir veya yaşam süresi yapılandırarak kaynak Azure Cosmos silebilirsiniz.

Zengin medya veri türleriyle maliyeti iyileştirme

Videolar, görüntüler vb. gibi zengin medya türlerini depolamak için Azure Cosmos DB'de bir dizi Cosmos vardır. Seçeneklerden biri, bu zengin medya türlerini Azure medya öğeleri olarak Cosmos etmektir. Öğe başına 2 MB'lık bir sınır vardır ve veri öğesini birden çok alt öğeye zincirleerek bu sınırdan kaçınabilirsiniz. Veya bunları Azure Blob depolama alanında depolar ve meta verileri kullanarak Azure blob öğelerinizin Cosmos kullanabilirsiniz. Bu yaklaşımın bazı artıları ve dezavantajları vardır. İlk yaklaşım gecikme süresi, aktarım hızı SLA'ları ve normal Azure depolama öğelerinize ek olarak zengin medya veri türleri için anahtar teslim genel dağıtım özellikleri açısından en iyi performansı Cosmos sağlar. Ancak destek daha yüksek bir fiyatla kullanılabilir. Medyayı Azure Blob depolama alanında depolayarak genel maliyetlerinizi düşürabilirsiniz. Gecikme süresi kritikse, Azure depolama öğelerinden başvurulan zengin medya dosyaları için premium depolama Cosmos kullanabilirsiniz. Bu, coğrafi kısıtlamayı CDN için uç sunucudan görüntüleri daha düşük maliyetle hizmet vermek için yerel olarak CDN ile tümleştirilmiştir. Bu senaryonun alt tarafı, azure Cosmos DB ve Azure Blob depolama olmak Cosmos işlem maliyetlerini artıran iki hizmetle uğraşmak zorunda olmaktır.

Tüketilen depolamayı denetleme

Azure Cosmos kapsayıcısı depolama tüketimini kontrol etmek için kapsayıcıda head veya GET isteği çalıştırarak x-ms-request-quota ve üst bilgilerini inceebilirsinizx-ms-request-usage. Alternatif olarak, .NET SDK ile çalışırken, tüketilen depolamayı 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

Bundan sonra aşağıdaki makaleleri kullanarak Azure Cosmos DB'de maliyet iyileştirmesi hakkında daha fazla bilgi edinabilirsiniz: