Megosztás a következőn keresztül:


Materialized views in Azure Cosmos DB for Apache Cassandra (előzetes verzió)

A KÖVETKEZŐKRE VONATKOZIK: Cassandra

Fontos

Az Azure Cosmos DB for Cassandra materializált nézetei jelenleg előzetes verzióban érhetőek el. Ezt a funkciót az Azure Portalon engedélyezheti. A materializált nézetek ezen előnézete szolgáltatásszint-szerződés nélkül érhető el. Az éles számítási feladatokhoz jelenleg nem ajánlott a materializált nézetek használata. Előfordulhat, hogy az előzetes verzió bizonyos funkciói nem támogatottak, vagy korlátozott képességekkel rendelkeznek. További információkért tekintse meg a Microsoft Azure előzetes verziójának használati feltételeit.

A definiált materializált nézetek segítségével hatékonyan kérdezhet le egy alaptáblát (vagy tárolót az Azure Cosmos DB-ben) olyan szűrőkkel, amelyek nem elsődleges kulcsok. Amikor a felhasználók az alaptáblába írnak, a materializált nézet automatikusan létrejön a háttérben. Ez a nézet eltérő elsődleges kulccsal rendelkezhet a hatékony keresésekhez. A nézet csak az alaptáblából előre jelzett oszlopokat tartalmazza. Ez a nézet írásvédett tábla lesz.

Az oszloptárolókat partíciókulcs megadása nélkül is lekérdezheti másodlagos indexek használatával. A lekérdezés azonban nem lesz hatékony a magas vagy alacsony számosságú oszlopok esetében. A lekérdezés egy kis eredményhalmazt kereshet az összes adaton. Az ilyen lekérdezések költségesek lesznek, mivel véletlenül keresztpartíciós lekérdezésként futnak.

Materializált nézettel a következőt teheti:

  • Keresési vagy leképezési táblaként használva megőrizheti a partíciók közötti vizsgálatokat, amelyek egyébként költséges lekérdezések lennének.
  • Adjon meg egy SQL-alapú feltételes predikátumot, amely csak bizonyos oszlopokat és adatokat tölt fel, amelyek megfelelnek az előfeltételnek.
  • Valós idejű nézeteket hozhat létre, amelyek leegyszerűsítik az eseményalapú forgatókönyveket, amelyeket gyakran külön gyűjteményként tárolnak változáscsatorna-eseményindítók használatával.

A materializált nézetek előnyei

A materializált nézetek számos előnnyel rendelkeznek, amelyek magukban foglalják, de nem korlátozódnak a következőkre:

  • A kiszolgálóoldali denormalizálás materializált nézetek használatával valósítható meg. A kiszolgálóoldali denormalizálással elkerülhet több független táblát, és számításilag összetett denormalizálást az ügyfélalkalmazásokban.
  • A materializált nézetek automatikusan frissítik a nézeteket, hogy konzisztensek legyenek az alaptáblával. Ez az automatikus frissítés elvonja az ügyfélalkalmazások feladatait, és általában egyéni logikát implementál az alaptáblába és a nézetbe történő kettős írás végrehajtásához.
  • A materializált nézetek egyetlen nézetből való olvasással optimalizálják az olvasási teljesítményt.
  • A materializált nézet átviteli sebességét egymástól függetlenül is megadhatja.
  • A materializált nézetkészítő réteg konfigurálható úgy, hogy megfeleltethető legyen a követelményeknek a nézet hidratálásához.
  • A materializált nézetek javítják az írási teljesítményt, mivel az írási műveleteket csak az alaptáblába kell írni.
  • Emellett a materializált nézetek Azure Cosmos DB-implementációja egy lekéréses modellen alapul. Ez a megvalósítás nem befolyásolja az írási teljesítményt.

Ismerkedés a materializált nézetekkel

Hozzon létre új API-t Cassandra-fiókokhoz az Azure CLI használatával, hogy a materializált nézet funkciót natív paranccsal vagy REST API-művelettel engedélyezze.

  1. Jelentkezzen be az Azure Portalra.

  2. Lépjen a Cassandra-fiók API-jára.

  3. Az erőforrás menüjében válassza a Beállítások lehetőséget.

  4. A Beállítások szakaszban válassza a Cassandra API Materialized View (Előzetes verzió) elemét.

  5. Az új párbeszédpanelen válassza az Engedélyezés lehetőséget , ha engedélyezni szeretné ezt a funkciót ehhez a fiókhoz.

    Képernyőkép az Azure Portalon engedélyezve lévő Materialized Views funkcióról.

Technikai részletek

A Cassandra API egy materializált nézetkészítő számítási réteggel tartja karban a nézeteket.

Rugalmasan konfigurálhatja a nézetszerkesztő számítási példányait a késési és késési követelmények alapján a nézetek hidratálásához. Technikai szempontból ez a számítási réteg hatékonyabb módon kezeli a partíciók közötti kapcsolatokat, még akkor is, ha az adatméret nagy, és a partíciók száma magas.

A számítási tárolók az Azure Cosmos DB-fiók összes materializált nézete között meg vannak osztva. Minden kiépített számítási tároló több olyan feladatot hoz létre, amely beolvassa a változáscsatornát az alaptáblapartíciókból, és adatokat ír a cél materializált nézetbe[s]. A számítási tároló átalakítja a materializált nézetdefiníciónkénti adatokat a fiók minden materializált nézetéhez.

Materializált nézetszerkesztő létrehozása

