İçeriğe atla
Şimdi yükleniyor
AKAşkın KILIÇ
  • Anasayfa
  • Azure & Bulut
    • Microsoft Azure
    • Bulut Altyapı
    • Microsoft 365
  • Yazılım
    • DevOps
    • Geliştirici Araçları
    • Konteyner & K8s
  • AI & Veri
    • Yapay Zeka
    • Veri & Analitik
  • Güvenlik
    • Güvenlik & Kimlik
    • Kurumsal Teknoloji
  • Hakkımda
    • İletişim
×
  • Azure
  • Bulut Altyapı
  • DevOps
  • Geliştirici Araçları
  • Güvenlik & Kimlik
  • Konteyner & Kubernetes
  • Kurumsal Teknoloji
  • Microsoft 365
  • Microsoft Azure
  • Veri & Analitik
  • Yapay Zeka
  • Başlangıç
  • Veri & Analitik
  • Azure Cosmos DB Design Patterns: Çalışan Örnekler
Bulut Altyapı DevOps Veri & Analitik Azure Cosmos DB, Change Feed, Distributed Lock, Patch API, Transactional Outbox Aşkın KILIÇ 26/07/2026 2 Yorumlar

Azure Cosmos DB Design Patterns: Çalışan Örnekler

Azure Cosmos DB Design Patterns: Çalışan Örnekler
📑 İçindekiler
  1. Deponun Felsefesi: Okumak Değil, Görmek
  2. Yeni Eklenen Beş Desen
  3. 1. Vector Search
  4. 2. Loop-Safe Change Feed
  5. 3. Hierarchical Partition Key
  6. 4. Transactional Outbox
  7. 5. Patch API (Partial Document Update)
  8. Baştan Yazılan Distributed Lock Örneği
  9. Kaputun Altındaki Kalite İyileştirmeleri
  10. Kısa Yoldan Deneme
  11. İlgili İçerikler
  12. Kaynaklar ve İleri Okuma

⏱️ 4 dk okuma📅 26 Temmuz 2026

Azure Cosmos DB gibi NoSQL veritabanlarında iyi bir veri modeli, çoğu zaman birkaç temel desenin doğru uygulanmasına bağlıdır: bölümlemeyi (partitioning) nasıl kurduğunuz, sürüm yönetimini nasıl ele aldığınız, işi nasıl dağıttığınız ve eş zamanlı yazıcıların birbirine nasıl çarpmadığı. Microsoft’un yakın zamanda büyük bir güncelleme aldığı Azure Cosmos DB Design Patterns deposu, tam olarak bu soruların üzerine gidiyor. Her deseni okumak yerine çalıştırıp izlemenizi sağlıyor.

İlgili içerik: Cosmos DB'de RBAC Sonrası 403 Hatası: Nedenleri ve Çözümü

İlgili içerik: Azure Cosmos DB'de Partition Key Değiştirme Yolları

Deponun Felsefesi: Okumak Değil, Görmek

Klasik desen kataloglarının aksine bu depoda her desen; küçük, odaklı ve çalıştırılabilir bir örnek olarak geliyor. Her örnekte interaktif bir Blazor tabanlı web arayüzü var. Yani dağıtık bir kilidin fencing token ile nasıl çalıştığını yalnızca okumuyor; birkaç worker başlatıp aralarındaki yarışı canlı izleyebiliyor, kilidi tutan işlemi çökertip TTL üzerinden otomatik release’i gözlemleyebiliyorsunuz.

Depo üç temel prensip üzerine kurulu:

  • Emulator öncelikli: Her örnek, Azure Cosmos DB Linux (vNext) emülatörü üzerinde tamamen yerelde çalışıyor. Abonelik, hesap veya anahtar gerekmiyor; docker compose up -d ve dotnet run yeterli.
  • Her desen için interaktif web arayüzü: Soyut kavramlar, tıklanabilir ve kırılabilir bir yüzeyde somutlaşıyor. “Neden önemli” notları sayfada yer alıyor.
  • Güvenli ve opsiyonel bulut: Örneği Azure’a taşımak istediğinizde, Azure Developer CLI (azd) şablonu ile Microsoft Entra ID ve managed identity temelli, keyless bir dağıtım tek komutla kuruluyor.

