0Pricing
Azure Fundamentals · Ders

Azure Cosmos DB: Küresel NoSQL

Cosmos DB'nin çok modelli ve çok bölgeli mimarisini keşfedin, bölümleme anahtarlarını anlayın ve uygulamanızın gereksinimleri için doğru tutarlılık düzeyini seçin.

Azure Cosmos DB: Küresel NoSQL, CoddyKit'te ücretsiz bir Azure Fundamentals dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Azure Fundamentals öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Azure Fundamentals kursu toplamda 4 dersten oluşur.

Azure Cosmos DB nedir?

Azure Cosmos DB, Microsoft'un küresel olarak dağıtılmış, çok modelli NoSQL veritabanı hizmetidir. Her ölçekte ve dünyanın her yerinde tek haneli milisaniye cinsinden okuma ve yazma gecikmesi sunmak üzere tasarlanmıştır. Tek bir bölgeyle sınırlı geleneksel veritabanlarının aksine Cosmos DB, verileri aynı anda onlarca Azure bölgesine şeffaf biçimde çoğaltabilir.

Çok modelli API desteği

Cosmos DB, tek bir hizmet üzerinden birden çok veritabanı API'sini destekler. Yerel NoSQL API'sini (JSON belgeleri), MongoDB sürücüleriyle oluşturulmuş uygulamalar için MongoDB API'sini, geniş sütunlu iş yükleri için Apache Cassandra API'sini, grafik verileri için Gremlin API'sini ve anahtar-değer verileri için Table API'sini kullanabilirsiniz. Her API, Cosmos DB'nin temel altyapısını tanıdık bir arayüz üzerinden sunar.

Hesaplar, veritabanları ve container'lar

Cosmos DB kaynak hiyerarşisi üç düzeyden oluşur. Hesap, çoğaltma bölgesi listesini ve tutarlılık düzeyini tanımlayan en üst düzey kaynaktır. Bir hesabın içinde mantıksal ad alanları olarak veritabanları oluşturursunuz. Her veritabanının içinde ise öğeleri (belgeleri) barındıran ve aktarım hızının sağlandığı birim olan container'lar oluşturursunuz.

# Create a Cosmos DB account with the NoSQL API
az cosmosdb create \
  --name mycosmosaccount \
  --resource-group myRG \
  --kind GlobalDocumentDB \
  --locations regionName=eastus failoverPriority=0 isZoneRedundant=true

# Create a database
az cosmosdb sql database create \
  --account-name mycosmosaccount \
  --resource-group myRG \
  --name myDatabase

Bölümleme anahtarları: ölçeklendirmenin temeli

Bölümleme anahtarı, Cosmos DB'nin verileri fiziksel bölümler arasında dağıtmak için kullandığı ve her öğede bulunan bir özelliktir. Doğru bölümleme anahtarını seçmek kritik öneme sahiptir: anahtarın kardinalitesi yüksek olmalı (çok sayıda farklı değer içermeli), yazma trafiğini eşit biçimde dağıtmalı ve sorgularınızın çoğunda bulunmalıdır. Kötü bölümleme anahtarı seçimleri, aktarım hızını sınırlayan ve performansı düşüren yoğun bölümlere yol açar.

// Example container with /userId as partition key
// Items in the container:
{
  'id': 'order-001',
  'userId': 'user-42',
  'product': 'Widget',
  'total': 29.99
}
// userId distributes orders across partitions

Aktarım hızı: RU/s modeli

Cosmos DB, aktarım hızı için saniye başına İstek Birimi (RU/s) üzerinden ücret alır. Bir RU, yaklaşık olarak kimliğine göre 1 KB'lık bir belgeyi okumanın maliyetine eşittir. Yazma işlemleri, sorgular ve silme işlemleri; öğe boyutuna ve dizin karmaşıklığına bağlı olarak daha fazla RU tüketir. RU/s değerini container düzeyinde sağlayabilir veya bir veritabanındaki tüm container'lar arasında bir havuz paylaşabilirsiniz. Ayrıca Cosmos DB'nin aktarım hızını otomatik olarak ölçeklendirmesini sağlamak için otomatik ölçeklendirme moduna geçebilirsiniz.

# Create a container with 400 RU/s
az cosmosdb sql container create \
  --account-name mycosmosaccount \
  --resource-group myRG \
  --database-name myDatabase \
  --name orders \
  --partition-key-path '/userId' \
  --throughput 400

Küresel dağıtım

Cosmos DB'nin en güçlü özelliği, birkaç tıklamayla verileri küresel olarak çoğaltabilmesidir. Hesabınıza bölgeler eklersiniz ve Cosmos DB tüm yazma işlemlerini her bölge arasında otomatik olarak eşitler. Çoklu yazma (çoklu ana) yapılandırmasında her bölge aynı anda hem okuma hem de yazma işlemlerine hizmet verebilir; bu da coğrafi olarak dağınık kullanıcılar için gecikme süresini en aza indirir.

# Add a second region to the Cosmos DB account
az cosmosdb update \
  --name mycosmosaccount \
  --resource-group myRG \
  --locations regionName=eastus failoverPriority=0 \
                regionName=westeurope failoverPriority=1

Beş tutarlılık düzeyi