Hozzon létre egy materializált nézetszerkesztőt az adatok automatikus átalakításához és materializált nézetbe való íráshoz.

  1. Jelentkezzen be az Azure Portalra.

  2. Lépjen a Cassandra-fiók API-jára.

  3. Az erőforrásmenüben válassza a Materialized Views Builder lehetőséget.

  4. A Materialized Views Builder lapon konfigurálja a szerkesztő termékváltozatát és példányainak számát.

    Feljegyzés

    Ez az erőforrásmenü-beállítás és lap csak akkor jelenik meg, ha a Materialized Views funkció engedélyezve van a fiókhoz.

  5. Válassza a Mentés lehetőséget.

Materializált nézet létrehozása

Miután beállította a fiókját és a Materialized View Buildert, képesnek kell lennie materializált nézetek létrehozására a CQLSH használatával.

Feljegyzés

Ha még nincs telepítve az önálló CQLSH-eszköz, tekintse meg a CQLSH-eszköz telepítését. Az eszközben is frissítenie kell a kapcsolati sztring.

Íme néhány példaparancs a materializált nézet létrehozásához:

  1. Először hozzon létre egy kulcstérnevetuprofile.

    CREATE KEYSPACE IF NOT EXISTS uprofile WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 1 };
    
  2. Ezután hozzon létre egy táblát user a kulcstérben.

    CREATE TABLE IF NOT EXISTS uprofile.USER (user_id INT PRIMARY KEY, user_name text, user_bcity text);
    
  3. Most hozzon létre egy materializált nézetet user_by_bcity ugyanazon a kulcstéren belül. Adja meg egy lekérdezés használatával, hogy az adatok hogyan lesznek kivetítve a nézetbe az alaptáblából.

    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. Sorok beszúrása az alaptáblába.

    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. A materializált nézet lekérdezése.

    SELECT * FROM user_by_bcity; 
    
  6. Figyelje meg a materializált nézet kimenetét.

     user_bcity | user_id | user_name 
    ------------+---------+----------- 
       New York |     101 |   johnjoe 
       New York |     102 |     james 
    
    (2 rows) 
    

Igény szerint az erőforrás-szolgáltatóval is létrehozhat vagy frissíthet egy materializált nézetet.

Jelenlegi korlátozások

A Cassandra api-jának a materializált nézetek előzetes verziójára vonatkozó korlátozásai:

  • A materializált nézetek nem hozhatók létre olyan táblákon, amelyek azelőtt léteztek, hogy engedélyezték volna a materializált nézetek támogatását a fiókban. A materializált nézetek használatához hozzon létre egy új táblát a funkció engedélyezése után.
  • A materializált nézetdefiníció záradéka WHERE esetében jelenleg csak IS NOT NULL szűrők engedélyezettek.
  • Miután materializált nézetet hozott létre egy alaptáblán, ALTER TABLE ADD a műveletek nem engedélyezettek az alaptábla sémáján. ALTER TABLE APP csak akkor engedélyezett, ha egyik materializált nézet sem lett kiválasztva * a definíciójukban.
  • A partíciókulcs méretére (2 Kb) és a fürtkulccsal való teljes méretre (1 Kb) vonatkozó korlátozások vonatkoznak. Ha túllépi ezt a méretkorlátot, a felelős üzenet mérgező üzenetsorba kerül.
  • Ha egy alaptábla felhasználó által definiált típusokkal (UDT-kkel) rendelkezik, és a materializált nézetdefiníció SELECT * FROM az UDT-t az egyik előre jelzett oszlopban tartalmazza vagy tartalmazza, az UDT-frissítések nem engedélyezettek a fiókban.
  • Az automatikus regionális feladatátvétel után előfordulhat, hogy a materializált nézetek inkonzisztenssé válnak az alaptáblával néhány sor esetében. Az inkonzisztencia elkerülése érdekében építse újra újra a materializált nézetet a feladatátvétel után.
  • A materializált nézetkészítő példányok létrehozása 32 maggal nem támogatott. Szükség esetén több szerkesztőpéldányt is létrehozhat kisebb számú maggal.

A fenti korlátozások mellett vegye figyelembe a következő további korlátozásokat:

  • Rendelkezésre állási zónák
    • A materializált nézetek nem engedélyezhetők a rendelkezésre állási zónát engedélyező régiókkal rendelkező fiókokon.
    • Az új régió rendelkezésre állási zónával való hozzáadása nem támogatott, ha enableMaterializedViews a fiók igaz értékre van állítva.
  • Rendszeres biztonsági mentés és visszaállítás
    • A rendszer nem állítja vissza automatikusan a materializált nézeteket a visszaállítási folyamattal. A visszaállítási folyamat befejezése után újra létre kell hoznia a materializált nézeteket. Ezt követően konfigurálnia enableMaterializedViews kell a visszaállított fiókjukat, mielőtt újból létrehozza a materializált nézeteket és szerkesztőket.
  • Apache Cassandra
    • A materializált nézetek ütközésfeloldási szabályzatának definiálása nem engedélyezett.
    • Az írási műveletek materializált nézetekben nem engedélyezettek.
    • A dokumentumközi lekérdezések és az összesítő függvények használata nem támogatott a materializált nézetekben.
    • A materializált nézet sémája a létrehozás után nem módosítható.
    • Az alaptábla törlése nem engedélyezett, ha legalább egy materializált nézet van definiálva rajta. Először minden nézetet törölni kell, majd az alaptáblát törölni kell.
    • A statikus oszlopokkal rendelkező tárolók materializált nézeteinek definiálása nem engedélyezett.

Következő lépések