Upravit

Sdílet prostřednictvím


Nejčastější dotazy ke službě Azure Cosmos DB pro Apache Cassandra

PLATÍ PRO: Cassandra

Jaké jsou hlavní rozdíly mezi Azure Cosmos DB for Cassandra a Apache Cassandra?

Tady jsou některé klíčové rozdíly mezi rozhraním API pro službu Cassandra a Apache Cassandra:

  • Apache Cassandra doporučuje limit 100 MB velikosti klíče oddílu. Rozhraní API pro Cassandra pro Službu Azure Cosmos DB umožňuje až 20 GB na oddíl.
  • Apache Cassandra umožňuje zakázat trvalé potvrzení. Zápis do protokolu potvrzení můžete přeskočit a přejít přímo do datové struktury v paměti. To může vést ke ztrátě dat, pokud uzel přestane fungovat, než se datové struktury v paměti vyprázdní do tabulek SSTables na disku. Azure Cosmos DB vždy trvale potvrdí, aby se zabránilo ztrátě dat.
  • Apache Cassandra může vidět snížení výkonu, pokud úloha zahrnuje mnoho nahrazení nebo odstranění. Důvodem jsou náhrobky, které musí úloha čtení přeskočit, aby se načetla nejnovější data. Rozhraní API pro Cassandru neuvidí snížení výkonu čtení, pokud má úloha mnoho nahrazení nebo odstranění.
  • Během scénářů s vysokou náhradou úloh je potřeba spustit komprimace pro sloučení tabulek SSTables na disku. (Sloučení je potřeba, protože zápisy Apache Cassandra se připojují pouze. Více aktualizací se ukládá jako jednotlivé položky tabulky SSTable, které je potřeba pravidelně sloučit). Tato situace může také vést ke snížení výkonu čtení během komprimace. Tento dopad na výkon se neprovádí v rozhraní API pro Cassandru, protože rozhraní API neimplementuje komprimace.
  • Nastavení faktoru replikace 1 je možné pomocí Apache Cassandra. Pokud ale dojde k výpadku jediného uzlu s daty, vede to k nízké dostupnosti. Nejedná se o problém s rozhraním API cassandra pro službu Azure Cosmos DB, protože vždy existuje faktor replikace 4 (kvorum 3).
  • Přidání nebo odebrání uzlů v Apache Cassandře vyžaduje ruční zásah spolu s vysokým využitím procesoru na novém uzlu, zatímco existující uzly přesunou některé z jejich rozsahů tokenů do nového uzlu. Tato situace je stejná při vyřazení existujícího uzlu z provozu. Rozhraní API pro Cassandra se ale škáluje bez jakýchkoli problémů zjištěných ve službě nebo aplikaci.
  • Není nutné nastavovat num_tokens na každém uzlu v clusteru jako v Apache Cassandře. Azure Cosmos DB plně spravuje uzly a rozsahy tokenů.
  • Rozhraní API pro Cassandra je plně spravované. Nepotřebujete příkazy, jako je oprava a vyřazení z provozu, které se používají v Apache Cassandře.

Jakou verzi protokolu rozhraní API pro Cassandra podporuje?

Rozhraní API pro Cassandra pro Azure Cosmos DB podporuje Dotazovací jazyk Cassandra (CQL) m verze 3.x. Kompatibilita CQL je založená na veřejném úložišti GitHubu Apache Cassandra. Pokud máte zpětnou vazbu k podpoře jiných protokolů, pošlete e-mail na askcosmosdbcassandra@microsoft.comadresu .

Proč se pro tabulku vybírá propustnost?

Azure Cosmos DB nastaví výchozí propustnost kontejneru na základě toho, odkud tabulku vytvoříte: Azure Portal nebo CQL.

Azure Cosmos DB poskytuje záruky pro výkon a latenci s horními hranicemi operací. Tyto záruky jsou možné, když modul může vynucovat zásady správného řízení v operacích tenanta. Nastavení propustnosti zajišťuje, že získáte zaručenou propustnost a latenci, protože platforma si tuto kapacitu vyhrazuje a zaručuje úspěch operace. Propustnost můžete elasticky změnit, abyste mohli těžit ze sezónnosti aplikace a ušetřit náklady.

