Azure Cosmos DB: Küresel Ölçekli Bir NoSQL Bulut Veritabanı
Microsoft’un tam yönetilen, çoklu model veritabanının AI, IoT, e-ticaret ve daha fazlası için düşük gecikmeli performans, esnek ölçeklenebilirlik ve gerçek zamanlı yetenekler sunduğunu keşfedin.
Uygulamalar küresel ölçekte büyüdükçe, geleneksel veritabanları çoğu zaman yetersiz kalır. Microsoft’un küresel olarak dağıtılmış, çoklu model veritabanı Azure Cosmos DB; düşük gecikmeli erişim, birden fazla tutarlılık modeli ve bölgeler arasında sorunsuz ölçekleme sunar.
Bu rehber, kapsayıcılar, öğeler ve SQL API’leri gibi temel kavramları ele alır; Azure ve Cosmos DB ile çalışmaya başlamak (ve çalışmak) isteyen her bulut mühendisi için gereklidir. Mimarisine dair pratik bir genel bakış edinecek ve neden bulut yerel, kritik iş uygulamaları için tercih edilen bir seçenek olduğunu anlayacaksınız.
Azure Cosmos DB Nedir?
Azure Cosmos DB, Microsoft Azure üzerinde tam yönetilen bir NoSQL veritabanıdır; yüksek erişilebilirlik, düşük gecikme ve küresel ölçeklenebilirlik için tasarlanmıştır. Belge, anahtar-değer, grafik ve sütun ailesi dâhil olmak üzere birden fazla veri modelini destekleyerek çeşitli uygulamalar için esneklik sağlar.
En büyük gücü küresel dağıtımdır: Birkaç tıklamayla veriler Azure bölgeleri arasında çoğaltılarak hızlı, yerel erişim sağlanır.
Geliştiriciler ayrıca performans ve veri doğruluğu arasında denge kurmak için çeşitli tutarlılık modelleri arasından seçim yapabilir. Azure dünyasında yeniyseniz, aşağıdaki Azure başlangıç rehberini okumanızı önemle tavsiye ederim.
Neden Azure Cosmos DB Kullanmalı?
Azure Cosmos DB, ölçeklenebilir ve yüksek performanslı uygulamalar geliştirmek için tasarlanmış güçlü özellikler sunar:
Yazarın görseli. Neden Cosmos DB kullanılmalı
Düşük gecikmeli küresel dağıtım: Verileri Azure bölgeleri arasında otomatik olarak çoğaltarak dünya genelindeki kullanıcılara hızlı, yerel erişim sağlar.
Birden çok tutarlılık düzeyi: Tutarlılık, erişilebilirlik ve performansı dengelemek için Strong, Bounded Staleness, Session, Consistent Prefix ve Eventual olmak üzere beş model arasından seçim yapın.
Çoklu model desteği: Belge (JSON), anahtar-değer, grafik ve sütun ailesi veri modelleriyle çalışabilir; bu da çeşitli iş yükleri için uygundur.
SLA’larla yüksek erişilebilirlik: Okuma ve yazma işlemleri için SLA ile desteklenir; kritik sistemler için idealdir.
Esnek ölçeklenebilirlik: Talebe göre iş hacmini kesinti olmadan otomatik olarak ölçekleyerek değişken yüklerde yanıt verebilirliği korur.
Bu yetenekler bir araya geldiğinde, gerçek zamanlı performans ve dayanıklılık gerektiren küresel ölçekte dağıtılmış, bulut yerel uygulamalar için Cosmos DB’yi güçlü bir temel hâline getirir.
Azure Cosmos DB Kullanım Alanları
Azure Cosmos DB, birçok sektörde gerçek zamanlı ve ölçeklenebilir uygulamalar için çok yönlü bir tercihtir. Düşük gecikmeli, küresel olarak dağıtılmış mimarisi; yüksek erişilebilirlik ve hızlı veri erişimi gerektiren senaryolar için idealdir. Öne çıkan bazı kullanım alanları şunlardır:
Yapay zekâ ve makine öğrenimi: Gerçek zamanlı AI hatlarıyla bütünleşir ve vektör aramayı destekler; öneri motorları ve anlamsal arama gibi akıllı uygulamaları mümkün kılar.
E-ticaret ve perakende: Kullanıcı davranışını yakalayarak ve anında öneriler sunarak kişiselleştirilmiş alışveriş deneyimlerini güçlendirir. Küresel dağıtımı sayesinde bölgeler arasında stok verilerine doğru ve düşük gecikmeli erişim sağlar.
Oyun ve sosyal medya: Gerçek zamanlı oyuncu istatistikleri, sohbet ve lider tablolarını hızlı okuma/yazma performansıyla işler. Oturum düzeyi tutarlılık, dünya genelindeki kullanıcılar için akıcı deneyimler sağlar.
IoT ve zaman serisi verileri: Büyük hacimli sensör ve telemetri verilerini verimli biçimde alır ve işler. Öngörücü bakım, anomali tespiti ve gerçek zamanlı izleme gibi kullanım durumları için idealdir.
Çevrim içi mağazaları güçlendirmekten yapay zekâ destekli akıllı uygulamaları mümkün kılmaya kadar Cosmos DB, modern bulut yerel çözümler için gereken hız, ölçek ve esnekliği sunar. Cosmos DB ve Azure ile neler yapabileceğinizi daha iyi anlamak için Microsoft’un Bulut Sunumlarına Rehber içeriğine göz atabilirsiniz.
Cosmos DB Özellikleri ve Yetenekleri
Bu bölümde, geliştiricilerin hızlı, dayanıklı ve akıllı uygulamalar geliştirmesini sağlayan temel yetenekleri, veri modelleme stratejileri dâhil olmak üzere inceleyeceğiz.
Veri modelleme ve indeksleme
Azure Cosmos DB, kapsayıcıların önceden tanımlı bir şema gerektirmeden JSON belgeleri saklamasına olanak tanır; bu da zaman içinde veri modelinizi uyarlamayı ve geliştirmeyi kolaylaştırır.
Cosmos DB’de varsayılan olarak indeksleme otomatik olup kutudan çıktığı gibi hızlı sorguları desteklemek için her alan endekslenir. Ancak bu durum, özellikle yazma ağırlıklı iş yüklerinde İstek Birimi (RU) tüketimini artırabilir. Optimize etmek için geliştiriciler özel indeksleme ilkeleri tanımlayabilir. Bu ilkeler; gereksiz yerlerde otomatik indekslemeyi devre dışı bırakmaya, endekslenmesi gereken alanlar için dâhil edilen yolları belirtmeye ve alâkasız alanları hariç tutmaya imkân tanır.
Cosmos DB ayrıca, Change Feed özelliğini içerir; bu özellik, eklemeleri ve güncellemeleri gerçek zamanlı yakalayarak olay güdümlü sistemler kurmak, iş akışlarını tetiklemek veya verileri aşağı akışa aktarmak için idealdir. Bir diğer yararlı özellik ise Time-to-Live (TTL) olup, belgelerin belirli bir sürenin ardından otomatik olarak silinmesini sağlar.
Bölümlendirme (partitioning) ve performans optimizasyonu
Yazma ağırlıklı iş yüklerinde, bölüm anahtarlarının yüksek kardinaliteye ve eşit dağılıma sahip olması gerekir; sıcak bölümleri ve kısıtlamayı önlemek için kullanıcı kimlikleri, zaman damgaları veya coğrafi bölgeler gibi. Okuma ağırlıklı senaryolarda ise müşteri kimlikleri gibi bölüm anahtarlarıyla ilişkili verileri gruplamak, aralık veya nokta sorguları için verimli erişim sağlayarak genellikle daha etkilidir. Zayıf bölümlendirme, dengesiz veri dağılımına ve performans düşüşüne yol açabilir. Her mantıksal bölüm 20 GB ile sınırlı olduğundan, herhangi bir anahtarı aşırı yüklemeyecek stratejiler tasarlamak önemlidir.
Tek bir bölümü hedefleyen erişim desenleri tasarlayarak sorgu performansı daha da iyileştirilebilir; zira bu tür sorgular daha hızlı ve kaynak açısından daha verimlidir. Bölümler arası sorgular desteklense de genellikle birden fazla bölümü taradıklarından daha yüksek gecikme ve daha fazla RU tüketimiyle sonuçlanır. Sorgu maliyetlerini azaltmak için geliştiriciler indeksleme stratejilerinden (bileşik indeksleri düşünüyorum) yararlanmalı ve sık erişilen veriler için önbellekleme mekanizmalarını değerlendirmelidir.
İş hacmi açısından Cosmos DB, geliştiricilerin İstek Birimlerini kapsayıcı veya veritabanı düzeyinde yapılandırmasına olanak tanır. Bu ayarlanabilir iş hacmi modeli, uygulamanızın tepe yük koşullarında bile performansını korumasına yardımcı olur.
Tutarlılık modelleri ve veri dayanıklılığı
Azure Cosmos DB beş ayarlanabilir tutarlılık düzeyi sunar. Bu, çoğu ilişkisel olmayan veritabanında bulunan tipik eventual veya strong tutarlılık seçeneklerinin oldukça ötesindedir.
En zayıf düzeyde, eventual tutarlılık en hızlı ve en erişilebilir seçenektir; ancak çoğaltmalar kademeli olarak senkronize olurken bayat veya sıralama dışı veriler dönebilir. Biraz daha güçlü olan consistent prefix, okumaların yazıların sırasını yansıtmasını sağlar; ancak mutlaka en güncel olanları değil; bu da tazelikten ziyade işlem sırasının önemli olduğu durumlar için uygundur.
Birçok uygulama için varsayılan ve en pratik ayar oturum (session) tutarlılığıdır; bu, bir istemcinin bir oturum içinde kendi yazdığını her zaman okuyacağını garanti eder. Bounded staleness bir adım daha ileri giderek, yazmalar ile okumalar arasındaki kontrollü gecikmeye izin verir; bu gecikme bir zaman aralığı (T) veya sürüm sayısı (K) ile tanımlanır. Örneğin tek bölgede gecikme 5 saniye veya 10 sürümle sınırlandırılabilirken, çok bölgeli bir kurulumda 5 dakikaya veya 100.000 sürüme kadar uzayabilir.
En güçlü uçta yer alan strong tutarlılık, tüm okumaların tüm çoğaltmalar arasında en son işlenmiş yazıyı yansıtmasını sağlar. Bu düzey, bayat, kirli veya hayalet okumaları önleyen en katı garantileri sunar ve geleneksel ACID uyumlu sistemlerin davranışına yakındır.
Çok bölgeli yazmalar ve küresel erişilebilirlik
Azure Cosmos DB’nin öne çıkan özelliklerinden biri, aktif-aktif (çoklu ana) çoğaltma ile çok bölgeli yazma desteğidir. Bu sayede uygulamalar, birden çok bölgede eşzamanlı yazma işlemleri gerçekleştirebilir; bu da dünya genelindeki kullanıcılar için gecikmeyi önemli ölçüde azaltır.
Cosmos DB, verilerin Azure bölgeleri arasında senkronize edilmesini sağlayan otomatik küresel çoğaltmayı da içerir. Bölgesel bir kesinti durumunda sistem, bir sonraki kullanılabilir bölgeye otomatik geçiş (failover) tetikler.
Cosmos DB, sharding ve veri dağıtımının mekaniklerini otomatik olarak ele alsa da geliştiricilerin, eşit dağıtımı ve etkili yatay ölçeklemeyi destekleyecek uygun bir bölüm anahtarı seçmesi gerekir. Bu karar, mantıksal bölüm başına 20 GB sınırını aşabilecek büyük veri kümeleri için özellikle önemlidir. Bölümlendirmeyi erkenden planlamak, uygulama büyüdükçe darboğazları ve performans sorunlarını önlemeye yardımcı olur.
Cosmos DB Fiyatlandırması ve Maliyet Yönetimi
Azure Cosmos DB fiyatlandırması, okuma, yazma ve sorgular için kullanılan kaynakları yansıtan İstek Birimlerine (RU) dayanır. Basit bir nokta okuması genellikle 1 RU maliyetlidir.
Fiyatlandırma Modelleri
Sağlanan iş hacmi: Öngörülebilir iş yükleri için RU ayırın; iş hacmi ve depolama üzerinden faturalandırılır.
Sunucusuz: Düzensiz veya düşük trafikli iş yükleri için ideal, kullanım başına ödeme modeli.
Maliyet Optimizasyonu
Sorgu verimliliğini izlemek ve optimize etmek için Cosmos DB Profiler’ı kullanın.
RU tüketimini azaltmak için indeksleme ve bölümlendirmeyi ayarlayın.
Azure Maliyet Yönetimi ile harcamaları takip edin ve kullanım uyarıları ayarlayın.
Doğru modeli seçmek ve tasarımınızı optimize etmek maliyetleri önemli ölçüde düşürebilir.
Azure Cosmos DB ile Başlarken
Azure Cosmos DB ile çalışmadan önce bir hesap oluşturmanız, yapılandırmanızı seçmeniz ve ilk veritabanınızı ile kapsayıcınızı oluşturmanız gerekir. Bu adım adım rehber, Azure Portal’ı kullanarak süreci size aktaracaktır.
Adım 1: Azure hesabı açın ve Azure Portal üzerinden Cosmos DB’ye erişin
Önce Azure Portal’a oturum açın. Üstteki genel arama çubuğuna “Azure Cosmos DB” yazın ve sonuçlardan seçin. Cosmos DB bölümünden “Create” seçeneğine tıklayarak yeni örneğinizi yapılandırmaya başlayın.
Azure ana açılış sayfasının ekran görüntüsü
Azure Cosmos DB ana açılış sayfasının ekran görüntüsü
Adım 2: API’nizi seçin ve temel ayarları yapılandırın
API modeli olarak Azure Cosmos DB for NoSQL’i (Core SQL API) seçin.
Azure Cosmos DB ekran görüntüsü. Bir örnek oluşturma
Ardından, Temel Bilgiler (Basics) panelinde Azure aboneliğiniz, bir kaynak grubu (yeni veya mevcut), küresel olarak benzersiz bir hesap adı ve tercih edilen bir Azure bölgesi dâhil olmak üzere yapılandırma ayrıntılarınızı girin. Erişilebilirlik Bölgeleri devre dışı bırakılabilir. Cosmos DB iki iş hacmi modu sunar — öngörülebilir iş yükleri için sağlanan iş hacmi ve değişken veya düşük trafikli senaryolar için sunucusuz. Kurulum sırasında uygulama ihtiyaçlarınıza en uygun modu seçin. Bu seçenekler, iş yükünüz geliştikçe daha sonra da ayarlanabilir.
Azure Cosmos DB ekran görüntüsü. Ayrıntıları doldurma
Tamamladığınızda Review + Create’e ve ardından dağıtımı başlatmak için Create’e tıklayın.
Azure Cosmos DB ekran görüntüsü. Örneğimizi doğrulama
Dağıtım tamamlandığında, yeni Cosmos DB hesabınıza erişmek için Go to resource’u seçin.
Azure Cosmos DB ekran görüntüsü. Yeni oluşturduğumuz kaynağa ilişkin bilgiler
Adım 3: Veritabanı ve kapsayıcı oluşturun
Hesap menüsünden Data Explorer’a gidin.
Azure Cosmos DB ekran görüntüsü. Verilerimizi keşfetme
NewContainer’a tıklayarak yapılandırma iletişim kutusunu açın.
Azure Cosmos DB ekran görüntüsü. Yeni bir kapsayıcı oluşturma
Yeni bir veritabanı adı ve kapsayıcı adı tanımlayın ve özellikle, eşit veri dağılımı ve en iyi performans için bir bölüm anahtarı belirtin. Veritabanını ve kapsayıcıyı oluşturmak için OK’e tıklayın.
Azure Cosmos DB ekran görüntüsü. Kapsayıcımızın özelliklerini doldurma.
Oluşturulduktan sonra her ikisini de Data Explorer hiyerarşisinde listelenmiş olarak göreceksiniz.
Azure Cosmos DB ekran görüntüsü. Veri hiyerarşisini kontrol etme.
Adım 4: Sorgulama ve veritabanı nesnelerini yönetmek için Data Explorer’ı kullanın
Yeni oluşturulan kapsayıcı (employees) içinde ağaç görünümünü genişletin ve Items’ı seçin.
Azure Cosmos DB ekran görüntüsü. Kapsayıcıyı kontrol etme
Şuna tıklayın: New Item.
Azure Cosmos DB ekran görüntüsü. Yeni bir öğe oluşturma
Aşağıdaki örnek JSON’u ekleyin ve ardından Save’e tıklayın:
Bir sorguyu test etmek için menüden New SQL Query’i seçin ve Logistics departmanındaki çalışanları büyük-küçük harf duyarsız olarak arayan aşağıdaki NoSQL sorgusunu girin.
Azure Cosmos DB ekran görüntüsü. Kapsayıcıyı kontrol etme.
SELECTVALUE {
"name": CONCAT(e.name.last," ", e.name.first),"department": e.department.name,"emailAddresses": [
e.email
]
}
FROM
employees e
WHERE
STRINGEQUALS(e.department.name,"logistics",true)Altyapı:
Şimdi sorguyu çalıştırmak için tıklıyoruz. Yapılandırılmış çıktı döndürüyor:
Yüksek erişilebilirlik: Yerleşik çok bölgeli çoğaltma, küresel güvenilirlik ve çalışma süresi sağlar.
Şema esnekliği: Hızlı sorgular için otomatik indekslemeyle şemasız JSON’u destekler.
AI entegrasyonu: Vektör arama ve gerçek zamanlı AI senaryoları için yerel destek.
Geniş API desteği: SQL, MongoDB, Cassandra, Gremlin ve Table API’leriyle uyumludur.
Tam yönetilen hizmet: Ölçekleme, yamalama ve altyapı yönetimini üstlenerek operasyonel yükü azaltır.
Dezavantajlar
Sınırlı SQL özellikleri: İlişkisel veritabanlarında bulunan tam JOIN ve GROUP BY yeteneklerinden yoksundur.
Ölçekte maliyet: Optimize edilmediğinde yüksek iş hacimli iş yüklerinde pahalı hâle gelebilir.
Sonuç
Azure Cosmos DB, modern, bulut yerel uygulamalar için geliştirilmiş, sağlam ve küresel olarak dağıtılmış bir NoSQL veritabanıdır. Çoklu model desteği, aktif-aktif çoğaltma ve ayarlanabilir tutarlılık düzeyleriyle; yapay zekâ odaklı sistemler, e-ticaret platformları ve IoT çözümleri gibi yüksek erişilebilirlik, gerçek zamanlı yanıt ve esnek ölçeklenebilirlik gerektiren senaryolarda öne çıkar.
Tamamen yönetilen altyapısı, esnek veri modellemesi ve zengin API ekosistemi onu geliştiriciler ve mimarlar için güçlü bir seçenek yapar. Bununla birlikte, üretim iş yükleri planlanırken SQL özelliği boşlukları ve ölçekte maliyet gibi potansiyel sınırlamalar dikkatle değerlendirilmelidir.
Yeteneklerinizi geliştirmeye devam etmek isterseniz, işte bazı iyi kaynaklar:
Josep, Avrupa projelerine odaklanan serbest bir Veri Bilimcidir; veri depolama, işleme, ileri analitik ve etkili veri hikâyeleştirme konularında uzmandır.
Eğitmen olarak Navarra Üniversitesi'nin Yüksek Lisans programında Büyük Veri dersleri vermekte ve Medium, KDNuggets ve DataCamp gibi platformlarda yayımladığı makalelerle görüşlerini paylaşmaktadır. Josep ayrıca Databites bülteninde (databites.tech) Veri ve Teknoloji üzerine yazmaktadır.
Katalonya Politeknik Üniversitesi'nden Mühendislik Fiziği lisans derecesine ve Pompeu Fabra Üniversitesi'nden Akıllı Etkileşimli Sistemler yüksek lisans derecesine sahiptir.
SSS
Azure Cosmos DB nedir?⌄
Azure Cosmos DB, Microsoft tarafından sunulan, birden çok veri modelini destekleyen ve düşük gecikme ile yüksek erişilebilirliğe optimize edilmiş, tam yönetilen, küresel olarak dağıtılmış bir NoSQL veritabanı hizmetidir.
Geliştiriciler neden Cosmos DB’yi kullanmalı?⌄
Geliştiriciler, çok bölgeli çoğaltma, esnek ölçeklenebilirlik, beş ayarlanabilir tutarlılık modeli ve birden çok API ile veri modeli desteği nedeniyle Cosmos DB’yi tercih eder; bu da onu modern, bulut yerel uygulamalar için ideal kılar.
Cosmos DB’nin yaygın kullanım alanları nelerdir?⌄
Cosmos DB; yapay zekâ ve makine öğreniminde (ör. vektör arama), e-ticaret ve perakendede (gerçek zamanlı kişiselleştirme), oyun ve sosyal medyada (düşük gecikmeli etkileşimler) ve IoT’de (gerçek zamanlı telemetri ve analitik) kullanılır.
Cosmos DB ölçeklenebilirliği ve performansı nasıl ele alır?⌄
Cosmos DB, yatay ölçekleme ve yüksek performanslı sorgulamayı desteklemek için bölümlendirilmiş kapsayıcılar, İstek Birimleri (RU) ile ayarlanabilir iş hacmi ve akıllı veri dağıtımı kullanır.
Cosmos DB’nin temel dezavantajları nelerdir?⌄
Güçlü olsa da Cosmos DB, optimize edilmediğinde yüksek iş hacminde pahalı olabilir ve çok tablolu join’ler veya gelişmiş GROUP BY işlemleri gibi karmaşık sorgular için tam SQL desteğine sahip değildir.
Bölgesel bir arıza sırasında Azure Cosmos DB’de verilerime ne olur?⌄
Bölgesel bir arıza durumunda, Azure Cosmos DB'nin Kurtarma Noktası Hedefi (RPO)—veya ne kadar verinin kaybolabileceği—, tutarlılık modeliniz ve dağıtım yapılandırmanız tarafından belirlenir:
Strong tutarlılık, sıfır veri kaybı (RPO = 0) sağlar.
Diğer tutarlılık modelleri (ör. session, bounded staleness veya eventual), asgari veri gecikmesine veya sürüm boşluklarına izin verebilir.
Bu seçenek aralığı, Cosmos DB'nin davranışını uygulamanızın ihtiyaçlarına göre uyarlamanıza olanak tanır—doğruluğa, hıza veya her ikisinin dengesine öncelik verip vermediğinize bağlı olarak.
Azure Cosmos DB’de hiyerarşik verileri nasıl modellemeliyim?⌄
Klasör yapıları veya kategori ağaçları gibi hiyerarşik verileri modellemek için Cosmos DB, belge yapısının düzleştirilmesini önerir. İlişkileri temsil etmek için iç içe belgeler veya karmaşık join’ler yerine parentId gibi alanlar kullanın.
Bu tasarım, sorgu verimliliğini ve ölçeklenebilirliği artırır; dağıtık ortamlarda ilişkili verilerin yönetilmesini ve alınmasını kolaylaştırır.
Çok bölgeli bir Cosmos DB kurulumunda hangi tutarlılık modelini kullanmalıyım?⌄
Azure Cosmos DB, çok bölgeli dağıtımlarda beş tutarlılık modelinin tümünü destekler; bu da performans ve veri doğruluğunu dengeleme esnekliği sağlar.
Session tutarlılığı çoğunlukla idealdir—kendi yazdığını okuma garantileri, düşük gecikme ve asgari ek yük sunar.
Daha sıkı veya daha gevşek garantiler için strong, bounded staleness, consistent prefix veya eventual tutarlılığı seçebilirsiniz.
Bu esneklik, Cosmos DB’yi küresel olarak dağıtılmış uygulamalarınızın özgün ihtiyaçlarına uyarlamayı kolaylaştırır.
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Uygulamalar küresel ölçekte büyüdükçe, geleneksel veritabanları çoğu zaman yetersiz kalır. Microsoft’un küresel olarak dağıtılmış, çoklu model veritabanı Azure Cosmos DB; düşük gecikmeli erişim, birden fazla tutarlılık modeli ve bölgeler arasında sorunsuz ölçekleme sunar.
Bu rehber, kapsayıcılar, öğeler ve SQL API’leri gibi temel kavramları ele alır; Azure ve Cosmos DB ile çalışmaya başlamak (ve çalışmak) isteyen her bulut mühendisi için gereklidir. Mimarisine dair pratik bir genel bakış edinecek ve neden bulut yerel, kritik iş uygulamaları için tercih edilen bir seçenek olduğunu anlayacaksınız.
Azure Cosmos DB Nedir?
Azure Cosmos DB, Microsoft Azure üzerinde tam yönetilen bir NoSQL veritabanıdır; yüksek erişilebilirlik, düşük gecikme ve küresel ölçeklenebilirlik için tasarlanmıştır. Belge, anahtar-değer, grafik ve sütun ailesi dâhil olmak üzere birden fazla veri modelini destekleyerek çeşitli uygulamalar için esneklik sağlar.
En büyük gücü küresel dağıtımdır: Birkaç tıklamayla veriler Azure bölgeleri arasında çoğaltılarak hızlı, yerel erişim sağlanır.
Geliştiriciler ayrıca performans ve veri doğruluğu arasında denge kurmak için çeşitli tutarlılık modelleri arasından seçim yapabilir. Azure dünyasında yeniyseniz, aşağıdaki Azure başlangıç rehberini okumanızı önemle tavsiye ederim.
Neden Azure Cosmos DB Kullanmalı?
Azure Cosmos DB, ölçeklenebilir ve yüksek performanslı uygulamalar geliştirmek için tasarlanmış güçlü özellikler sunar:
Yazarın görseli. Neden Cosmos DB kullanılmalı
Bu yetenekler bir araya geldiğinde, gerçek zamanlı performans ve dayanıklılık gerektiren küresel ölçekte dağıtılmış, bulut yerel uygulamalar için Cosmos DB’yi güçlü bir temel hâline getirir.
Azure Cosmos DB Kullanım Alanları
Azure Cosmos DB, birçok sektörde gerçek zamanlı ve ölçeklenebilir uygulamalar için çok yönlü bir tercihtir. Düşük gecikmeli, küresel olarak dağıtılmış mimarisi; yüksek erişilebilirlik ve hızlı veri erişimi gerektiren senaryolar için idealdir. Öne çıkan bazı kullanım alanları şunlardır:
Çevrim içi mağazaları güçlendirmekten yapay zekâ destekli akıllı uygulamaları mümkün kılmaya kadar Cosmos DB, modern bulut yerel çözümler için gereken hız, ölçek ve esnekliği sunar. Cosmos DB ve Azure ile neler yapabileceğinizi daha iyi anlamak için Microsoft’un Bulut Sunumlarına Rehber içeriğine göz atabilirsiniz.
Cosmos DB Özellikleri ve Yetenekleri
Bu bölümde, geliştiricilerin hızlı, dayanıklı ve akıllı uygulamalar geliştirmesini sağlayan temel yetenekleri, veri modelleme stratejileri dâhil olmak üzere inceleyeceğiz.
Veri modelleme ve indeksleme
Azure Cosmos DB, kapsayıcıların önceden tanımlı bir şema gerektirmeden JSON belgeleri saklamasına olanak tanır; bu da zaman içinde veri modelinizi uyarlamayı ve geliştirmeyi kolaylaştırır.
Cosmos DB’de varsayılan olarak indeksleme otomatik olup kutudan çıktığı gibi hızlı sorguları desteklemek için her alan endekslenir. Ancak bu durum, özellikle yazma ağırlıklı iş yüklerinde İstek Birimi (RU) tüketimini artırabilir. Optimize etmek için geliştiriciler özel indeksleme ilkeleri tanımlayabilir. Bu ilkeler; gereksiz yerlerde otomatik indekslemeyi devre dışı bırakmaya, endekslenmesi gereken alanlar için dâhil edilen yolları belirtmeye ve alâkasız alanları hariç tutmaya imkân tanır.
Cosmos DB ayrıca, Change Feed özelliğini içerir; bu özellik, eklemeleri ve güncellemeleri gerçek zamanlı yakalayarak olay güdümlü sistemler kurmak, iş akışlarını tetiklemek veya verileri aşağı akışa aktarmak için idealdir. Bir diğer yararlı özellik ise Time-to-Live (TTL) olup, belgelerin belirli bir sürenin ardından otomatik olarak silinmesini sağlar.
Bölümlendirme (partitioning) ve performans optimizasyonu
Yazma ağırlıklı iş yüklerinde, bölüm anahtarlarının yüksek kardinaliteye ve eşit dağılıma sahip olması gerekir; sıcak bölümleri ve kısıtlamayı önlemek için kullanıcı kimlikleri, zaman damgaları veya coğrafi bölgeler gibi. Okuma ağırlıklı senaryolarda ise müşteri kimlikleri gibi bölüm anahtarlarıyla ilişkili verileri gruplamak, aralık veya nokta sorguları için verimli erişim sağlayarak genellikle daha etkilidir. Zayıf bölümlendirme, dengesiz veri dağılımına ve performans düşüşüne yol açabilir. Her mantıksal bölüm 20 GB ile sınırlı olduğundan, herhangi bir anahtarı aşırı yüklemeyecek stratejiler tasarlamak önemlidir.
Tek bir bölümü hedefleyen erişim desenleri tasarlayarak sorgu performansı daha da iyileştirilebilir; zira bu tür sorgular daha hızlı ve kaynak açısından daha verimlidir. Bölümler arası sorgular desteklense de genellikle birden fazla bölümü taradıklarından daha yüksek gecikme ve daha fazla RU tüketimiyle sonuçlanır. Sorgu maliyetlerini azaltmak için geliştiriciler indeksleme stratejilerinden (bileşik indeksleri düşünüyorum) yararlanmalı ve sık erişilen veriler için önbellekleme mekanizmalarını değerlendirmelidir.
İş hacmi açısından Cosmos DB, geliştiricilerin İstek Birimlerini kapsayıcı veya veritabanı düzeyinde yapılandırmasına olanak tanır. Bu ayarlanabilir iş hacmi modeli, uygulamanızın tepe yük koşullarında bile performansını korumasına yardımcı olur.
Tutarlılık modelleri ve veri dayanıklılığı
Azure Cosmos DB beş ayarlanabilir tutarlılık düzeyi sunar. Bu, çoğu ilişkisel olmayan veritabanında bulunan tipik eventual veya strong tutarlılık seçeneklerinin oldukça ötesindedir.
En zayıf düzeyde, eventual tutarlılık en hızlı ve en erişilebilir seçenektir; ancak çoğaltmalar kademeli olarak senkronize olurken bayat veya sıralama dışı veriler dönebilir. Biraz daha güçlü olan consistent prefix, okumaların yazıların sırasını yansıtmasını sağlar; ancak mutlaka en güncel olanları değil; bu da tazelikten ziyade işlem sırasının önemli olduğu durumlar için uygundur.
Birçok uygulama için varsayılan ve en pratik ayar oturum (session) tutarlılığıdır; bu, bir istemcinin bir oturum içinde kendi yazdığını her zaman okuyacağını garanti eder. Bounded staleness bir adım daha ileri giderek, yazmalar ile okumalar arasındaki kontrollü gecikmeye izin verir; bu gecikme bir zaman aralığı (T) veya sürüm sayısı (K) ile tanımlanır. Örneğin tek bölgede gecikme 5 saniye veya 10 sürümle sınırlandırılabilirken, çok bölgeli bir kurulumda 5 dakikaya veya 100.000 sürüme kadar uzayabilir.
En güçlü uçta yer alan strong tutarlılık, tüm okumaların tüm çoğaltmalar arasında en son işlenmiş yazıyı yansıtmasını sağlar. Bu düzey, bayat, kirli veya hayalet okumaları önleyen en katı garantileri sunar ve geleneksel ACID uyumlu sistemlerin davranışına yakındır.
Çok bölgeli yazmalar ve küresel erişilebilirlik
Azure Cosmos DB’nin öne çıkan özelliklerinden biri, aktif-aktif (çoklu ana) çoğaltma ile çok bölgeli yazma desteğidir. Bu sayede uygulamalar, birden çok bölgede eşzamanlı yazma işlemleri gerçekleştirebilir; bu da dünya genelindeki kullanıcılar için gecikmeyi önemli ölçüde azaltır.
Cosmos DB, verilerin Azure bölgeleri arasında senkronize edilmesini sağlayan otomatik küresel çoğaltmayı da içerir. Bölgesel bir kesinti durumunda sistem, bir sonraki kullanılabilir bölgeye otomatik geçiş (failover) tetikler.
Cosmos DB, sharding ve veri dağıtımının mekaniklerini otomatik olarak ele alsa da geliştiricilerin, eşit dağıtımı ve etkili yatay ölçeklemeyi destekleyecek uygun bir bölüm anahtarı seçmesi gerekir. Bu karar, mantıksal bölüm başına 20 GB sınırını aşabilecek büyük veri kümeleri için özellikle önemlidir. Bölümlendirmeyi erkenden planlamak, uygulama büyüdükçe darboğazları ve performans sorunlarını önlemeye yardımcı olur.
Cosmos DB Fiyatlandırması ve Maliyet Yönetimi
Azure Cosmos DB fiyatlandırması, okuma, yazma ve sorgular için kullanılan kaynakları yansıtan İstek Birimlerine (RU) dayanır. Basit bir nokta okuması genellikle 1 RU maliyetlidir.
Fiyatlandırma Modelleri
Maliyet Optimizasyonu
Azure Cosmos DB ile Başlarken
Azure Cosmos DB ile çalışmadan önce bir hesap oluşturmanız, yapılandırmanızı seçmeniz ve ilk veritabanınızı ile kapsayıcınızı oluşturmanız gerekir. Bu adım adım rehber, Azure Portal’ı kullanarak süreci size aktaracaktır.
Adım 1: Azure hesabı açın ve Azure Portal üzerinden Cosmos DB’ye erişin
Önce Azure Portal’a oturum açın. Üstteki genel arama çubuğuna “Azure Cosmos DB” yazın ve sonuçlardan seçin. Cosmos DB bölümünden “Create” seçeneğine tıklayarak yeni örneğinizi yapılandırmaya başlayın.
Azure ana açılış sayfasının ekran görüntüsü
Azure Cosmos DB ana açılış sayfasının ekran görüntüsü
Adım 2: API’nizi seçin ve temel ayarları yapılandırın
API modeli olarak Azure Cosmos DB for NoSQL’i (Core SQL API) seçin.
Azure Cosmos DB ekran görüntüsü. Bir örnek oluşturma
Ardından, Temel Bilgiler (Basics) panelinde Azure aboneliğiniz, bir kaynak grubu (yeni veya mevcut), küresel olarak benzersiz bir hesap adı ve tercih edilen bir Azure bölgesi dâhil olmak üzere yapılandırma ayrıntılarınızı girin. Erişilebilirlik Bölgeleri devre dışı bırakılabilir. Cosmos DB iki iş hacmi modu sunar — öngörülebilir iş yükleri için sağlanan iş hacmi ve değişken veya düşük trafikli senaryolar için sunucusuz. Kurulum sırasında uygulama ihtiyaçlarınıza en uygun modu seçin. Bu seçenekler, iş yükünüz geliştikçe daha sonra da ayarlanabilir.
Azure Cosmos DB ekran görüntüsü. Ayrıntıları doldurma
Tamamladığınızda Review + Create’e ve ardından dağıtımı başlatmak için Create’e tıklayın.
Azure Cosmos DB ekran görüntüsü. Örneğimizi doğrulama
Dağıtım tamamlandığında, yeni Cosmos DB hesabınıza erişmek için Go to resource’u seçin.
Azure Cosmos DB ekran görüntüsü. Yeni oluşturduğumuz kaynağa ilişkin bilgiler
Adım 3: Veritabanı ve kapsayıcı oluşturun
Hesap menüsünden Data Explorer’a gidin.
Azure Cosmos DB ekran görüntüsü. Verilerimizi keşfetme
New Container’a tıklayarak yapılandırma iletişim kutusunu açın.
Azure Cosmos DB ekran görüntüsü. Yeni bir kapsayıcı oluşturma
Yeni bir veritabanı adı ve kapsayıcı adı tanımlayın ve özellikle, eşit veri dağılımı ve en iyi performans için bir bölüm anahtarı belirtin. Veritabanını ve kapsayıcıyı oluşturmak için OK’e tıklayın.
Azure Cosmos DB ekran görüntüsü. Kapsayıcımızın özelliklerini doldurma.
Oluşturulduktan sonra her ikisini de Data Explorer hiyerarşisinde listelenmiş olarak göreceksiniz.
Azure Cosmos DB ekran görüntüsü. Veri hiyerarşisini kontrol etme.
Adım 4: Sorgulama ve veritabanı nesnelerini yönetmek için Data Explorer’ı kullanın
Yeni oluşturulan kapsayıcı (employees) içinde ağaç görünümünü genişletin ve Items’ı seçin.
Azure Cosmos DB ekran görüntüsü. Kapsayıcıyı kontrol etme
Şuna tıklayın: New Item.
Azure Cosmos DB ekran görüntüsü. Yeni bir öğe oluşturma
Aşağıdaki örnek JSON’u ekleyin ve ardından Save’e tıklayın:
Bir sorguyu test etmek için menüden New SQL Query’i seçin ve
Logisticsdepartmanındaki çalışanları büyük-küçük harf duyarsız olarak arayan aşağıdaki NoSQL sorgusunu girin.Azure Cosmos DB ekran görüntüsü. Kapsayıcıyı kontrol etme.
Şimdi sorguyu çalıştırmak için tıklıyoruz. Yapılandırılmış çıktı döndürüyor:
Ve hepsi bu kadar!
Cosmos DB’nin Avantajları ve Dezavantajları
Avantajlar
Dezavantajlar
Sonuç
Azure Cosmos DB, modern, bulut yerel uygulamalar için geliştirilmiş, sağlam ve küresel olarak dağıtılmış bir NoSQL veritabanıdır. Çoklu model desteği, aktif-aktif çoğaltma ve ayarlanabilir tutarlılık düzeyleriyle; yapay zekâ odaklı sistemler, e-ticaret platformları ve IoT çözümleri gibi yüksek erişilebilirlik, gerçek zamanlı yanıt ve esnek ölçeklenebilirlik gerektiren senaryolarda öne çıkar.
Tamamen yönetilen altyapısı, esnek veri modellemesi ve zengin API ekosistemi onu geliştiriciler ve mimarlar için güçlü bir seçenek yapar. Bununla birlikte, üretim iş yükleri planlanırken SQL özelliği boşlukları ve ölçekte maliyet gibi potansiyel sınırlamalar dikkatle değerlendirilmelidir.
Yeteneklerinizi geliştirmeye devam etmek isterseniz, işte bazı iyi kaynaklar: