Aracılığıyla paylaş


NoSQL için Azure Cosmos DB'nin mimari en iyi uygulamaları

Azure Cosmos DB, NoSQL, ilişkisel, vektör ve tablo veritabanları gibi birden çok veritabanı türünü barındırabilen tam olarak yönetilen bir veritabanı çözümüdür. İş yükünüz için çoğu kullanım senaryosunu destekleyebilir. Bu kılavuzdaki öneriler NoSQL için Azure Cosmos DB değişkenine odaklanır. Bazı temel önerileri diğer çeşitlere de uygulayabilirsiniz.

Bu makalede, bir mimar olarak Azure veri seçeneklerini gözden geçirdiğiniz ve iş yükünüz için veri deposu olarak NoSQL için Azure Cosmos DB'yi seçtiğiniz varsayılır. Bu makaledeki kılavuz, Well-Architected Framework sütunları'nın ilkelerine dayalı mimari öneriler sağlar.

Teknoloji kapsamı

Bu gözden geçirme, aşağıdaki Azure kaynakları için birbiriyle ilişkili kararlara odaklanır:

  • NoSQL için Azure Cosmos DB

Reliability

Güvenilirlik sütununun amacı, yeterli dayanıklılık ve hatalardan hızlı kurtarma olanağı oluşturarak sürekli işlevsellik sağlamaktır.

Güvenilirlik tasarım ilkeleri , tek tek bileşenler, sistem akışları ve bir bütün olarak sistem için uygulanan üst düzey bir tasarım stratejisi sağlar.

İş yükü tasarımı denetim listesi

Güvenilirlikiçin tasarım gözden geçirme denetim listesini temel alarak tasarım stratejinizi başlatın. Tutarlılık düzeylerini, bölgeler arası çoğaltmayı ve sağlanan aktarım hızını göz önünde bulundurarak iş gereksinimlerinize uygun olduğunu belirleyin. Gerektiğinde daha fazla yaklaşım içerecek şekilde stratejiyi genişletin.

  • Basit bir tasarım seçin ve gereksiz özelliklerden kaçının. Birden çok birincil yazma ve özel dizin oluşturma gibi iş yükünüzde gereksiz yere karmaşıklık ekleyen işlevleri benimsemeyin. Azure Cosmos DB bu özellikleri destekler, ancak önemli karmaşıklık ve operasyonel yük ekleyebilir. İş yükünüzün herhangi bir gelişmiş özellik gerekip gerekmediğini dikkatle değerlendirin.

    İş yükü sorumluluklarını ve genel sistem endişelerini kimlik doğrulaması ve yetkilendirme için Microsoft Entra ID veya izleme için Azure Monitor ve Application Insights gibi diğer hizmetlere devredebilirsiniz.

  • İş yükü akışlarını tanımlama ve önceliklerini belirleme. Uygulamadaki tüm akışlar eşit derecede önemli değildir. Tasarım kararlarınızı yönlendirmek için kritik yolları belirleyin ve her akışa öncelikleri atayın. Kullanıcı akışı tasarımı hizmet katmanlarınızı, özelliklerinizi ve Azure Cosmos DB veritabanına ayırdığınız kapasiteyi etkileyebilir.

    Özel işleme gerekebilecek kritik akışları tanımlamaya yardımcı olmak için, veri işleme özellikleri açısından bunları ayıran işleme gereksinimlerini yakalayın. Örneğin, bazı akışlar daha yüksek aktarım hızı gerektirebilir veya gecikme süresi sorunlarına daha duyarlı olabilir. Bazı çözüm akışları farklı işlem tutarlılığı düzeyleri gerektirebilir.

  • İş yükünüzdeki olası hataları belirlemek için hata modu analizini kullanın. Olası hatalar için risk azaltma stratejilerini planlayın. Aşağıdaki tabloda hata modu analizi örnekleri gösterilmektedir.

    Failure Mitigation
    Yeni coğrafi bölgedeki kullanıcılara dağıtıldıktan sonra yüksek gecikme süresi ve zaman aşımları Yeni kullanıcılara daha yakın olan bir Azure bölgesine birden çok bölgeli çoğaltmayı etkinleştirin.
    İstek birimlerinin (RUs) aşılması nedeniyle kısıtlama Yeniden deneme mantığını uygulayın. RU tüketimini izleyin ve aktarım hızı ayarlarını gerektiği gibi ayarlayın.
    Tek bir Azure bölgesindeki tek bir bölgede Azure Cosmos DB hizmeti hatası Veritabanı oluştururken kullanılabilirlik alanı desteğini yapılandırın.
  • Veritabanlarınıza erişmek için her zaman SDK'yi kullanın. İstemcilerinizde Cosmos DB SDK'sını kullanarak Cosmos DB'ye erişin ve hem okuma hem de yazma işlemleri için istemci tarafı hata işleme parametrelerini ayarlayın . SDK, özel mantığı en aza indirmek için yerleşik geçici hata işlemeye sahiptir. Yerleşik işlemenin yeterli olmadığı durumlarda SDK, hız sınırlama hatalarını işleme gibi özel hata işleme uygulamalarınızı destekler. SDK ayrıca güvenilirlik gözlemlenebilirliği sağlamak için istemcideki zengin tanılama günlüklerini yakalamanıza da olanak tanır.

  • Dayanıklılığı geliştirmek ve güvenilirlik hedeflerini karşılamaya yardımcı olmak için yedeklilik oluşturun. Veritabanı hesabı dağıtımınızı Azure'da en az iki bölgeye yayılacak şekilde tasarlayın. Azure bölgeniz destekliyorsa hesabınızı birden çok kullanılabilirlik alanına dağıtın.

    İş yükünüz için birden çok bölgeli ve tek bölgeli yazma stratejilerini değerlendirin. Tek bir bölgeye yazma yaparken, iş yükünüzü, birincil bölgenin devre dışı kalması durumunda en az bir ikinci okuma bölgesi olacak şekilde tasarlayın. Tek bölgeli yazma ve birden çok bölge okuma senaryoları için otomatik yük devretmeyi etkinleştirin. Birden çok bölgeli yazma için karmaşıklık ve tutarlılık açısından dengeleri, birden çok bölgeye yazmanın avantajlarıyla karşılaştırın. Daha fazla bilgi için bkz. Tek bölgeli ve birden çok bölgeli yazma hesapları için bölgesel kesinti sırasındaki beklentiler.

    Tutarlılık düzeyinizin ve çoğaltma modunuzun bölge genelindeki bir kesintide kurtarma noktası hedefini (RPO) nasıl etkilediğini düşünün.

    Veritabanı yük devretme ve geri yükleme testlerini içeren, uygulamanız için uçtan uca yüksek kullanılabilirlik testi tasarlayın.

  • Yerel olağanüstü durum kurtarma ve yedekleme özelliklerini kullanın. Gereksinimlerinizi karşılamak için veritabanı ve kapsayıcı yedeklemeleri ve geri yüklemeleri uygulayın. Geri yükleme senaryoları arasında belirli bir noktaya geri yükleme, yanlışlıkla yıkıcı işlemlerden kurtarma, silinen kaynakları geri yükleme ve belirli bir noktada başka bir bölgeye geri yükleme sayılabilir. Hesabınızı sürekli yedekleme ile yapılandırın. İş gereksinimlerinize göre uygun saklama süresini seçin.

  • Azure Cosmos DB tasarımınızı endüstri standardı uygulama tasarımı kılavuzu ve desenleriyle uyumlu hale getirme. Dayanıklı uygulamalar tasarlama kılavuzunu keşfedin, SDK'lar için varsayılan yeniden deneme ilkesini gözden geçirin ve belirli geçici hatalar için özel işlemeyi planlayın. Bu kılavuzlar, uygulama kodunu geçici hatalara dayanıklı hale getirmek için en iyi yöntemleri sağlar.

