Aracılığıyla paylaş


Çok Kiracılı ve Azure Cosmos DB

Bu sayfada, çok kiracılı sistemlerle çalışırken yararlı olan Azure Cosmos DB özelliklerinden bazılarını açıklayacağız. Azure Cosmos DB'yi çok kiracılı bir çözümde kullanma yönergelerine ve örneklerine de bağlanıyoruz.

Azure Cosmos DB'nin çok kiracılılığı destekleyen özellikleri

Bölümleme

Bölümleri Azure Cosmos DB kapsayıcılarınızla birlikte kullanarak, birden çok kiracı arasında paylaşılan kapsayıcılar oluşturabilirsiniz. Genellikle bölüm anahtarı olarak kiracı tanımlayıcısını kullanırsınız, ancak tek bir kiracı için birden çok bölüm anahtarı kullanmayı da düşünebilirsiniz. İyi planlanmış bir bölümleme stratejisi, Parçalama desenini etkili bir şekilde uygular. Büyük kapsayıcılarla Azure Cosmos DB, yüksek düzeyde ölçek elde etmek için kiracılarınızı birden çok fiziksel düğüme yayar.

Çok kiracılı çözümünüzün performansını artırmak için hiyerarşik bölüm anahtarlarının kullanımını incelemenizi öneririz. Hiyerarşik bölüm anahtarları, birden çok değer içeren bir bölüm anahtarı oluşturmanıza olanak tanır. Örneğin, kiracı tanımlayıcısını ve depoladığınız veri türünü içeren hiyerarşik bir bölüm anahtarı kullanabilirsiniz. Bu yaklaşım, bölüm anahtarı değeri başına 20 GB mantıksal bölüm sınırının ötesine ölçeklendirmenizi sağlar.

Daha fazla bilgi:

İstek birimlerini yönetme

Azure Cosmos DB fiyatlandırma modeli, sağladığınız veya kullandığınız saniye başına istek birimi sayısını temel alır. İstek birimi, veritabanı işleminin veya sorgusunun maliyetinin mantıksal soyutlamasıdır. Genellikle iş yükünüz için saniyede tanımlı sayıda istek birimi sağlarsınız ve bu işlem aktarım hızı olarak adlandırılır. Azure Cosmos DB, aktarım hızını sağlama şeklinize yönelik çeşitli seçenekler sağlar. Çok kiracılı bir ortamda, yaptığınız seçim Azure Cosmos DB kaynaklarınızın performansını ve fiyatını etkiler.

Azure Cosmos DB için bir kiracı modeli, paylaşılan veritabanı içindeki her kiracı için ayrı kapsayıcılar dağıtmayı içerir. Azure Cosmos DB bir veritabanı için istek birimleri sağlamanızı sağlar ve tüm kapsayıcılar istek birimlerini paylaşır. Kiracı iş yükleriniz genellikle çakışmıyorsa, bu yaklaşım operasyonel maliyetlerinizi azaltmaya yardımcı olabilir. Ancak, tek bir kiracının kapsayıcısı paylaşılan sağlanan istek birimlerinin orantısız bir miktarını tüketebileceğinden bu yaklaşım Gürültülü Komşu sorununa açıktır. Bu sorunu azaltmak için önce gürültülü kiracıları belirleyin. Ardından, isteğe bağlı olarak belirli bir kapsayıcıda sağlanan aktarım hızını ayarlayabilirsiniz. Veritabanındaki diğer kapsayıcılar aktarım hızını paylaşmaya devam eder, ancak gürültülü kiracı kendi ayrılmış aktarım hızını kullanır.

Azure Cosmos DB, aralıklı veya öngörülemeyen trafik içeren iş yükleri için uygun olan sunucusuz bir katman da sağlar. Alternatif olarak, otomatik ölçeklendirme, sağlanan aktarım hızının ölçeklendirileceğini belirtmek için ilkeleri yapılandırmanıza olanak tanır. Ayrıca Azure Cosmos DB veri bloğu kapasitesinden yararlanarak sağlanan aktarım hızı kapasitenizin kullanımını en üst düzeye çıkarabilirsiniz. Aksi takdirde hız sınırlı olurdu. Çok kiracılı bir çözümde, farklı kiracı türlerini desteklemek için bu yaklaşımların tümünü birleştirebilirsiniz.

Not

