Apache Cassandra'dan geliyorsanız Apache Cassandra için Azure Cosmos DB'ye uyum sağlama

ŞUNLAR IÇIN GEÇERLIDIR: Cassandra

Apache Cassandra için Azure Cosmos DB, mevcut Cassandra SDK'ları ve araçlarıyla kablo protokolü uyumluluğu sağlar. En az değişiklikle Cassandra API'sini kullanarak Apache Cassandra'ya bağlanmak üzere tasarlanmış uygulamaları çalıştırabilirsiniz.

Cassandra için API'yi kullandığınızda Apache Cassandra ile Azure Cosmos DB arasındaki farkları bilmeniz önemlidir. Yerel Apache Cassandra hakkında bilgi sahibiyseniz, bu makale Apache Cassandra için Azure Cosmos DB'yi kullanmaya başlamanıza yardımcı olabilir.

Özellik desteği

Cassandra API'si çok sayıda Apache Cassandra özelliğini destekler. Bazı özellikler desteklenmez veya sınırlamaları vardır. Geçirmeden önce, ihtiyacınız olan Apache Cassandra için Azure Cosmos DB özelliklerinin desteklendiğine emin olun.

Çoğaltma

Çoğaltmayı planlarken hem geçişe hem de tutarlılık düzeyine bakmanız önemlidir.

Cassandra Sorgu Dili (CQL) ikili protokolü v4 kablo protokolü aracılığıyla Cassandra API'si ile iletişim kurabilmenize rağmen, Azure Cosmos DB kendi iç çoğaltma protokolünü uygular. Cassandra dedikodu protokollerini canlı geçiş veya çoğaltma için kullanamazsınız. Daha fazla bilgi için bkz. İkili yazma kullanarak Apache Cassandra'dan Cassandra API'sine canlı geçiş.

Çevrimdışı geçiş hakkında bilgi için bkz. Azure Databricks kullanarak Verileri Cassandra'dan Apache Cassandra için Azure Cosmos DB hesabına geçirme.

Apache Cassandra ve Azure Cosmos DB'de çoğaltma tutarlılığı yaklaşımları benzer olsa da, bunların nasıl farklı olduğunu anlamak önemlidir. Eşleme belgesi, Apache Cassandra ile Azure Cosmos DB yaklaşımlarını çoğaltma tutarlılığıyla karşılaştırır. Ancak Azure Cosmos DB tutarlılık ayarlarını özellikle gözden geçirmenizi veya Azure Cosmos DB platformundaki tutarlılık ayarlarını anlamak için kısa bir video kılavuzu izlemenizi kesinlikle öneririz.

Cassandra için API'yi kullandığınızda Apache Cassandra çalıştıran mevcut uygulamalarda önemli kod değişiklikleri yapmanız gerekmez. Azure Cosmos DB'de Cassandra API'sine yönelik bazı yaklaşımlar ve yapılandırma ayarları önerilir. Java için Cassandra önerileri için blog gönderisi API'sini gözden geçirin.

Kod örnekleri

Cassandra API'si mevcut uygulama kodunuzla çalışacak şekilde tasarlanmıştır. Bağlantıyla ilgili hatalarla karşılaşırsanız, mevcut kodunuzda yapmanız gerekebilecek küçük kurulum değişikliklerini keşfetmek için başlangıç noktası olarak hızlı başlangıç örneklerini kullanın.

Java v3 ve Java v4 sürücüleri için daha ayrıntılı örnekler de mevcuttur. Bu kod örnekleri özel uzantılar uygular ve bu da önerilen istemci yapılandırmalarını uygular.

Java Spring Boot (v3 sürücüsü) ve Java Spring Boot (v4 sürücüsü) için örnekleri de kullanabilirsiniz.

Depolama

Cassandra API'si, belge odaklı bir NoSQL veritabanı altyapısı olan Azure Cosmos DB tarafından desteklenir. Azure Cosmos DB meta verileri korur ve bu da belirli bir iş yükü için gereken fiziksel depolama miktarında değişiklik yapılmasına neden olabilir.