Yapılandırma önerileri

Recommendation Benefit
Azure Cosmos DB hesabınızı kullanılabilirlik alanları arasında dağıtabilirsiniz. Kullanılabilirlik bölgeleri, donanım hatalarını replikalarınızın belirli bir bölümüne yalıtmaya yardımcı olan ayrıştırılmış güç, ağ ve soğutma sağlar. Kullanılabilirlik alanları özelliğini kullanmadığınızda, Azure Cosmos DB, rastgele seçilen tek bir kullanılabilirlik alanı içinde birden çok çoğaltma oluşturur.
Azure Cosmos DB hesabınızı en az iki bölgeye yayılacak şekilde yapılandırın. Birden çok bölgeye yaymak, iş yükünüzün bölgesel kesintilere karşı dayanıklı olmasını sağlamaya yardımcı olur. Yazma bölgesinde bir hata varsa, başka bir çoğaltmadan okuyabilirsiniz. Yazma bölgesinin yükünü başka bir bölgeye de devredebilirsiniz. İstemci SDK'sını kullanmak, istemcinizin bu yük devretmelerin mekaniğinden yalıtılabilmesini sağlar.
Hesabınız için hizmet tarafından yönetilen yük devretmeyi etkinleştirin. Hizmet tarafından yönetilen yük devretmedeki ödünleşmeleri anlayın ve gerekirse zorunlu yük devretmeyi planlayın.

Uygulamanızın uçtan uca yüksek kullanılabilirliğini doğrulamak için hizmet tarafından yönetilen yük devretmeyi geçici olarak devre dışı bırakın. Bir betik veya Azure portalını kullanarak manuel yük devretme başlatabilirsiniz.
Hizmet tarafından yönetilen yük devretme, Azure Cosmos DB'nin kullanılabilirliği korumak için birden çok bölgeli hesabın yazma bölgesini otomatik olarak değiştirmesine olanak tanır. Bu değişiklik kullanıcı etkileşimi olmadan gerçekleşir.

Security

Güvenlik sütununun amacı iş yüküne gizlilik, bütünlük ve kullanılabilirlik garantileri sağlamaktır.

Güvenlik tasarımı ilkeleri, NoSQL için Azure Cosmos DB'nin teknik tasarımına yaklaşımlar uygulayarak bu hedeflere ulaşmak için üst düzey bir tasarım stratejisi sağlar.

İş yükü tasarımı denetim listesi

