sekundární indexování v Azure Cosmos DB rozhraní API Cassandra
PLATÍ PRO:
rozhraní API Cassandra
rozhraní API Cassandra v Azure Cosmos DB využívá základní infrastrukturu indexování k tomu, aby vystavila sílu indexování, která je podstatná pro platformu. na rozdíl od rozhraní core SQL API se však rozhraní API Cassandra v Azure Cosmos DB neindexují všechny atributy ve výchozím nastavení. Místo toho podporuje sekundární indexování k vytvoření indexu pro určité atributy, které se chovají stejně jako Apache Cassandra.
Obecně není doporučeno spouštět dotazy filtru na sloupcích, které nejsou rozděleny na oddíly. Je nutné explicitně použít syntaxi POVOLENého filtrování, což vede k operaci, která nemusí fungovat správně. v Azure Cosmos DB můžete tyto dotazy spustit u atributů s nízkou mohutnou, protože se při načítání výsledků rozcházejí mezi oddíly.
Nedoporučujeme vytvářet index u často aktualizovaného sloupce. Při definování tabulky je vhodné vytvořit index. Tím se zajistí, že data a indexy budou v konzistentním stavu. V případě, že pro existující data vytvoříte nový index, nemůžete v současné době sledovat změnu průběhu indexu pro tabulku. Potřebujete-li sledovat průběh této operace, je nutné požádat o změnu průběhu prostřednictvím lístku podpory.
Poznámka
Sekundární index není podporován u následujících objektů:
- datové typy, jako jsou typy zmrazených kolekcí, Decimal a variantní typy.
- Statické sloupce
- Klíče clusteringu
Upozornění
Pokud máte v tabulce složený primární klíč a chcete ho filtrovat jenom pomocí elementu hodnoty klíče oddílu složeného primárního klíče, ujistěte se, že jste do klíče oddílu explicitně přidali sekundární index. Azure Cosmos DB rozhraní API Cassandra ve výchozím nastavení nepoužívají indexy na klíče oddílů a index v tomto scénáři může významně zlepšit výkon dotazů. Další informace najdete v našem článku o dělení .
Příklad indexování
Nejprve pomocí následujících příkazů na příkazovém řádku prostředí CQL Vytvořte ukázkový prostor klíčů a tabulku:
CREATE KEYSPACE sampleks WITH REPLICATION = {'class' : 'SimpleStrategy'};
CREATE TABLE sampleks.t1(user_id int PRIMARY KEY, lastname text) WITH cosmosdb_provisioned_throughput=400;
Pak vložte ukázková uživatelská data s následujícími příkazy:
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');
Pokud se pokusíte spustit následující příkaz, dojde k chybě, která vás vyzve k použití ALLOW FILTERING :
select user_id, lastname from sampleks.t1 where lastname='nishu';
I když rozhraní API Cassandra podporuje filtrování, jak je uvedeno v předchozí části, to se nedoporučuje. Místo toho byste měli vytvořit index v, jak je znázorněno v následujícím příkladu:
CREATE INDEX ON sampleks.t1 (lastname);
Po vytvoření indexu v poli "LastName" teď můžete úspěšně spustit předchozí dotaz. u rozhraní API Cassandra v Azure Cosmos DB není nutné zadávat název indexu. Použije se výchozí index s formátem tablename_columnname_idx . Například t1_lastname_idx je název indexu pro předchozí tabulku.
Vyřazení indexu
Musíte znát, co má název indexu k vyřazení indexu. Spusťte desc schema příkaz, který získá popis tabulky. Výstup tohoto příkazu zahrnuje název indexu ve formátu CREATE INDEX tablename_columnname_idx ON keyspacename.tablename(columnname) . Pak můžete použít název indexu k vyřazení indexu, jak je znázorněno v následujícím příkladu:
drop index sampleks.t1_lastname_idx;
Další kroky
- přečtěte si, jak funguje automatické indexování v Azure Cosmos DB
- Funkce Apache Cassandra, které podporuje rozhraní API Cassandra pro Azure Cosmos DB