Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Viktigt!
Globala sekundära Index för Azure Cosmos DB för NoSQL finns för närvarande i förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal. För närvarande rekommenderar vi inte att du använder globala sekundära index för produktionsarbetsbelastningar. Vissa funktioner i den här förhandsversionen kanske inte stöds eller har begränsade funktioner. Mer information finns i de kompletterande användningsvillkoren för Förhandsversioner av Microsoft Azure.
Globala sekundära index förbättrar frågeeffektiviteten genom att lagra data med en annan partitionsnyckel. Globala sekundära index är skrivskyddade containrar som automatiskt synkroniseras med källcontainern, vilket upprätthåller en beständig kopia av dess data. Varje indexcontainer har sina egna inställningar, skilda från källcontainern, inklusive partitionsnyckel, indexeringsprincip, RU-gräns (Request Unit) och datamodell, som kan anpassas genom att välja specifika objektegenskaper.
Användningsfall
Program behöver ofta köra frågor mot data med andra egenskaper än partitionsnyckeln. Dessa frågor måste köras över alla partitioner, även om vissa partitioner inte innehåller data som matchar filtervillkoren. Därför förbrukar frågor som inte innehåller partitionsnyckeln fler RU:er och har högre svarstid.
Med ett globalt sekundärt index kan du:
- Lagra data med en annan partitionsnyckel för att konvertera frågor mellan partitioner i källcontainern till enskilda partitionssökningar.
- Lägg till globala sekundära index i befintliga containrar för att hålla frågorna effektiva när programmet behöver ändras.
- Isolera en delmängd av din arbetsbelastning, till exempel skapa vektor- eller fulltextsökningsindex i det globala sekundära indexet utan att påverka transaktionsåtgärder i källcontainern.
Fördelar med globalt sekundärt index
Globala sekundära Index i Azure Cosmos DB har följande fördelar:
- Automatisk synkronisering: Indexcontainrar synkroniseras automatiskt med källcontainern, vilket eliminerar behovet av anpassad logik i klientprogram.
- Slutlig konsekvens: Indexcontainrar är så småningom konsekventa med källcontainern utan att påverka skrivfördröjningen i källan.
- Prestandaisolering: Indexcontainrar har egna lagrings- och RU-gränser, vilket ger prestandaisolering.
- Optimerad läsprestanda: Finjusterad datamodell, partitionsnyckel och indexeringsprincip för optimerad läsprestanda med stöd för frågor med hjälp av den omfattande NoSQL-frågesyntaxen.
- Förbättrad skrivprestanda: Klienter behöver bara skriva till källcontainern, vilket förbättrar skrivprestanda jämfört med en strategi för skrivning med flera containrar.
- Read-Only Containers: Skrivningar till indexcontainern är asynkrona och hanteras automatiskt. Klientprogram behöver inte skriva direkt till indexcontainern.
- Flera index: Du kan skapa flera indexcontainrar för samma källcontainer utan extra kostnad.
Definiera globala sekundära index
Att skapa ett globalt sekundärt index liknar att skapa en ny container, med tillagda egenskaper för att ange källcontainern och en fråga som definierar den globala sekundära indexdatamodellen. Många anpassningar för containrar gäller även för global sekundär indexcontainer, inklusive anpassade indexerings-, vektor- och fulltextsökningsprinciper. Globala sekundära indexcontainrar måste använda autoskalbart dataflöde, vilket hjälper dem att svara på trafiktoppar utan att strypas eller hamna på efterkälken från uppdateringar i källcontainern.
Varje objekt i det globala sekundära indexet har en en-till-en-mappning till ett objekt i källcontainern. För att upprätthålla den här mappningen fylls fältet id
i globala sekundära indexobjekt automatiskt. Värdet för id
från källcontainern representeras som _id
i indexcontainern.
Frågan som används för att definiera ett globalt sekundärt index måste följa följande begränsningar:
- SELECT-instruktionen tillåter projektion av endast en egenskapsnivå i JSON-trädet, eller så kan den vara SELECT * för att inkludera alla egenskaper.
- Att använda alias för egenskapsnamn med AS stöds inte.
- Frågor kan inte innehålla en WHERE-sats eller andra satser som JOIN, DISTINCT, GROUP BY, ORDER BY, TOP, OFFSET LIMIT och EXISTS.
- Systemfunktioner och användardefinierade funktioner (UDF) stöds inte.
En giltig fråga är till exempel: SELECT c.userName, c.emailAddress FROM c
, som väljer userName
egenskaperna och emailAddress
från källcontainern c
. Den här frågan definierar datamodellen för det globala sekundära indexet och avgör vilka egenskaper som ingår i indexcontainern för varje objekt. Källcontainern och definitionsfrågan kan inte ändras när den har skapats.
Lär dig hur du skapar globala sekundära index.
Tips/Råd
Om du vill ta bort en källcontainer måste du först ta bort alla globala sekundära index som skapas för den.
Synkronisera globala sekundära index
Globala sekundära indexcontainrar hålls automatiskt synkroniserade med ändringar i data i källcontainrar med hjälp av ändringsflöde. När ett globalt sekundärt index definieras för en källcontainer skapas och hanteras ett ändringsflödesjobb åt dig. Ändringar återspeglas asynkront i data i indexcontainrar och påverkar inte skrivningar till källcontainern. Indexcontainrar blir så småningom konsekventa med källcontainern, oavsett vilken konsekvensnivå som har angetts för kontot.
Ändringsflödesläsningar förbrukar RU:er från källcontainern och skrivningar till det globala sekundära indexet använder RU:er från indexcontainern. RUs som tilldelas på båda containrarna avgör hur snabbt indexen fylls i och synkroniseras.
Globala sekundära index i konton som omfattar flera regioner
För Azure Cosmos DB-konton med en enda region sker ändringsflödesläsningar från källcontainern och skrivningar till den globala sekundära indexcontainern i den regionen. I ett konto i flera regioner med en enda skrivregion sker ändringsflödesläsningar och globala sekundära indexskrivningar i skrivregionen. I ett konto med flera skrivregioner sker ändringsflödesläsningar och globala sekundära indexskrivningar i någon av skrivregionerna. Om det sker en failover för ditt konto, sker läsningar av ändringsfeed och skrivningar till globala sekundära index i den nya skrivregionen.
Söka i globala sekundära index
Att köra frågor mot data från globala sekundära index liknar att köra frågor mot data från andra containrar. Du kan använda den fullständiga, omfattande Azure Cosmos DB for NoSQL-frågesyntaxen för att utföra frågor på globala sekundära indexcontainrar. Detta inkluderar vektor-, fulltextsöknings- och hybridsökningsfrågor. Precis som andra containrar bör du justera indexeringsprincipen på globala sekundära indexcontainrar baserat på dina frågemönster.
Eftersom globala sekundära index kan ha en annan partitionsnyckel än källcontainrar är det effektivare att köra frågor mellan partitioner på globala sekundära index, vilket sparar både svarstid och RU:er.
Övervakning
Du kan övervaka fördröjningen vid byggande av globala sekundära index genom måttet "Global Secondary Index Catchup Gap In Minutes" i Metrics i Azure-portalen. Mer information om dessa mått finns i Mått som stöds för Microsoft.DocumentDB/DatabaseAccounts.
Felsökning av vanliga problem
Jag vill förstå fördröjningen mellan min källcontainer och indexcontainrar
Måttet Global Secondary Index Catchup Gap In Minutes visar den maximala skillnaden i minuter mellan data i källcontainrar och globala sekundära indexcontainrar. Om du vill visa fördröjningen för en enskild indexcontainer väljer du Tillämpa delning och sedan Dela efter och väljer GlobalSecondaryIndexName.
Jag vill veta om mina globala sekundära indexcontainrar har tillräckligt med RU:er
RU:er som etablerats på käll- och indexbehållare påverkar hastigheten av förändringar som sprids till den globala sekundära indexbehållaren. Kontrollera måttet Normaliserad RU-förbrukning , om den är för hög kan containern ha nytta av att öka maximalt antal RU:er.
Begränsningar
Det finns några begränsningar med den globala sekundära indexfunktionen i Azure Cosmos DB for NoSQL API.
- Du måste aktivera kontinuerliga säkerhetskopieringar på ditt konto innan globala sekundära index kan aktiveras.
- Globala sekundära indexcontainrar återställs inte automatiskt under kontoåterställningsprocessen. Du måste aktivera funktionen för globalt sekundärt index på det återställda kontot när återställningsprocessen är klar. Sedan kan du skapa de globala sekundära indexen igen.