Güvenlik için tasarım gözden geçirme denetim listesini temel alarak tasarım stratejinizi başlatın ve güvenlik duruşunu geliştirmek için güvenlik açıklarını ve denetimleri belirleyin. Gerektiğinde daha fazla yaklaşım içerecek şekilde stratejiyi genişletin.

  • Güvenlik temellerini gözden geçirin. İş yükünüzün güvenlik duruşunu geliştirmek için Azure veritabanları için güvenlik denetim listesini ve Azure Cosmos DB'nin güvenlik temelini gözden geçirin. Azure Cosmos DB hesabınızın güvenliğini sağlamaya yardımcı olmak için en azından veri koruma ve kimlik yönetimi güvenlik temellerini uygulayın.

    Geçerli küresel kişisel veri gereksinimleri bağlamında hizmet düzeyi uyumluluğunu ve sertifikalarını değerlendirin.

  • Katı, koşullu ve denetlenebilir kimlik ve erişim yönetimi uygulama. İş yükünüzün kimlik doğrulaması ve yetkilendirme gereksinimleri için Microsoft Entra Id kullanın. Microsoft Entra Id merkezi yetkilendirme ve erişim yönetimi sağlar.

    Hesabınıza denetim düzlemi ve veri düzlemi erişimi için , en az ayrıcalıklı erişim ilkesine göre roller, gruplar ve atamalar oluşturun. Anahtar tabanlı kimlik doğrulamasını devre dışı bırakmayı göz önünde bulundurun.

  • Verileri şifreleme.Bekleyen verileri veya hareket halindeki verileri, hizmet tarafından yönetilen anahtarları veya müşteri tarafından yönetilen anahtarları kullanarak şifreleyin.

  • Ağ segmentasyonu ve güvenlik denetimleri uygulayın. Ağ tasarımınızda kasıtlı segmentasyon ve çevreler oluşturun ve tüm ağ sınırlarında yerelleştirilmiş ağ denetimlerini kullanarak derinlemesine savunma ilkeleri uygulayın.

    Azure Cosmos DB güvenlik temeli uyarınca özel uç noktaları kullanarak yüzey saldırı alanını azaltın.

  • Bütünsel bir güvenlik izleme stratejisi uygulayın. Kontrol düzlemi günlüklerini kullanarak kullanıcı erişimlerini, güvenlik ihlallerini ve kaynak işlemlerini denetleyin.

    Veri düzlemi ölçümlerini kullanarak veri çıkışını, veri değişikliklerini, kullanımı ve gecikme süresini izleyin.

  • Güvenli geliştirme ve test uygulamalarını kullanın. Verilere güvenli erişim için en iyi yazılım geliştirme uygulamalarını izleyin. Azure Cosmos DB ile etkileşim kuran uygulamalar geliştirirken güvenli kodlama uygulamalarını izleyin ve güvenli kod incelemeleri gerçekleştirin.

Yapılandırma önerileri

Recommendation Benefit
Genel uç noktaları devre dışı bırakın ve mümkün olduğunca özel uç noktaları kullanın. Özel uç noktalar aracılığıyla özel ağ kullanmak, yüzey alanının hesabınızdaki saldırılara karşı duyarlı olmasını azaltır.
Denetim düzlemi erişimini iyi tanımlanmış atamalar içindeki belirli kimliklerle ve gruplarla sınırlamak için rol tabanlı erişim denetimini (RBAC) kullanın. RBAC kullanmak hesabınıza yetkisiz erişimi önlemeye yardımcı olur. En düşük ayrıcalık ilkesine göre Azure Cosmos DB'ye erişen kullanıcılara veya uygulamalara uygun rolleri ve izinleri atayın.
Hesaba erişimi sınırlamak için sanal ağ uç noktaları ve kuralları oluşturun. Azure Cosmos DB kaynaklarına gelen ve kaynaklardan gelen trafiği denetlemek için ağ güvenlik gruplarını (NSG) kullanın. Sanal ağ hizmet uç noktaları, NSG'ler ve güvenlik duvarı kuralları, Azure Cosmos DB hesabınıza erişimi kısıtlamaya yardımcı olur ve verilerinizin yetkisiz erişime karşı korunmasına yardımcı olur.
Enjeksiyon saldırıları, siteler arası betik saldırıları veya güvensiz doğrudan nesne referansları gibi yaygın güvenlik açıklarına karşı koruma sağlayın. Güvenlik risklerini önlemek için giriş doğrulama, parametreli sorgular ve yaygın HTTP durum kodları için uygun hata işlemeyi uygulayın. Giriş doğrulaması, kötü amaçlı verilerin uygulamanız tarafından işlenmesini önlemeye yardımcı olur. Bu yaklaşım, güvenlik ihlallerine veya veri bozulmasına yol açabilecek zararlı olabilecek verileri engeller.

Doğru hata işleme, uygulamanızın hatalara kontrollü bir şekilde yanıt vermesini sağlar ve hassas bilgilerin açığa çıkmasını önler.
Azure Cosmos DB hesabınızda yetkisiz değişiklikleri algılamak için denetim düzlemi günlüklerini izleyin. İzleme, veritabanınızın güvenli ve ilgili veri koruma düzenlemeleriyle uyumlu kalmasını sağlamak için erişim düzenlerini ve denetim günlüklerini izlemenize yardımcı olur. Veri düzlemi ölçümlerini izlemek, bir güvenlik ihlali ortaya çıkarabilecek tanıdık olmayan desenlerin belirlenmesine de yardımcı olabilir.
Anormal etkinlikler gerçekleştiğinde güvenlik uyarılarını tetikleyebilmek için Azure Cosmos DB için Microsoft Defender'ı etkinleştirin. Microsoft Defender, hesabınızdaki veritabanlarında yararlanma girişimlerini algılar. Defender olası SQL eklemelerini, şüpheli erişim düzenlerini ve diğer olası açıklardan yararlanma etkinliklerini algılar.

Maliyet İyileştirme

Maliyet Optimizasyonu, kuruluşun bütçesini karşılarken iş gereksinimlerini de karşılamak amacıyla harcama düzenlerini tespit etmeye, kritik alanlardaki yatırımlara öncelik vermeye ve diğer yerlerde optimizasyon yapmaya odaklanır.

Maliyet İyileştirme tasarım ilkeleri, bu hedeflere ulaşmak ve No SQL ve ortamı için Cosmos DB ile ilgili teknik tasarımda gerektiğinde ödün vermek için üst düzey bir tasarım stratejisi sağlar.

İş yükü tasarımı denetim listesi