Cosmos DB, en güçlüden en zayıfa uzanan bir yelpazede ayarlanabilir beş tutarlılık düzeyi sunar: Strong (doğrusallaştırılabilir okumalar, en yüksek gecikme), Bounded Staleness (okumalar, yazmaların gerisinde sınırlı bir zaman aralığı kadar kalır), Session (varsayılan — bir oturum içinde kendi yazmalarınız için tutarlı okumalar), Consistent Prefix (okumalar, sırası bozulmuş yazmaları hiçbir zaman görmez) ve Eventual (en hızlı okumalar, en zayıf garantiler). Seçiminizi uygulamanızın güncelliğini yitirmiş verileri tolere etme düzeyine göre yapın.

Otomatik dizin oluşturma

Cosmos DB, varsayılan olarak eklediğiniz her öğedeki her özelliği otomatik olarak dizine ekler; bunun için önceden bir şema tanımlamanız gerekmez. Bu özellik, dizin bakımına gerek kalmadan esnek ve anlık sorgular yapılmasını sağlar. Hiç sorgulanmayan yolları hariç tutmak (depolama maliyetini azaltmak) veya birden çok özellik üzerindeki ORDER BY sorguları için bileşik dizinler eklemek amacıyla dizin oluşturma ilkesini özelleştirebilirsiniz.

// Custom indexing policy example
{
  'indexingMode': 'consistent',
  'includedPaths': [{ 'path': '/*' }],
  'excludedPaths': [
    { 'path': '/largeTextBlob/?' },
    { 'path': '/_etag/?' }
  ]
}

Olay odaklı uygulamalar için değişiklik akışı

Değişiklik akışı, bir Cosmos DB container'ındaki tüm oluşturma ve güncelleme işlemlerinin sıralanmış günlüğüdür. Uygulamalar, sonraki işlemleri tetiklemek için değişiklik akışına abone olur; örneğin bir arama dizinini güncellemek, bildirim göndermek veya gerçekleştirilmiş bir görünüme yazmak için. Değişiklik akışı, Cosmos DB mimarilerindeki olay odaklı ve CQRS desenlerinin temelini oluşturur.

Süresi dolan veriler için Time-to-Live (TTL)

Cosmos DB, belirli sayıda saniye sonra öğeleri otomatik olarak silmek üzere bir container'a veya tek tek öğelere ayarlayabileceğiniz Time-to-Live (TTL) özelliğini destekler. Bu özellik oturum verileri, önbellek girdileri, mevzuata göre belirlenmiş saklama sürelerine sahip denetim günlükleri veya bilinen bir sona erme zamanı olan tüm veriler için idealdir. TTL silme işlemleri arka plan görevleri olarak gerçekleştirilir ve sağlanan RU/s değerini tüketmez.

// Enable TTL on a container (TTL in seconds)
az cosmosdb sql container update \
  --account-name mycosmosaccount \
  --resource-group myRG \
  --database-name myDatabase \
  --name sessions \
  --ttl 3600

Fiyatlandırma ve Serverless katmanı

Cosmos DB iki faturalandırma modu sunar. Sağlanan aktarım hızı, gerçek kullanımdan bağımsız olarak RU/s-saat başına ücretlendirilir ve düzenli, öngörülebilir iş yükleri için uygundur. Serverless modu, tüketilen RU ve depolanan GB başına ücretlendirir; asgari maliyet bulunmadığından geliştirme, prototip oluşturma ve trafik artışları için ekonomiktir. Serverless Cosmos DB şu anda tek bir bölgeyle sınırlıdır.

Hızlı Kontrol

Bu derste Microsoft Azure Fundamentals (AZ-900) kavramlarını ne kadar anladığınızı test edin.

Ders Özeti

Bu derste şunları öğrendiniz: Cosmos DB, küresel olarak dağıtılmış, çok modelli bir NoSQL hizmetidir; bölümleme anahtarları verilerin nasıl parçalara ayrılacağını belirler ve dikkatle seçilmelidir; ayrıca beş tutarlılık düzeyi, gecikme ile verilerin güncelliği arasında denge kurmanızı sağlar. Sırada Azure'ın açık kaynaklı veritabanı altyapıları için sunduğu yönetilen hizmetleri inceleyeceğiz.

Sıkça Sorulan Sorular

“Azure Cosmos DB: Küresel NoSQL” dersi ücretsiz mi?

Evet — “Azure Cosmos DB: Küresel NoSQL” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Azure Fundamentals kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Azure Fundamentals kursu toplamda 4 dersten oluşur.

“Azure Cosmos DB: Küresel NoSQL” dersinde ne öğreneceğim?

Cosmos DB'nin çok modelli ve çok bölgeli mimarisini keşfedin, bölümleme anahtarlarını anlayın ve uygulamanızın gereksinimleri için doğru tutarlılık düzeyini seçin. Azure Fundamentals ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Azure Fundamentals öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Azure Fundamentals, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Azure Cosmos DB: Küresel NoSQL” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Azure Fundamentals dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Azure Fundamentals dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Azure SQL Database
  2. Azure Cosmos DB: Küresel NoSQL
  3. Açık Kaynak Motorları için Azure Veritabanı
  4. Veritabanını Azure'a Taşıma
← Azure Fundamentals Sayfasına Dön