Materializovaná zobrazení ve službě Azure Cosmos DB pro Apache Cassandra (Preview)
PLATÍ PRO: Cassandra
Důležité
Materializovaná zobrazení ve službě Azure Cosmos DB for Cassandra je aktuálně ve verzi Preview. Tuto funkci můžete povolit pomocí webu Azure Portal. Tato verze Preview materializovaných zobrazení je poskytována bez smlouvy o úrovni služeb. V tuto chvíli se materializovaná zobrazení nedoporučují pro produkční úlohy. Některé funkce této verze Preview nemusí být podporované nebo mohou mít omezené možnosti. Další informace najdete v dodatečných podmínkách použití pro verze Preview Microsoft Azure.
Materializovaná zobrazení při definování poskytují prostředky k efektivnímu dotazování základní tabulky (nebo kontejneru ve službě Azure Cosmos DB) pomocí filtrů, které nejsou primárními klíči. Když uživatelé zapisuje do základní tabulky, materializované zobrazení se automaticky sestaví na pozadí. Toto zobrazení může mít jiný primární klíč pro efektivní vyhledávání. Zobrazení bude také obsahovat pouze sloupce explicitně promítané ze základní tabulky. Toto zobrazení bude tabulka určená jen pro čtení.
Úložiště sloupců můžete dotazovat bez zadání klíče oddílu pomocí sekundárních indexů. Dotaz ale nebude efektivní pro sloupce s vysokou nebo nízkou kardinalitou. Dotaz může prohledat všechna data pro malou sadu výsledků. Tyto dotazy můžou být nákladné, protože se omylem spustí jako dotaz napříč oddíly.
Pomocí materializovaného zobrazení můžete:
- Slouží jako vyhledávací nebo mapovací tabulka k zachování kontrol napříč oddíly, které by jinak byly nákladné dotazy.
- Zadejte podmíněný predikát založený na SQL, který naplní pouze určité sloupce a data, která splňují podmínku.
- Vytvářejte zobrazení v reálném čase, která zjednodušují scénáře založené na událostech, které se běžně ukládají jako samostatné kolekce pomocí triggerů kanálu změn.
Výhody materializovaných zobrazení
Materializovaná zobrazení mají mnoho výhod, které zahrnují, ale nejsou omezené na:
- Denormalizaci na straně serveru můžete implementovat pomocí materializovaných zobrazení. Při denormalizaci na straně serveru se můžete vyhnout více nezávislých tabulek a výpočetně složité denormalizaci v klientských aplikacích.
- Materializovaná zobrazení automaticky aktualizují zobrazení, aby byla konzistentní se základní tabulkou. Tato automatická aktualizace abstrahuje zodpovědnosti klientských aplikací pomocí vlastní logiky, která by prováděla duální zápisy do základní tabulky a zobrazení.
- Materializovaná zobrazení optimalizují výkon čtení čtení načtením z jednoho zobrazení.
- Propustnost materializovaného zobrazení můžete zadat nezávisle.
- Můžete nakonfigurovat materializovanou vrstvu tvůrce zobrazení, která mapuje vaše požadavky na hydrataci zobrazení.
- Materializovaná zobrazení zlepšují výkon zápisu, protože operace zápisu je potřeba zapisovat pouze do základní tabulky.
- Implementace materializovaných zobrazení ve službě Azure Cosmos DB je navíc založená na modelu vyžádání změn. Tato implementace nemá vliv na výkon zápisu.
Začínáme s materializovanými zobrazeními
Vytvořte nové rozhraní API pro účty Cassandra pomocí Azure CLI a povolte funkci materializovaných zobrazení buď pomocí nativního příkazu, nebo operace rozhraní REST API.
Přihlaste se k portálu Azure.
Přejděte do svého účtu API pro Cassandra.
V nabídce prostředků vyberte Nastavení.
V části Nastavení vyberte materializované zobrazení pro rozhraní API Cassandra (Preview).
V novém dialogovém okně vyberte Povolit tuto funkci pro tento účet.
Pod pokličkou
Rozhraní API pro Cassandra používá k údržbě zobrazení materializovanou výpočetní vrstvu tvůrce zobrazení.
Získáte flexibilitu při konfiguraci výpočetních instancí tvůrce zobrazení na základě vašich požadavků na latenci a prodlevu pro hydrataci zobrazení. Z technického hlediska pomáhá tato výpočetní vrstva spravovat připojení mezi oddíly efektivnějším způsobem, i když je velikost dat velká a počet oddílů je vysoký.
Výpočetní kontejnery se sdílejí mezi všemi materializovanými zobrazeními v rámci účtu služby Azure Cosmos DB. Každý zřízený výpočetní kontejner vytváří několik úloh, které čtou kanál změn z oddílů základní tabulky a zapisují data do cílového materializovaného zobrazení. Výpočetní kontejner transformuje data podle definice materializovaného zobrazení pro každé materializované zobrazení v účtu.
Vytvoření tvůrce materializovaných zobrazení
Vytvořte tvůrce materializovaných zobrazení, který automaticky transformuje data a zapisuje do materializovaného zobrazení.
Přihlaste se k portálu Azure.
Přejděte do svého účtu API pro Cassandra.
V nabídce prostředků vyberte Tvůrce materializovaných zobrazení.
Na stránce Tvůrce materializovaných zobrazení nakonfigurujte skladovou položku a počet instancí pro tvůrce.
Poznámka:
Tato možnost nabídky prostředků a stránka se zobrazí jenom v případě, že je pro účet povolená funkce Materialized Views ( Materialized Views).
Zvolte Uložit.
Vytvoření materializovaného zobrazení
Po nastavení účtu a Tvůrce materializovaných zobrazení byste měli být schopni vytvořit materializovaná zobrazení pomocí CQLSH.
Poznámka:
Pokud ještě nemáte nainstalovaný samostatný nástroj CQLSH, přečtěte si téma instalace nástroje CQLSH. Měli byste také aktualizovat připojovací řetězec v nástroji.
Tady je několik ukázkových příkazů pro vytvoření materializovaného zobrazení:
Nejprve vytvořte název
uprofile
prostoru klíčů .CREATE KEYSPACE IF NOT EXISTS uprofile WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 1 };
Dále vytvořte tabulku s názvem
user
v prostoru klíčů.CREATE TABLE IF NOT EXISTS uprofile.USER (user_id INT PRIMARY KEY, user_name text, user_bcity text);
Teď vytvořte materializované zobrazení pojmenované
user_by_bcity
ve stejném prostoru klíčů. Pomocí dotazu určete, jak se data promítnou do zobrazení ze základní tabulky.CREATE MATERIALIZED VIEW uprofile.user_by_bcity AS SELECT user_id, user_name, user_bcity FROM uprofile.USER WHERE user_id IS NOT NULL AND user_bcity IS NOT NULL PRIMARY KEY (user_bcity, user_id);
Vložte řádky do základní tabulky.
INSERT INTO uprofile.USER (user_id, user_name, user_bcity) VALUES ( 101, 'johnjoe', 'New York' ); INSERT INTO uprofile.USER (user_id, user_name, user_bcity) VALUES ( 102, 'james', 'New York' );
Dotazování materializovaného zobrazení
SELECT * FROM user_by_bcity;
Sledujte výstup z materializovaného zobrazení.
user_bcity | user_id | user_name ------------+---------+----------- New York | 101 | johnjoe New York | 102 | james (2 rows)
Volitelně můžete pomocí poskytovatele prostředků vytvořit nebo aktualizovat materializované zobrazení.
- Vytvoření nebo aktualizace zobrazení v rozhraní API pro Cassandra
- Získání zobrazení v rozhraní API pro Cassandra
- Zobrazení seznamů v rozhraní API pro Cassandra
- Odstranění zobrazení v rozhraní API pro Cassandra
- Aktualizace propustnosti zobrazení v rozhraní API pro Cassandra
Aktuální omezení
U rozhraní API pro implementaci materializovaných zobrazení cassandra ve verzi Preview existuje několik omezení:
- Materializovaná zobrazení nelze vytvořit v tabulce, která existovala před povolením podpory materializovaných zobrazení v účtu. Pokud chcete použít materializovaná zobrazení, vytvořte po povolení funkce novou tabulku.
- V klauzuli definice materializovaného
WHERE
zobrazení jsou aktuálně povoleny pouzeIS NOT NULL
filtry. - Po vytvoření materializovaného zobrazení pro základní tabulku
ALTER TABLE ADD
nejsou operace ve schématu základní tabulky povolené.ALTER TABLE APP
je povolena pouze v případě, že žádná z materializovaných zobrazení nebyla vybrána*
v jejich definici. - Existují omezení velikosti klíče oddílu (2 kB) a celkové délky klíče clusteringu (1 kB). Pokud dojde k překročení tohoto limitu velikosti, zodpovědná zpráva skončí ve frontě otrávených zpráv.
- Pokud základní tabulka obsahuje uživatelem definované typy (UDT) a definici materializovaného zobrazení má
SELECT * FROM
buď nebo má UDT v jednom z předpokládaných sloupců, aktualizace UDT nejsou u účtu povolené. - Materializovaná zobrazení se můžou stát nekonzistentní se základní tabulkou pro několik řádků po automatickém převzetí služeb při selhání v jednotlivých oblastech. Pokud se chcete této nekonzistence vyhnout, znovu sestavte materializované zobrazení po převzetí služeb při selhání.
- Vytváření instancí materializovaného tvůrce zobrazení s 32 jádry se nepodporuje. V případě potřeby můžete vytvořit několik instancí tvůrce s menším počtem jader.
Kromě výše uvedených omezení zvažte následující další omezení:
- Zóny dostupnosti
- Materializovaná zobrazení se nedají povolit u účtu s povolenými oblastmi zóny dostupnosti.
- Přidání nové oblasti se zónou dostupnosti není podporováno, jakmile
enableMaterializedViews
je pro účet nastavená hodnota true.
- Pravidelné zálohování a obnovení
- Materializovaná zobrazení se při procesu obnovení automaticky neobnoví. Po dokončení procesu obnovení budete muset znovu vytvořit materializovaná zobrazení. Potom byste měli nakonfigurovat
enableMaterializedViews
obnovený účet, než znovu vytvoříte materializovaná zobrazení a tvůrce.
- Materializovaná zobrazení se při procesu obnovení automaticky neobnoví. Po dokončení procesu obnovení budete muset znovu vytvořit materializovaná zobrazení. Potom byste měli nakonfigurovat
- Apache Cassandra
- Definování zásad řešení konfliktů v materializovaných zobrazeních není povoleno.
- Operace zápisu nejsou v materializovaných zobrazeních povolené.
- Dotazy mezi dokumenty a použití agregačních funkcí se v materializovaných zobrazeních nepodporují.
- Schéma materializovaného zobrazení nelze po vytvoření upravit.
- Odstranění základní tabulky není povoleno, pokud je v ní definováno alespoň jedno materializované zobrazení. Všechna zobrazení musí být nejprve odstraněna a potom je možné základní tabulku odstranit.
- Definování materializovaných zobrazení pro kontejnery se statickými sloupci není povolené.