Yatırımlar için Maliyet İyileştirme için tasarım gözden geçirme denetim listesini temel alarak tasarım stratejinizi başlatın. İş yükünün iş yükü için ayrılan bütçeyle uyumlu olması için tasarımda ince ayarlamalar yapın. Tasarımınız doğru Azure özelliklerini kullanmalı, yatırımları izlemeli ve zaman içinde iyileştirme fırsatları bulmalıdır.

  • Azure Cosmos DB ölçeklendirme stratejinizi iyileştirin. Azure Cosmos DB'nin depolama ve aktarım hızı ölçeklendirmesini nasıl işlediğini anlama. Gereksinimlerinizi karşılamak için doğru performans ve maliyet dengesini belirleyin.

    İş yükünüz için uygun bir aktarım hızı ayırma şeması seçin. Veritabanı veya kapsayıcı düzeyinde dağıtılmış standart ve otomatik ölçeklendirme aktarım hızının avantajlarını gözden geçirin. Ayrıca uygun olduğunda sunucusuz seçenekleri de göz önünde bulundurun. en uygun aktarım hızı ayırma düzenini seçmek için iş yükünüzün trafik desenlerini analiz edin.

    Yüksek kardinaliteye sahip ve değişmeden kalan bir bölüm anahtarı veya bölüm anahtarı kümesi belirleyin. Uygun bir bölüm anahtarı seçmenize yardımcı olması için mevcut yönergeleri ve en iyi yöntemleri kullanın. Ayrıca, bölüm anahtarı belirlerken dizin oluşturma ilkenizi de göz önünde bulundurun.

  • Azure Cosmos DB veri maliyetlerinizi iyileştirin. Veri envanterini alın ve iş yükünüz için beklenen genel veri depolama alanını hesaplayın. Hem öğelerin hem de dizinlerin boyutu, veri depolama maliyetinizi etkiler. Çoğaltma ve yedeklemenin depolama maliyetleri üzerindeki etkisini hesaplayın.

    Artık kullanılmayan veya gerekli olmayan eski öğeleri otomatik olarak kaldırmak için bir strateji oluşturun. Gerekirse, kaldırmadan önce bu öğeleri daha düşük maliyetli bir depolama çözümüne aktarın.

  • Sorgularınızı maliyet için iyileştirin. Bölümler arası aramaları en aza indiren en yaygın sorgularınızı değerlendirin. Bölüm anahtarı seçme veya dizin oluşturma ilkesini özelleştirme işlemini bildirmek için bu bilgileri kullanın.

    Büyük sorgu sonuç kümelerinin aktarım hızı maliyetlerini azaltmak için projeksiyonu kullanın. Bir sonuç kümesinden gereken en az sayıda alanı yansıtmak için sorgular yazın. Alanlarla ilgili hesaplamalar gerekiyorsa, bu hesaplamaları sunucu tarafında ve istemci tarafında gerçekleştirmenin aktarım hızı maliyetini değerlendirin.

    Sınırsız bölümler arası sorgular kullanmaktan kaçının. Mümkün olduğunda tek bir mantıksal bölümde arama yaptıklarına emin olmak için sorguları değerlendirin ve yazın. Sorgunun hedeflediği mantıksal bölümleri denetlemek için sorgu filtrelerini kullanın. Bir sorgunun mantıksal bölümler arasında arama yapması gerekiyorsa, sorguyu tam tarama yerine yalnızca mantıksal bölümlerin bir alt kümesini aramak üzere sınırlamalısınız.

    İş yükünüzdeki yaygın işlemleri ve sorguları dikkate alan bir dizin oluşturma ilkesi tasarlayın.

Yapılandırma önerileri

Recommendation Benefit
Saniye başına RU'ların kullanımını ve desenlerini izleyin. Uygulama kodunuzdaki kötü amaçlı değişkenleri bulmak için sorguları ve diğer veri araştırma tekniklerini kullanın. Azure Cosmos DB dağıtımınızın başlarından başlayarak RU tüketimini izlemek için ölçümleri kullanmak, aşırı RU kullanan verimsiz sorguları ve işlemleri belirlemenize yardımcı olur. Maliyetleri düşürmek için sorguları iyileştirebilirsiniz.
Dizin oluşturma ilkenizi iş yükünüzle uyumlu olacak şekilde özelleştirin. Yalnızca ortak sorgularınız için dizine almanız gereken yolları temel alan bir dizin oluşturma ilkesi kullanın.

Yoğun yazma iş yükleri için sorgularda kullanılmayan sütunların otomatik dizinlemesi özelliğini devre dışı bırakın.
Varsayılan dizin oluşturma ilkesi bir öğedeki tüm yolları dizine alır ve RU tüketimini ve maliyetlerini önemli ölçüde etkileyebilir. Dizin oluşturma ilkenizi özelleştirmek, dizin oluşturma stratejisini özel gereksinimlerinize göre uyarlamanıza olanak tanır. Bu yaklaşım en iyi performansı ve kaynak kullanımını sağlamaya yardımcı olur.
İşleme hızı tüketimini ve veri depolamayı mantıksal bölümler arasında eşit olarak dağıtan iş yükünüz için bölüm anahtarlarını seçin. Orantısız miktarda trafik alan yoğun trafik bölümlerinden kaçının. Dengesiz bölümler, aktarım hızı maliyetlerini ve geçici hataları artırabilir.

