Gerealiseerde weergaven in Azure Cosmos DB voor Apache Cassandra (preview)
VAN TOEPASSING OP: Cassandra
Belangrijk
Gerealiseerde weergaven in Azure Cosmos DB voor Cassandra zijn momenteel beschikbaar als preview-versie. U kunt deze functie inschakelen met behulp van Azure Portal. Deze preview van gerealiseerde weergaven wordt aangeboden zonder een service level agreement. Op dit moment worden gerealiseerde weergaven niet aanbevolen voor productieworkloads. Bepaalde functies van deze preview worden mogelijk niet ondersteund of hebben mogelijk beperkte mogelijkheden. Zie aanvullende gebruiksvoorwaarden voor Microsoft Azure Previews voor meer informatie.
Gerealiseerde weergaven, indien gedefinieerd, helpen een manier om efficiënt een query uit te voeren op een basistabel (of container in Azure Cosmos DB) met filters die geen primaire sleutels zijn. Wanneer gebruikers naar de basistabel schrijven, wordt de gerealiseerde weergave automatisch op de achtergrond gemaakt. Deze weergave kan een andere primaire sleutel hebben voor efficiënte zoekacties. De weergave bevat ook alleen kolommen die expliciet uit de basistabel worden geprojecteerd. Deze weergave is een alleen-lezen tabel.
U kunt een query uitvoeren op een kolomarchief zonder een partitiesleutel op te geven met behulp van secundaire indexen. De query is echter niet effectief voor kolommen met een hoge of lage kardinaliteit. De query kan alle gegevens scannen voor een kleine resultatenset. Dergelijke query's zijn uiteindelijk duur omdat ze per ongeluk worden uitgevoerd als een query voor meerdere partities.
Met een gerealiseerde weergave kunt u het volgende doen:
- Gebruik deze indeling als opzoek- of toewijzingstabel om scans tussen partities te behouden die anders dure query's zouden zijn.
- Geef een voorwaardelijk predicaat op basis van SQL op om alleen bepaalde kolommen en gegevens te vullen die voldoen aan de voorwaarde.
- Maak realtime weergaven die op gebeurtenissen gebaseerde scenario's vereenvoudigen die vaak als afzonderlijke verzamelingen worden opgeslagen met behulp van triggers voor wijzigingenfeeds.
Voordelen van gerealiseerde weergaven
Gerealiseerde weergaven hebben veel voordelen, waaronder, maar zijn niet beperkt tot:
- U kunt denormalisatie aan de serverzijde implementeren met behulp van gerealiseerde weergaven. Met de denormalisatie aan de serverzijde kunt u meerdere onafhankelijke tabellen voorkomen en rekenkundige complexe denormalisatie in clienttoepassingen voorkomen.
- Gerealiseerde weergaven worden weergaven automatisch bijgewerkt om ze consistent te houden met de basistabel. Met deze automatische update worden de verantwoordelijkheden van uw clienttoepassingen geabstraheerd, waarbij doorgaans aangepaste logica wordt geïmplementeerd om dubbele schrijfbewerkingen uit te voeren naar de basistabel en de weergave.
- Gerealiseerde weergaven optimaliseren de leesprestaties door te lezen vanuit één weergave.
- U kunt de doorvoer voor de gerealiseerde weergave onafhankelijk opgeven.
- U kunt een gerealiseerde opbouwlaag voor weergaven configureren om toe te wijzen aan uw vereisten om een weergave te hydrateren.
- Gerealiseerde weergaven verbeteren de schrijfprestaties omdat schrijfbewerkingen alleen naar de basistabel hoeven te worden geschreven.
- Daarnaast is de Azure Cosmos DB-implementatie van gerealiseerde weergaven gebaseerd op een pull-model. Deze implementatie heeft geen invloed op schrijfprestaties.
Aan de slag met gerealiseerde weergaven
Maak een nieuwe API voor Cassandra-accounts met behulp van de Azure CLI om de gerealiseerde weergavefunctie in te schakelen met een systeemeigen opdracht of een REST API-bewerking.
Meld u aan bij het Azure-portaal.
Navigeer naar uw API voor Cassandra-account.
Selecteer Instellingen in het resourcemenu.
Selecteer in de sectie Instellingen de gerealiseerde weergave voor cassandra-API (preview).
Selecteer In het nieuwe dialoogvenster Inschakelen om deze functie in te schakelen voor dit account.
Onder de motorkap
De API voor Cassandra maakt gebruik van een gerealiseerde berekeningslaag voor de opbouwfunctie voor weergaven om de weergaven te onderhouden.
U krijgt de flexibiliteit om de rekeninstanties van de weergavebouwer te configureren op basis van uw latentie- en vertragingsvereisten om de weergaven te hydrateren. Vanuit een technisch oogpunt helpt deze rekenlaag verbindingen tussen partities op een efficiëntere manier te beheren, zelfs wanneer de gegevensgrootte groot is en het aantal partities hoog is.
De rekencontainers worden gedeeld tussen alle gerealiseerde weergaven binnen een Azure Cosmos DB-account. Elke ingerichte rekencontainer spawt uit meerdere taken die de wijzigingenfeed lezen van basistabelpartities en schrijft gegevens naar de gerealiseerde doelweergave[s]. De rekencontainer transformeert de gegevens per gerealiseerde weergavedefinitie voor elke gerealiseerde weergave in het account.
Een gerealiseerde opbouwfunctie voor weergaven maken
Maak een gerealiseerde opbouwfunctie voor weergaven om gegevens automatisch te transformeren en naar een gerealiseerde weergave te schrijven.
Meld u aan bij het Azure-portaal.
Navigeer naar uw API voor Cassandra-account.
Selecteer Materialized Views Builder in het resourcemenu.
Configureer op de pagina Materialized Views Builder de SKU en het aantal exemplaren voor de opbouwfunctie.
Notitie
Deze optie voor het resourcemenu en de pagina worden alleen weergegeven wanneer de functie Gerealiseerde weergaven is ingeschakeld voor het account.
Selecteer Opslaan.
Een gerealiseerde weergave maken
Zodra uw account en gerealiseerde opbouwfunctie voor weergaven zijn ingesteld, moet u gerealiseerde weergaven kunnen maken met behulp van CQLSH.
Notitie
Als u het zelfstandige CQLSH-hulpprogramma nog niet hebt geïnstalleerd, raadpleegt u het hulpprogramma CQLSH installeren. U moet ook uw verbindingsreeks bijwerken in het hulpprogramma.
Hier volgen enkele voorbeeldopdrachten voor het maken van een gerealiseerde weergave:
Maak eerst een keyspacenaam
uprofile
.CREATE KEYSPACE IF NOT EXISTS uprofile WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 1 };
Maak vervolgens een tabel met de naam
user
in de keyspace.CREATE TABLE IF NOT EXISTS uprofile.USER (user_id INT PRIMARY KEY, user_name text, user_bcity text);
Maak nu een gerealiseerde weergave met de naam
user_by_bcity
binnen dezelfde keyspace. Geef met behulp van een query op hoe gegevens worden geprojecteerd in de weergave vanuit de basistabel.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);
Rijen invoegen in de basistabel.
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' );
Voer een query uit op de gerealiseerde weergave.
SELECT * FROM user_by_bcity;
Bekijk de uitvoer van de gerealiseerde weergave.
user_bcity | user_id | user_name ------------+---------+----------- New York | 101 | johnjoe New York | 102 | james (2 rows)
U kunt ook de resourceprovider gebruiken om een gerealiseerde weergave te maken of bij te werken.
- Een weergave maken of bijwerken in API voor Cassandra
- Een weergave ophalen in API voor Cassandra
- Lijstweergaven in API voor Cassandra
- Een weergave verwijderen in API voor Cassandra
- De doorvoer van een weergave in API voor Cassandra bijwerken
Huidige beperkingen
Er zijn enkele beperkingen met de PREVIEW-implementatie van de API voor de preview-implementatie van gerealiseerde weergaven van Cassandra:
- Gerealiseerde weergaven kunnen niet worden gemaakt in een tabel die bestond voordat ondersteuning voor gerealiseerde weergaven is ingeschakeld voor het account. Als u gerealiseerde weergaven wilt gebruiken, maakt u een nieuwe tabel nadat de functie is ingeschakeld.
- Voor de component van de gerealiseerde weergavedefinitie
WHERE
zijn momenteel alleenIS NOT NULL
filters toegestaan. - Nadat een gerealiseerde weergave is gemaakt op basis van een basistabel,
ALTER TABLE ADD
zijn bewerkingen niet toegestaan in het schema van de basistabel.ALTER TABLE APP
is alleen toegestaan als geen van de gerealiseerde weergaven zijn geselecteerd*
in hun definitie. - Er gelden limieten voor de grootte van de partitiesleutel (2 kB) en de totale lengte van de clustersleutelgrootte (1 kB). Als deze maximale grootte wordt overschreden, eindigt het verantwoordelijke bericht in de wachtrij voor gifberichten.
- Als een basistabel door de gebruiker gedefinieerde typen (UDT's) en de gerealiseerde weergavedefinitie de UDT in een van de geprojecteerde kolommen heeft
SELECT * FROM
, zijn UDT-updates niet toegestaan voor het account. - Gerealiseerde weergaven kunnen een paar rijen na automatische regionale failover inconsistent worden met de basistabel. U kunt deze inconsistentie voorkomen door de gerealiseerde weergave na de failover opnieuw te bouwen.
- Het maken van gerealiseerde instanties van de opbouwfunctie voor weergaven met 32 kernen wordt niet ondersteund. Indien nodig kunt u meerdere builder-exemplaren maken met een kleiner aantal kernen.
Houd naast de bovenstaande beperkingen rekening met de volgende extra beperkingen:
- Beschikbaarheidszones
- Gerealiseerde weergaven kunnen niet worden ingeschakeld voor een account waarvoor regio's in de beschikbaarheidszone zijn ingeschakeld.
- Het toevoegen van een nieuwe regio met een beschikbaarheidszone wordt niet ondersteund zodra
enableMaterializedViews
deze is ingesteld op waar voor het account.
- Periodieke back-up en herstel
- Gerealiseerde weergaven worden niet automatisch hersteld met het herstelproces. U moet de gerealiseerde weergaven opnieuw maken nadat het herstelproces is voltooid. Vervolgens moet u het herstelde account configureren
enableMaterializedViews
voordat u de gerealiseerde weergaven en opbouwfuncties opnieuw maakt.
- Gerealiseerde weergaven worden niet automatisch hersteld met het herstelproces. U moet de gerealiseerde weergaven opnieuw maken nadat het herstelproces is voltooid. Vervolgens moet u het herstelde account configureren
- Apache Cassandra
- Het definiëren van conflictoplossingsbeleid voor gerealiseerde weergaven is niet toegestaan.
- Schrijfbewerkingen zijn niet toegestaan voor gerealiseerde weergaven.
- Query's voor meerdere documenten en het gebruik van statistische functies worden niet ondersteund in gerealiseerde weergaven.
- Het schema van een gerealiseerde weergave kan niet worden gewijzigd nadat deze is gemaakt.
- Het verwijderen van de basistabel is niet toegestaan als er ten minste één gerealiseerde weergave is gedefinieerd. Alle weergaven moeten eerst worden verwijderd en vervolgens kan de basistabel worden verwijderd.
- Het definiëren van gerealiseerde weergaven op containers met statische kolommen is niet toegestaan.