Azure İyi Tasarlanmış Çerçeve incelemesi – NoSQL için Azure Cosmos DB
Bu makalede, NoSQL için Azure Cosmos DB için en iyi yöntemler açıklanmaktadır. Bu en iyi yöntemler, Azure Cosmos DB'de verimli, güvenilir, güvenli, maliyet için iyileştirilmiş ve operasyonel olarak mükemmel çözümler dağıtabilmenizi sağlar. Bu kılavuz, İyi Tasarlanmış Çerçeve'deki beş mimari mükemmelliği sütununa odaklanır:
Bu inceleme kılavuzunda, Azure Cosmos DB hakkında çalışan bir bilgiye sahip olduğunuz ve özellikleri konusunda bilgi sahibi olduğunuz varsayılır. Daha fazla bilgi için bkz . NoSQL için Azure Cosmos DB.
Önkoşullar
İyi Tasarlanmış Çerçeve yapılarını anlamak, yüksek kaliteli, kararlı ve verimli bir bulut mimarisi oluşturmaya yardımcı olabilir. Azure İyi Tasarlanmış Çerçeve Gözden Geçirme değerlendirmesini kullanarak iş yükünüzü gözden geçirerek başlamanızı öneririz.
Daha fazla bağlam için, tasarımlarında bu kılavuzdaki önemli noktaları yansıtan çeşitli başvuru mimarilerini gözden geçirin. Bu mimariler şunlardır ancak bunlarla sınırlı değildir:
- Azure Cosmos DB kullanarak küresel olarak dağıtılmış görev açısından kritik uygulamalar
- Azure Cosmos DB kullanan sunucusuz uygulamalar
- Azure Cosmos DB çoğaltması ile çok bölgeli web uygulaması
Güvenilirlik
Her bulut hizmetinde olduğu gibi hatalar hem hizmette hem de iş yükü tarafında oluşabilir. Tüm olası hataları önlemek mümkün değildir, ancak tek bir başarısız bileşenin tüm iş yükünüz üzerindeki etkilerini en aza indirmek daha iyi bir hedeftir. Bu bölüm, tek seferlik bir hatanın sonuçlarını en aza indirmeye yönelik önemli noktalar ve öneriler içerir.
Tasarım denetim listesi
- Seçtiğiniz tutarlılık düzeyi ve çoğaltma modunun bölge genelindeki bir kesintide Kurtarma noktası hedefini (RPO) nasıl etkilediğini düşünün.
- Veritabanı hesabı dağıtımınızı Azure'da en az iki bölgeye yayılacak şekilde tasarlayın. Ayrıca, Azure bölgenizde teklif edildiğinde hesabınızı birden çok kullanılabilirlik alanına dağıtın.
- İş yükünüz için çok bölgeli ve tek bölgeli yazma stratejilerini değerlendirin. Tek bölgeli yazma için iş yükünüzü yük devretme için en az ikinci bir okuma bölgesine sahip olacak şekilde tasarlar. Tek bölgeli yazma ve çok bölgeli okuma senaryoları için otomatik yük devretmeyi etkinleştirin. Ç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. Tek bölgeli ve çok bölgeli yazma hesapları için bölgesel bir kesinti sırasındaki beklentileri gözden geçirin.
- Hesabınız için hizmet tarafından yönetilen yük devretmeyi etkinleştirin.
- Uygulamanız için uçtan uca yüksek kullanılabilirlik testi tasarlama.
- 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 gibi yaygın yedekleme işlemlerine göz atın. Sürekli yedekleme ile hesabı yapılandırın ve iş gereksinimlerinize göre uygun saklama süresini seçin.
- 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.
Öneriler
Öneri | Avantaj |
---|---|
Azure Cosmos DB hesabınızı kullanılabilirlik alanları arasında dağıtabilirsiniz (kullanılabilir olduğunda). | Kullanılabilirlik alanları, çoğaltmalarınızın bir alt kümesine ayrı güç, ağ ve soğutma yalıtma donanım hataları sağlar. Azure Cosmos DB, kullanılabilirlik alanları özelliği kullanılmadığında tek bir rastgele kullanılabilirlik alanına yayılan birden çok çoğaltmaya sahiptir. Kullanılabilirlik alanı özelliği kullanılırsa, çoğaltmalar birden çok kullanılabilirlik alanına yayılır. |
Azure Cosmos DB hesabınızı en az iki bölgeye yayılacak şekilde yapılandırın. | Birden çok bölgeye yayma, yalıtılmış bir bölge kesintisi olması durumunda hesabınızın tamamen kullanılamaz duruma gelmesini engeller. |
Hesabınız için hizmet tarafından yönetilen yük devretmeyi etkinleştirin. | Hizmet tarafından yönetilen yük devretme, Azure Cosmos DB'nin kullanılabilirliği korumak için birden çok bölgeli bir hesabın yazma bölgesini değiştirmesine olanak tanır. Bu değişiklik kullanıcı etkileşimi olmadan gerçekleşir. Hizmet tarafından yönetilen yük devretme ile dengeleri anlayın ve gerekirse zorlamalı yük devretmeyi planlayın. Daha fazla bilgi için bkz . Yüksek oranda kullanılabilir uygulamalar oluşturma. |
Hizmet tarafından yönetilen yük devretme geçici olarak devre dışı bırakılarak yük devretmeyi el ile test ederek kullanılabilirliği doğrulayın. | Hizmet yönetimi yük devretmesini geçici olarak devre dışı bırakmak, bir betik veya Azure portalı kullanarak el ile yük devretme işlemi başlatarak uygulamanızın uçtan uca yüksek kullanılabilirliğini doğrulamanızı sağlar. Daha sonra hizmet tarafından yönetilen yük devretmeyi yeniden etkinleştirebilirsiniz. |
Azure İlkesi tanımları
- İlke: En az iki bölge gerektir
- İlke: Hizmet tarafından yönetilen yük devretmeyi etkinleştirme
- İlke: Belirli dağıtım bölgeleri gerektir
Güvenlik
Güvenlik, kolaylık sağlamak için kolayca göz ardı edilebilen tüm mimarilerin kritik bir parçasıdır. İlk kaynak veya kavram kanıtı oluşturulmadan önce çeşitli en iyi güvenlik yöntemlerini göz önünde bulundurarak son iş yükünüzün güvenliğini güçlendirin. Bu bölüm, son iş yükünüz için güvenlik açığı sayısını azaltmaya yönelik önemli noktalar ve öneriler içerir.
Tasarım denetim listesi
- Azure Cosmos DB güvenlik temeline uygun olarak özel uç noktaları kullanacak şekilde tasarlayarak yüzey saldırı alanını azaltın.
- En düşük ayrıcalıklı erişim ilkesine göre hesabınıza denetim düzlemi ve veri düzlemi erişimi için roller, gruplar ve atamalar oluşturun. Anahtar tabanlı kimlik doğrulamasını devre dışı bırakmayı göz önünde bulundurun.
- Geçerli küresel kişisel veri gereksinimleri bağlamında hizmet düzeyi uyumluluğunu ve sertifikalarını değerlendirin.
- Hizmet tarafından yönetilen anahtarları veya müşteri tarafından yönetilen anahtarları (CMK' ler) kullanarak bekleyen veya hareket halindeki verileri şifreleyin.
- Denetim düzlemi günlükleriyle kullanıcı erişimini, güvenlik ihlallerini ve kaynak işlemlerini denetleyin..
- Veri düzlemi ölçümleriyle veri çıkışını, veri değişikliklerini, kullanımı ve gecikme süresini izleyin.
Öneriler
Öneri | Avantaj |
---|---|
Veri koruma ve kimlik yönetimi güvenlik temellerini en azından uygulayın. | Kimlik yönetimi ve veri koruması da dahil olmak üzere güvenlik temeli üzerinden geçin. Azure Cosmos DB hesabınızın güvenliğini sağlamak için önerileri uygulayın. |
Genel uç noktaları devre dışı bırakın ve mümkün olduğunca özel uç noktaları kullanın. | Surface alanı saldırıları için gereksiz veya kullanılmayan genel uç noktaları hesabınıza bırakmaktan kaçının. |
Denetim düzlemi erişimini belirli kimliklerle ve gruplarla ve iyi tanımlanmış atamalar kapsamında sınırlandırmak için rol tabanlı erişim denetimini kullanın. | Hesabınıza istenmeyen erişimi önlemek için rol tabanlı erişim denetimini kullanın. 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 hesabınıza erişimi kısıtlamak için sanal ağ hizmet uç noktalarını ve güvenlik duvarı kurallarını uygulayın. Azure Cosmos DB kaynaklarına gelen ve giden trafiği denetlemek için ağ güvenlik gruplarını (NSG) kullanın. Güvenilen ağlara erişimi sınırlamak ve uygun ağ güvenlik önlemlerini uygulamak, verilerinizi yetkisiz erişime karşı korumaya yardımcı olur. |
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 yapın. Ekleme saldırıları, siteler arası betik (XSS) veya güvenli olmayan doğrudan nesne başvuruları (IDOR) gibi yaygın güvenlik açıklarına karşı koruma. 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. |
İhlaller için kontrol düzlemi günlüklerini izleyin. | İzleme, veritabanınızın güvenli ve ilgili veri koruma düzenlemeleriyle uyumlu kalmasını sağlayarak 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. Daha fazla bilgi için bkz . Azure veritabanları için güvenlik denetim listesi. |
Azure Cosmos DB için Microsoft Defender'ın etkinleştirilmesi | Microsoft Defender, NoSQL için Azure Cosmos DB hesabınızdaki veritabanlarını kullanma girişimlerini algılar. Defender olası SQL eklemelerini, şüpheli erişim desenlerini ve diğer olası açıklardan yararlanmayı algılar. |
Azure İlkesi tanımları
- İlke: Microsoft Defender'ın etkinleştirilmesi
- İlke: Sanal ağ hizmet uç noktası gerektir
- İlke: Yerel kimlik doğrulamasını devre dışı bırakma
- İlke: Güvenlik duvarı kuralları gerektir
Maliyet iyileştirme
İş yükünüzün özellikleri ve çözümünüzün uygulanması, Azure'da çalıştırmanın son maliyetini etkileyebilir. İş yükünüzü tasarlarken bölümleme stratejiniz, tutarlılık düzeyiniz, çoğaltmanız ve yazma türünüz gibi ana sürücüleri göz önünde bulundurun. İş yükünüzü boyutlandırırken verilerinizin okuma/yazma doğasını, ortalama öğelerin boyutunu, normalleştirmeyi ve TTL'yi göz önünde bulundurun. Bu bölüm, iş yükünüz için maliyetleri kolaylaştırmaya yönelik önemli noktalar ve öneriler içerir.
- İş yükünüzde sık yaptığınız işlemleri ve sorguları dikkate alan bir dizin oluşturma ilkesi tasarlayın.
- Yüksek kardinaliteye sahip olan ve değişmeyen bir değere sahip 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 kılavuzu ve en iyi yöntemleri kullanın. Ayrıca, bölüm anahtarı belirlerken dizin oluşturma ilkenizi de göz önünde bulundurun.
- İş 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 da düşünebilirsiniz. aktarım hızı ayırma şemasını seçme bağlamında iş yükünüzün trafik desenlerini gözden geçirin.
- İş yükünüzle ilgili tutarlılık düzeylerini göz önünde bulundurun. Ayrıca, istemci oturumlarının varsayılan tutarlılık düzeyini değiştirmesi gerekip gerekmediğini de göz önünde bulundurun.
- İş yükünüz için beklenen genel veri depolama alanını hesaplayın. Öğelerin ve 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, bu öğeleri kaldırılmadan önce daha düşük maliyetli bir depolama çözümüne aktarın.
- 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.
Öneriler
Öneri | Avantaj |
---|---|
RU/sn kullanımını ve desenlerini izleyin. | Çözümünüzün en başından itibaren RU tüketimini izlemek için ölçümleri kullanın. Uygulama kodunuzdaki kötü amaçlı değişkenleri bulmak için sorguları ve diğer veri araştırma tekniklerini kullanın. |
İş yükünüzle eşlemek için dizin oluşturma ilkenizi özelleştirin. | Varsayılan dizin oluşturma ilkesi bir öğedeki tüm yolları dizine alır ve bu ilke RU tüketimi ve maliyetleri üzerinde önemli etkilere sahip olabilir. Yalnızca ortak sorgularınız için dizine almanız gereken yollara göre tasarlanmış 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. |
İş yükünüz için ideal olan bölüm anahtarını[s] seçin. | Bölüm anahtarı[s] aktarım hızı tüketimini ve veri depolamayı mantıksal bölümler arasında eşit olarak dağıtmalıdır. Seçim, ilişkisiz bölümler arası sorgu sayısını da en aza indirmelidir. Dengesiz bölümler aktarım hızı maliyetlerini ve geçici hataları artıraağından, orantısız miktarda trafik alan sık erişimli bölümlerden kaçının. Büyük olasılıkla yalnızca tek bölümlü veya sınırlanmış bölümler arası sorgular yürüten olası bölüm anahtarını[s] belirlemek için en yaygın arama sorgularını kullanın. |
İş yükünüz için uygun olduğunda veritabanı veya kapsayıcı düzeyinde sunucusuz veya sağlanan aktarım hızını, el ile sağlamayı veya otomatik ölçeklendirmeyi kullanın. | Sağlanan aktarım hızı türlerini karşılaştırın ve iş yükünüz için uygun seçeneği belirleyin. Genellikle, daha küçük ve geliştirme/test iş yükleri sunucusuz aktarım hızı veya veritabanı düzeyinde el ile paylaşılan aktarım hızı avantajlarından yararlanabilir. Daha büyük, görev açısından kritik iş yükleri, kapsayıcı düzeyinde atanan sağlanan aktarım hızından yararlanabilir. |
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. | Her zaman standart varsayılan tutarlılık düzeyini değiştirmeniz veya istemci oturumlarında geçersiz kılmanız gerekmeyebilir. Daha güçlü tutarlılık düzeylerinde okumalarla ilişkili daha yüksek maliyetleri göz önünde bulundurun. |
Geliştirme/test iş yükleri için Azure Cosmos DB öykünücüsü kullanın. | Azure Cosmos DB öykünücüsü geliştirme/test ve sürekli tümleştirme için geliştirme ekibiniz için bu yaygın iş yüklerinin maliyetlerinden tasarruf sağlayan bir seçenektir. Öykünücü, Docker kapsayıcı görüntüsü olarak da kullanılabilir. |
İşlem toplu işlemlerini kullanma | Ekleme için mantıksal bölüm anahtarı içinde işlem toplu işlemlerinden yararlanmak için bölümler tasarlayın. Tek bir işlem isteğine birden çok belge eklemek, güncelleştirmek veya silmek için istemci tarafı SDK'larında toplu işlemleri kullanın. Bu adım tek tek isteklerin sayısını azaltabilir ve sonunda daha iyi aktarım hızı verimliliğine yol açabilir. |
Büyük sorgu sonuç kümelerinin aktarım hızı maliyetlerini azaltmak için projeksiyonu kullanın. | Yalnızca 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. |
İlişkisiz bölümler arası sorgu 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. |
Kullanılmayan öğeleri kaldırmak için yaşam süresi (TTL) uygulayın. | Artık gerekli olmayan verileri otomatik olarak silmek için TTL kullanın. Süresi dolan veya eski verileri kaldırarak depolama maliyetlerini yönetin. Gerekirse süresi dolan verileri daha düşük maliyetli bir depolama çözümüne aktarın. |
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. |
Azure İlkesi tanımları
Operasyonel mükemmellik
İş yüklerinin, hedeflenen performansa uygun olduğundan emin olmak için dağıtıldıktan sonra izlenmesi gerekir. Ayrıca, iş yüklerinin izlenmesi, planlama aşamasında hemen belirgin olmayan yeni verimliliklerin kilidini açmanıza yardımcı olabilir. Yıkıcı senaryolarda tanılama verileri, yüksek önem derecesinde bir olayın neden meydana gelmiş olabileceğini ortaya çıkarmanın anahtarıdır. Bu bölüm, iş yüklerinizin olaylarını ve özelliklerini izlemeye yönelik önemli noktalar ve öneriler içerir.
Tasarım denetim listesi
- Farklı iş yükleri arasında ayrım yapmak, olağanüstü senaryolara bayrak eklemek, özel durumlardaki/hatalardaki desenleri izlemek ve konak makine performansını izlemek için bir günlük ve ölçüm izleme stratejisi taslağı hazırlar.
- Mümkün olduğunda toplu işlemleri kullanmak için büyük iş yükleri tasarlayın.
- Azaltmayı izlemek, aktarım hızı ayırmayı analiz etmek ve verilerinizin boyutunu izlemek için birden çok uyarı tanımlayın.
- Çözümünüzün bölgeler arasında kullanılabilirliği için bir izleme stratejisi tasarla.
- 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.
- 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 izlemeye yönelik bir plan olduğundan emin olun.
Öneriler
Öneri | Avantaj |
---|---|
Uygulama geliştiricilerinin geliştirici SDK'sının en son sürümünü kullandığından emin olun. | NoSQL için Her Azure Cosmos DB SDK'sı önerilen en düşük sürüme sahiptir. Daha fazla bilgi için bkz . .NET SDK ve Java SDK. |
İş yüklerini ayırt etmek için istemci uygulamasında tanımlayıcılar oluşturun. | Her günlük girdisinin veya ölçümün hangi iş yüküyle ilişkilendirilmesi gerektiğini belirlemek için kullanıcı aracısı soneki gibi bayrakları göz önünde bulundurun. |
Geliştirici SDK'sını kullanarak ek tanılamaları yakalayın. | Varsayılan ölçümler ve günlüklerin yanı sıra iş yükü hakkında ek bilgiler eklemek için her SDK için tanılama ekleme tekniklerini kullanın. Daha fazla bilgi için bkz . .NET SDK ve Java SDK. |
Konak makine kaynaklarıyla ilişkili uyarılar oluşturun. | İstemci tarafı konak makinesi sorunları nedeniyle Bağlan üretkenlik ve kullanılabilirlik sorunları oluşabilir. NoSQL SDK'ları için Azure Cosmos DB'yi kullanarak istemci uygulamalarıyla konak makinelerde CPU, bellek ve depolama gibi kaynakları izleyin. |
Büyük işlemler için istemci SDK'larının toplu özelliklerini kullanın. | Yüksek düzeyde aktarım hızı gerektiren senaryolar, SDK'nın toplu özelliğinin kullanılmasından yararlanır. 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. |
Aktarım hızı azaltma için uyarılar oluşturun. | Beklenen eşiklerin ötesinde aktarım hızı azaltmayı izlemek için uyarıları kullanın. Azure Cosmos DB ile ilgili olarak iş yükünüz hakkında daha fazla bilgi edindikçe zaman içinde uyarıları gözden geçirin ve ayarlayın. Normalleştirilmiş RU Tüketimi ölçümü, bir veritabanı veya kapsayıcıda sağlanan aktarım hızının yüzde kullanımını ölçen bir ölçümdür. Bu ölçüm tutarlı olarak %100'deyse istekler büyük olasılıkla geçici bir hata döndürür. |
Ölçümleri kullanarak sorgu performansını izleyin. | Zaman içindeki en iyi sorgularınızın performansını izlemek için ölçümleri kullanın. Dizin oluşturma ilkesini güncelleştirerek veya sorguları değiştirerek verimlerin bulunup bulunmayacağı değerlendirin. Sorgu performansı düşükse performans sorunlarını giderin ve en iyi sorgu yöntemlerini uygulayın. Daha fazla bilgi için bkz . sorgu performansı ipuç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. Ekibinizin diğer üretim dışı ortamlara dağıtmak için aynı şablonları kullandığından emin olun. |
İş yükünüzdeki yaygın sorunları belirlemek için önemli ölçümleri izleyin. | İş yükünüzdeki yaygın sorunları bulmak için belirli ölçümleri kullanın; bunlarla sınırlı olmamak üzere; RU kullanımı, bölüme göre RU kullanımı, azaltma ve türe göre istek birimleri. Daha fazla bilgi için bkz . veri başvurularını izleme. |
Azure İlkesi tanımları
Performans verimliliği
- 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.
- En yaygın ve en 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 sayfa başına beklediğiniz sonuç sayısını belirleyin. Bu sayı, önceden oluşturulmuş sonuçlar için arabelleğe alınmış öğe sayısını resmileştirmeye yardımcı olur.
- Hedef kullanıcılarınızı araştırma. Hangi Azure bölgelerinin kendilerine en yakın olduğunu belirleyin.
- 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.
- Öğeleri ilgili JSON belgeleri olabildiğince küçük olacak şekilde tasarlar. Gerekirse verileri birden çok öğe arasında bölmeyi göz önünde bulundurun.
- Alt dizilerdeki sorguları tanımlayın ve daha verimli alt sorgular için aday olup olmadığını belirleyin.
- İş yükünüzün analiz deposu gerektip gerektirmediğini belirleyin. Son derece karmaşık sorgular için Azure Synapse Link gibi analiz depolarını ve hizmetleri göz önünde bulundurun.
Öneri | Avantaj |
---|---|
Aktarım hızınızı performans temelinize göre yapılandırın. | 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. |
uygun olduğunda istemci ve sunucu tarafında iyileştirme tekniklerini kullanın. | Yerleşik tümleşik önbellekten yararlanın. HER sayfa için önceden alınmış (arabelleğe alınmış) ve döndürülecek öğe sayısını yönetmek için SDK'sını yapılandırın. |
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. Yazma işlemini nasıl yapılandırdığınıza (tek veya birden çok bölge) bakılmaksızın yüksek performanslı okuma performansı sağlamak için okuma çoğaltmadan yararlanın. (.NET/Java) SDK'sını son kullanıcınıza daha yakın bölgeleri tercih etmek için yapılandırın. |
SDK'yi Doğrudan mod için yapılandırın. | Doğrudan mod, en iyi performans için tercih edilen seçenektir. Bu mod, istemcinizin hizmetteki bölümlere doğrudan TCP bağlantıları açmasını ve aracı ağ geçidi olmadan doğrudan istek göndermesini sağlar. Daha az ağ atlaması olduğundan bu mod daha iyi performans sunar. |
Toplu işlemler için dizin oluşturmayı devre dışı bırakın. | Birçok insert/replace/upsert 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. Dizin oluşturma daha sonra hemen yeniden oluşturulabilir. |
Karmaşık işlemlerde kullanılan alanlar için bileşik dizinler oluşturun. | Bileşik dizinler, birden çok alandaki işlemlerin verimliliğini büyüklüğe göre artırabilir. Çoğu durumda, birden çok alanı olan deyimler için ORDER BY bileşik dizinler kullanın. |
KONAK istemci makinelerini SDK'lar için iyileştirin. | Çoğu durumda SDK'ları (.NET/Java) kullanarak 64 bit konak makinelerde en az 4 çekirdek ve 8 GB bellek kullanın. Ayrıca, konak makinelerinde hızlandırılmış ağı etkinleştirin. |
Çoğu SDK'da sınıf için CosmosClient tekil deseni 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 atılmayacak şekilde tasarlanmıştır. Örneklerin sürekli oluşturulması ve atılması performansın düşmesine neden olabilir. |
Öğe boyutlarını 100 KB'tan küçük tutun. | Daha büyük öğeler, yaygın okuma ve yazma işlemleri için daha fazla aktarım hızı sunar. Tüm alanları yansıtan daha büyük öğelere yönelik sorguların da önemli bir aktarım hızı maliyeti olabilir. |
Büyük veri kümelerini birleştiren sorguları iyileştirmek için alt sorguları stratejik olarak kullanın. | Birden çok dizi dahil edilirse ve filtrelenmezse alt dizileri birleştiren sorguların karmaşıklığı artabilir. Örneğin, her biri en az 10 öğeden oluşan ikiden fazla diziyi birleştiren bir sorgu 1.000'den fazla tanımlama grubuna genişletilebilir. Öğ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. |
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. |
Azure İlkesi tanımları
Ek kaynaklar
NoSQL için Azure Cosmos DB ile ilgili diğer kaynakları göz önünde bulundurun.
Azure Mimari Merkezi kılavuzu
- Çok Kiracılı ve Azure Cosmos DB
- Azure Cosmos DB ile perakende sektöründe görsel arama
- Azure Cosmos DB kullanarak oyun oynama
- Azure Cosmos DB kullanan sunucusuz uygulamalar
- Azure Cosmos DB kullanarak kişiselleştirme