Seçim, ilişkisiz bölümler arası sorgu sayısını da en aza indirmelidir. Yalnızca tek bölümlü veya sınırlanmış bölümler arası sorgular çalıştırma olasılığı olan olası bölüm anahtarlarını belirlemek için en yaygın arama sorgularını kullanın.
Doğru bölüm anahtarı seçildiğinde veriler eşit dağıtılır ve bu da sık erişimli bölümlerin olasılığını azaltır ve aktarım hızı tüketimini iyileştirir. Bu yaklaşım verimliliği önemli ölçüde artırabilir ve maliyetleri düşürebilir.
Azure Cosmos DB örneğiniz için doğru sağlanan aktarım hızı seçeneğini belirleyin. Sunucusuz veya sağlanan aktarım hızı ile el ile sağlama veya otomatik ölçeklendirme arasında seçim yapın. İş yükünüzün belirli gereksinimlerine bağlı olarak bu seçenekleri veritabanı veya kapsayıcı düzeyinde uygulayın.

Genellikle küçük iş yükleri ve geliştirme/test iş yükleri, veritabanı düzeyinde sunucusuz aktarım hızı veya el ile paylaşılan aktarım hızından yararlanır. Görev açısından kritik, daha büyük iş yükleri, kapsayıcı düzeyinde sağlanan aktarım hızından yararlanabilir.
Doğru sağlanan aktarım hızı seçeneğinin seçilmesi, fazla sağlamayı veya yetersiz sağlamayı önleyerek maliyeti iyileştirmeye yardımcı olur. Ayrıca, uygulamanızın değişen trafik desenlerini etkili bir şekilde işleyebildiğini güvence altına alırken operasyonel maliyetleri de azaltır.
Uygulamanız için varsayılan tutarlılık düzeyini yapılandırın. Uygun olduğunda, istemci oturumlarında varsayılan tutarlılık düzeyini düşürebilirsiniz .

Daha güçlü tutarlılık düzeylerinde okumalarla ilişkili daha yüksek maliyetleri göz önünde bulundurun. Her zaman standart varsayılan tutarlılık düzeyini değiştirmeniz veya istemci oturumlarında geçersiz kılmanız gerekmeyebilir.
Uygulamanız için doğru tutarlılık düzeyini seçmek, veri tutarlılığı, kullanılabilirlik, performans ve maliyet arasında istenen dengeyi elde etmenizi sağlar.
Geliştirme/test iş yükleri için, Docker kapsayıcı görüntüsü olarak da kullanılabilen Azure Cosmos DB öykünücüsü'ni kullanın. Öykünücü geliştirme/test ve sürekli tümleştirme kullanım örnekleri için maliyetleri azaltır.
İşlemsel toplu işlemler kullanın. Veri eklemek için mantıksal bölüm anahtarı altında yer alan işlem toplu operasyonlarından yararlanacak şekilde bölümleri tasarlayın.

Tek bir işlem isteğinde birden çok belge eklemek, güncelleştirmek veya silmek için istemci tarafı SDK'larında toplu işlem kullanın.
Azure Cosmos DB'de işlem toplu işlemleri kullanmak tek tek isteklerin sayısını azaltmaya yardımcı olabilir. Bu yaklaşım gecikme süresini azaltmaya ve aktarım hızı verimliliğini artırmaya yardımcı olur.
Gereksiz verileri otomatik olarak silmek için yaşam süresi (TTL) uygulayın. Gerekirse süresi dolan verileri daha düşük maliyetli bir depolama çözümüne aktarın. TTL kullanmak, veritabanınızın düzenli kalmasını sağlar ve bu da depolama maliyetlerini optimize eder. Süresi dolan verileri daha düşük maliyetli bir depolama çözümüne dışarı aktarmak, geçmiş verileri uyumluluk amacıyla korurken giderleri daha da azaltabilir.
Ağır toplamalar için bir analiz deposu düşünün. Azure Cosmos DB analiz deposu, büyük toplamalar, raporlama ve analitik sorgular için iyileştirme yapmak üzere verilerinizi otomatik olarak ayrı bir sütun deposuna eşitler.

Operasyonel Mükemmellik

Operasyonel Mükemmellik öncelikli olarak geliştirme uygulamaları, gözlemlenebilirlik ve sürüm yönetimiyordamlarına odaklanır.

operasyonel mükemmellik tasarım ilkeleri iş yükünün operasyonel gereksinimleri için bu hedeflere ulaşmak için üst düzey bir tasarım stratejisi sağlar.

İş yükü tasarımı denetim listesi

NoSQL için Azure Cosmos DB ile ilgili gözlemlenebilirlik, test ve dağıtım süreçlerini tanımlamaya yönelik Operasyonel Mükemmellik için tasarım gözden geçirme denetim listesini temel alarak tasarım stratejinizi başlatın.

  • Azure Cosmos DB örneklerinizi izleyin. İş yükü izleme çözümünüzde bölgeler arasında Azure Cosmos DB örneklerini dahil edin.

    İş yüklerini ayırt etmek için istemci uygulamasında tanımlayıcılar oluşturun. Kullanıcı aracı soneki gibi bayrakları, her günlük girdisinin veya ölçümün hangi iş yüküyle ilişkilendirilmesi gerektiğini belirlemek için göz önünde bulundurun.

    Farklı iş yükleri arasında ayrım yapabilmek, istisnai senaryoları belirlemek, istisnalar ve hatalardaki desenleri takip etmek ve konak makine performansını izlemek için bir günlük ve ölçüm izleme stratejisi taslağı hazırlanır.

    Kısıtlamayı izlemek, veri aktarım hızı ayırmayı analiz etmek ve verilerinizin boyutunu izlemek için birden çok uyarı tanımlayın.

    Beklenen ölçüm eşiklerini bölüm ve dizin tasarımına göre planlayın. Planlanan eşiklere ne kadar yakın olduklarını belirlemek için bu ölçümleri izlemek için bir plan oluşturun.

  • Altyapıyı kod olarak (IaC) kullanarak dağıtımları otomatikleştirin. Altyapı dağıtımları ve yapılandırma değişiklikleri dahil olmak üzere tüm Azure Cosmos DB değişikliklerini kod dağıtım uygulamalarınıza ekleyin.

    NoSQL için Azure Cosmos DB hesabınızın ve kaynaklarınızın dağıtımını otomatikleştirmek için en iyi yöntemleri oluşturun ve uygulayın.

    Ekibinizin diğer üretim dışı ortamlara dağıtmak için aynı şablonları kullandığından emin olun.

