Azure Cosmos DB Cassandra API'si tarafından desteklenen Apache Cassandra özellikleri

Uygulama hedefı: Cassandra API

Azure Cosmos DB, Microsoft'un genel olarak dağıtılmış çok modelli veritabanı hizmetidir. cql ikili protokol v4 kablo protokolü ile uyumlu açık kaynaklı cassandra istemci sürücüleriaracılığıyla Azure Cosmos DB Cassandra API ile iletişim kurabilirsiniz.

Azure Cosmos DB Cassandra API’sini kullanarak Apache Cassandra API’leri avantajlarının yanı sıra Azure Cosmos DB’nin sunduğu kurumsal özelliklerin keyfini çıkarabilirsiniz. Genel dağıtım, otomatik ölçek genişletme bölümlemesi, kullanılabilirlik ve gecikme süresi garantileri, REST’te şifreleme, yedeklemeler ve çok daha fazlası kurumsal özelliklere dahildir.

Cassandra protokolü

Azure Cosmos DB Cassandra API, cassandra sorgu dili (cql) v 3.11 apı 'siyle uyumludur (sürüm 2. x ile geriye dönük olarak uyumludur). Desteklenen CQL komutları, araçlar, sınırlamalar ve özel durumlar aşağıda listelenmiştir. Bu protokolleri anlayan bir istemci sürücüsü Azure Cosmos DB Cassandra API'sine bağlanabilir.

Cassandra sürücü

Cassandra sürücülerinin aşağıdaki sürümleri, Azure Cosmos DB Cassandra API'si tarafından desteklenir:

CQL veri türleri

Azure Cosmos DB Cassandra API'si 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
metin 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

Azure Cosmos DB Cassandra API'si aşağıdaki CQL işlevlerini destekler:

Komut Destekleniyor
Simgesinde Yes
TTL * * * Yes
WriteTime * * * Yes
cast * * Yes

Not

* Cassandra API, belirteci bir izdüşüm/seçici olarak destekler ve yalnızca bir where yan tümcesinin sol tarafında belirtece (PK) izin verir. Örneğin, WHERE token(pk) > 1024 desteklenir, ancak WHERE token(pk) > token(100) desteklenmez.
**cast()İşlev Cassandra API içinde kalıcı değil. Örneğin, SELECT cast(count as double) FROM myTable desteklenir, ancak SELECT avg(cast(count as double)) FROM myTable desteklenmez.
*** Seçeneğiyle belirtilen özel zaman damgaları ve TTL, USING bir satır düzeyinde uygulanır (hücre başına değil).

Toplama işlevleri:

Komut Destekleniyor
cin Yes
count Yes
dk Yes
max Yes
TOPLA Yes

Not

Toplama işlevleri normal sütunlarda çalışır, ancak kümeleme sütunlarının toplamları desteklenmemektedir.

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

Komut Destekleniyor
typeAsBlob(value) Yes
blobAsType(value) Yes

UUID ve timeuuid işlevleri:

Komut 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 API'si hesaplarında aşağıdaki veritabanı komutlarını destekler.

