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 alanı 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 alanı için faturalandırılırsınız ve önceden herhangi bir depolama alanı ayırmanız gerekmez. Depolama, Azure Cosmos DB kapsayıcısına eklediğiniz veya kaldırdığınız verilere göre ölçeği otomatik olarak artırıp 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 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ı üç bölgede genel olarak ç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 aylık 0,25 GB'tı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 Bkz . Azure Cosmos DB'yi izleme) makalesi.

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'sini oluşturur. 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 dizine ekle" seçeneğinin depolamanın iki katına veya daha yüksek bir değere sahip olduğu anlamına geldiğini düşünebilirsiniz. Ancak Azure Cosmos DB'de ortanca örnekte çok daha düşüktür. Azure Cosmos DB'de, düşük depolama alanı ayak izi için tasarlandığından otomatik dizin oluşturmada bile dizinin 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, akışı değiştirerek Azure Cosmos DB hesabınızdan düzgün bir ş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 zaman aralığından sonra kapsayıcıdan öğeleri otomatik olarak silme olanağı sağlar. Varsayılan olarak, kapsayıcı düzeyinde yaşam süresi ayarlayabilir ve öğe başına değeri geçersiz kılabilirsiniz. TTL'yi bir kapsayıcıda veya öğe düzeyinde ayarladıktan sonra, Azure Cosmos DB bu öğeleri en son değiştirildikleri zamandan bu yana geçen süreden sonra otomatik olarak kaldırır. Değişiklik akışını kullanarak verileri Azure Cosmos DB'deki başka bir kapsayıcıya veya bir dış veri deposuna geçirebilirsiniz. Geçiş sıfır azaltma süresi alır 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 depolamada 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 fiyata sunulur. Medyayı Azure Blob depolamada 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 gelen görüntüleri daha düşük maliyetle sunmak için CDN ile yerel olarak tümleşir. Bu senaryonun alt tarafı iki hizmetle ilgilenmeniz gerekir: Azure Cosmos DB ve Azure Blob depolama, işlem maliyetlerini artırabilir.

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

Ardından 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 çekirdek veya vCPU 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