Koncept propustnosti je vysvětlený v článku o jednotkách žádostí ve službě Azure Cosmos DB . Propustnost tabulky se rovnoměrně distribuuje mezi základní fyzické oddíly.

Jaká je propustnost tabulky vytvořené prostřednictvím CQL?

Azure Cosmos DB používá jednotky žádostí za sekundu (RU/s) jako měnu pro zajištění propustnosti. Tabulky vytvořené prostřednictvím CQL mají ve výchozím nastavení 400 RU. RU můžete změnit na webu Azure Portal.

CQL

CREATE TABLE keyspaceName.tablename (user_id int PRIMARY KEY, lastname text) WITH cosmosdb_provisioned_throughput=1200

.NET

int provisionedThroughput = 400;
var simpleStatement = new SimpleStatement($"CREATE TABLE {keyspaceName}.{tableName} (user_id int PRIMARY KEY, lastname text)");
var outgoingPayload = new Dictionary<string, byte[]>();
outgoingPayload["cosmosdb_provisioned_throughput"] = Encoding.UTF8.GetBytes(provisionedThroughput.ToString());
simpleStatement.SetOutgoingPayload(outgoingPayload);

Co se stane při využití propustnosti?

Azure Cosmos DB poskytuje záruky pro výkon a latenci s horními hranicemi operací. Tyto záruky jsou možné, když modul může vynucovat zásady správného řízení v operacích tenanta. Nastavení propustnosti zajišťuje, že získáte zaručenou propustnost a latenci, protože platforma si tuto kapacitu vyhrazuje a zaručuje úspěch operace.

Když přejdete přes tuto kapacitu, zobrazí se následující chybová zpráva, která indikuje, že vaše kapacita byla využita:

0x1001 Přetížení: Požadavek nejde zpracovat, protože "Frekvence požadavků je velká"

Je důležité zjistit, jaké operace (a jejich objem) způsobují tento problém. Můžete získat představu o spotřebované kapacitě, která prochází zřízenou kapacitou s metrikami na webu Azure Portal. Pak musíte zajistit, aby se kapacita spotřebovala téměř stejně napříč všemi základními oddíly. Pokud zjistíte, že jeden oddíl využívá většinu propustnosti, máte nerovnoměrnou distribuci úloh.

K dispozici jsou metriky, které ukazují, jak se propustnost používá v hodinách, v průběhu dnů a za sedm dní napříč oddíly nebo v agregaci. Další informace najdete v tématu Monitorování a ladění s využitím metrik ve službě Azure Cosmos DB.

Diagnostické protokoly jsou vysvětlené v článku protokolování diagnostiky služby Azure Cosmos DB.

Mapuje se primární klíč na koncept klíče oddílu služby Azure Cosmos DB?

Ano, klíč oddílu slouží k umístění entity do správného umístění. Ve službě Azure Cosmos DB se používá k vyhledání správného logického oddílu, který je uložený ve fyzickém oddílu. Koncept dělení je dobře vysvětlený v článku o oddílu a škálování ve službě Azure Cosmos DB . Základní informace o tom, že logický oddíl by neměl přecházet nad limit 20 GB.

Co se stane, když obdržím oznámení, že je oddíl plný?

Azure Cosmos DB je systém založený na smlouvě o úrovni služeb (SLA). Poskytuje neomezené škálování se zárukami latence, propustnosti, dostupnosti a konzistence. Toto neomezené úložiště je založené na horizontálním horizontálním horizontálním navýšení kapacity dat a používá dělení jako klíčový koncept. Koncept dělení je dobře vysvětlený v článku o oddílu a škálování ve službě Azure Cosmos DB .

Měli byste dodržovat limit 20 GB počtu entit nebo položek na logický oddíl. Pokud chcete zajistit, aby se vaše aplikace dobře škálovala, doporučujeme nevytvoření horkého oddílu tak, že uložíte všechny informace do jednoho oddílu a dotazujete se na něj. K této chybě může dojít pouze v případě nerovnoměrné distribuce dat: to znamená, že máte velké množství dat pro jeden klíč oddílu (více než 20 GB). Distribuci dat najdete pomocí portálu úložiště. Řešením této chyby je opětovné vytvoření tabulky a výběr podrobného primárního klíče (klíče oddílu), který umožňuje lepší distribuci dat.

