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.
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
- Java uygulaması kullanarak Cassandra API hesabı, veritabanı ve tablo oluşturmaya başlama