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:
- Geliştirme ve test için iyileştirme hakkında daha fazla bilgi edinin
- Azure Cosmos DB faturanızı anlama hakkında daha fazla bilgi edinin
- aktarım hızı maliyetini iyileştirme hakkında daha fazla bilgi edinin
- Okuma ve yazma maliyetlerini iyileştirme hakkında daha fazla bilgi edinin
- Sorguların maliyetini iyileştirme hakkında daha fazla bilgi edinin
- Çok bölgeli Azure Cosmos DB hesaplarının maliyetini iyileştirme hakkında daha fazla bilgi edinin
- Azure Cosmos DB'ye geçiş için kapasite planlaması yapmaya mı çalışıyorsunuz? Kapasite planlaması için mevcut veritabanı kümeniz hakkındaki bilgileri kullanabilirsiniz.
- Tek bildiğiniz mevcut veritabanı kümenizdeki sanal çekirdek ve sunucu sayısıysa, sanal çekirdekleri veya vCPU'ları kullanarak istek birimlerini tahmin etme hakkında bilgi edinin
- Geçerli veritabanı iş yükünüz için tipik istek oranlarını biliyorsanız Azure Cosmos DB kapasite planlayıcısı kullanarak istek birimlerini tahmin etme hakkında bilgi edinin