İç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

SkiaSharp 4.0 Kararlı Sürüm: .NET Grafiğinde Yeni Dönem
SkiaSharp 4.0 Kararlı Sürüm: .NET Grafiğinde Yeni Dönem5 Tem 2026
Dependabot Pull Request Dal Adlarını Özelleştirme
Dependabot Pull Request Dal Adlarını Özelleştirme4 Ağu 2026
Azure H200 GPU’larla Gizli Bulutlarda Yapay Zekâ: Gerçekten Neler Değişiyor?
Azure H200 GPU’larla Gizli Bulutlarda Yapay Zekâ: Gerçekten Neler Değişiyor?22 Mar 2026
.NET ve PostgreSQL ile Azure’da Cache’i Ciddiye Almak
.NET ve PostgreSQL ile Azure’da Cache’i Ciddiye Almak4 May 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

OpenAI, Gazeteciliğe Sınıftan Haber Merkezine Destek Veriyor
Aşkın KILIÇ 0

OpenAI, Gazeteciliğe Sınıftan Haber Merkezine Destek Veriyor

09/09/2026
.NET 11 RC1 Yayında: Öne Çıkan Yenilikler
Aşkın KILIÇ 0

.NET 11 RC1 Yayında: Öne Çıkan Yenilikler

09/09/2026
GitHub CLI Linux İmzalama Anahtarı 5 Eylül’de Bitiyor
Aşkın KILIÇ 0

GitHub CLI Linux İmzalama Anahtarı 5 Eylül’de Bitiyor

08/09/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?

Yanıtla
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ı.

Yanıtla

Yorum gönder Yanıtı iptal et

Yazı Ara

Takip Edin

  • Takipçi
  • Takipçi
  • Takipçi
  • Abone
  • Takipçi
  • OpenAI, Gazeteciliğe Sınıftan Haber Merkezine Destek Veriyor
    09/09/2026 OpenAI, Gazeteciliğe Sınıftan Haber Merkezine Destek Veriyor
  • .NET 11 RC1 Yayında: Öne Çıkan Yenilikler
    09/09/2026 .NET 11 RC1 Yayında: Öne Çıkan Yenilikler
  • GitHub Copilot App ile Birden Fazla Agent Çalıştırma
    08/09/2026 GitHub Copilot App ile Birden Fazla Agent Çalıştırma
  • Kurumsal Yapay Zekâ Ajanlarında Context Engineering
    08/09/2026 Kurumsal Yapay Zekâ Ajanlarında Context Engineering
  • GitHub CLI Linux İmzalama Anahtarı 5 Eylül’de Bitiyor
    08/09/2026 GitHub CLI Linux İmzalama Anahtarı 5 Eylül’de Bitiyor
  • Copilot Cloud Agent Metriği: Kullanımı Ölçmek Kolaylaştı
    11/04/2026 Copilot Cloud Agent Metriği: Kullanımı Ölçmek Kolaylaştı
  • GitHub Code Scanning’de Toplu Düzeltme: PR’lar Hızlandı
    07/04/2026 GitHub Code Scanning’de Toplu Düzeltme: PR’lar Hızlandı
  • 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?
  • GitHub Copilot Cloud Agent İçin Runner Kontrolü: Kurumsal Düzen
    03/04/2026 GitHub Copilot Cloud Agent İçin Runner Kontrolü: Kurumsal Düzen
  • Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
    06/04/2026 Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
  • 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

SİZİN İÇİN DERLEDİK

OpenAI, Gazeteciliğe Sınıftan Haber Merkezine Destek Veriyor
Bulut Altyapı Kurumsal Teknoloji Yapay Zeka

OpenAI, Gazeteciliğe Sınıftan Haber Merkezine Destek Veriyor

09/09/2026 Aşkın KILIÇ
.NET 11 RC1 Yayında: Öne Çıkan Yenilikler
Bulut Altyapı Geliştirici Araçları Yapay Zeka

.NET 11 RC1 Yayında: Öne Çıkan Yenilikler

09/09/2026 Aşkın KILIÇ
GitHub Copilot App ile Birden Fazla Agent Çalıştırma
Geliştirici Araçları Yapay Zeka

GitHub Copilot App ile Birden Fazla Agent Çalıştırma

08/09/2026 Aşkın KILIÇ
Kurumsal Yapay Zekâ Ajanlarında Context Engineering
Kurumsal Teknoloji Yapay Zeka

Kurumsal Yapay Zekâ Ajanlarında Context Engineering

08/09/2026 Aşkın KILIÇ
GitHub CLI Linux İmzalama Anahtarı 5 Eylül’de Bitiyor
Bulut Altyapı Geliştirici Araçları

GitHub CLI Linux İmzalama Anahtarı 5 Eylül’de Bitiyor

08/09/2026 Aşkın KILIÇ
Yapay Zekâ Güvenliği İçin Daha Güçlü Koruma Çağrısı
Güvenlik & Kimlik Yapay Zeka

Yapay Zekâ Güvenliği İçin Daha Güçlü Koruma Çağrısı

08/09/2026 Aşkın KILIÇ
Microsoft, hibrit fiziksel güvenliği Azure ile ölçekledi
Bulut Altyapı Güvenlik & Kimlik Microsoft Azure

Microsoft, hibrit fiziksel güvenliği Azure ile ölçekledi

07/09/2026 Aşkın KILIÇ
GitHub’dan Gizlilik Odaklı Yıldız Geçmişi API’si
Bulut Altyapı Geliştirici Araçları

GitHub’dan Gizlilik Odaklı Yıldız Geçmişi API’si

07/09/2026 Aşkın KILIÇ
GPT-6 Astra Microsoft Foundry’de Genel Kullanıma Açıldı
Bulut Altyapı Yapay Zeka

GPT-6 Astra Microsoft Foundry’de Genel Kullanıma Açıldı

07/09/2026 Aşkın KILIÇ
MSTest 4.4 ile Native AOT Uygulamalarını Test Etmek
DevOps Geliştirici Araçları Microsoft Azure

MSTest 4.4 ile Native AOT Uygulamalarını Test Etmek

07/09/2026 Aşkın KILIÇ
Multiple trusted publishing configurations for npm
Bulut Altyapı Geliştirici Araçları Güvenlik & Kimlik

Multiple trusted publishing configurations for npm

06/09/2026 Aşkın KILIÇ
Kurumsal Yapay Zekâda Azure’un Uçtan Uca Yaklaşımı
Microsoft Azure Yapay Zeka

Kurumsal Yapay Zekâda Azure’un Uçtan Uca Yaklaşımı

06/09/2026 Aşkın KILIÇ

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 sdk Azure SQL bulut bilişim C++ CI/CD CodeQL code review copilot Copilot CLI DevOps geliştirici verimliliği GitHub GitHub Actions GitHub Copilot güvenlik Kimlik Doğrulama Kubernetes Kurumsal geliştirme kurumsal güvenlik kurumsal yapay zeka maliyet optimizasyonu MCP Microsoft Agent Framework Microsoft Azure Microsoft Foundry otomasyon performans Pull Request RAG SEO uyumlu verimlilik veri yönetimi Visual Studio Visual Studio 2026 VS Code yapay zeka yapay zeka ajanları 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ı 432 yazı 🏗️ Bulut Altyapı 345 yazı 🤖 Yapay Zeka 289 yazı 🔧 DevOps 242 yazı ☁️ Microsoft Azure 231 yazı 🔒 Güvenlik & Kimlik 199 yazı 🏢 Kurumsal Teknoloji 83 yazı 📊 Veri & Analitik 62 yazı 🐳 Konteyner & Kubernetes 53 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