Azure Cosmos DB yapılandırmanızı planlarken hizmet kotalarını ve sınırlarını dikkate aldığınızdan emin olun.

Her kiracıyla ilişkili maliyetleri izlemek ve yönetmek için Azure Cosmos DB API'sini kullanan her işlem tüketilen istek birimlerini içerir. Her kiracı tarafından tüketilen gerçek istek birimlerini toplamak ve karşılaştırmak için bu bilgileri kullanabilir ve ardından farklı performans özelliklerine sahip kiracıları tanımlayabilirsiniz.

Daha fazla bilgi:

Müşteri tarafından yönetilen anahtarlar

Bazı kiracılar kendi şifreleme anahtarlarının kullanılmasını gerektirebilir. Azure Cosmos DB, müşteri tarafından yönetilen bir anahtar özelliği sağlar. Bu özellik bir Azure Cosmos DB hesabı düzeyinde uygulandığından, kendi şifreleme anahtarlarını gerektiren kiracıların ayrılmış Azure Cosmos DB hesapları kullanılarak dağıtılması gerekir.

Daha fazla bilgi:

Yalıtım modelleri

Azure Cosmos DB kullanan çok kiracılı bir sistemle çalışırken, kullanmak istediğiniz yalıtım düzeyi hakkında bir karar vermeniz gerekir. İşletmeler arası (B2B), bir işletmeye satış anlamına gelir. İşletmeden müşteriye (B2C), ürünü veya hizmeti kullanan tek bir müşteriye doğrudan satış anlamına gelir. Azure Cosmos DB çeşitli yalıtım modellerini destekler:

İş yükü gereksinimi Kiracı başına bölüm anahtarı Kiracı başına kapsayıcı (paylaşılan aktarım hızı) Kiracı başına kapsayıcı (ayrılmış aktarım hızı) Kiracı başına veritabanı Kiracı başına veritabanı hesabı
Kiracılar arasında sorgular Kolay (kapsayıcı sorgular için sınır görevi görür) Kesin Kesin Kesin Kesin
Kiracı yoğunluğu Yüksek (kiracı başına en düşük maliyet) Orta Düşük Düşük Düşük
Kiracı verilerini silme Kesin Kolay (kiracı ayrıldığında kapsayıcıyı bırakma) Kolay (kiracı ayrıldığında kapsayıcıyı bırakma) Kolay (kiracı ayrıldığında veritabanını bırakma) Kolay (kiracı ayrıldığında veritabanını bırakma)
Veri erişimi güvenlik yalıtımı Uygulamanın içinde uygulanması gerekiyor Kapsayıcı RBAC Kapsayıcı RBAC Veritabanı RBAC RBAC
Coğrafi çoğaltma Kiracı başına coğrafi çoğaltma mümkün değil Veritabanı hesaplarındaki kiracıları gereksinimlere göre gruplandırma Veritabanı hesaplarındaki kiracıları gereksinimlere göre gruplandırma Veritabanı hesaplarındaki kiracıları gereksinimlere göre gruplandırma Veritabanı hesaplarındaki kiracıları gereksinimlere göre gruplandırma
Gürültülü komşu önleme Hiçbiri Hiçbiri Yes Evet Yes
Yeni kiracı oluşturma gecikmesi Anlık Hızlı Hızlı Orta Yavaş
Veri modelleme avantajları Hiçbiri varlık birlikte bulundurma varlık birlikte bulundurma Kiracı varlıklarını modellemek için birden çok kapsayıcı Kiracıları modellemek için birden çok kapsayıcı ve veritabanı
Şifreleme anahtarı Tüm kiracılar için aynı Tüm kiracılar için aynı Tüm kiracılar için aynı Tüm kiracılar için aynı Kiracı başına müşteri tarafından yönetilen anahtar
Aktarım hızı gereksinimleri >Kiracı başına 0 RU >Kiracı başına 100 RU >Kiracı başına 100 RU (yalnızca otomatik ölçeklendirmeyle, aksi takdirde >kiracı başına 400 RU ile) >Kiracı başına 400 RU >Kiracı başına 400 RU
Örnek kullanım örnekleri B2C uygulamaları B2B uygulamaları için standart teklif B2B uygulamaları için premium teklif B2B uygulamaları için premium teklif B2B uygulamaları için premium teklif

Kiracı başına bölüm anahtarı