Yeni Eklenen Beş Desen

1. Vector Search

Azure Cosmos DB’nin yerleşik vektör indeksleme özelliği ve VectorDistance() fonksiyonu ile operasyonel veri üzerinde anlamsal arama kurmayı gösteriyor. Örneğin ayırt edici tarafı, metinleri küçük bir yerel model ile gömüyor olması: API anahtarı ya da harici servis gerekmiyor. Bu sayede embedding kullanan bir uygulamayı, foundation model dağıtmadan veya GitHub secrets içine anahtar koymadan CI/CD sürecine dahil edebiliyorsunuz.

2. Loop-Safe Change Feed

Change feed ile bir dokümandan değer türetip aynı dokümana geri yazdığınızda, yazma işleminin feed’i tekrar tetiklemesi klasik bir tuzaktır. Bu örnek standart çözümü uyguluyor: kaynak alanların bir hash‘i saklanıyor, hash değişmediyse gelen değişiklik atlanıyor. Böylece gerçek bir düzenleme başına tam olarak bir zenginleştirme ve bir “echo” atlaması oluyor; döngü sınırlı kalıyor. Arayüzde her dokümana metinden türetilmiş bir identicon üretiliyor ve “zenginleştirme yazma” ile “atlanan echo” sayaçları birlikte artıyor; bu da döngü güvenliğini görünür kılıyor.

3. Hierarchical Partition Key

Tek bir bölüm anahtarı yetmediğinde, hiyerarşik (alt) bölümleme veriyi birden fazla anahtar seviyesine dağıtırken ilişkili öğeleri bir arada tutmayı sağlıyor. Örnek gerçekçi bir çok kiracılı (multi-tenant) modeli işliyor ve doğru bölümleme stratejisinin maliyet ile performansa etkisini gösteriyor.

4. Transactional Outbox

Bir sipariş oluşturmak hem durumu değiştirmeyi hem de başka sistemlerin tükettiği bir olayı yayımlamayı gerektirir. Bunları iki ayrı yazma ile yapmak “dual-write” problemidir; arada bir çökme olursa olay kaybolur. Bu örnekte sipariş ve olay tek bir atomik TransactionalBatch içinde yazılıyor, ardından olay change feed üzerinden aktarılıyor. Uygulamanın commit’ten hemen sonra ölmesi durumunda bile olay kaybolmuyor. Arayüzdeki bir “crash-toggle” alanı ile naif yaklaşımın olay kaybettiğini, outbox’ın ise kaybetmediğini karşılaştırabiliyorsunuz.

5. Patch API (Partial Document Update)

Tek bir alanı güncellemek genellikle “read-modify-write” gerektirir: dokümanın tamamını okuyup değiştirip yeniden yazmak. Patch API ise yalnızca yapılacak işlemi gönderir; daha ucuz, düşük gecikmeli ve farklı servisler farklı alanları güncellediğinde kayıp güncellemeye izin vermez. Örnek, üç yollu bir eş zamanlılık yarışını emülatör üzerinde ölçümlerle karşılaştırıyor:

Yaklaşım Sonuç Çakışma RU
Read-modify-write, ETag yok Bir güncelleme kayboluyor 0 4
Read-modify-write + ETag Yeniden okuma + retry sonrası doğru 1 6
Patch Doğru 0 2

Buradaki dürüst çıkarım şu: ETag, read-modify-write’ı doğru hale getirir; ama dokümanın tamamını koruduğu için farklı alanlara dokunan iki servi hâlâ gereksiz bir 412 çakışmasıyla karşılaşır ve retry maliyeti öder. Patch bu sorunu tamamen ortadan kaldırıyor.

Baştan Yazılan Distributed Lock Örneği

Distributed Lock deseni depoda zaten vardı, ancak bu döngüde tümüyle yeniden yazıldı ve canlı bir web playground kazandı. “Görerek anlama” felsefesini en iyi bu örnek özetliyor: gördüğünüz her acquire, renewal ve release işlemi Azure Cosmos DB üzerinde gerçek bir operasyon.