Komut Destekleniyor
FILTRELEMEYE IZIN VER Yes
ALTER KEYSPACE Yok (PaaS hizmeti, dahili olarak yönetilen çoğaltma)
ALTER MATERIALIZED VIEW No
ALTER ROLE No
ALTER TABLE Yes
ALTER TYPE No
ALTER USER No
TOPLU İŞ Evet (yalnızca iş günlüğü olmayan toplu iş)
COMPACT STORAGE Yok (PaaS hizmeti)
TOPLAMA OLUŞTURMA No
ÖZEL DIZIN OLUŞTURMA (SASI) No
CREATE INDEX Evet (kümeleme anahtarlarda dizinadı ve dizin belirtmeden veya tam FROZEN koleksiyonu desteklenmiyor)
CREATE FUNCTION No
CREATE KEYSPACE (çoğaltma ayarları yoksayılır) Yes
CREATE MATERIALIZED VIEW No
CREATE TABLE Yes
TETIKLEYICI OLUŞTURMA No
CREATE TYPE Yes
ROL OLUŞTURMA No
CREATE USER (Yerel Apache Cassandra'da kullanım dışı) No
DELETE Yes
DISTINCT No
DROP AGGREGATE No
DROP FUNCTION No
DROP INDEX Yes
DROP KEYSPACE Yes
DROP MATERIALIZED VIEW No
DROP ROLE No
DROP TABLE Yes
DROP TETIKLEYICISI No
DROP TYPE Yes
DROP USER (Yerel Apache Cassandra'da kullanım dışı) No
GRANT No
INSERT Yes
İZINLERI LISTELE No
ROLLERI LISTELE No
LİSTE KULLANıCıLARı (yerel Apache Cassandra'da kullanım dışı) No
REVOKE No
SELECT Yes
UPDATE Yes
TRUNCATE No
USE Yes

Basit İşlemler (LWT)

Bileşen Desteklenir
VARSA SIL Yes
DELETE koşulları Yes
YOKSA EKLE Yes
VARSA GÜNCELLEŞTIR Yes
YOKSA GÜNCELLEŞTIR Yes
UPDATE koşulları Yes

Not

Basit işlemler şu anda çok bölgeli yazma işlemlerinin etkin olduğu hesaplarda destek almamaktadır.

CQL Kabuğu komutları

Azure Cosmos DB, Cassandra API'si hesaplarında aşağıdaki veritabanı komutlarını destekler.

Komut Destekleniyor
YAKALAMA Yes
TEMİZLEYİN Yes
TUTARLıLıK * Yok
KOPYA No
AÇIKLAMAK Yes
cqlshExpand No
ÇIKIŞ Yes
OTURUM AÇMA Yok (CQL USER işlevi desteksizdir, bu nedenle LOGIN gereksizdir)
SAYFALAMA Yes
SERI TUTARLıLıK * Yok
GÖSTER Yes
KAYNAK Yes
IZLEME Yok (Azure Cassandra API DB tarafından Cosmos- sorun giderme için tanılama günlüğünü kullanın)

Not

Tutarlılık Azure Cosmos DB'de farklı şekilde çalışır. Daha fazla bilgi için buraya bakın.

JSON Desteği

Komut Destekleniyor
SELECT JSON Yes
INSERT JSON Yes
fromJson() No
toJson() No

Cassandra API limitleri

Azure Cosmos DB Cassandra API'sinin bir tabloda depolanan verilerin boyutuna dair herhangi bir sınırlaması yoktur. 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ğeri, sütun sayısı üzerinde herhangi bir sınıra sahip değildir. Ancak varlığın toplam boyutu 2 MB'yi aşmamalı. Bölüm anahtarı başına veri, diğer tüm API'lerde olduğu gibi 20 GB'ın üzerinde olamaz.

Araçlar

Azure Cosmos DB Cassandra API'si bir yönetilen hizmet platformudur. Kümeyi yönetmek için Atık Toplayıcı, Java Sanal Makinesi (JVM) ve düğüm aracı gibi yönetim ek yükü veya yardımcı programları gerekmez. İkili CQLv4 uyumluluğunu kullanan cqlsh gibi araçları destekler.

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

Barındırılan CQL kabuğu (önizleme)

Barındırılan yerel Cassandra kabuğunu (CQLSH v5.0.1) doğrudan Veri Gezgini'daki Azure portal veya Azure Cosmos DB Gezgini'nden açabilirsiniz. CQL kabuğunu etkinleştirmeden önce, hesapta Not Defterleri özelliğini etkinleştirmeniz gerekir (henüz etkinleştirilmediyse, seçeneğine tıklarsanız Open Cassandra Shell istenir). Desteklenen Azure Bölgeleri için Azure Cosmos DB hesapları için not defterlerini etkinleştirme makalesine bakın.

CQLSH'yi açma

Yerel makinede yüklü CQLSH Cassandra API kullanarak Azure Cosmos DB'de veritabanına da bağlanabilirsiniz. Apache Cassandra 3.1.1 ile birlikte gelir ve ortam değişkenlerini ayarerek çalışır. Aşağıdaki bölümler CQLSH kullanarak Azure Cosmos DB'de Cassandra API veya Linux'ta Windows, yapılandırma ve bağlanma yönergelerini içerir.

Not

Azure Cosmos DB Cassandra API, CQLSH'nin DataStax Enterprise (DSE) sürümleriyle çalışmaz. Lütfen sunucuya bağlanırken yalnızca CQLSH'nin açık kaynak Apache Cassandra sürümlerini Cassandra API.

Windows:

Windows kullanıyorsanız, Linux için Windows dosyasını etkinleştirmenizi öneririz. Ardından aşağıdaki Linux komutlarını takip edebilirsiniz.

Unix/Linux/Mac:

# 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 http://www.apache.org/dist/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

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

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

CQL v4 uyumlu bir SDK aracılığıyla yürütülen 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ımını sağlamak için DELETE ve UPDATE komutları, kaynak idaresi dikkate alınarak işmalıdır.

  • Not: gc_grace_seconds değeri belirtilmişse sıfır olmalıdır.
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 eşleme

Azure Cosmos DB Cassandra API'si okuma işlemleri için tutarlılık sunar. Tutarlılık eşlemesi burada ayrıntılı olarak açıktır.

İzin ve rol yönetimi

Azure Cosmos DB, Azure portal aracılığıyla elde edilen ölçümleri ve okuma/yazma ve salt okunur parolaları/anahtarları görüntülemek için Azure rol tabanlı erişim denetimi (Azure RBAC) Azure portal. Azure Cosmos DB, CRUD etkinlikleri için rolleri desteklemez.

Anahtar Alanı ve Tablo seçenekleri

"Anahtar Alanı Oluştur" komutunda bölge adı, replication_factor ve veri merkezi seçenekleri şu anda yok sayılır. Sistem, bölgeleri eklemek için Cosmos DB'nin genel dağıtım çoğaltma yöntemini kullanır. Verilerin bölgeler arası varlığına ihtiyacınız varsa powershell, CLI veya portal ile hesap düzeyinde etkinleştirebilirsiniz. Daha fazla bilgi edinmek için bölge ekleme makalesine bakın. Durable_writes Azure veritabanı her yazmanın dayanıklı olduğundan Cosmos veritabanı devre dışı bırakılamaz. Her bölgede Azure Cosmos DB, verileri dört çoğaltmadan yapılmış çoğaltma kümesinde çoğaltır ve bu çoğaltma kümesi yapılandırması değiştirilemez.

Tablo oluşturulurken tüm seçenekler yoksayılır, ancak gc_grace_seconds olarak ayarlanır. Keyspace ve tablonun en az 400 RU/sn değeriyle "cosmosdb_provisioned_throughput" adlı ek bir seçeneği vardır. Keyspace aktarım hızı, aktarım hızını birden çok tabloda paylaşmaya olanak sağlar ve tüm tabloların sağlanan aktarım hızının kullanımına izin veren senaryolar için kullanışlıdır. Tabloyu Değiştir komutu, bölgeler arasında sağlanan aktarım hızının değiştirilmesine olanak sağlar.

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 API, donmuş koleksiyon türleri, ondalık ve değişken türleri dışındaki 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. Bu, belirli bir saniye içinde, işlemler tarafından tüketilen istek birimlerine bağlı olarak belirli sayıda işlem yapilmasi anlamına gelir. Bir uygulama belirli bir saniye içinde bu sınırı aşarsa istekler hız sınırlaması olur ve özel durumlar oluşturur. Azure Cassandra API DB'de Cosmos, bu özel durumları Cassandra yerel protokolünde aşırı yüklenmiş hatalara çevirir. Hız sınırlaması durumunda, uygulamanın istekleri kesmesini ve yeniden denemesini sağlamak için Spark ve Java uzantıları sağlanır. Ayrıca Bkz. Azure Cosmos DB'de Cassandra API'a bağlanırken sürüm 3 ve sürüm 4 Datastax sürücüleri için Java Cosmos. Azure Cosmos DB'de Cassandra API diğer SDK'leri kullanıyorsanız, bu özel durumlar üzerinde yeniden denemek için bir bağlantı ilkesi oluşturun.

Sonraki adımlar