Azure Cosmos DB'nin Apache Cassandra için desteklediği özellikler

aşağıdakiler için geçerlidir: Cassandra

Important

99,999% kullanılabilirlik hizmet düzeyi sözleşmesi (SLA), anında otomatik ölçeklendirme ve birden çok bölgede otomatik yük devretme ile yüksek ölçekli senaryolar için bir veritabanı çözümü mü arıyorsunuz? NoSQL için Azure Cosmos DB'yi göz önünde bulundurun.

Mevcut bir Apache Cassandra uygulamasını geçirmek mi istiyorsunuz? Apache Cassandra için Azure Managed Instance'ı göz önünde bulundurmayı düşünün.

Azure Cosmos DB, Microsoft'un global olarak dağıtılan çok modelli veritabanı hizmetidir. Cassandra Sorgu Dili (CQL) İkili Protokol v4 kablo protokolü uyumlu açık kaynak Cassandra istemci sürücüleri aracılığıyla Apache Cassandra için Azure Cosmos DB ile iletişim kurabilirsiniz.

Apache Cassandra için Azure Cosmos DB'yi kullanarak Apache Cassandra API'lerinin avantajlarından ve Azure Cosmos DB'nin sağladığı kurumsal özelliklerden yararlanabilirsiniz. Kurumsal özellikler arasında küresel dağıtım, otomatik ölçek genişletme ve bölümleme, kullanılabilirlik ve gecikme süresi garantileri, durgun halde şifreleme ve yedeklemeler yer alır.

Cassandra protokolü

Apache Cassandra için Azure Cosmos DB, Cassandra Sorgu Dili (CQL) v3.11 API'si ile uyumludur. Sürüm 2.x ile geriye dönük uyumludur. Desteklenen CQL komutları, araçları, sınırlamaları ve özel durumlar bu makalenin devamında listelenmiştir. Bu protokolleri anlayan tüm istemci sürücülerinin Apache Cassandra için Azure Cosmos DB'ye bağlanabilmesi gerekir.

Apache Cassandra için Azure Managed Instance

Bazı müşteriler için, özellikle lift-and-shift geçişlerinde davranış ve yapılandırma farklılıkları nedeniyle Cassandra için API'ye uyum sağlamak zor olabilir. Uygulamanız için kritik öneme sahip bir özellik bu makalenin devamında desteklenmiyor olarak listeleniyorsa Apache Cassandra için Azure Managed Instance kullanmayı göz önünde bulundurun. Bu hizmet, 100% uyumluluğuna sahip saf açık kaynak Apache Cassandra kümelerini barındırmaya ve korumaya yönelik birinci taraf bir Azure hizmetidir.

Cassandra sürücü

Apache Cassandra için Azure Cosmos DB, Cassandra sürücülerinin aşağıdaki sürümlerini destekler:

CQL veri türleri

Apache Cassandra için Azure Cosmos DB aşağıdaki CQL veri türlerini destekler:

Türü Destekleniyor
ascii Yes
bigint Yes
blob Yes
boolean Yes
counter Yes
date Yes
decimal Yes
double Yes
float Yes
frozen Yes
inet Yes
int Yes
list Yes
set Yes
smallint Yes
text Yes
time Yes
timestamp Yes
timeuuid Yes
tinyint Yes
tuple Yes
uuid Yes
varchar Yes
varint Yes
tuples Yes
udts Yes
map Yes

Statik, veri türü bildirimi için desteklenir.

CQL işlevleri

Apache Cassandra için Azure Cosmos DB aşağıdaki CQL işlevlerini destekler:

Command Destekleniyor
Token * Yes
ttl *** Yes
writetime *** Yes
cast ** Yes

Note