Aynı anda yalnızca tek worker kilidi tutuyor. Kilidi tutan, bir fencing token taşıyor; korunan kaynak yalnızca güncel token’ı kabul ediyor, dolayısıyla eski/stale bir yazıcının güncellemeleri reddediliyor. Kilit tutucusu çökerse TTL üzerinden lease otomatik serbest kalıyor; deadlock olmuyor. Bir worker’ın “Work” süresini TTL’den uzun tutup auto-renew’in kirayı canlı tuttuğunu; auto-renew’i kapatıp lease’in iş ortasında sona erdiğini, başka bir worker’ın devraldığını ve eski holder’ın yazmalarının fencing token tarafından reddedildiğini tarayıcıda gözlemleyebiliyorsunuz.

Kaputun Altındaki Kalite İyileştirmeleri

Yeni desenlerle birlikte deponun altyapısı da güncellendi:

  • Her örnekte .NET 10 kullanılıyor.
  • CI üzerinde emülatör tabanlı entegrasyon testleri çalışıyor. Test seti her pull request’te Cosmos DB Linux emülatörüne karşı, secret olmadan koşuyor; yani desenlerin gerçekten çalıştığı doğrulanmış oluyor.
  • Her örnek için keylessazd dağıtımı: managed identity, local key auth kapalı, hassas veri saklanmıyor.
  • README’ler birleşik ve sadeleştirilmiş bir şablona geçti: kodu al → konfigüre et → yerelde çalıştır → isteğe bağlı olarak dağıt. Tekrar eden portal talimatları yerine ortak bir kurulum kılavuzuna bağlanıyor.

Kısa Yoldan Deneme

git clone https://github.com/Azure-Samples/cosmos-db-design-patterns.git
cd cosmos-db-design-patterns
docker compose up -d
# yerel emülatörü başlatır
cd loop-safe-change-feed/source/Website
dotnet run
# yazdırılan URL'i açın

Herhangi bir desen klasörünü seçip web arayüzünü çalıştırabilir, tıklayarak deneyebilirsiniz. Bölümleme stratejisi belirlerken, güvenilir olay yayınlama akışları kurarken veya vektör aramaya yönelirken, gerçek bir uygulamaya geçmeden önce davranışı görebileceğiniz küçük ve dürüst örnekler artık elinizin altında.

İlgili İçerikler

  • Azure Cosmos DB Shell Public Preview: CLI’a AI Geldi
  • Eve + Azure Cosmos DB: Unutmayan Ajan Nasıl Kurulur
  • Azure Cosmos DB’ye Immutable Backup Geldi: Ne Değişiyor?

Kaynaklar ve İleri Okuma

  • devblogs.microsoft.com
  • devblogs.microsoft.com
  • devblogs.microsoft.com
  • devblogs.microsoft.com
  • Orijinal duyuru: See our new Azure Cosmos DB Design Patterns (Mark Brown)
  • Azure-Samples/cosmos-db-design-patterns GitHub deposu
  • Azure Cosmos DB Linux (vNext) Emulator dokümantasyonu
  • Azure Cosmos DB Vector Search
  • Hierarchical Partition Keys
  • Partial Document Update (Patch API)
  • Azure Cosmos DB vNext Emulator: Yerelde Gerçek Gibi Test Etmek
  • Azure Cosmos DB’de Silinenleri Görmek: Change Feed’in Sessiz Gücü
  • Azure Cosmos DB’de Partition Key Değiştirmek: Artık Daha Az Acı Veriyor
🤖Bu yazı yapay zeka (büyük dil modelleri) ile hazırlanmış, insan editör tarafından incelenmiştir. İçerik üretim sürecimiz.
Aşkın KILIÇ
Aşkın KILIÇYazar

20+ yıl deneyimli Azure Solutions Architect. Microsoft sertifikalı bulut mimari ve DevOps danışmanı. Azure, yapay zekâ ve bulut teknolojileri üzerine Türkçe teknik içerikler üretiyor.

AZ-305AZ-104AZ-500AZ-400DP-203AI-102

İlgili Yazılar

