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.
Jelentkezzen be az Azure Portalra.
Lépjen a Cassandra-fiók API-jára.
Az erőforrás menüjében válassza a Beállítások lehetőséget.
A Beállítások szakaszban válassza a Cassandra API Materialized View (Előzetes verzió) elemét.
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.
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.
Jelentkezzen be az Azure Portalra.
Lépjen a Cassandra-fiók API-jára.
Az erőforrásmenüben válassza a Materialized Views Builder lehetőséget.
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.
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:
Először hozzon létre egy kulcstérnevet
uprofile
.CREATE KEYSPACE IF NOT EXISTS uprofile WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 1 };
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);
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);
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' );
A materializált nézet lekérdezése.
SELECT * FROM user_by_bcity;
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.
- Nézet létrehozása vagy frissítése a Cassandra API-ban
- Nézet lekérése a Cassandra API-ban
- Nézetek listázása a Cassandra API-ban
- Nézet törlése a Cassandra API-ban
- Nézet átviteli sebességének frissítése a Cassandra API-ban
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 csakIS 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.
- 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
- 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.