Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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
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:
Python 3'ü yükleyin.
PIP'i yükleyin.
- PIP'i yüklemeden önce get-pip.py dosyasını indirin.
- 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.
- 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.pyWindows'a PIP yükleyin:
python get-pip.pyPIP 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.
PIP kullanarak CQLSH yükleyin:
pip3 install cqlsh==5.0.3Python 2'yi yükleyin.
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