Birden çok kiracı için tek bir kapsayıcı kullandığınızda Azure Cosmos DB bölümleme desteğinden yararlanabilirsiniz. Her kiracı için ayrı bölüm anahtarları kullanarak tek bir kiracının verilerini kolayca sorgulayabilirsiniz. Ayrıca, ayrı bölümlerde olsalar bile birden çok kiracıyı sorgulayabilirsiniz. Ancak bölümler arası sorguların istek birimi (RU) maliyeti tek bölümlü sorgulardan daha yüksektir.

Her kiracı için depolanan veri miktarı az olduğunda bu yaklaşım iyi sonuç verme eğilimindedir. Ücretsiz katman içeren bir fiyatlandırma modeli oluşturmak ve işletmeden müşteriye (B2C) çözümler için iyi bir seçim olabilir. Genel olarak, paylaşılan kapsayıcıları kullanarak en yüksek kiracı yoğunluğuna ve dolayısıyla kiracı başına en düşük fiyata ulaşırsınız.

Kapsayıcınızın aktarım hızını göz önünde bulundurmanız önemlidir. Tüm kiracılar kapsayıcının aktarım hızını paylaşır, bu nedenle kiracılarınızın yüksek veya çakışan iş yükleri varsa Gürültülü Komşu sorunu performans sorunlarına neden olabilir. Bu sorun bazen kiracıların alt kümeleri farklı kapsayıcılar halinde gruplandırılarak ve her kiracı grubunun uyumlu kullanım desenlerine sahip olduğundan emin olarak giderilebilir. Alternatif olarak, karma bir çok kiracılı ve tek kiracılı modeli de göz önünde bulundurabilirsiniz. Daha küçük kiracıları paylaşılan bölümlenmiş kapsayıcılar halinde gruplandırma ve büyük müşterilere ayrılmış kapsayıcılar verme. Ayrıca, kiracıyı bölüme göre modelleme sırasındaki gürültülü komşu sorununu denetlemeye yardımcı olabilecek, Java SDK'sında aktarım hızı yeniden ayırma, seri kapasite ve aktarım hızı denetimi gibi özellikler de vardır.

Her mantıksal bölümde depoladığınız veri miktarını göz önünde bulundurmak da önemlidir. Azure Cosmos DB, her mantıksal bölümün 20 GB'a kadar büyümesine olanak tanır. 20 GB'tan fazla veri depolaması gereken tek bir kiracınız varsa, verileri birden çok mantıksal bölüme yaymayı göz önünde bulundurun. Örneğin, öğesinin tek bir bölüm anahtarına Contososahip olmak yerine, bir kiracı için , Contoso2ve gibi Contoso1birden çok bölüm anahtarı oluşturarak bölüm anahtarlarını tuzlayabilirsiniz. Bir kiracının verilerini sorguladığınızda, tüm bölüm anahtarlarını eşleştirmek için yan tümcesini kullanabilirsiniz WHERE IN . Hiyerarşik bölüm anahtarları, yapay bölüm anahtarları veya kiracı başına birden çok bölüm anahtarı değeri kullanmak zorunda kalmadan depolama alanı 20 GB'tan büyük olan büyük kiracıları desteklemek için de kullanılabilir.

Çözümünüzün operasyonel yönlerini ve kiracı yaşam döngüsünün farklı aşamalarını göz önünde bulundurun. Örneğin, kiracı ayrılmış bir fiyatlandırma katmanına taşındığında büyük olasılıkla verileri farklı bir kapsayıcıya taşımanız gerekir. Kiracının yetkisi kaldırıldığında, verileri kaldırmak için kapsayıcıda silme sorgusu çalıştırmanız gerekir ve büyük kiracılar için bu sorgu yürütülürken önemli miktarda aktarım hızı tüketebilir.

Kiracı başına kapsayıcı

Her kiracı için ayrılmış kapsayıcılar sağlayabilirsiniz. Kiracınız için depoladığınız veriler tek bir kapsayıcıda birleştirilebildiğinde ayrılmış kapsayıcılar iyi çalışır. Bu model, yukarıdaki kiracı başına bölüm anahtarı modeline göre daha yüksek performans yalıtımı sağlar ve ayrıca Azure RBAC aracılığıyla daha fazla veri erişimi güvenlik yalıtımı sağlar.