SELinux Volume Label Değişikliği: v1.37 Öncesi Hazırlık
SELinux Volume Label Değişikliği: v1.37 Öncesi Hazırlık23 Nis 2026
Azure Boards: Kartlarda Pull Request Rozetleri
Azure Boards: Kartlarda Pull Request Rozetleri6 Ağu 2026
Foundry’de Model, Maliyet ve Kaliteyi Ben Nasıl Yönetiyorum?
Foundry’de Model, Maliyet ve Kaliteyi Ben Nasıl Yönetiyorum?2 Haz 2026
Azure DevOps Service Connection ile PAT'siz Kimlik Doğrulama
Azure DevOps Service Connection ile PAT'siz Kimlik Doğrulama6 Ağu 2026

Bu içerik işinize yaradı mı?

Benzer içerikleri kaçırmamak için YouTube ve GitHub hesaplarımı takip edin.

YouTube GitHub

Haftalık Bülten

Her pazar özenle seçilmiş teknoloji yazıları doğrudan e-postanıza gelsin.

Etiket Azure Cosmos DB Change Feed Distributed Lock Patch API Transactional Outbox
Önceki yazı

TypeScript 7.0 Yayınlandı: Go ile 10 Kat Hız

Sonraki yazı

GitHub Projects ve Issues’ta Multi-Select Alanlar

İlginizi Çekebilir

Microsoft Sovereign Cloud: İş Yükü Bazlı Kontrol Katmanı
Aşkın KILIÇ 0

Microsoft Sovereign Cloud: İş Yükü Bazlı Kontrol Katmanı

24/10/2026
PowerToys 0.102: Yeni Fare Araçları ve CLI Desteği
Aşkın KILIÇ 0

PowerToys 0.102: Yeni Fare Araçları ve CLI Desteği

24/10/2026
Copilot Usage Metrics API: IDE Dışı Araç Kullanımı
Aşkın KILIÇ 0

Copilot Usage Metrics API: IDE Dışı Araç Kullanımı

24/10/2026

2 comments

comments user
İrem B. 26/07/2026 17:31

Emulator üzerinden doğrudan çalıştırıp görmek gerçekten fark yaratıyor, sırf döküman okuyarak kafada canlandırmaya çalışmak yorucu oluyordu. Outbox pattern kısmını özellikle merak ettim, distributed senaryolarda Cosmos DB ile nasıl bir deneyim çıkıyor acaba?

comments user
Yasemin İ. 26/07/2026 18:28

Emulator üzerinden çalışır halde görmek gerçekten fark yaratıyor, soyut kalan partition key seçimi gibi konular ancak böyle oturuyor kafaya. Outbox pattern örneği var mı acaba, onu merak ediyorum açıkçası.

Yorumlar kapalı.

Yazı Ara

Takip Edin

  • Takipçi
  • Takipçi
  • Takipçi
  • Abone
  • Takipçi
  • Microsoft Sovereign Cloud: İş Yükü Bazlı Kontrol Katmanı
    24/10/2026 Microsoft Sovereign Cloud: İş Yükü Bazlı Kontrol Katmanı
  • PowerToys 0.102: Yeni Fare Araçları ve CLI Desteği
    24/10/2026 PowerToys 0.102: Yeni Fare Araçları ve CLI Desteği
  • Copilot Usage Metrics API: IDE Dışı Araç Kullanımı
    24/10/2026 Copilot Usage Metrics API: IDE Dışı Araç Kullanımı
  • Code with Cosmos: Dört Bölümde Üretime Hazır AI Uygulaması
    24/10/2026 Code with Cosmos: Dört Bölümde Üretime Hazır AI Uygulaması
  • GitHub Apps ile Enterprise Yönetimi PAT'siz Yürütmek
    23/10/2026 GitHub Apps ile Enterprise Yönetimi PAT’siz Yürütmek
  • DevOps Güncellemeleri
    09/03/2026 Azure DevOps Server Şubat Güncellemesi: Güvenlik
  • 2026-03-10_15-35-23
    10/03/2026 Microsoft 365 E7: Yapay Zeka ve Güvenlik Bir Arada
  • Artımlı Anlık Görüntü: Anında Geri Yükleme
    09/03/2026 Artımlı Anlık Görüntü: Anında Geri Yükleme
  • Azure Developer CLI 1.34: azure.yaml Katmanları ve
    04/10/2026 Azure Developer CLI 1.34: azure.yaml Katmanları ve
  • Bulut Sunucu Altyapısı
    09/03/2026 Microsoft Sovereign Cloud: İzolasyonda Güvenli Bulut
  • GitHub Copilot Pro Denemeleri Neden Durdu?
    11/04/2026 GitHub Copilot Pro Denemeleri Neden Durduruldu?
  • vcpkg'de Paralel Kurulum ve Güvenlik Yaması: Neler Değişti?
    06/04/2026 vcpkg’de Paralel Kurulum ve Güvenlik Yaması: Neler Değişti?
  • MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
    08/04/2026 MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
  • Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
    06/04/2026 Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
  • Microsoft Foundry Mart 2026: Sahadan İlk İzlenimler
    10/04/2026 Microsoft Foundry Mart 2026: Sahadan İlk İzlenimler