* Cassandra için API, yansıtma/seçici olarak belirteci destekler ve yalnızca 'where' ifadesinin sol tarafında belirteç (pk) kullanımına izin verir. Örneğin, WHERE token(pk) > 1024 desteklenir, ancak WHERE token(pk) > token(100)desteklenmez . ** İşlev Cassandra cast() için API'de iç içe yerleştirilemez. Örneğin, SELECT cast(count as double) FROM myTable desteklenir, ancak SELECT avg(cast(count as double)) FROM myTabledesteklenmez . USING seçeneğiyle belirtilen özel zaman damgaları ve TTL, hücre başına değil, satır seviyesinde uygulanır.

Toplama işlevleri:

Command Destekleniyor
avg Yes
count Yes
min Yes
max Yes
sum Yes

Note

Toplama işlevleri normal sütunlarda çalışır, ancak kümeleme sütunlarında toplamalar desteklenmez .

Blob dönüştürme işlevleri:

Command Destekleniyor
typeAsBlob(value) Yes
blobAsType(value) Yes

UUID ve timeuuid işlevleri:

Command Destekleniyor
dateOf() Yes
now() Yes
minTimeuuid() Yes
unixTimestampOf() Yes
toDate(timeuuid) Yes
toTimestamp(timeuuid) Yes
toUnixTimestamp(timeuuid) Yes
toDate(timestamp) Yes
toUnixTimestamp(timestamp) Yes
toTimestamp(date) Yes
toUnixTimestamp(date) Yes

CQL komutları

Azure Cosmos DB, Cassandra hesapları için API'de aşağıdaki veritabanı komutlarını destekler.