Yapılandırma önerileri

Recommendation Benefit
Uygulama geliştiricilerinin geliştirici SDK'sının en son sürümünü kullandığından emin olun. Daha fazla bilgi için bkz. .NET SDK ve Java SDK. NoSQL için Her Azure Cosmos DB SDK'sı önerilen en düşük sürüme sahiptir. Geliştirici SDK'larının en son sürümlerini kullanmak, uygulamalarınızın performansını, güvenliğini ve uyumluluğunu korumaya yardımcı olur.
Her SDK için tanılama ekleme tekniklerini kullanarak ek tanılamaları yakalayın. Bu teknikler, varsayılan ölçümler ve günlüklerle birlikte iş yükü hakkında ek bilgiler ekler. Daha fazla bilgi için bkz. .NET SDK ve Java SDK. Tanılama ekleyerek, sorun gidermeyi geliştirmek ve uygulamalarınızı iyileştirmek için özel ölçümler, izlemeler ve günlükler yakalayabilirsiniz. İş yükünüzün varsayılan ölçümlerin ve günlüklerin kapsamayan belirli yönlerini izleyebilirsiniz.
Konak makine kaynakları için uyarılar oluşturun. İstemci tarafı konak makinesi sorunları nedeniyle bağlantı ve kullanılabilirlik sorunları oluşabilir. NoSQL SDK'ları için Azure Cosmos DB kullanan istemci uygulamalarını kullanarak konak makinelerde CPU, bellek ve depolama gibi kaynakları izleyin.
Normalleştirilmiş RU tüketimi gibi ölçümleri kullanarak aktarım hızı azaltma uyarıları oluşturun. Bu ölçüm, bir veritabanı veya kapsayıcıda sağlanan aktarım hızının kullanım yüzdesini ölçer.

Bu ölçümün beklenen eşikleri ne zaman aştığını izlemek için uyarıları kullanın. Zaman içinde iş yükünüz hakkında daha fazla bilgi edindikçe uyarıları gözden geçirin ve ayarlayın.
Verim kontrolü tutarlı olarak 100%olursa, istekler büyük olasılıkla geçici bir hata geri döner. Bu ölçümü temel alan uyarılar oluşturarak, kullanım tanımlı eşiklerinizi aştığında bildirim alabilirsiniz. Uygulamanızın performansını etkilemeden önce düzeltici eylemler gerçekleştirebilirsiniz.
Zaman içindeki en iyi sorgularınızın performansını izlemek için sorgu performansı ölçümlerini kullanın. Sorgu performansı düşükse performans sorunlarını giderin ve en iyi sorgu yöntemlerini uygulayın. Performans ölçümleri, sorgularınızın nasıl çalıştığını ve olası performans sorunlarının nerede olduğunu daha iyi anlamanıza olanak sağlar. Bu bilgiler, dizin oluşturma ilkeleri ve sorgu iyileştirmeleri hakkında bilinçli kararlar vermenizi sağlar.
Hesap kaynaklarını otomatik olarak dağıtmak için şablonları kullanın. Hesabınızın ve sonraki kaynakların dağıtımını otomatikleştirmek için Azure Resource Manager, Bicep veya Terraform şablonlarını göz önünde bulundurun. IaC şablonları, altyapınızı açıklayıcı bir modelde tanımlamanıza yardımcı olur. Bunlar tekrarlanabilirlik ve tutarlılığı kolaylaştırır ve tekdüzen ve öngörülebilir iş yükü ortamlarının korunmasına yardımcı olur.
bölüme göre RU kullanımı, azaltma ve türe göre istek birimleri gibi iş yükünüzdeki yaygın sorunları belirlemek için temel ölçümleri izleyin. Bu önemli ölçümleri izlemek, veritabanının çeşitli koşullar altında nasıl performans sergileğini anlamanıza yardımcı olur. İzleme ayrıca düzeltici eylemler gerçekleştirebilmeniz için yaygın sorunları belirlemenize yardımcı olur.

Performans Verimliliği

Performans Verimliliği, kapasiteyi yöneterek yük artış olduğunda bile kullanıcı deneyimini korumakla ilgilidir. Strateji kaynakları ölçeklendirmeyi, olası performans sorunlarını tanımlamayı ve iyileştirmeyi ve en yüksek performans için iyileştirmeyi içerir.

Performans Verimliliği tasarım ilkeleri, beklenen kullanım seviyelerine karşı bu kapasite hedeflerine ulaşmak için üst düzey tasarım stratejileri sunar.

İş yükü tasarımı denetim listesi