Yerel Apache Cassandra ile Azure Cosmos DB arasındaki depolama gereksinimleri arasındaki fark en çok küçük satır boyutlarında fark edilir. Azure Cosmos DB sıkıştırma veya kaldırılabilir öğe eklemediğinden bazı durumlarda fark fark farkını aşabilir. Bu faktör iş yüküne önemli ölçüde bağlıdır. Depolama gereksinimlerinden emin değilseniz, önce bir kavram kanıtı oluşturmanızı öneririz.

Çok bölgeli dağıtımlar

Yerel Apache Cassandra, varsayılan olarak çok ana şablonlu bir sistemdir. Apache Cassandra'nın salt okunurlar için çok bölgeli çoğaltmaya sahip tek ana sunucu seçeneği yoktur. Yazma işlemleri için başka bir bölgeye uygulama düzeyinde yük devretme kavramı Apache Cassandra'da yedeklidir. Tüm düğümler bağımsızdır ve tek hata noktası yoktur. Ancak Azure Cosmos DB, yazma işlemleri için tek ana veya çok ana kaynaklı bölgeleri yapılandırmaya yönelik ilk çalıştırma özelliğini sağlar.

Yazma işlemleri için tek ana bölgeye sahip olmanın bir avantajı, bölgeler arası çakışma senaryolarından kaçınmaktır. Yüksek kullanılabilirlik düzeyini korurken birden çok bölgede güçlü tutarlılık sağlama seçeneği sunar.

Not

Bölgeler arasında güçlü tutarlılık ve yerel Apache Cassandra için sıfırdan oluşan bir Kurtarma Noktası Hedefi (RPO) mümkün değildir çünkü tüm düğümler yazma işlemlerine hizmet edebilmektedir. Azure Cosmos DB'yi tek bir yazma bölgesi yapılandırmasında bölgeler arasında güçlü tutarlılık için yapılandırabilirsiniz. Ancak yerel Apache Cassandra'da olduğu gibi, güçlü tutarlılık için birden çok yazma bölgesiyle yapılandırılmış bir Azure Cosmos DB hesabını yapılandıramazsınız. Dağıtılmış bir sistem sıfır RPO'yu ve sıfır kurtarma süresi hedefi (RTO) sağlayamaz.

Daha fazla bilgi için Java için Cassandra önerileri api'mizdekiYük dengeleme ilkesi blogumuza bakın. Ayrıca Cassandra Java v4 sürücüsü için resmi kod örneğimizdekiYük devretme senaryoları bölümüne bakın.

İstek birimleri

Yerel Apache Cassandra kümesi çalıştırma ile Azure Cosmos DB hesabı sağlama arasındaki en önemli farklardan biri, veritabanı kapasitesinin nasıl sağlandığıdır. Geleneksel veritabanlarında kapasite CPU çekirdekleri, RAM ve IOPS açısından ifade edilir. Azure Cosmos DB, çok kiracılı bir hizmet olarak platform veritabanıdır. Kapasite, istek birimleri olarak adlandırılan tek bir normalleştirilmiş ölçüm kullanılarak ifade edilir. Veritabanına gönderilen her isteğin bir istek birimi maliyeti (RU maliyeti) vardır. Her isteğin profili oluşturularak maliyeti belirlenebilir.

İstek birimlerini ölçüm olarak kullanmanın avantajı, veritabanı kapasitesinin yüksek oranda öngörülebilir performans ve verimlilik için belirlenimci bir şekilde sağlanabilmesidir. Her isteğin maliyetinin profilini yaptıktan sonra, veritabanına gönderilen isteklerin sayısını sağlamanız gereken kapasiteyle doğrudan ilişkilendirmek için istek birimlerini kullanabilirsiniz. Bu sağlama kapasitesinin zorluğu, iş yükünüzün aktarım hızı özelliklerini tam olarak anlamanız gerektiğidir.

İsteklerinizin profilini oluşturmanızı kesinlikle öneririz. Sağlamanız gereken istek birimi sayısını tahmin etmenize yardımcı olması için bu bilgileri kullanın. Tahmini yapmanıza yardımcı olabilecek bazı makaleler şunlardır:

Kapasite sağlama modelleri

