Flera klientorganisationer för vektorsökning i Azure Cosmos DB
"OpenAI förlitar sig på Cosmos DB för att dynamiskt skala sin ChatGPT-tjänst – en av de snabbast växande konsumentapparna någonsin – vilket möjliggör hög tillförlitlighet och lågt underhåll." – Satya Nadella
Azure Cosmos DB utmärker sig som världens första fullständiga serverlösa driftdatabas med vektorsökning, vilket ger oöverträffad skalbarhet och prestanda. Med hjälp av Azure Cosmos DB kan användarna förbättra sina vektorsökningsfunktioner, vilket ger hög tillförlitlighet och lågt underhåll för program med flera klienter.
Multitenancy gör det möjligt för en enskild instans av en databas att betjäna flera kunder, eller klienter, samtidigt. Den här metoden delar effektivt infrastruktur och driftkostnader, vilket resulterar i kostnadsbesparingar och förenklad hantering. Det är en viktig designövervägande för SaaS-program och vissa interna företagslösningar.
Multitenancy introducerar komplexitet. Systemet måste skalas effektivt för att upprätthålla höga prestanda för alla klienter, som kan ha unika arbetsbelastningar, krav och serviceavtal (SLA).
Föreställ dig en fiktiv AI-assisterad forskningsplattform med namnet ResearchHub. ResearchHub betjänar tusentals företag och enskilda forskare och hanterar olika användarbaser, dataskalor och serviceavtal. Att säkerställa låg frågesvarstid och höga prestanda är avgörande för att upprätthålla en utmärkt användarupplevelse.
Azure Cosmos DB, med dess diskANN-vektorindexfunktion , förenklar designen för flera klienter, vilket ger effektiv datalagring och åtkomstmekanismer för högpresterande program.
Modeller för flera innehavare i Azure Cosmos DB
I Azure Cosmos DB rekommenderar vi två primära metoder för att hantera flera innehavare: partitionsnyckel per klientorganisation eller konto per klientorganisation, var och en med sin egen uppsättning fördelar och kompromisser.
1. Partitionsnyckel per klientorganisation
För en högre densitet för klienter och lägre isolering är partitionsnyckeln per klientmodell effektiv. Varje klientorganisation tilldelas en unik partitionsnyckel i en viss container, vilket möjliggör logisk separation av data. Den här strategin fungerar bäst när varje klientorganisation har ungefär samma arbetsbelastningsvolym. Om det finns betydande skevhet bör kunderna överväga att isolera dessa klienter i sitt eget konto. Om en enskild klientorganisation dessutom har mer än 20 GB data bör hierarkiska partitionsnycklar (HPK) användas. Särskilt för vektorsökning kan quantizedFlat-index fungera mycket bra om vektorsökningsfrågor kan fokuseras på en viss partition eller uppsättningar partitioner.
Fördelar:
- Kostnadseffektivitet: Om du delar ett enda Cosmos DB-konto mellan flera klienter minskar kostnaderna.
- Skalbarhet: Kan hantera ett stort antal klienter, var och en isolerad inom sin partitionsnyckel.
- Förenklad hantering: Färre Cosmos DB-konton att hantera.
- Hierarkiska partitionsnycklar (HPK): Optimerar dataorganisationen och frågeprestanda i appar med flera klienter med ett stort antal klienter.
Nackdelar:
- Resurskonkurration: Delade resurser kan leda till konkurrens under hög användning.
- Begränsad isolering: Logisk men inte fysisk isolering, som kanske inte uppfyller strikta isoleringskrav.
- Mindre flexibilitet: Minskad flexibilitet per klientorganisation för att aktivera funktioner på kontonivå som geo-replikering, återställning till tidpunkt (PITR) och kundhanterade nycklar (CMK).
Hierarkisk partitionering: förbättrad dataorganisation
Hierarkisk partitionering bygger på partitionsnyckeln per klientorganisation, vilket lägger till djupare nivåer av dataorganisation. Den här metoden omfattar att skapa flera nivåer av partitionsnycklar för mer detaljerad datahantering. Den lägsta nivån av hierarkisk partitionering bör ha hög kardinalitet. Normalt rekommenderar vi att du använder ett ID/guid för den här nivån för att säkerställa kontinuerlig skalbarhet utöver 20 GB per klientorganisation.
Fördelar:
- Optimerade frågor: Mer exakt inriktning på underpartitioner på den överordnade partitionsnivån minskar frågefördröjningen.
- Förbättrad skalbarhet: Underlättar djupare datasegmentering för enklare skalning.
- Bättre resursallokering: Distribuerar arbetsbelastningar jämnt, vilket minimerar flaskhalsar för höga klientantal.
Överväganden:
- Om program har mycket få klienter och använder hierarkisk partitionering kan detta leda till flaskhalsar eftersom alla dokument med samma nyckel på första nivån skrivs till samma fysiska partitioner.
Exempel: ResearchHub kan stratifiera data i varje klients partition genom att organisera dem på olika nivåer, till exempel "DepartmentId" och "ResearcherId", vilket underlättar effektiv hantering och frågor.
2. Konto per klientorganisation
För maximal isolering är konto-per-klient-modellen att föredra. Varje klientorganisation hämtar ett dedikerat Cosmos DB-konto, vilket säkerställer fullständig uppdelning av resurser.
Fördelar:
- Hög isolering: Ingen konkurrens eller interferens på grund av dedikerade resurser.
- Anpassade serviceavtal: Resurser och serviceavtal kan skräddarsys efter enskilda klientbehov.
- Förbättrad säkerhet: Fysisk dataisolering garanterar robust säkerhet.
- Flexibilitet: Klienter kan aktivera funktioner på kontonivå som geo-replikering, återställning till tidpunkt (PITR) och kundhanterade nycklar (CMK) efter behov.
Nackdelar:
- Ökad hantering: Högre komplexitet vid hantering av flera Cosmos DB-konton.
- Högre kostnader: Fler konton innebär högre infrastrukturkostnader.
Säkerhetsisolering med kundhanterade nycklar
Azure Cosmos DB möjliggör kundhanterade nycklar för datakryptering och lägger till ett extra säkerhetslager för miljöer med flera klientorganisationer.
Steg för att implementera:
- Konfigurera Azure Key Vault: Lagra krypteringsnycklarna på ett säkert sätt.
- Länk till Cosmos DB: Associera ditt Nyckelvalv med ditt Cosmos DB-konto.
- Rotera nycklar regelbundet: Förbättra säkerheten genom att rutinmässigt uppdatera dina nycklar.
Genom att använda kundhanterade nycklar ser du till att varje klientorganisations data krypteras unikt, vilket ger robust säkerhet och efterlevnad.
Andra isoleringsmodeller
Container- och databasisolering
Utöver modellerna partitionsnyckel per klientorganisation och konto per klientorganisation tillhandahåller Azure Cosmos DB andra isoleringsmetoder som containerisolering och databasisolering. Dessa metoder erbjuder olika grader av prestandaisolering, även om de inte ger samma nivå av säkerhetsisolering som konto-per-klient-modellen.
Containerisolering
I containerisoleringsmodellen tilldelas varje klientorganisation en separat container i ett delat Cosmos DB-konto. Den här modellen möjliggör viss isolering när det gäller prestanda och resursallokering.
Fördelar:
- Bättre prestandaisolering: Containrar kan tilldelas specifika prestandaresurser, vilket minimerar effekten av en klients arbetsbelastning på en annan.
- Enklare hantering: Det är vanligtvis enklare att hantera flera containrar i ett enda konto än att hantera flera konton.
- Kostnadseffektivitet: På samma sätt som partitionsnyckeln per klientorganisation minskar den här metoden kostnaderna för flera konton.
Nackdelar:
- Begränsad säkerhetsisolering: Till skillnad från separata konton tillhandahåller containrar inom samma konto inte fysisk dataisolering. Den här modellen kanske inte uppfyller stränga säkerhetskrav.
- Resurskonkurration: Tunga arbetsbelastningar i en container kan fortfarande påverka andra om resursgränserna överskrids.
Databasisolering
Databasisoleringsmodellen tilldelar varje klient en separat databas i ett delat Cosmos DB-konto. Detta ger förbättrad isolering när det gäller resursallokering och hantering.
Fördelar:
- Förbättrad prestanda: Separata databaser minskar risken för resurskonkurrering, vilket ger bättre prestandaisolering.
- Flexibel resursallokering: Resurser kan allokeras och hanteras på databasnivå, vilket ger skräddarsydda prestandafunktioner.
- Centraliserad hantering: Enklare att hantera jämfört med flera konton, men erbjuder ändå mer isolering än separation på containernivå.
Nackdelar:
- Begränsad säkerhetsisolering: På samma sätt som med containerisolering ger inte separat databas i ett enda konto fysisk dataisolering.
- Komplexitet: Det kan vara mer komplext att hantera flera databaser än att hantera containrar, särskilt när antalet klienter växer.
Även om modeller för container- och databasisolering inte erbjuder samma nivå av säkerhetsisolering som konto-per-klient-modellen, kan de fortfarande vara användbara för att uppnå prestandaisolering och flexibel resurshantering. Dessa metoder är bra för scenarier där kostnadseffektivitet och förenklad hantering är prioriteringar och strikt säkerhetsisolering inte är ett kritiskt krav.
Genom att noggrant utvärdera de specifika behoven och begränsningarna i ditt program för flera klienter kan du välja den lämpligaste isoleringsmodellen i Azure Cosmos DB, balansera prestanda, säkerhet och kostnadsöverväganden för att uppnå bästa resultat för dina klienter.
Överväganden för verklig implementering
När du utformar ett system med flera klientorganisationer med Cosmos DB bör du tänka på följande faktorer:
- Klientarbetsbelastning: Utvärdera datastorlek och aktivitet för att välja lämplig isoleringsmodell.
- Prestandakrav: Justera din arkitektur med definierade serviceavtal och prestandamått.
- Cost Management: Balansera infrastrukturkostnader mot behovet av isolering och prestanda.
- Skalbarhet: Planera för tillväxt genom att välja skalbara modeller.
Praktisk implementering i Azure Cosmos DB
Partitionsnyckel per klientorganisation:
- Tilldela partitionsnycklar: Unika nycklar för varje klientorganisation säkerställer logisk separation.
- Lagra data: Klientdata är begränsade till respektive partitionsnycklar.
- Optimera frågor: Använd partitionsnycklar för effektiva, riktade frågor.
Hierarkisk partitionering:
- Skapa nycklar på flera nivåer: Organisera ytterligare data i klientpartitioner.
- Riktade frågor: Förbättra prestanda med exakt mål för underpartitioner.
- Hantera resurser: Fördela arbetsbelastningar jämnt för att förhindra flaskhalsar.
Konto per klientorganisation:
- Ange separata konton: Varje klientorganisation hämtar ett dedikerat Cosmos DB-konto.
- Anpassa resurser: Anpassa prestanda och serviceavtal efter klientorganisationens krav.
- Se till säkerhet: Fysisk dataisolering ger robust säkerhet och efterlevnad.
Metodtips för att använda Azure Cosmos DB med vektorsökning
Azure Cosmos DB:s stöd för diskANN-vektorindexfunktioner gör det till ett utmärkt val för program som kräver snabba, högdimensionella sökningar, till exempel AI-assisterade forskningsplattformar som ResearchHub. Så här kan du utnyttja dessa funktioner:
Effektiv lagring och hämtning:
- Vektorindexering: Använd DiskANN-vektorindexet för att effektivt lagra och hämta högdimensionella vektorer. Detta är användbart för program som omfattar likhetssökningar i stora datamängder, till exempel bildigenkänning eller dokumentlikhet.
- Prestandaoptimering: DiskANN:s vektorsökningsfunktioner möjliggör snabba, korrekta sökningar, vilket garanterar låg svarstid och höga prestanda, vilket är viktigt för att upprätthålla en bra användarupplevelse.
Skalning mellan klienter:
- Partitionsnyckel per klientorganisation: Använd partitionsnycklar för att logiskt isolera klientdata samtidigt som du drar nytta av Cosmos DB:s skalbara infrastruktur.
- Hierarkisk partitionering: Implementera hierarkisk partitionering för att ytterligare segmentera data i varje klientorganisations partition, vilket förbättrar frågeprestanda och resursdistribution.
Säkerhet och efterlevnad:
- Kundhanterade nycklar: Implementera kundhanterade nycklar för datakryptering i vila, vilket säkerställer att varje klientorganisations data är säkert isolerade.
- Vanlig nyckelrotation: Förbättra säkerheten genom att regelbundet rotera krypteringsnycklar som lagras i Azure Key Vault.
Verkligt exempel: implementera ResearchHub
Partitionsnyckel per klientorganisation:
- Tilldela partitionsnycklar: Varje organisation (klientorganisation) tilldelas en unik partitionsnyckel.
- Datalagring: Alla forskares data för en klient lagras i partitionen, vilket säkerställer logisk separation.
- Frågeoptimering: Frågor körs med klientorganisationens partitionsnyckel, vilket förbättrar prestandan genom att isolera dataåtkomst.
Hierarkisk partitionering:
- Partitionsnycklar på flera nivåer: Data i en klients partition segmenteras ytterligare av "DepartmentId" och "ResearcherId" eller andra relevanta attribut.
- Detaljerad Datahantering: Med den här hierarkiska metoden kan ResearchHub hantera och köra frågor mot data effektivare, minska svarstiden och förbättra svarstiderna.
Konto per klientorganisation:
- Separata Cosmos DB-konton: Högprofilklienter eller klienter med känsliga data tillhandahålls enskilda Cosmos DB-konton.
- Anpassade konfigurationer: Resurser och serviceavtal skräddarsys för att uppfylla de specifika behoven för varje klientorganisation, vilket säkerställer optimal prestanda och säkerhet.
- Förbättrad datasäkerhet: Fysisk uppdelning av data med kundhanterade krypteringsnycklar garanterar robust säkerhetsefterlevnad.
Slutsats
Flera innehavare i Azure Cosmos DB, särskilt med dess diskANN-vektorindexfunktion, erbjuder en kraftfull lösning för att skapa skalbara AI-program med höga prestanda. Oavsett om du väljer modeller för partitionsnyckel per klientorganisation, hierarkisk partitionering eller konto per klientorganisation kan du effektivt balansera kostnader, säkerhet och prestanda. Genom att använda dessa modeller och metodtips kan du se till att ditt program med flera klientorganisationer uppfyller kundernas olika behov och ger en exceptionell användarupplevelse.
Azure Cosmos DB innehåller de verktyg som krävs för att skapa en robust, säker och skalbar miljö med flera klientorganisationer. Med kraften i DiskANN-vektorindexering kan du leverera snabba, högdimensionella sökningar som driver dina AI-program.
Vektordatabaslösningar
Azure PostgreSQL Server pgvector-tillägg
Relaterat innehåll
- 30 dagars kostnadsfri utvärderingsversion utan Azure-prenumeration
- Flera klientorganisationer och Azure Cosmos DB