Command Destekleniyor
ALLOW FILTERING Yes
ALTER KEYSPACE Yok (PaaS hizmeti, şirket içinde yönetilen çoğaltma)
ALTER MATERIALIZED VIEW Yes
ALTER ROLE Hayı
ALTER TABLE Yes
ALTER TYPE Hayı
ALTER USER Hayı
BATCH Evet (yalnızca günlüğe kaydedilmeyen toplu işlem)
COMPACT STORAGE Yok (PaaS hizmeti)
CREATE AGGREGATE Hayı
CREATE CUSTOM INDEX (SASI) Hayı
CREATE INDEX Evet ( adlandırılmış dizinler dahil ancak tam FROZEN koleksiyonu desteklenmez)
CREATE FUNCTION Hayı
CREATE KEYSPACE (replikasyon ayarları yok sayıldı) Yes
CREATE MATERIALIZED VIEW Yes
CREATE TABLE Yes
CREATE TRIGGER Hayı
CREATE TYPE Yes
CREATE ROLE Hayı
CREATE USER (Yerel Apache Cassandra'da kullanım dışı) Hayı
DELETE Yes
DISTINCT Hayı
DROP AGGREGATE Hayı
DROP FUNCTION Hayı
DROP INDEX Yes
DROP KEYSPACE Yes
DROP MATERIALIZED VIEW Yes
DROP ROLE Hayı
DROP TABLE Yes
DROP TRIGGER Hayı
DROP TYPE Yes
DROP USER (Yerel Apache Cassandra'da kullanım dışı) Hayı
GRANT Hayı
INSERT Yes
LIST PERMISSIONS Hayı
LIST ROLES Hayı
LIST USERS (Yerel Apache Cassandra'da kullanım dışı) Hayı
REVOKE Hayı
SELECT Yes
UPDATE Yes
TRUNCATE Yes
USE Yes

Basit İşlemler (LWT)

Bileşen Destekleniyor
DELETE IF EXISTS Yes
DELETE conditions Yes
INSERT IF NOT EXISTS Yes
UPDATE IF EXISTS Yes
UPDATE IF NOT EXISTS Yes
UPDATE conditions Yes

Note

Şu anda birden çok bölge yazma özelliğinin etkinleştirildiği hesaplar için basit işlemler desteklenmemektedir.

CQL Komut Satırı Komutları

Azure Cosmos DB, Cassandra hesapları için API'de aşağıdaki veritabanı komutlarını destekler.

Command Destekleniyor
CAPTURE Yes
CLEAR Yes
CONSISTENCY * N/A
COPY Hayı
DESCRIBE Yes
cqlshExpand Hayı
EXIT Yes
LOGIN Yok (CQL işlevi USER desteklenmez, bu nedenle LOGIN yedeklidir)
PAGING Yes
SERIAL CONSISTENCY * N/A
SHOW Yes
SOURCE Yes
TRACING Yok (Cassandra API'si Azure Cosmos DB tarafından desteklenir- sorun giderme için diagnostic logging kullanın)

Note

Azure Cosmos DB'de tutarlılık farklı çalışır. Daha fazla bilgi için bkz. Apache Cassandra ve Azure Cosmos DB için Apache Cassandra tutarlılık düzeyleri.

JSON Desteği

Command Destekleniyor
SELECT JSON Yes
INSERT JSON Yes
fromJson() Hayı
toJson() Hayı

Cassandra için API sınırları

Apache Cassandra için Azure Cosmos DB, tabloda depolanan verilerin boyutuyla ilgili herhangi bir sınıra sahip değildir. Yüzlerce terabayt veya Petabaytlarca verinin depolanabilmesinin yanı sıra bölüm anahtarı sınırları da kabul edilir. Benzer şekilde, her varlık veya satır eşdeğerinin sütun sayısıyla ilgili herhangi bir sınırı yoktur. Varlığın toplam boyutu 2 MB'ı aşmamalıdır. Bölüm anahtarı başına veriler diğer tüm API'lerde olduğu gibi 20 GB'ı aşamaz.

Metin Sütunlarında Dize Aralığı Sorgu Davranışı

Dize (metin) sütunlarına uygulanan aralık işleçleri (>, >=, <, <=) ön ek veya alt dize aramaları gerçekleştirmez. Bu davranış Cassandra Sorgu Dili (CQL) semantiğini izler ve Apache Cassandra davranışıyla tutarlıdır. Azure Cosmos DB'nin Apache Cassandra için davranışı, dizge aralığı karşılaştırmalarını leksikografik (bayt bayt) sıralamayı kullanarak değerlendirir. Bir dize değeri kısmi bir dizeyle karşılaştırılırken, karşılaştırma bir ön ek veya desen eşleşmesi yerine karakter karakter gerçekleştirilir. Örneğin:

'ABCD' > 'ABC' → true döndürür 'ABZ' > 'ABC' → true döndürür 'AB' > 'ABC' → false döndürür (kısa dizeler sözcüksel olarak daha küçüktür)

Etkiler

Karşılaştırmalar kesinlikle sözcük temelli olduğundan, kısmi dize değerleri üzerindeki aralık koşulları ön ek veya alt dize tabanlı arama semantiği uygulamak için kullanılamaz. Ön ek arama desenleri gerektiren uygulamalar, veri modellerini veya sorgu stratejilerini buna göre tasarlamalıdır.

Tools

Apache Cassandra için Azure Cosmos DB yönetilen bir hizmet platformudur. Platform, kümeyi yönetmek için Atık Toplayıcı, Java Sanal Makine (JVM) ve düğüm aracı gibi herhangi bir yönetim yükü veya yardımcı program gerektirmez. İkili CQLv4 uyumluluğunu kullanan araçlar cqlsh tarafından desteklenir.

  • Azure portalının veri gezgini, ölçümleri, günlük tanılamaları, PowerShell ve CLI, hesabı yönetmek için desteklenen diğer mekanizmalardır.

CQL kabuğu

Yerel makinede yüklü CQLSH'yi kullanarak Azure Cosmos DB'de Cassandra API'sine bağlanabilirsiniz. Apache Cassandra 3.11 ile birlikte gelir ve ortam değişkenlerini ayarlayarak kutudan çıkar. Aşağıdaki bölümlerde Azure Cosmos DB'de Cassandra için API'yi yükleme, yapılandırma ve CQLSH kullanarak Windows veya Linux'a bağlanma yönergeleri yer almaktadır.

Warning

Apache Cassandra için Azure Cosmos DB bağlantıları, CQLSH'nin DataStax Enterprise (DSE) veya Cassandra 4.0 sürümleriyle çalışmaz. Cassandra için API'ye bağlanırken CQLSH'nin yalnızca v3.11 açık kaynak Apache Cassandra sürümlerini kullandığınızdan emin olun.

Windows:

  1. Python 3'ü yükleyin.

  2. PIP'i yükleyin.

    1. PIP'i yüklemeden önce get-pip.py dosyasını indirin.
    2. Henüz açık değilse bir komut istemi penceresi başlatın. Bunu yapmak için Windows arama çubuğunu açın, cmd yazın ve simgeyi seçin.
    3. Ardından, get-pip.py dosyasını indirmek için aşağıdaki komutu çalıştırın:
    curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py 
    
  3. Windows'a PIP yükleyin:

    python get-pip.py
    
  4. PIP yüklemesini doğrulayın. PIP'in hangi klasöre yüklendiğini onaylamak için 3. adımdan bir ileti arayın. Ardından bu klasöre gidin ve pip help komutunu çalıştırın.

  5. PIP kullanarak CQLSH yükleyin:

    pip3 install cqlsh==5.0.3
    
  6. Python 2'yi yükleyin.

  7. Kimlik doğrulama mekanizmasını kullanarak CQLSH'yi çalıştırın.

Note

Ortam değişkenlerini Python 2 klasörüne işaret etmek için ayarlamanız gerekir.

Unix/Linux/Mac üzerine yükleme:

# Install default-jre and default-jdk
sudo apt install default-jre
sudo apt-get update
sudo apt install default-jdk

# Import the Baltimore CyberTrust root certificate:
curl https://cacert.omniroot.com/bc2025.crt > bc2025.crt
keytool -importcert -alias bc2025ca -file bc2025.crt

# Install the Cassandra libraries in order to get CQLSH:
echo "deb https://downloads.apache.org/cassandra/debian 311x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
curl https://downloads.apache.org/cassandra/KEYS | sudo apt-key add -
sudo apt-get update
sudo apt-get install cassandra=3.11.13

Unix/Linux/Mac ile bağlanın:

# Export the SSL variables:
export SSL_VERSION=TLSv1_2
export SSL_VALIDATE=false

# Connect to Azure Cosmos DB for Apache Cassandra:
cqlsh <YOUR_ACCOUNT_NAME>.cassandra.cosmosdb.azure.com 10350 -u <YOUR_ACCOUNT_NAME> -p <YOUR_ACCOUNT_PASSWORD> --ssl --protocol-version=4

Docker ile bağlanma:

docker run -it --rm -e SSL_VALIDATE=false -e SSL_VERSION=TLSv1_2 cassandra:3.11 cqlsh <account_name>.cassandra.cosmos.azure.com 10350 -u <YOUR_ACCOUNT_NAME> -p <YOUR_ACCOUNT_PASSWORD> --ssl

CQL v4 uyumlu SDK aracılığıyla çalıştırılan tüm CRUD işlemleri, tüketilen hata ve istek birimleri hakkında ek bilgi döndürür. Sağlanan aktarım hızının en verimli şekilde kullanılmasını sağlamak için DELETE ve UPDATE komutlarının kaynak idaresi dikkate alınarak işlenmesi gerekir.

Note

Değerin gc_grace_seconds belirtilmesi durumunda sıfır olması gerekir.

var tableInsertStatement = table.Insert(sampleEntity); 
var insertResult = await tableInsertStatement.ExecuteAsync(); 
 
foreach (string key in insertResult.Info.IncomingPayload) 
        { 
            byte[] valueInBytes = customPayload[key]; 
            double value = Encoding.UTF8.GetString(valueInBytes); 
            Console.WriteLine($"CustomPayload:  {key}: {value}"); 
        } 

Tutarlılık haritalama

Apache Cassandra için Azure Cosmos DB, okuma işlemleri için tutarlılık seçimi sağlar. Daha fazla bilgi için bkz. Eşleme tutarlılığı düzeyleri.

İzin ve rol yönetimi

Azure Cosmos DB, Azure portalı üzerinden edinilebilen okuma-yazma ve salt okunur parolalar/anahtarlar için, anahtarları sağlama, döndürme, ölçümleri görüntüleme görevlerinde Azure rol tabanlı erişim denetimini (Azure RBAC) destekler. Azure Cosmos DB, CRUD etkinlikleri için rolleri desteklemez.

Anahtar alanı ve Tablo seçenekleri

Komuttaki bölge adı, sınıf, replication_factor ve veri merkezi CREATE KEYSPACE seçenekleri şu anda yok sayılmıştır. Sistem, bölgeleri eklemek için temel Azure Cosmos DB global dağıtım çoğaltma yöntemini kullanır. Verilerin bölgeler arası varlığına ihtiyacınız varsa PowerShell, CLI veya Azure portalı ile hesap düzeyinde etkinleştirebilirsiniz. Daha fazla bilgi için bkz. Veritabanı hesabınıza bölge ekleme.

Azure Cosmos DB her yazmanın dayanıklı olmasını sağladığından Durable_writes devre dışı bırakılamaz. Her bölgede Azure Cosmos DB, verileri dört çoğaltmadan oluşan çoğaltma kümesinde çoğaltır ve bu çoğaltma kümesi yapılandırması değiştirilemez.

Tablo oluşturulurken, gc_grace_seconds sıfır olarak ayarlanması gereken seçenek dışında tüm seçenekler yoksayılır. Keyspace ve tablo, en az 400 RU/sn değerine sahip adlı cosmosdb_provisioned_throughput ek bir seçeneğe sahiptir. Keyspace aktarım hızı, aktarım hızının birden çok tablo arasında paylaşılmasına olanak tanır. Tüm tabloların sağlanan aktarım hızını kullanmadıkları senaryolar için kullanışlıdır. ALTER TABLE komutu, bölgeler arasında sağlanan aktarım hızının değiştirilmesine olanak tanır.

CREATE KEYSPACE sampleks WITH REPLICATION = {  'class' : 'SimpleStrategy'} AND cosmosdb_provisioned_throughput=2000;  

CREATE TABLE sampleks.t1(user_id int PRIMARY KEY, lastname text) WITH cosmosdb_provisioned_throughput=2000; 

ALTER TABLE gks1.t1 WITH cosmosdb_provisioned_throughput=10000 ;

İkincil Dizin

Cassandra için API, dondurulmuş koleksiyon türleri, ondalık ve değişken türleri dışında tüm veri türlerinde ikincil dizinleri destekler.

Cassandra bağlantı yeniden deneme ilkesi kullanımı

Azure Cosmos DB, kaynak tarafından yönetilen bir sistemdir. Operasyonların tükettiği istek birimlerine dayanarak, belirli bir saniyede bazı işlemler gerçekleştirebilirsiniz. Bir uygulama belirli bir saniyede bu sınırı aşarsa, istekler hız sınırlandırmasına tabi tutulur ve istisnai durumlar fırlatılır. Azure Cosmos DB'deki Cassandra API'si bu özel durumları Cassandra yerel protokolündeki aşırı yüklenmiş hatalara çevirir.

Hız sınırlaması varsa uygulamanızın istekleri araya girip yeniden denemesini sağlamak için Spark ve Java uzantıları sağlanır. Azure Cosmos DB'da Cassandra için API'ye bağlanırken version 3 ve version 4 Datastax sürücüleri için Java kod örneklerine de bakın. Azure Cosmos DB'de Cassandra API'sine erişmek için diğer SDK'ları kullanıyorsanız, bu özel durumları yeniden denemek için bir yeniden deneme ilkesi oluşturun. Alternatif olarak, Cassandra API'leri için sunucu tarafında yeniden denemeleri etkinleştirin.

Sonraki Adımlar

  • Java uygulaması kullanarak Cassandra hesabı, veritabanı ve tablo için bir API oluşturmaya başlayın