Můžu rozhraní API pro Cassandru použít jako úložiště hodnot klíčů s miliony nebo miliardami klíčů oddílů?

Azure Cosmos DB může ukládat neomezená data horizontálním navýšením kapacity úložiště. Toto úložiště je nezávislé na propustnosti. Ano, rozhraní API pro Cassandru můžete vždy použít k ukládání a načítání klíčů a hodnot zadáním správného primárního klíče nebo klíče oddílu. Tyto jednotlivé klíče získají vlastní logický oddíl a nacházejí se na fyzickém oddílu bez problémů.

Můžu s rozhraním API pro Cassandru vytvořit více tabulek?

Ano, s rozhraním API pro Cassandra je možné vytvořit více tabulek. Každá z těchto tabulek se považuje za jednotku propustnosti a úložiště.

Můžu po sobě vytvořit více než jednu tabulku?

Azure Cosmos DB je systém řízení prostředků pro aktivity roviny dat i řídicí roviny. Kontejnery, jako jsou kolekce a tabulky, jsou entity modulu runtime zřízené pro danou kapacitu propustnosti. Vytvoření těchto kontejnerů v rychlém sledu není očekávanou aktivitou a může se omezovat. Pokud máte testy, které odstraňují nebo vytváří tabulky okamžitě, zkuste je umístit na místo.

Jaký je maximální počet tabulek, které můžu vytvořit?

Počet tabulek nemá žádný fyzický limit. Pokud máte velký počet tabulek (kde celková stabilní velikost přesáhne 10 TB dat), které je potřeba vytvořit, ne obvyklé desítky nebo stovky, odeslat e-mail askcosmosdbcassandra@microsoft.com.

Jaký je maximální počet prostorů klíčů, které můžu vytvořit?

Počet prostorů klíčů není nijak omezený, protože se jedná o kontejnery metadat. Pokud máte velký počet prostorů klíčů, odešlete e-mail na askcosmosdbcassandra@microsoft.comadresu .

Můžu přenést mnoho dat po spuštění z normální tabulky?

Ano. Za předpokladu, že jednotně distribuované oddíly se kapacita úložiště automaticky spravuje a zvyšuje se při nasdílení více dat. Takže můžete bez obav importovat tolik dat, kolik potřebujete, aniž byste museli spravovat a zřizovat uzly a provádět další úlohy. Pokud ale očekáváte řadu okamžitých nárůstů dat, dává smysl přímo zřídit očekávanou propustnost , a ne spustit nižší a okamžitě ji zvýšit.

Můžu ke konfiguraci chování rozhraní API použít nastavení souborů YAML?

Rozhraní API pro Cassandra pro Azure Cosmos DB poskytuje kompatibilitu na úrovni protokolu pro provádění operací. Skrývá složitost správy, monitorování a konfigurace. Jako vývojář/uživatel si nemusíte dělat starosti s dostupností, náhrobky, mezipamětí klíčů, mezipamětí řádků, filtrem květů a mnoha dalšími nastaveními. Rozhraní API pro Cassandra se zaměřuje na zajištění výkonu čtení a zápisu, který potřebujete bez režie konfigurace a správy.

Bude rozhraní API pro Cassandra podporovat příkazy pro přidání uzlů, stav clusteru a stav uzlu?

Rozhraní API pro Cassandra zjednodušuje plánování kapacity a reaguje na požadavky elasticity na propustnost a úložiště. Se službou Azure Cosmos DB zřídíte potřebnou propustnost. Pak můžete kapacitu vertikálně navýšit nebo snížit libovolný počet dní, aniž byste se museli starat o přidávání, odstraňování nebo správu uzlů. Pro správu uzlů a clusterů nemusíte používat nástroje.

Co se stane s různými nastaveními konfigurace pro vytváření prostorů klíčů, jako je simple/network?

Azure Cosmos DB poskytuje globální distribuci z důvodů dostupnosti a nízké latence. Nemusíte nastavovat repliky ani jiné věci. Zápisy jsou vždy trvale potvrzeny kvorem v libovolné oblasti, kde píšete, a přitom poskytují záruky výkonu.

Co se stane s různými nastaveními metadat tabulek?

