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.

  1. Přihlaste se k portálu Azure.

  2. Přejděte do svého účtu API pro Cassandra.

  3. V nabídce prostředků vyberte Nastavení.

  4. V části Nastavení vyberte materializované zobrazení pro rozhraní API Cassandra (Preview).

  5. V novém dialogovém okně vyberte Povolit tuto funkci pro tento účet.

    Snímek obrazovky s funkcí Materializovaná zobrazení, která je povolená na webu Azure Portal

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í.

  1. Přihlaste se k portálu Azure.

  2. Přejděte do svého účtu API pro Cassandra.

  3. V nabídce prostředků vyberte Tvůrce materializovaných zobrazení.

  4. 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).

  5. 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í:

  1. Nejprve vytvořte název uprofileprostoru klíčů .

    CREATE KEYSPACE IF NOT EXISTS uprofile WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 1 };
    
  2. 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);
    
  3. 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);
    
  4. 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' 
        );
    
  5. Dotazování materializovaného zobrazení

    SELECT * FROM user_by_bcity; 
    
  6. 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í.

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 pouze IS 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.
  • 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é.

Další kroky