Hakkımda

Aşkın KILIÇ

Microsoft Azure Çözüm Uzmanı. Bulut bilişim, yapay zekâ, DevOps ve kurumsal güvenlik üzerine yazılar yazıyorum.

Devamını Oku →

Kategoriler

  • Azure
  • Bulut Altyapı
  • DevOps
  • Geliştirici Araçları
  • Güvenlik & Kimlik
  • Konteyner & Kubernetes
  • Kurumsal Teknoloji
  • Microsoft 365
  • Microsoft Azure
  • Veri & Analitik
  • Yapay Zeka

Popüler Etiketler

AI ajanları ASP.NET Core Azure azure app service Azure Cosmos DB Azure Developer CLI Azure DevOps Azure Functions Azure OpenAI azure sdk Azure SQL CI/CD CodeQL code review copilot Copilot CLI DevOps Entra ID geliştirici verimliliği GitHub GitHub Actions GitHub Copilot güvenlik Kimlik Doğrulama Kubernetes kurumsal güvenlik kurumsal yapay zeka maliyet optimizasyonu MCP Microsoft Agent Framework Microsoft Azure Microsoft Entra ID Microsoft Foundry MSVC otomasyon performans Pull Request RAG verimlilik veri yönetimi Visual Studio Visual Studio 2026 VS Code yapay zeka Yazılım geliştirme
  • Gizlilik Politikası
  • Çerez Politikası
  • Kullanım Koşulları
  • Hakkımda
  • İletişim

© 2026 Aşkın KILIÇ | Tüm hakları saklıdır. | Powered By SpiceThemes

Çerez tercihleri Zorunlu çerezler sitenin çalışması için kullanılır. Analitik çerezler yalnız açık izninizden sonra Google Analytics ve Microsoft Clarity için etkinleştirilir. KVKK ve Çerez Politikası
✉

Haftalık Bülten

Azure, DevOps ve Yapay Zeka dünyasındaki en güncel içerikleri her hafta doğrudan e-postanıza alın.

Spam yok. İstediğiniz zaman iptal edebilirsiniz.
📱
Uygulamayı Yükle Ana ekrana ekle, çevrimdışı oku
Ana Sayfa
Kategoriler
💻 Geliştirici Araçları 507 yazı 🏗️ Bulut Altyapı 407 yazı 🤖 Yapay Zeka 331 yazı ☁️ Microsoft Azure 279 yazı 🔧 DevOps 277 yazı 🔒 Güvenlik & Kimlik 223 yazı 🏢 Kurumsal Teknoloji 107 yazı 📊 Veri & Analitik 78 yazı 🐳 Konteyner & Kubernetes 62 yazı 📧 Microsoft 365 22 yazı 📁 Azure 1 yazı
Ara
Popüler
Yapay Zeka Azure Kubernetes DevOps Copilot Docker
Paylaş
WhatsApp
İçindekiler
    ← TypeScript 7.0 Yayınlandı: Go ...
    GitHub Projects ve Issues̵... →
    📩

    Gitmeden önce!

    Her pazar özenle seçilmiş teknoloji yazıları ve AI haberleri doğrudan e-postanıza gelsin. Ücretsiz, spam yok.

    🔒 Bilgileriniz güvende. İstediğiniz zaman ayrılabilirsiniz.

    📬 Haftalık bülten: Teknoloji + AI haberleri
    Beni Takip Et Yeni Azure / AI / DevOps yazılarını GitHub ve RSS üzerinden takip edin.
    GitHub RSS