Materialiserade vyer i Azure Cosmos DB för Apache Cassandra (förhandsversion)
GÄLLER FÖR: Kassandra
Viktigt!
Materialiserade vyer i Azure Cosmos DB för Cassandra är för närvarande i förhandsversion. Du kan aktivera den här funktionen med hjälp av Azure-portalen. Den här förhandsversionen av materialiserade vyer tillhandahålls utan ett serviceavtal. För närvarande rekommenderas inte materialiserade vyer för produktionsarbetsbelastningar. Vissa funktioner i den här förhandsversionen kanske inte stöds eller har begränsade funktioner. Mer information finns i kompletterande användningsvillkor för Förhandsversioner av Microsoft Azure.
Materialiserade vyer, när de definieras, hjälper dig att effektivt köra frågor mot en bastabell (eller container i Azure Cosmos DB) med filter som inte är primära nycklar. När användarna skriver till bastabellen skapas den materialiserade vyn automatiskt i bakgrunden. Den här vyn kan ha en annan primärnyckel för effektiva sökningar. Vyn innehåller också endast kolumner som uttryckligen projiceras från bastabellen. Den här vyn är en skrivskyddad tabell.
Du kan köra frågor mot ett kolumnarkiv utan att ange en partitionsnyckel med hjälp av sekundära index. Frågan är dock inte effektiv för kolumner med hög eller låg kardinalitet. Frågan kan söka igenom alla data efter en liten resultatuppsättning. Sådana frågor blir dyra eftersom de oavsiktligt körs som en fråga mellan partitioner.
Med en materialiserad vy kan du:
- Använd som uppslags- eller mappningstabell för att spara genomsökningar mellan partitioner som annars skulle vara dyra frågor.
- Ange ett SQL-baserat villkorsbaserat predikat för att endast fylla i vissa kolumner och data som uppfyller förhandsvillkoret.
- Skapa realtidsvyer som förenklar händelsebaserade scenarier som ofta lagras som separata samlingar med hjälp av utlösare för ändringsflöde.
Fördelar med materialiserade vyer
Materialiserade vyer har många fördelar, men är inte begränsade till:
- Du kan implementera avnormalisering på serversidan med materialiserade vyer. Med avnormalisering på serversidan kan du undvika flera oberoende tabeller och beräkningsmässigt komplex avnormalisering i klientprogram.
- Materialiserade vyer uppdaterar automatiskt vyer för att hålla dem konsekventa med bastabellen. Den här automatiska uppdateringen abstraherar ansvaret för dina klientprogram med skulle vanligtvis implementera anpassad logik för att utföra dubbla skrivningar till bastabellen och vyn.
- Materialiserade vyer optimerar läsprestanda genom att läsa från en enda vy.
- Du kan ange dataflöde för den materialiserade vyn oberoende av varandra.
- Du kan konfigurera ett materialiserat visningsbyggarlager för att mappa efter dina krav för att hydratisera en vy.
- Materialiserade vyer förbättrar skrivprestanda eftersom skrivåtgärder endast behöver skrivas till bastabellen.
- Dessutom baseras Azure Cosmos DB-implementeringen av materialiserade vyer på en pull-modell. Den här implementeringen påverkar inte skrivprestanda.
Kom igång med materialiserade vyer
Skapa ett nytt API för Cassandra-konton med hjälp av Azure CLI för att aktivera funktionen för materialiserade vyer, antingen med ett internt kommando eller en REST API-åtgärd.
Logga in på Azure-portalen.
Gå till ditt API för Cassandra-kontot.
I resursmenyn väljer du Inställningar.
I avsnittet Inställningar väljer du Materialiserad vy för Cassandra API (förhandsversion).
I den nya dialogrutan väljer du Aktivera för att aktivera den här funktionen för det här kontot.
Under huven
API:et för Cassandra använder ett materialiserat beräkningslager för visningsverktyget för att underhålla vyerna.
Du får flexibiliteten att konfigurera visningsverktygets beräkningsinstanser baserat på dina svarstider och fördröjningskrav för att återfukta vyerna. Från en teknisk synpunkt hjälper det här beräkningslagret till att hantera anslutningar mellan partitioner på ett effektivare sätt även när datastorleken är stor och antalet partitioner är högt.
Beräkningscontainrarna delas mellan alla materialiserade vyer i ett Azure Cosmos DB-konto. Varje etablerad beräkningscontainer skapar flera uppgifter som läser ändringsflödet från bastabellpartitioner och skriver data till den materialiserade målvyn[s]. Beräkningscontainern transformerar data enligt den materialiserade vydefinitionen för varje materialiserad vy i kontot.
Skapa en materialiserad vybyggare
Skapa en materialiserad vybyggare för att automatiskt transformera data och skriva till en materialiserad vy.
Logga in på Azure-portalen.
Gå till ditt API för Cassandra-kontot.
Välj Materialized Views Builder på resursmenyn.
På sidan Materialized Views Builder konfigurerar du SKU:n och antalet instanser för byggaren.
Kommentar
Det här resursmenyalternativet och sidan visas bara när funktionen Materialized Views är aktiverad för kontot.
Välj Spara.
Skapa en materialiserad vy
När ditt konto och Materialized View Builder har konfigurerats bör du kunna skapa materialiserade vyer med hjälp av CQLSH.
Kommentar
Om du inte redan har installerat det fristående CQLSH-verktyget kan du läsa installera CQLSH-verktyget. Du bör också uppdatera niska veze i verktyget.
Här följer några exempelkommandon för att skapa en materialiserad vy:
Skapa först ett nyckelområdesnamn
uprofile
.CREATE KEYSPACE IF NOT EXISTS uprofile WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 1 };
Skapa sedan en tabell med namnet
user
i nyckelområdet.CREATE TABLE IF NOT EXISTS uprofile.USER (user_id INT PRIMARY KEY, user_name text, user_bcity text);
Skapa nu en materialiserad vy med namnet
user_by_bcity
inom samma nyckelområde. Ange, med hjälp av en fråga, hur data projiceras i vyn från bastabellen.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);
Infoga rader i bastabellen.
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' );
Fråga den materialiserade vyn.
SELECT * FROM user_by_bcity;
Observera utdata från den materialiserade vyn.
user_bcity | user_id | user_name ------------+---------+----------- New York | 101 | johnjoe New York | 102 | james (2 rows)
Du kan också använda resursprovidern för att skapa eller uppdatera en materialiserad vy.
- Skapa eller uppdatera en vy i API för Cassandra
- Hämta en vy i API för Cassandra
- Visa en lista över vyer i API för Cassandra
- Ta bort en vy i API för Cassandra
- Uppdatera dataflödet för en vy i API:et för Cassandra
Aktuella begränsningar
Det finns några begränsningar med API:et för Cassandras förhandsgranskningsimplementering av materialiserade vyer:
- Materialiserade vyer kan inte skapas i en tabell som fanns innan stöd för materialiserade vyer aktiverades för kontot. Om du vill använda materialiserade vyer skapar du en ny tabell när funktionen har aktiverats.
- För den materialiserade vydefinitionens sats tillåts
WHERE
för närvarande endastIS NOT NULL
filter. - När en materialiserad vy har skapats mot en bastabell
ALTER TABLE ADD
tillåts inte åtgärder i bastabellens schema.ALTER TABLE APP
tillåts endast om ingen av de materialiserade vyerna har valts*
i definitionen. - Det finns gränser för partitionsnyckelns storlek (2 kB) och den totala längden på klustringsnyckelstorleken (1 kB). Om den här storleksgränsen överskrids hamnar det ansvariga meddelandet i kön för giftmeddelanden.
- Om en bastabell har användardefinierade typer (UDT) och den materialiserade vydefinitionen har antingen
SELECT * FROM
eller har UDT i en av de beräknade kolumnerna tillåts inte UDT-uppdateringar för kontot. - Materialiserade vyer kan bli inkonsekventa med bastabellen för några rader efter automatisk regional redundansväxling. Undvik den här inkonsekvensen genom att återskapa den materialiserade vyn efter redundansväxlingen.
- Det går inte att skapa materialiserade visningsbyggareinstanser med 32 kärnor . Om det behövs kan du skapa flera builder-instanser med ett mindre antal kärnor.
Utöver ovanstående begränsningar bör du överväga följande extra begränsningar:
- Tillgänglighetszoner
- Materialiserade vyer kan inte aktiveras för ett konto som har tillgänglighetszonaktiverade regioner.
- Att lägga till en ny region med en tillgänglighetszon stöds inte en gång
enableMaterializedViews
är inställt på true för kontot.
- Regelbunden säkerhetskopiering och återställning
- Materialiserade vyer återställs inte automatiskt med återställningsprocessen. Du måste återskapa de materialiserade vyerna när återställningsprocessen är klar. Sedan bör du konfigurera
enableMaterializedViews
på deras återställde konto innan du skapar de materialiserade vyerna och byggarna igen.
- Materialiserade vyer återställs inte automatiskt med återställningsprocessen. Du måste återskapa de materialiserade vyerna när återställningsprocessen är klar. Sedan bör du konfigurera
- Apache Cassandra
- Det är inte tillåtet att definiera konfliktlösningsprincipen för materialiserade vyer.
- Skrivåtgärder tillåts inte för materialiserade vyer.
- Frågor mellan dokument och användning av mängdfunktioner stöds inte i materialiserade vyer.
- Det går inte att ändra schemat för en materialiserad vy när den har skapats.
- Det går inte att ta bort bastabellen om minst en materialiserad vy har definierats på den. Alla vyer måste först tas bort och sedan kan bastabellen tas bort.
- Det är inte tillåtet att definiera materialiserade vyer på containrar med statiska kolumner.