Azure Cosmos DB poskytuje záruky výkonu pro čtení, zápisy a propustnost. Takže si nemusíte dělat starosti s tím, že se dotknete žádného nastavení konfigurace a omylem s nimi manipulujete. Mezi tato nastavení patří kvetový filtr, ukládání do mezipaměti, šance na opravu čtení, gc_grace a komprese memtable_flush_period.

Podporuje se pro tabulky Cassandra časový limit?

Ano, hodnota TTL je podporovaná.

Jak můžu monitorovat infrastrukturu spolu s propustností?

Azure Cosmos DB je platforma, která pomáhá zvýšit produktivitu a nemusíte se starat o správu a monitorování infrastruktury. Pomocí různých nástrojů například nemusíte monitorovat stav uzlu, stav repliky, gc a parametry operačního systému. Stačí se postarat o propustnost, která je dostupná na metrikách portálu, abyste zjistili, jestli dochází k omezování, a pak tuto propustnost zvyšte nebo snižte. Můžete provádět následující akce:

Které klientské sady SDK můžou pracovat s rozhraním API pro Cassandra?

Klientské ovladače sady Apache Cassandra SDK, které používají CQLv3, se používaly pro klientské programy. Pokud máte jiné ovladače, které používáte nebo pokud máte problémy, pošlete e-mail .askcosmosdbcassandra@microsoft.com

Podporují se složené klíče oddílů?

Ano, k vytvoření složených klíčů oddílů můžete použít běžnou syntaxi.

Můžu pro načítání dat použít sstableloader?

Ne, sstableloader se nepodporuje.

Můžu spárovat místní cluster Apache Cassandra s rozhraním API pro Cassandru?

Azure Cosmos DB teď nabízí optimalizované prostředí pro cloudové prostředí bez režijních nákladů na provoz. Pokud potřebujete párování, pošlete e-mail askcosmosdbcassandra@microsoft.com s popisem vašeho scénáře. Pracujeme na nabídce, která vám pomůže spárovat místní nebo cloudový cluster Cassandra s rozhraním API pro Cassandra pro Azure Cosmos DB.

Poskytuje rozhraní API pro Cassandra úplné zálohy?

Azure Cosmos DB poskytuje dvě bezplatné úplné zálohy pořízené v čtyřhodinových intervalech napříč všemi rozhraními API. Takže nemusíte nastavovat plán zálohování.

Uchovávání záloh a frekvenci můžete spravovat sami.

Pokud chcete provést obnovení ze zálohy, pošlete e-mail askcosmosdbcassandra@microsoft.com nebo vytvořte případ podpory. Informace o možnostech zálohování najdete v článku o automatickém online zálohování a obnovení ve službě Azure Cosmos DB .

Jak rozhraní API pro účet Cassandra zpracovává převzetí služeb při selhání v případě výpadku oblasti?

Rozhraní API pro Cassandra si půjčuje z globálně distribuované platformy Azure Cosmos DB. Pokud chcete zajistit, aby vaše aplikace mohla tolerovat výpadky datacentra, povolte alespoň jednu další oblast pro účet na webu Azure Portal. Další informace najdete v tématu Vysoká dostupnost ve službě Azure Cosmos DB.

Můžete přidat libovolný počet oblastí pro účet a určit, kam může převzít služby při selhání, tím, že poskytnete prioritu převzetí služeb při selhání. Pokud chcete databázi použít, musíte tam také poskytnout aplikaci. Když to uděláte, vaši zákazníci nebudou docházet k výpadkům.

Indexuje rozhraní API cassandra ve výchozím nastavení všechny atributy entity?

Ne. Rozhraní API pro Cassandra podporuje sekundární indexy, které se chovají podobným způsobem jako Apache Cassandra. Rozhraní API ve výchozím nastavení neindexuje každý atribut.

Můžu s emulátorem používat nové rozhraní API pro sadu Cassandra SDK místně?

Ano, tato možnost je podporována. Podrobnosti o tom, jak to povolit, najdete v článku Použití emulátoru služby Azure Cosmos DB pro místní vývoj a testování .

Jak můžu migrovat data z clusterů Apache Cassandra do služby Azure Cosmos DB?

Informace o možnostech migrace si můžete přečíst v kurzu Migrace dat do účtu API for Cassandra ve službě Azure Cosmos DB .

Další krok