Geleneksel veritabanı sağlamada, beklenen aktarım hızını işlemek için önceden sabit bir kapasite sağlanır. Azure Cosmos DB, sağlanan aktarım hızı adlı kapasite tabanlı bir model sunar. Azure Cosmos DB, çok kiracılı bir hizmet olarak otomatik ölçeklendirme modunda ve sunucusuz modda tüketim tabanlı modeller de sunar. Bir iş yükünün bu tüketim tabanlı sağlama modellerinden herhangi birinden ne kadar yararlanabileceği, iş yükü için aktarım hızının öngörülebilirliğine bağlıdır.

Genel olarak, öngörülebilir aktarım hızına sahip kararlı durum iş yükleri, sağlanan aktarım hızından en çok yararlanır. Uzun süreli iş yükleri sunucusuz moddan yararlanır. Sürekli en düşük aktarım hızı düzeyine sahip olan ancak tahmin edilemeyen ani artışlara sahip iş yükleri, otomatik ölçeklendirme modundan en iyi şekilde yararlanır. Aktarım hızı gereksinimleriniz için en iyi kapasite modelini net bir şekilde anlamak için aşağıdaki makaleleri gözden geçirmenizi öneririz:

Bölümleme

Azure Cosmos DB'de bölümleme, Apache Cassandra'daki bölümlemeye benzer. Temel farklardan biri, Azure Cosmos DB'nin yatay ölçek için daha iyileştirilmiş olmasıdır. Azure Cosmos DB'de sınırlar, herhangi bir fiziksel bölümde kullanılabilen dikey aktarım hızı kapasitesi miktarına yerleştirilir. Bu iyileştirmenin etkisi, mevcut bir veri modelinde önemli aktarım hızı dengesizliği olduğunda en belirgin şekilde görülür.

Bölüm anahtarı tasarımınızın isteklerin görece tekdüzen bir dağılımıyla sonuçlanmasını sağlamak için adımları uygulayın. Mantıksal ve fiziksel bölümlemenin nasıl çalıştığı ve bölüm başına aktarım hızı kapasitesinin sınırları hakkında daha fazla bilgi için bkz. Apache Cassandra için Azure Cosmos DB'de Bölümleme.

Ölçeklendirme

Yerel Apache Cassandra'da kapasitenin ve ölçeğin artırılması, kümeye yeni düğümler eklenmesini ve düğümlerin Cassandra kademesine düzgün şekilde eklenmesini gerektirir. Azure Cosmos DB'de düğüm eklemek saydam ve otomatiktir. Ölçeklendirme, anahtar alanınız veya tablonuz için kaç istek biriminin sağlandığına ilişkin bir işlevdir. Fiziksel makinelerde ölçeklendirme, fiziksel depolama alanı veya gerekli aktarım hızı mantıksal veya fiziksel bölüm için izin verilen sınırlara ulaştığında gerçekleşir. Daha fazla bilgi için bkz. Apache Cassandra için Azure Cosmos DB'de bölümleme.

Hız sınırlaması

Özellikle sağlanan aktarım hızını kullanıyorsanız istek birimleri sağlamanın zorluğu hız sınırlamadır. İstemciler sağladığınız miktardan daha fazla kaynak tüketiyorsa Azure Cosmos DB hız sınırlaması hataları döndürür. Azure Cosmos DB'deki Cassandra API'si bu özel durumları Cassandra yerel protokolündeki aşırı yüklenmiş hatalara çevirir. Uygulamanızda hız sınırlamasını önleme hakkında bilgi için bkz. Apache Cassandra işlemleri için Azure Cosmos DB'de hız sınırlama hatalarını önleme.

Apache Spark bağlayıcısı

Birçok Apache Cassandra kullanıcısı, verilerini analiz ve veri taşıma gereksinimlerine göre sorgulamak için Apache Spark Cassandra bağlayıcısını kullanır. Cassandra API'sine aynı şekilde ve aynı bağlayıcıyı kullanarak bağlanabilirsiniz. Cassandra API'sine bağlanmadan önce Spark'tan Apache Cassandra için Azure Cosmos DB'ye bağlanma bölümünü gözden geçirin. Özellikle Spark bağlayıcısı aktarım hızı yapılandırmasını iyileştirme bölümüne bakın.

Yaygın sorunları giderme

Yaygın sorunların çözümleri için bkz. Apache Cassandra için Azure Cosmos DB'de sık karşılaşılan sorunları giderme.

Sonraki adımlar