Funkce Apache Cassandra, které podporuje rozhraní API Cassandra pro Azure Cosmos DB
PLATÍ PRO:
rozhraní API Cassandra
Azure Cosmos DB je globálně distribuovaná databázová služba Microsoftu pro více modelů. S klientem Azure Cosmos DB můžete rozhraní API Cassandra prostřednictvím přenosového protokolu CQL Binary Protocol v4, který vyhovuje open source klientským ovladačům Cassandra.
Když použijete rozhraní API Cassandra pro Azure Cosmos DB, získáte nejen výhody rozhraní API pro Apache Cassandra, ale i podnikové funkce, které poskytuje Azure Cosmos DB. Mezi podnikové funkce patří globální distribuce, automatické dělení škálování na více systémů, záruky dostupnosti a latence, šifrování při nečinnosti, zálohování a mnoho dalšího.
Protokol Cassandra
Azure Cosmos DB rozhraní API Cassandra je kompatibilní s rozhraním API jazyka Cassandra Query Language (CQL) v3.11 (zpětně kompatibilní s verzí 2.x). Podporované příkazy CQL, nástroje, omezení a výjimky najdete níže. Jakýkoli ovladač klienta, který podporuje tyto protokoly, by se měl dokázat připojit k rozhraní API Cassandra pro Azure Cosmos DB.
Ovladač Cassandra
Rozhraní API Cassandra pro Azure Cosmos DB podporuje tyto verze ovladačů Cassandra:
Datové typy CQL
Rozhraní API Cassandra pro Azure Cosmos DB podporuje následující datové typy CQL:
| Typ | Podporováno |
|---|---|
| ascii | Ano |
| bigint | Ano |
| blob | Ano |
| boolean | Ano |
| counter | Ano |
| date | Ano |
| decimal | Ano |
| double | Ano |
| float | Ano |
| frozen | Ano |
| inet | Ano |
| int | Ano |
| list | Ano |
| set | Ano |
| smallint | Ano |
| text | Ano |
| time | Ano |
| časové razítko | Ano |
| timeuuid | Ano |
| tinyint | Ano |
| tuple | Ano |
| uuid | Ano |
| varchar | Ano |
| varint | Ano |
| tuples | Ano |
| udts | Ano |
| mapa | Ano |
Pro deklaraci datového typu je podporována statická.
Funkce CQL
Rozhraní API Cassandra pro Azure Cosmos DB podporuje tyto funkce CQL:
| Příkaz | Podporováno |
|---|---|
| Token * | Ano |
| ttl | Ano |
| writetime | Ano |
| přetypování ** | Ano |
Poznámka
* rozhraní API Cassandra podporuje token jako projekci/selektor a povoluje token(pk) pouze na levé straně klauzule where. Například se WHERE token(pk) > 1024 podporuje, ale WHERE token(pk) > token(100) nepodporuje se.
** Funkce cast() není vnořovatelná v rozhraní API Cassandra. Například se SELECT cast(count as double) FROM myTable podporuje, ale SELECT avg(cast(count as double)) FROM myTable nepodporuje se.
*** Vlastní časová razítka a hodnota TTL zadaná pomocí možnosti se použijí na USING úrovni řádku (a ne na buňku).
Agregační funkce:
| Příkaz | Podporováno |
|---|---|
| Průměrná | Ano |
| count | Ano |
| min | Ano |
| max | Ano |
| Součet | Ano |
Poznámka
Agregační funkce fungují na běžných sloupcích, ale agregace ve sloupcích clusteringu nejsou podporovány.
Funkce pro převod objektů BLOB:
| Příkaz | Podporováno |
|---|---|
| typeAsBlob(value) | Ano |
| blobAsType(value) | Ano |
Funkce UUID a timeuuid:
| Příkaz | Podporováno |
|---|---|
| dateOf() | Ano |
| now() | Ano |
| minTimeuuid() | Ano |
| unixTimestampOf() | Ano |
| toDate(timeuuid) | Ano |
| toTimestamp(timeuuid) | Ano |
| toTimestamp(timeuuid) | Ano |
| toDate(timeuuid) | Ano |
| toTimestamp(timeuuid) | Ano |
| toTimestamp(date) | Ano |
| toTimestamp(date) | Ano |
Příkazy CQL
Azure Cosmos DB podporuje u účtů rozhraní API Cassandra následující databázové příkazy.
| Příkaz | Podporováno |
|---|---|
| POVOLENÍ FILTROVÁNÍ | Ano |
| ZMĚNIT MÍSTO NA DISKU | Není k dispozici (služba PaaS, interně spravovaná replikace) |
| ZMĚNIT MATERIALIZOVANÉ ZOBRAZENÍ | No |
| ZMĚNIT ROLI | No |
| ALTER TABLE | Ano |
| ZMĚNIT TYP | No |
| ZMĚNIT UŽIVATELE | No |
| PARTIE | Ano (pouze nezaznamenaná dávka) |
| KOMPAKTNÍ ÚLOŽIŠTĚ | Není k dispozici (služba PaaS) |
| VYTVOŘIT AGREGOVANOU | No |
| VYTVOŘIT VLASTNÍ INDEX (SASI) | No |
| CREATE INDEX | Ano (bez zadání názvu indexua indexů na klíčích clusteringu nebo celá zmrazená kolekce není podporovaná) |
| CREATE FUNCTION | No |
| VYTVOŘIT prostor (nastavení replikace se ignorují) | Ano |
| VYTVOŘIT MATERIALIZOVANÉ ZOBRAZENÍ | No |
| CREATE TABLE | Ano |
| VYTVOŘIT AKTIVAČNÍ UDÁLOST | No |
| VYTVOŘIT TYP | Ano |
| VYTVOŘIT ROLI | No |
| VYTVOŘIT uživatele (zastaralé v nativní Apache Cassandra) | No |
| DELETE | Ano |
| DISTINCT | No |
| ZRUŠIT AGREGAČNÍ | No |
| DROP FUNCTION | No |
| DROP INDEX | Ano |
| ODKLÁDACÍ MÍSTO | Ano |
| VYŘADIT MATERIALIZOVANÉ ZOBRAZENÍ | No |
| DROP ROLE | No |
| DROP TABLE | Ano |
| DROP TRIGGER | No |
| DROP TYPE | Ano |
| DROP USER (zastaralé v nativním Apache Cassandře) | No |
| GRANT | Ne |
| INSERT | Ano |
| ZOBRAZENÍ SEZNAMU OPRÁVNĚNÍ | No |
| ZOBRAZENÍ SEZNAMU ROLÍ | Ne |
| LIST USERS (zastaralé v nativním Apache Cassandře) | Ne |
| REVOKE | No |
| SELECT | Ano |
| UPDATE | Ano |
| ZKRÁTIT | Ne |
| USE | Ano |
Zjednodušené transakce ( PŘIT)
| Součást | Podporováno |
|---|---|
| ODSTRANIT, POKUD EXISTUJE | Ano |
| Podmínky DELETE | Ano |
| INSERT IF NOT EXISTS | Ano |
| AKTUALIZOVAT, POKUD EXISTUJE | Ano |
| AKTUALIZOVAT, POKUD NEEXISTUJE | Ano |
| Podmínky aktualizace | Ano |
Poznámka
Zjednodušené transakce se v současné době nepodporují u účtů s povolenými zápisy do více oblastí.
Příkazy prostředí CQL
Azure Cosmos DB podporuje u účtů rozhraní API Cassandra následující databázové příkazy.
| Příkaz | Podporováno |
|---|---|
| ZACHYTIT | Ano |
| JASNÉ | Ano |
| KONZISTENCE * | – |
| KOPÍROVAT | No |
| POPISUJÍ | Ano |
| cqlshExpand | No |
| UKONČIT | Ano |
| PŘIHLÁŠENÍ | Není k dispozici (funkce CQL USER se nepodporuje, proto LOGIN je redundantní) |
| STRÁNKOVÁNÍ | Ano |
| KONZISTENCE SÉRIOVÉHO PORTU * | – |
| UKÁZAT | Ano |
| ZDROJ | Ano |
| TRASOVÁNÍ | Není k dispozici (rozhraní API Cassandra je zálohovaná službou Azure Cosmos DB – řešení potíží s využitím protokolování diagnostiky) |
Podpora JSON
| Příkaz | Podporováno |
|---|---|
| VÝBĚR JSON | Ano |
| VLOŽENÍ JSON | Ano |
| fromJson() | No |
| toJson() | No |
Omezení rozhraní API Cassandra
Rozhraní API Cassandra pro Azure Cosmos DB nemá žádná omezení velikosti dat uložených v tabulce. Když se dodrží limity klíče oddílu, je možné uložit stovky terabajtů nebo petabajtů dat. Podobně nemá každá entita nebo ekvivalent řádku žádné omezení počtu sloupců. Celková velikost entity by ale neměla překročit 2 MB. Data na klíč oddílu nesmí překročit 20 GB jako ve všech ostatních rozhraních API.
nástroje
Rozhraní API Cassandra pro Azure Cosmos DB je platforma pro spravované služby. Ke správě clusteru nevyžaduje žádnou režii ani nástroje řízení, jako jsou například systém uvolňování paměti, Java Virtual Machine (JVM) a nodetool. Podporuje nástroje, jako je cqlsh, které využívá kompatibilitu Binary CQLv4.
- Azure Portal správy účtu jsou průzkumník dat, metriky, diagnostika protokolů, PowerShell a rozhraní příkazového řádku.
Hostované prostředí CQL (Preview)
Hostované nativní prostředí Cassandra (CQLSH v5.0.1) můžete otevřít přímo z Průzkumník dat v Azure Portal nebo v Průzkumníku služby Azure Cosmos DB. Před povolením prostředí CQL musíte ve svém účtu povolit funkci Poznámkových bloků (pokud ještě není povolená, zobrazí se výzva při kliknutí na Open Cassandra Shell ). Viz článek Povolení poznámkových bloků pro účty Azure Cosmos DB pro podporované oblasti Azure.
Ke službě Cosmos Azure rozhraní API Cassandra DB se také můžete připojit pomocí protokolu CQLSH nainstalovaného na místním počítači. Dodává se s Apache Cassandra 3.1.1 a funguje bez dalších nastavení nastavením proměnných prostředí. Následující části obsahují pokyny k instalaci, konfiguraci a připojení k rozhraní API Cassandra ve službě Azure Cosmos DB v Windows nebo Linuxu pomocí CQLSH.
Poznámka
Připojení k Azure Cosmos DB rozhraní API Cassandra nebudou fungovat s verzemi CQLSH Enterprise DataStax Enterprise (DSE). Ujistěte se, že při připojování k open source používáte pouze ty verze CQLSH rozhraní API Cassandra Apache Cassandra.
Windows:
Pokud používáte Windows, doporučujeme povolit systém souborů Windows pro Linux. Pak můžete postupovat podle následujících linuxových příkazů.
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
Všechny operace CRUD prováděné prostřednictvím sady SDK kompatibilní s CQL v4 vrátí další informace o spotřebovaných jednotkách chyb a žádostí. Příkazy DELETE a UPDATE by se měly zpracovat s ohledem na zásady správného řízení prostředků, aby se zajistilo co nejefektivnější využití zřízené propustnosti.
- Poznámka: Pokud je zadaná hodnota gc_grace_seconds, musí být nulová.
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}");
}
Mapování konzistence
Rozhraní API Cassandra pro Azure Cosmos DB poskytuje volbu konzistence pro operace čtení. Mapování konzistence je podrobně popisné tady.
Správa oprávnění a rolí
Azure Cosmos DB podporuje řízení přístupu na základě role v Azure (Azure RBAC) pro zřizování, obměny klíčů, zobrazování metrik a hesel/klíčů pro čtení a zápis a jen pro čtení, které je možné získat prostřednictvím Azure Portal. Azure Cosmos DB nepodporuje role pro aktivity CRUD.
Možnosti prostoru klíčů a tabulky
Možnosti pro název oblasti, třídu, replication_factor a datacentrum v příkazu Vytvořit prostor klíčů se v současné době ignorují. Systém k přidání oblastí používá základní metodu globální replikace služby Azure Cosmos DB. Pokud potřebujete data napříč oblastmi, můžete je povolit na úrovni účtu pomocí PowerShellu, rozhraní příkazového řádku nebo portálu. Další informace najdete v článku o přidávání oblastí. Durable_writes není možné zakázat, protože Azure Cosmos DB zajišťuje odolnost každého zápisu. V každé oblasti Azure Cosmos DB replikuje data do sady replik, která se schová ze čtyř replik, a tuto konfiguraci sady replik není možné upravit.
Všechny možnosti jsou při vytváření tabulky ignorovány s výjimkou gc_grace_seconds, které by měly být nastaveny na nulu. Prostor klíčů a tabulka mají další možnost s názvem "cosmosdb_provisioned_throughput" s minimální hodnotou 400 RU/s. Propustnost prostoru klíčů umožňuje sdílení propustnosti mezi více tabulkami a je užitečná ve scénářích, kdy všechny tabulky nevyužívané zřízenou propustnost. Příkaz Alter Table umožňuje změnit zřízenou propustnost napříč oblastmi.
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 ;
Sekundární index
rozhraní API Cassandra podporuje sekundární indexy u všech datových typů s výjimkou zamrzlých typů kolekcí a typů desetinných míst a variant.
Používání zásad opakování připojení Cassandra
Azure Cosmos DB je systém řízený prostředky. To znamená, že v dané sekundě můžete provádět určitý počet operací na základě jednotek žádostí spotřebovaných operacemi. Pokud aplikace tento limit překročí v dané sekundě, požadavky budou rychlostně omezené a budou vyvolány výjimky. Aplikace rozhraní API Cassandra Azure Cosmos DB překládá tyto výjimky na přetížené chyby v nativním protokolu Cassandra. Aby se zajistilo, že vaše aplikace může zachycovat a opakovat požadavky v případě omezení rychlosti, jsou k dispozici rozšíření Sparku a Javy. Pokud se připojujete ke službě Azure rozhraní API Cassandra ve službě Azure Cosmos DB, podívejte se také na ukázky kódu Java pro ovladače Datastax verze 3 a 4. Pokud používáte jiné sady SDK pro přístup k rozhraní API Cassandra ve službě Azure Cosmos DB, vytvořte zásadu připojení, která bude pokus opakovat u těchto výjimek.
Další kroky
- Začínáme s vytvořením účtu rozhraní API Cassandra, databáze a tabulky prostřednictvím aplikace Java