Materializovaná zobrazení ve službě Azure Cosmos DB for Apache Cassandra (Preview)

PLATÍ PRO: Cassandra

Důležité

Materializovaná zobrazení ve službě Azure Cosmos DB for Cassandra jsou aktuálně ve verzi Preview. Tuto funkci můžete povolit pomocí Azure Portal. Tato verze Preview materializovaných zobrazení se poskytuje bez smlouvy o úrovni služeb. V tuto chvíli se materializovaná zobrazení pro produkční úlohy nedoporučují. 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í, pokud jsou definovaná, poskytují prostředky k efektivnímu dotazování základní tabulky (nebo kontejneru ve službě Azure Cosmos DB) s filtry, které nejsou primárními klíči. Když uživatelé zapisuje do základní tabulky, materializované zobrazení se vytvoří automaticky 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 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 by mohl prohledat všechna data a vyhledat malou sadu výsledků. Tyto dotazy jsou nakonec nákladné, protože se nechtěně spouští jako dotaz napříč oddíly.

V materializovaném zobrazení můžete:

  • Jako vyhledávací nebo mapovací tabulku můžete použít k zachování kontrol napříč oddíly, které by jinak byly nákladné dotazy.
  • Zadejte podmíněný predikát založený na SQL pro naplnění pouze určitých sloupců a dat, které splňují předběžnou 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, mezi které patří mimo jiné:

  • Denormalizaci na straně serveru můžete implementovat pomocí materializovaných zobrazení. Díky denormalizaci na straně serveru se můžete vyhnout více nezávislým tabulkám a výpočetně složité denormalizaci v klientských aplikacích.
  • Materializovaná zobrazení se automaticky aktualizují, aby byla konzistentní se základní tabulkou. Tato automatická aktualizace abstrahuje odpovědnosti vašich klientských aplikací s tím, že obvykle implementuje vlastní logiku pro provádění duálních zápisů do základní tabulky a zobrazení.
  • Materializovaná zobrazení optimalizují výkon čtení čtením z jednoho zobrazení.
  • Propustnost materializovaného zobrazení můžete zadat nezávisle.
  • Můžete nakonfigurovat vrstvu materializovaného tvůrce zobrazení, která se mapuje na vaše požadavky a hydratuje 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í. Tato implementace nemá vliv na výkon zápisu.

Začínáme s materializovanými zobrazeními

Vytvořte nové účty rozhraní API pro Cassandra pomocí Azure CLI a povolte funkci materializovaných zobrazení pomocí nativního příkazu nebo operace rozhraní REST API.

  1. Přihlaste se k webu Azure Portal.

  2. Přejděte k účtu rozhraní 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 a povolte tuto funkci pro tento účet.

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

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ě požadavků na latenci a prodlevu, abyste mohli zobrazení hydratovat. Z technického hlediska tato výpočetní vrstva pomáhá efektivněji spravovat připojení mezi oddíly i v případě, že 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 ze základních oddílů 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í pro automatickou transformaci dat a zápis do materializovaného zobrazení.

  1. Přihlaste se k webu Azure Portal.

  2. Přejděte k účtu rozhraní 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 a stránka nabídky prostředků se zobrazí pouze v případě, že je pro účet povolená funkce Materializovaná zobrazení.

  5. Vyberte Uložit.

Vytvoření materializovaného zobrazení

Po nastavení účtu a Tvůrce materializovaných zobrazení byste měli být schopni vytvářet 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í s názvem 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. Dotaz na materializované 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 k vytvoření nebo aktualizaci materializovaného zobrazení použít také poskytovatele prostředků.

Aktuální omezení

Rozhraní API pro implementaci materializovaných zobrazení ve verzi Preview cassandry má několik omezení:

  • Materializovaná zobrazení nelze vytvořit v tabulce, která existovala před povolením podpory materializovaných zobrazení na účtu. Pokud chcete použít materializovaná zobrazení, vytvořte novou tabulku po povolení funkce.
  • Pro 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 ve schématu základní tabulky povoleny operace. ALTER TABLE APP je povolen pouze v případě, že žádné z materializovaných zobrazení není vybráno * ve své definici.
  • Platí omezení pro velikost klíče oddílu (2 kB) a celkovou délku klíče clusteringu (1 kB). Pokud je tento limit velikosti překročen, odpovědná zpráva skončí ve frontě zpráv s jedem.
  • Pokud základní tabulka obsahuje uživatelem definované typy (UDT) a definice materializovaného zobrazení obsahuje nebo SELECT * FROM obsahuje UDT v jednom z předpokládaných sloupců, aktualizace UDT nejsou pro účet povolené.
  • Materializovaná zobrazení můžou být nekonzistentní se základní tabulkou na několik řádků po automatickém převzetí služeb při selhání v oblasti. Chcete-li se vyhnout této nekonzistence, znovu vytvořte 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 více 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, který má povolené oblasti zóny dostupnosti.
    • Přidání nové oblasti se zónou dostupnosti se nepodporuje, jakmile enableMaterializedViews je u účtu nastavená hodnota true.
  • Pravidelné zálohování a obnovení
    • Materializovaná zobrazení se s procesem obnovení automaticky neobnoví. Po dokončení procesu obnovení budete muset materializovaná zobrazení znovu vytvořit. Potom byste měli před opětovným vytvořením materializovaných zobrazení a tvůrce nakonfigurovat enableMaterializedViews jejich obnovený účet.
  • Apache Cassandra
    • Definování zásad řešení konfliktů pro materializovaná zobrazení není povolené.
    • 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í změnit.
    • Odstranění základní tabulky není povoleno, pokud je v ní definováno alespoň jedno materializované zobrazení. Nejprve je potřeba odstranit všechna zobrazení a pak je možné odstranit základní tabulku.
    • Definování materializovaných zobrazení u kontejnerů se statickými sloupci není povolené.

Další kroky