NoSQL için Azure Cosmos DB'nin temel performans göstergelerini temel alan bir temel tanımlamaya yönelik Performans Verimliliği için tasarım gözden geçirme denetim listesini temel alarak tasarım stratejinizi başlatın.

  • Azure Cosmos DB kapasitenizi planlayın ve proaktif olarak yönetin. Uygulamanız için bir performans temeli tanımlayın. kaç eşzamanlı kullanıcı ve işlem gerçekleştirmeniz gerekebileceğini ölçün. Ortalama kullanıcı akışınız, yaygın işlemler ve kullanımdaki ani artışlar gibi iş yükü özelliklerini göz önünde bulundurun.

    Hedef kullanıcılarınızı araştırma. Hangi Azure bölgelerinin kendilerine en yakın olduğunu belirleyin.

  • Veri tasarımınızı iyileştirin. Öğeleri ilgili JSON belgeleri olabildiğince küçük olacak şekilde tasarlar. Gerekirse verileri birden çok öğeye bölmeyi göz önünde bulundurun.

    Boyutu 100 KB'tan küçük öğeleri koruyun. Daha büyük öğeler, yaygın okuma ve yazma işlemleri için daha fazla aktarım hızı kullanır. Tüm alanları yansıtan daha büyük öğelere yapılan sorgular, ayrıca önemli bir işlem kapasitesi maliyeti ekleyebilir.

  • Doğru katmanı, özellikleri ve faturalama modelini seçin. İş yükünüzün analiz deposu gerektip gerektirmediğini belirleyin. Karmaşık sorgular için Azure Synapse Link gibi analiz depolarını ve hizmetleri göz önünde bulundurun.

  • Dağıtım modelini iyileştirme. NoSQL için Azure Cosmos DB'yi son kullanıcılarınıza en yakın bölgelere dağıtın. | NoSQL için Azure Cosmos DB'yi son kullanıcılarınıza en yakın bölgelere mümkün olduğunca dağıtarak gecikme süresini azaltın.

  • Sorguları performans için iyileştirin. Sorgu performansı ipuçlarını gözden geçirin ve kullanım örneklerinize uygulanan stratejileri uygulayın.

    Bir veya daha fazla sıralama alanı kullanan sorguları tanımlayın. Ayrıca, birden çok alanı etkileyen işlemleri belirleyin. Bu alanları dizin oluşturma ilkesi tasarımına açıkça ekleyin.

    Mümkün olduğunda toplu işlemleri kullanmak için büyük iş yükleri tasarlayın.

    Alt dizilerdeki sorguları tanımlayın ve daha verimli alt sorgular için aday olup olmadığını belirleyin.

    En yaygın ve karmaşık sorgularınızı araştırma. Birden çok arama, birleştirme veya toplama kullanan sorguları tanımlayın. Bölüm anahtarı veya dizin oluşturma ilkesiyle ilgili tasarım konusunda dikkate alınacak tüm sorgularda bu sorguları göz önünde bulundurun.

    En yaygın sorgular için her sayfa için beklediğiniz sonuç sayısını belirleyin. Bu sayı, önceden getirilen sonuçlar için arabelleğe alınmış öğe sayısını düzenlemenize yardımcı olur.

  • Kod mantığını iyileştirme. SDK'ların çoğunda CosmosClient sınıfı için singleton kalıbını kullanın. Çoğu SDK'da istemci sınıfını tekil olarak kullanın. İstemci sınıfı kendi yaşam döngüsünü yönetir ve yok edilmeyecek şekilde tasarlanmıştır. Nesnelerin sürekli oluşturulması ve silinmesi performansın düşmesine neden olabilir.

Yapılandırma önerileri

Recommendation Benefit
Performans temeliniz için gereken aktarım hızı miktarını belirlemek için kapasite hesaplayıcısı gibi araçları kullanın. Gerçek aktarım hızınızı gerçek iş yükünüzle daha yakından eşleşecek şekilde ölçeklendirmek için otomatik ölçeklendirme gibi özellikleri kullanın. Daha sonra gerçek aktarım hızı tüketiminizi izleyin ve ayarlamalar yapın. Kapasite hesaplayıcısını kullanmak, başlangıçta kaynakları sağlama hakkında bilinçli kararlar vermenizi sağlar. Veritabanınızın gereksiz maliyetler olmadan beklenen yükü işleyebilmesini sağlayabilirsiniz. Aktarım hızını otomatik ölçeklendirme, sağlanan aktarım hızını gerçek iş yükü gereksinimlerine uyacak şekilde otomatik olarak ayarlar.
uygun olduğunda istemci ve sunucu tarafında iyileştirme tekniklerini kullanın. Yerleşik tümleşik önbellekten yararlanın. SDK'yı, her sayfa için önceden alınmış veya arabelleğe alınmış ve döndürülecek öğe sayısını yönetecek şekilde yapılandırın. Kod iyileştirme teknikleri kullanıcı deneyimini geliştirebilir ve yinelenen okumalar ve sorgular için RU ücretlerini azaltmaya yardımcı olarak istemci ve sunucu tarafı uygulamanızı daha verimli hale getirir. Bu avantajlar maliyetleri düşürebilir.
Gerçek kullanım desenlerine ve iş yükü özelliklerine göre sorgu performansını, dizin oluşturma stratejilerini ve kaynak kullanımını iyileştirmeye yönelik öneriler için Cosmos DB Sorgu Danışmanı'ni kullanın. Program aracılığıyla yavaş sorguları tanımlayabilir, dizin oluşturma stratejilerini iyileştirebilir ve ru tüketimini azaltabilirsiniz.
Genel dağıtımı kullanın ve Azure Cosmos DB örneklerini son kullanıcılarınıza en yakın tüm bölgelerde dağıtın. Veritabanınızı son kullanıcılarınıza en yakın bölgelere dağıtmak , kullanıcı deneyimini geliştirebilecek okuma gecikme süresini azaltmaya yardımcı olur. Okuma çoğaltması, yazma işlemlerinin nasıl yapılandırıldığına bakılmaksızın performanslı okuma işlemlerini etkinleştirir.
İstemcileriniz coğrafi olarak dağıtılmışsa çok bölgeli yazma işlemleri kullanın. İstemcinin en yakın bölgeye yazmasına izin vererek yazma gecikme süresini azaltır. İş yükünüz çakışma çözümleme mantığını desteklemeli ve uygulamanızın nihai tutarlılık davranışını beklemesi gerekir.
En iyi performans için SDK'yi Doğrudan mod için yapılandırın. Bu mod, istemcinizin doğrudan hizmetteki bölümlere İletim Denetimi Protokolü (TCP) bağlantılarını açmasına ve aracı ağ geçidi olmadan doğrudan istek göndermesine olanak tanır. Doğrudan mod daha az ağ atlaması olduğundan daha iyi performans sağlar.
Yüksek aktarım hızı gerektiren senaryolarda istemci SDK'larının toplu özelliğini kullanın. Toplu özellik, aktarım hızını en üst düzeye çıkarmak için işlemleri otomatik olarak yönetir ve toplu olarak gerçekleştirir. Toplu özelliğin kullanılması arka uç isteklerinin sayısını azaltır ve görevleri bölümler arasında verimli bir şekilde dağıtır. Bu yaklaşım performansı ve kaynak kullanımını artırır.
Toplu işlemler için dizin oluşturmayı devre dışı bırakın. Birkaç ekleme, değiştirme veya yükseltme işlemi varsa, ilgili SDK'nın toplu desteğini kullanırken işlemin hızını artırmak için dizin oluşturmayı devre dışı bırakın. Daha sonra dizinlemeyi hemen tekrar etkinleştirebilirsiniz. Toplu işlemler sırasında dizin oluşturmayı devre dışı bırakmak, dizinin bakımının sağlanmasıyla ilgili ek yükü azaltır. Verileri ekleme ve güncelleştirme işlemlerini hızlandıran toplu işlemler için kaynakları daha iyi kullanabilirsiniz.
Karmaşık işlemlerdeki alanlar için bileşik dizinler oluşturun. Birden çok alanı olan deyimler için ORDER BY bileşik dizinleri kullanmayı göz önünde bulundurun. Bileşik dizinler, birden çok alandaki işlemlerin verimliliğini artırabilir ve bu da verilerin hızlı ve verimli bir şekilde alınmasını sağlar.
Sunucu istemci makinelerini SDK'lar için iyileştirin. Çoğu yaygın durumda , .NET veya Java için SDK'ları kullanan 64 bit konak makinelerde en az dört çekirdek ve sekiz GB bellek kullanın.