Her kiracı için bir kapsayıcı kullanırken, veritabanı düzeyinde aktarım hızı sağlayarak aktarım hızını diğer kiracılarla paylaşmayı düşünebilirsiniz. Veritabanınız için en az istek birimi sayısı ve veritabanındaki kapsayıcı sayısı üst sınırıyla ilgili kısıtlamaları ve sınırları göz önünde bulundurun. Ayrıca kiracılarınızın garantili bir performans düzeyi gerektileyip gerektirmediğini ve Gürültülü Komşu sorununa karşı duyarlı olup olmadıklarını da göz önünde bulundurun. Aktarım hızını veritabanı düzeyinde paylaştığınızda, tüm kapsayıcılardaki iş yükü veya depolama alanı göreli olarak tekdüzen olmalıdır. Aksi takdirde, bir veya daha fazla büyük kiracı varsa gürültülü bir komşu sorununuz olabilir. Gerekirse, bu kiracıları iş yükü desenlerini temel alan farklı veritabanlarında gruplandırma planı yapın.

Alternatif olarak, her kapsayıcı için ayrılmış aktarım hızı sağlayabilirsiniz. Bu yaklaşım, daha büyük kiracılar ve Gürültülü Komşu sorunu riski altında olan kiracılar için iyi çalışır. Ancak, her kiracı için temel aktarım hızı daha yüksektir, bu nedenle bu modelin en düşük gereksinimlerini ve maliyet etkilerini göz önünde bulundurun.

Kiracı veri modeliniz birden fazla varlık gerektiriyorsa, tüm varlıklar aynı bölüm anahtarını paylaşabildiği sürece, bunlar aynı kapsayıcıda birlikte bulunabilir. Ancak, kiracı veri modeli daha karmaşıksa ve aynı bölüm anahtarını paylaşamıyor varlıklar gerektiriyorsa, aşağıdaki kiracı başına veritabanı veya veritabanı-hesap-kiracı başına modellerini göz önünde bulundurun. Daha fazla kılavuz için gerçek dünya örneğini kullanarak Azure Cosmos DB'de verileri modelleme ve bölümleme makalemize göz atın.

Kapsayıcılar kiracılara ayrılmış olduğunda yaşam döngüsü yönetimi genellikle daha basittir. Kiracıları paylaşılan ve ayrılmış aktarım hızı modelleri arasında kolayca taşıyabilir ve kiracının sağlamasını kaldırdığınızda kapsayıcıyı hızla silebilirsiniz.

Kiracı başına veritabanı

Her kiracı için veritabanlarını aynı veritabanı hesabında sağlayabilirsiniz. Yukarıdaki kiracı başına kapsayıcı modeli gibi, bu model de kiracı başına bölüm anahtarı modeline göre daha yüksek performans yalıtımı sağlar ve Azure RBAC aracılığıyla daha fazla veri erişimi güvenlik yalıtımı sağlar.

Aşağıdaki kiracı başına hesap modeli gibi bu yaklaşım da en yüksek performans yalıtımı düzeyini sağlar, ancak en düşük kiracı yoğunluğu sağlar. Ancak, her kiracı için kiracı başına kapsayıcı modelinde mümkün olandan daha karmaşık bir veri modeli gerektiğinde bu seçenek en iyisidir. Alternatif olarak, yeni kiracı oluşturmanın önceden kiracı hesapları oluşturmak için hızlı ve/veya herhangi bir ek yük içermemesi gerektiğinde de bu yaklaşımı izlemeniz gerekir. Ayrıca, kullanılmakta olan belirli yazılım geliştirme çerçevesi için kiracı başına veritabanı, bu çerçevede tanınan tek performans yalıtımı düzeyi olabilir. Varlık (kapsayıcı) düzeyinde yalıtım ve varlık birlikte bulundurma genellikle bu tür çerçevelerde yerel olarak desteklenmez.

Kiracı başına veritabanı hesabı

Azure Cosmos DB, her kiracı için ayrı veritabanı hesapları sağlamanıza olanak tanır ve bu da en yüksek yalıtım düzeyini ama en düşük yoğunluğu sağlar. Yukarıdaki kiracı başına kapsayıcı ve kiracı başına veritabanı modelleri gibi bu model de bölüm anahtarı/kiracı başına anahtar modeline göre daha yüksek performans yalıtımı sağlar. Ayrıca Azure RBAC aracılığıyla daha fazla veri erişimi güvenlik yalıtımı sağlar. Buna ek olarak, bu model müşteri tarafından yönetilen anahtarlar aracılığıyla kiracı düzeyinde veritabanı şifrelemesi güvenlik yalıtımı sağlar.

