Azure Cosmos DB Cassandra API

Uygulama hedefı: Cassandra API

Azure Cassandra API DB'de Cosmos veritabanı, platformun yapısından kaynaklanan dizin oluşturma gücünü ortaya çıkarmak için temel alınan dizin oluşturma altyapısından faydalanıyor. Ancak, Azure SQL API'Cassandra API temel Cosmos VERITABANı'Cosmos varsayılan olarak tüm öznitelikleri dizinlemez. Bunun yerine, Apache Cassandra ile aynı şekilde davranan belirli özniteliklerde dizin oluşturmak için ikincil dizin oluşturmayı destekler.

Genel olarak, bölümlenmiş olmayan sütunlarda filtre sorguları yürütmeniz tavsiye değildir. ALLOW FILTERING söz dizimlerini açıkça kullanarak iyi performans göstermeyebilirsiniz. Azure Cosmos DB'de bu tür sorguları düşük kardinalite öznitelikleri üzerinde çalıştırabilirsiniz çünkü sonuçları almak için bölümler arasında uzerler.

Sık güncelleştirilen bir sütunda dizin oluşturmanız önerilir. Tabloyu tanımlarken dizin oluşturmak ihtiyatlı bir iştir. Bu, verilerin ve dizinlerin tutarlı bir durumda olması sağlar. Mevcut veriler üzerinde yeni bir dizin oluşturmanız durumunda, şu anda tablonun dizin ilerleme durumu değişikliğini iz değiştiremezsiniz. Bu işlem için ilerlemeyi izlemeniz gerekirse, bir destek bileti aracılığıyla ilerleme değişikliğini isteğiniz gerekir.

Not

İkincil dizin aşağıdaki nesnelerde desteklenmiyor:

  • donmuş koleksiyon türleri, ondalık ve değişken türleri gibi veri türleri.
  • Statik sütunlar
  • Kümeleme anahtarları

Uyarı

Tabloda bileşik birincil anahtarınız varsa ve yalnızca bileşik birincil anahtarın bölüm anahtarı değer öğesini filtrelemek için bölüm anahtarına açıkça ikincil bir dizin ekleyebilirsiniz. Azure Cosmos DB Cassandra API varsayılan olarak bölüm anahtarlarına dizin uygulamaz ve bu senaryoda dizin sorgu performansını önemli ölçüde geliştirebilir. Daha fazla bilgi için bölümleme makalemizi gözden geçirme.

Dizin oluşturma örneği

İlk olarak, CQL kabuk isteminde aşağıdaki komutları çalıştırarak bir örnek anahtar alanı ve tablo oluşturun:

CREATE KEYSPACE sampleks WITH REPLICATION = {'class' : 'SimpleStrategy'};
CREATE TABLE sampleks.t1(user_id int PRIMARY KEY, lastname text) WITH cosmosdb_provisioned_throughput=400;

Ardından, aşağıdaki komutlarla örnek kullanıcı verilerini eklersiniz:

insert into sampleks.t1(user_id,lastname) values (1, 'nishu');
insert into sampleks.t1(user_id,lastname) values (2, 'vinod');
insert into sampleks.t1(user_id,lastname) values (3, 'bat');
insert into sampleks.t1(user_id,lastname) values (5, 'vivek');
insert into sampleks.t1(user_id,lastname) values (6, 'siddhesh');
insert into sampleks.t1(user_id,lastname) values (7, 'akash');
insert into sampleks.t1(user_id,lastname) values (8, 'Theo');
insert into sampleks.t1(user_id,lastname) values (9, 'jagan');

Aşağıdaki deyimi yürütmeyi denersanız, sizden kullanmasını isteyen bir hatayla ALLOW FILTERING karşılaştısınız:

select user_id, lastname from sampleks.t1 where lastname='nishu';

Bu Cassandra API izin VER FILTRELEMEyi desteklese de, önceki bölümde belirtildiği gibi önerilmez. Bunun yerine, aşağıdaki örnekte gösterildiği gibi içinde bir dizin oluşturmanız gerekir:

CREATE INDEX ON sampleks.t1 (lastname);

"Lastname" alanında bir dizin oluşturdukta, artık önceki sorguyu başarıyla çalıştırabilirsiniz. Azure Cassandra API DB Cosmos de bir dizin adı sağlamak zorunda değildir. Biçime sahip varsayılan tablename_columnname_idx bir dizin kullanılır. Örneğin, t1_lastname_idx önceki tablonun dizin adıdır.

Dizini bırakma

Dizini bırakmak için dizin adının ne olduğunu biliyor gerekir. Tablo desc schema açıklamanızı almak için komutunu çalıştırın. Bu komutun çıktısı biçiminde dizin adını CREATE INDEX tablename_columnname_idx ON keyspacename.tablename(columnname) içerir. Ardından aşağıdaki örnekte gösterildiği gibi dizini bırakmak için dizin adını kullanabilirsiniz:

drop index sampleks.t1_lastname_idx;

Sonraki adımlar