Aracılığıyla paylaş


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ş hem de tutarlılık açısından ö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. Canlı geçiş veya çoğaltma için Cassandra dedikodu protokollerini 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 ve 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.

Ayrıca Java v3 ve Java v4 sürücüleri için daha ayrıntılı örneklere sahibiz. 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 örnekler de kullanabilirsiniz.

Depolama

Cassandra IÇIN API, 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. Bazı durumlarda, Azure Cosmos DB sıkıştırma veya kaldırıldı taşlarını uygulamadığından fark fark fark edebilir. 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 çoklu ana sistemdir. Apache Cassandra'nın yalnızca okuma için çok bölgeli çoğaltma ile 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 bir hata noktası yoktur. Ancak Azure Cosmos DB, yazma işlemleri için tek ana veya çok ana bölge yapılandırma olanağı sunar.

Yazma işlemleri için tek ana bölgeye sahip olmanın avantajlarından biri bölgeler arası çakışma senaryolarını önlemektir. Yüksek kullanılabilirlik düzeyini korurken birden çok bölgede güçlü tutarlılığı koruma seçeneği sunar.

Not

Bölgeler arasında güçlü tutarlılık ve sıfırdan oluşan bir Kurtarma Noktası Hedefi (RPO) yerel Apache Cassandra için 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 ve sıfır kurtarma süresi hedefi (RTO) sağlayamaz.

Daha fazla bilgi için Bkz. Java için Cassandra önerileri için API blogumuzda yük dengeleme ilkesi. Ayrıca Cassandra Java v4 sürücüsü için resmi kod örneğimizde yük devretme senaryolarına 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 birinden ne ölçüde 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. Büyük süreli iş yükleri sunucusuz moddan yararlanır. Sürekli en düşük aktarım hızına sahip olan ancak tahmin edilemeyen ani artışlara sahip iş yükleri, otomatik ölçeklendirme modundan en çok 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 nispeten tekdüzen bir dağıtımıyla sonuçlanmasını sağlamak için adımlar atı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 kapasiteyi ve ölçeği artırmak için kümeye yeni düğümler eklenmesi ve düğümlerin Cassandra halkasına düzgün şekilde eklenmesi gerekir. Azure Cosmos DB'de düğüm ekleme 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 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 kullanıyorsa Azure Cosmos DB hız sınırlamalı 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'yı 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'deki yaygın sorunları giderme.

Sonraki adımlar