Konak makinelerinde hızlandırılmış ağı etkinleştirin.
Daha yüksek belirtimlere sahip makinelerin kullanılması, SDK'ların aynı anda daha fazla işlemi işleyebilmesini sağlar. Hızlandırılmış ağ, yanıt süresini artıran gecikme süresini azaltmaya yardımcı olabilir.
Büyük veri kümelerini birleştiren sorguları iyileştirmek için alt sorguları stratejik olarak kullanın. Öğe içindeki dizileri birleştirmeden önce dizileri filtrelemek için alt sorgular kullanarak kendi kendine birleştirme ifadelerini iyileştirin.

Bölümler arası sorgular için sorgunuzu bölüm anahtarına bir filtre içerecek şekilde iyileştirerek sorgunuzun yönlendirmesini mümkün olan en az bölüm miktarına iyileştirin.
Birden çok dizi dahil edilirse ve filtrelenmezse alt dizileri birleştiren sorguların karmaşıklığı artabilir. Alt sorgular çalıştırılarak, diziler birleştirilmeden önce filtrelenebilir ve bu da kendi kendine birleştirme ifadelerinin verimliliğini artırır.
En karmaşık sorgular için analitik iş yüklerini kullanın.

Büyük kapsayıcılar üzerinde sık sık toplamalar çalıştırıyor veya sorguları birleştiriyorsanız analiz deposunu etkinleştirmeyi ve Azure Synapse Analytics'te sorgular yapmayı göz önünde bulundurun.
Analitik iş yükleri işlem iş yüklerinden yalıtılır ve karmaşık sorguları işlemek için iyileştirilmiştir. Bu sayede performans düşüşü önlenir ve daha hızlı sonuçlar elde edilir.

Azure ilkeleri

Azure, NoSQL için Azure Cosmos DB ve bağımlılıklarıyla ilgili kapsamlı bir yerleşik ilke kümesi sağlar. Önceki önerilerden bazıları Azure İlkesi aracılığıyla denetlenebilir. Örneğin, şunları denetleyebilirsiniz:

  • Azure Cosmos DB hesabı en az iki bölgeye dağıtılır.

  • Azure Cosmos DB veritabanı hesapları, alanlar arası yedeklilik için uygun şekilde yapılandırılır.

  • Kimlik doğrulaması için Microsoft Entra kimliklerinin gerekli olması için Azure Cosmos DB veritabanı hesaplarında yerel kimlik doğrulama yöntemleri devre dışı bırakılmalıdır.

  • Azure Cosmos DB hesabınızın genel İnternet'te kullanıma sunulmaması için genel ağ erişimi devre dışı bırakılır.

  • Kaynak sağlayıcısı aracılığıyla Azure Cosmos DB veritabanları ve kapsayıcıları oluşturduğunuzda maksimum aktarım hızı kısıtlanmalıdır.

Kapsamlı idare için , NoSQL için Azure Cosmos DB için Azure İlkesi yerleşik tanımlarını ve veri depolamanın güvenliğini etkileyebilecek diğer ilkeleri gözden geçirin.

Azure Danışmanı önerileri

Azure Danışmanı, Azure dağıtımlarınızı iyileştirmek için en iyi yöntemleri izlemenize yardımcı olan kişiselleştirilmiş bir bulut danışmanıdır.

Daha fazla bilgi için bkz. Azure Danışmanı.