Tek bir veritabanı hesabı kiracıya ayrılmıştır ve bu da gürültülü komşu sorununa maruz kalmadığı anlamına gelir. Veritabanı hesabının konumunu kiracının gereksinimlerine göre yapılandırabilirsiniz. Ayrıca coğrafi çoğaltma ve müşteri tarafından yönetilen şifreleme anahtarları gibi Azure Cosmos DB özelliklerinin yapılandırmasını her kiracının gereksinimlerine uyacak şekilde ayarlayabilirsiniz. Kiracı başına ayrılmış bir Azure Cosmos DB hesabı kullanırken, Azure aboneliği başına en fazla Azure Cosmos DB hesabı sayısını göz önünde bulundurun.

Bu modeli kullanıyorsanız, uygulamanızın yeni kiracılar oluşturabilmesi için ne kadar hızlı olması gerektiğini göz önünde bulundurmanız gerekir. Azure Cosmos DB'de hesap oluşturma işlemi birkaç dakika sürebilir, bu nedenle önceden hesap oluşturmanız gerekebilir. Bu yaklaşım uygun değilse kiracı başına veritabanı modelini göz önünde bulundurun.

Kiracıların paylaşılan hesaptan ayrılmış bir Azure Cosmos DB hesabına geçişine izin verirseniz, kiracının verilerini eski ve yeni hesaplar arasında taşımak için kullanacağınız geçiş yaklaşımını göz önünde bulundurun.

Karma yaklaşımlar

Yukarıdaki yaklaşımların farklı kiracıların gereksinimlerine ve fiyatlandırma modelinize uyacak şekilde bir bileşimini göz önünde bulundurabilirsiniz. Örneğin:

  • Paylaşılan bir kapsayıcıda tüm ücretsiz deneme müşterilerini sağlayın ve kiracı kimliğini veya yapay anahtar bölüm anahtarını kullanın.
  • Kiracı başına ayrılmış kapsayıcı dağıtan ancak bir veritabanında paylaşılan aktarım hızına sahip ücretli bir Bronz katmanı sunar.
  • Kiracının kapsayıcısı için ayrılmış aktarım hızı sağlayan daha yüksek bir Silver katmanı sunun.
  • En yüksek Gold katmanını sunun ve kiracı için ayrılmış bir veritabanı hesabı sağlayın. Bu hesap kiracıların dağıtımları için coğrafyayı seçmesine de olanak tanır.

Katkıda Bulunanlar

Bu makale Microsoft tarafından yönetilir. Başlangıçta aşağıdaki katkıda bulunanlar tarafından yazılmıştır.

Asıl yazarlar:

  • Paul Burpo | Baş Müşteri Mühendisi, Azure için FastTrack
  • John Downs | Baş Müşteri Mühendisi, Azure için FastTrack

Diğer katkıda bulunanlar:

Genel olmayan LinkedIn profillerini görmek için LinkedIn'de oturum açın.

Sonraki adımlar

Çok kiracılı depolama ve veri yaklaşımlarını gözden geçirin.

Çok kiracılılık ve Azure Cosmos DB hakkında daha fazla bilgi edinin:

  • Azure Cosmos DB ve çok kiracılı sistemler: Azure Cosmos DB kullanan çok kiracılı bir sistemin nasıl derlendiğinin açıklandığı bir blog gönderisi.
  • Azure Cosmos DB ile çok kiracılı uygulamalar (video)
  • Azure Cosmos DB ve Azure ile çok kiracılı bir SaaS oluşturma (video): Çok kiracılı bir SaaS startup'ı olan Whally'nin Azure Cosmos DB ve Azure'da sıfırdan modern bir platformu nasıl oluşturduğuna ilişkin gerçek bir örnek olay incelemesi. Bölümleme, veri modelleme, güvenli çok kiracılılık, performans, değişiklik akışından SignalR'ye gerçek zamanlı akış ve daha fazlası ile ilgili olarak aldıkları tasarım ve uygulama kararlarını gösterir. Tüm bu çözümler Azure Uygulaması Hizmetlerinde ASP.NET Core kullanır.

Diğer Cosmos DB mimari senaryolarımızdan bazılarına bakın: