Multitenancy voor vectorzoekopdrachten in Azure Cosmos DB
"OpenAI is afhankelijk van Cosmos DB om hun ChatGPT-service dynamisch te schalen – een van de snelst groeiende consumentenapps ooit – waardoor hoge betrouwbaarheid en weinig onderhoud mogelijk zijn." — Satya Nadella
Azure Cosmos DB onderscheidt zich als 's werelds eerste serverloze, serverloze operationele database met vectorzoekopdrachten, die ongeëvenaarde schaalbaarheid en prestaties biedt. Met behulp van Azure Cosmos DB kunnen gebruikers hun vectorzoekmogelijkheden verbeteren, waardoor hoge betrouwbaarheid en weinig onderhoud voor multitenant-toepassingen mogelijk zijn.
Met multitenancy kan één exemplaar van een database tegelijkertijd meerdere klanten of tenants bedienen. Deze aanpak deelt efficiënt infrastructuur en operationele overhead, wat resulteert in kostenbesparingen en vereenvoudigd beheer. Het is een cruciale ontwerpoverweging voor SaaS-toepassingen en enkele interne bedrijfsoplossingen.
Multitenancy introduceert complexiteit. Uw systeem moet efficiënt worden geschaald om hoge prestaties te behouden voor alle tenants, die mogelijk unieke workloads, vereisten en sla's (Service Level Agreements) hebben.
Stel je een fictief ai-ondersteund onderzoeksplatform voor, genaamd ResearchHub. ResearchHub biedt duizenden bedrijven en individuele onderzoekers, beheert verschillende gebruikersdatabases, gegevensschalen en SLA's. Het garanderen van lage querylatentie en hoge prestaties is essentieel voor het onderhouden van een uitstekende gebruikerservaring.
Azure Cosmos DB, met de mogelijkheid van de DiskANN Vector Index , vereenvoudigt het ontwerp van meerdere tenants, waardoor efficiënte gegevensopslag- en toegangsmechanismen worden geboden voor hoogwaardige toepassingen.
Multitenancy-modellen in Azure Cosmos DB
In Azure Cosmos DB raden we twee primaire benaderingen aan voor het beheren van meerdere tenants: partitiesleutel per tenant of account per tenant, elk met een eigen set voordelen en afwegingen.
1. Partitiesleutel per tenant
Voor een hogere dichtheid van tenants en lagere isolatie is het partitiesleutel-per-tenantmodel effectief. Aan elke tenant wordt een unieke partitiesleutel binnen een bepaalde container toegewezen, waardoor logische scheiding van gegevens mogelijk is. Deze strategie werkt het beste wanneer elke tenant ongeveer hetzelfde workloadvolume heeft. Als er sprake is van aanzienlijke scheefheid, moeten klanten overwegen om deze tenants in hun eigen account te isoleren. Als één tenant meer dan 20 GB aan gegevens bevat, moeten hiërarchische partitiesleutels (HPK) worden gebruikt. Voor vectorzoekopdrachten in het bijzonder kan de kwantizedFlat-index zeer goed presteren als vectorzoekquery's kunnen worden gericht op een bepaalde partitie of sets partities.
Voordelen:
- Kostenefficiëntie: het delen van één Cosmos DB-account voor meerdere tenants vermindert de overhead.
- Schaalbaarheid: kan een groot aantal tenants beheren, elk geïsoleerd binnen hun partitiesleutel.
- Vereenvoudigd beheer: minder Cosmos DB-accounts om te beheren.
- Hiërarchische partitiesleutels (HPK): optimaliseert de organisatie van gegevens en queryprestaties in apps met meerdere tenants met een groot aantal tenants.
Nadelen:
- Resourceconflict: gedeelde resources kunnen leiden tot conflicten tijdens piekgebruik.
- Beperkte isolatie: logische maar niet fysieke isolatie, die mogelijk niet voldoet aan strikte isolatievereisten.
- Minder flexibiliteit: minder flexibiliteit per tenant voor het inschakelen van functies op accountniveau, zoals geo-replicatie, herstel naar een bepaald tijdstip (PITR) en door de klant beheerde sleutels (CMK).
Hiërarchische partitionering: verbeterde gegevensorganisatie
Hiërarchische partitionering bouwt voort op het partitiesleutel-per-tenantmodel, waardoor diepere niveaus van gegevensorganisatie worden toegevoegd. Deze methode omvat het maken van meerdere niveaus van partitiesleutels voor gedetailleerder gegevensbeheer. Het laagste niveau van hiërarchische partitionering moet een hoge kardinaliteit hebben. Normaal gesproken is het raadzaam om een id/guid voor dit niveau te gebruiken om continue schaalbaarheid te garanderen die hoger is dan 20 GB per tenant.
Voordelen:
- Geoptimaliseerde query's: Nauwkeuriger gericht op subpartities op het bovenliggende partitieniveau vermindert de querylatentie.
- Verbeterde schaalbaarheid: vereenvoudigt diepere gegevenssegmentatie voor eenvoudiger schalen.
- Betere resourcetoewijzing: verdeelt workloads gelijkmatig, waardoor knelpunten voor hoge tenantaantallen worden geminimaliseerd.
Overwegingen:
- Als toepassingen zeer weinig tenants hebben en hiërarchische partitionering gebruiken, kan dit leiden tot knelpunten omdat alle documenten met dezelfde sleutel op het eerste niveau naar dezelfde fysieke partitie(s) schrijven.
Voorbeeld: ResearchHub kan gegevens binnen de partitie van elke tenant stratificeren door deze op verschillende niveaus te ordenen, zoals 'DepartmentId' en 'ResearcherId', om efficiënt beheer en query's te vergemakkelijken.
2. Account per tenant
Voor maximale isolatie verdient het account-per-tenantmodel de voorkeur. Elke tenant krijgt een toegewezen Cosmos DB-account en zorgt voor een volledige scheiding van resources.
Voordelen:
- Hoge isolatie: geen conflicten of interferentie vanwege toegewezen resources.
- Aangepaste SLA's: Resources en SLA's kunnen worden aangepast aan de behoeften van afzonderlijke tenants.
- Verbeterde beveiliging: fysieke gegevensisolatie zorgt voor robuuste beveiliging.
- Flexibiliteit: Tenants kunnen functies op accountniveau inschakelen, zoals geo-replicatie, herstel naar een bepaald tijdstip (PITR) en door de klant beheerde sleutels (CMK).
Nadelen:
- Verhoogd beheer: hogere complexiteit bij het beheren van meerdere Cosmos DB-accounts.
- Hogere kosten: Meer accounts betekenen hogere infrastructuurkosten.
Beveiligingsisolatie met door de klant beheerde sleutels
Azure Cosmos DB maakt door de klant beheerde sleutels mogelijk voor gegevensversleuteling, waardoor er een extra beveiligingslaag wordt toegevoegd voor omgevingen met meerdere tenants.
Stappen voor het implementeren:
- Azure Key Vault instellen: sla uw versleutelingssleutels veilig op.
- Koppeling naar Cosmos DB: koppel uw sleutelkluis aan uw Cosmos DB-account.
- Regelmatig sleutels draaien: verbeter de beveiliging door uw sleutels regelmatig bij te werken.
Door de klant beheerde sleutels te gebruiken, zorgt u ervoor dat de gegevens van elke tenant uniek worden versleuteld, wat een robuuste beveiliging en naleving biedt.
Andere isolatiemodellen
Isolatie van containers en databases
Naast de partitiesleutel-per-tenant- en account-per-tenantmodellen biedt Azure Cosmos DB andere isolatiemethoden, zoals containerisolatie en databaseisolatie. Deze benaderingen bieden verschillende mate van prestatie-isolatie, hoewel ze niet hetzelfde beveiligingsniveau bieden als het account-per-tenantmodel.
Isolatie van containers
In het containerisolatiemodel wordt aan elke tenant een afzonderlijke container binnen een gedeeld Cosmos DB-account toegewezen. Dit model maakt enige isolatie mogelijk in termen van prestaties en resourcetoewijzing.
Voordelen:
- Betere prestatieisolatie: containers kunnen specifieke prestatieresources worden toegewezen, waardoor de impact van de workload van de ene tenant op een andere wordt geminimaliseerd.
- Eenvoudiger beheer: het beheren van meerdere containers binnen één account is over het algemeen eenvoudiger dan het beheren van meerdere accounts.
- Kostenefficiëntie: Vergelijkbaar met het partitiesleutel-per-tenantmodel, vermindert deze methode de overhead van meerdere accounts.
Nadelen:
- Beperkte beveiligingsisolatie: in tegenstelling tot afzonderlijke accounts bieden containers binnen hetzelfde account geen fysieke gegevensisolatie. Dit model voldoet dus mogelijk niet aan strenge beveiligingsvereisten.
- Resourceconflicten: zware workloads in één container kunnen nog steeds van invloed zijn op andere als resourcelimieten worden overschreden.
Database-isolatie
Het databaseisolatiemodel wijst elke tenant een afzonderlijke database toe binnen een gedeeld Cosmos DB-account. Dit biedt verbeterde isolatie in termen van resourcetoewijzing en -beheer.
Voordelen:
- Verbeterde prestaties: Afzonderlijke databases verminderen het risico van resourceconflicten, waardoor betere isolatie van prestaties mogelijk is.
- Flexibele resourcetoewijzing: resources kunnen worden toegewezen en beheerd op databaseniveau, met op maat gemaakte prestatiemogelijkheden.
- Gecentraliseerd beheer: eenvoudiger te beheren in vergelijking met meerdere accounts, maar biedt meer isolatie dan scheiding op containerniveau.
Nadelen:
- Beperkte beveiligingsisolatie: net als bij containerisolatie biedt afzonderlijke databases binnen één account geen fysieke gegevensisolatie.
- Complexiteit: het beheren van meerdere databases kan complexer zijn dan het beheren van containers, met name naarmate het aantal tenants toeneemt.
Hoewel container- en databaseisolatiemodellen niet hetzelfde beveiligingsniveau bieden als het account-per-tenantmodel, kunnen ze nog steeds nuttig zijn voor het bereiken van prestatie-isolatie en flexibel resourcebeheer. Deze methoden zijn nuttig voor scenario's waarbij kostenefficiëntie en vereenvoudigd beheer prioriteiten zijn en strikte beveiligingsisolatie geen kritieke vereiste is.
Door zorgvuldig de specifieke behoeften en beperkingen van uw multitenant-toepassing te evalueren, kunt u het meest geschikte isolatiemodel in Azure Cosmos DB kiezen, de prestaties, beveiliging en kosten in balans brengen om de beste resultaten voor uw tenants te behalen.
Overwegingen bij de implementatie in de praktijk
Houd rekening met de volgende factoren bij het ontwerpen van een multitenant-systeem met Cosmos DB:
- Tenantworkload: evalueer de gegevensgrootte en -activiteit om het juiste isolatiemodel te selecteren.
- Prestatievereisten: uw architectuur afstemmen op gedefinieerde SLA's en metrische prestatiegegevens.
- Kostenbeheer: de infrastructuurkosten verdelen tegen de noodzaak van isolatie en prestaties.
- Schaalbaarheid: Groei plannen door schaalbare modellen te kiezen.
Praktische implementatie in Azure Cosmos DB
Partitiesleutel per tenant:
- Partitiesleutels toewijzen: unieke sleutels voor elke tenant zorgen voor logische scheiding.
- Gegevens opslaan: tenantgegevens zijn beperkt tot respectievelijke partitiesleutels.
- Query's optimaliseren: partitiesleutels gebruiken voor efficiënte, gerichte query's.
Hiërarchische partitionering:
- Sleutels op meerdere niveaus maken: gegevens binnen tenantpartities verder ordenen.
- Gerichte query's: verbeter de prestaties met nauwkeurige subpartitiedoelpunten.
- Resources beheren: werkbelastingen gelijkmatig verdelen om knelpunten te voorkomen.
Account-per-tenant:
- Afzonderlijke accounts opgeven: elke tenant krijgt een toegewezen Cosmos DB-account.
- Resources aanpassen: prestaties en SLA's aanpassen aan tenantvereisten.
- Zorg voor beveiliging: fysieke gegevensisolatie biedt robuuste beveiliging en naleving.
Aanbevolen procedures voor het gebruik van Azure Cosmos DB met vectorzoekopdrachten
De ondersteuning van Azure Cosmos DB voor diskANN-vectorindexmogelijkheden maakt het een uitstekende keuze voor toepassingen die snelle, hoogdimensionale zoekopdrachten vereisen, zoals ai-ondersteunde onderzoeksplatforms zoals ResearchHub. U kunt als volgt gebruikmaken van deze mogelijkheden:
Efficiënte opslag en ophalen:
- Vectorindexering: gebruik de DiskANN-vectorindex om hoogdimensionale vectoren efficiënt op te slaan en op te halen. Dit is handig voor toepassingen waarbij wordt gezocht naar overeenkomsten in grote gegevenssets, zoals afbeeldingsherkenning of overeenkomsten met documenten.
- Prestatieoptimalisatie: de vectorzoekmogelijkheden van DiskANN maken snelle, nauwkeurige zoekopdrachten mogelijk, waardoor lage latentie en hoge prestaties worden gegarandeerd, wat essentieel is voor het onderhouden van een goede gebruikerservaring.
Schalen tussen tenants:
- Partitiesleutel per tenant: gebruik partitiesleutels om tenantgegevens logisch te isoleren terwijl u profiteert van de schaalbare infrastructuur van Cosmos DB.
- Hiërarchisch partitioneren: hiërarchisch partitioneren implementeren om gegevens binnen de partitie van elke tenant verder te segmenteren, waardoor de queryprestaties en resourcedistributie worden verbeterd.
Beveiliging en naleving:
- Door de klant beheerde sleutels: implementeer door de klant beheerde sleutels voor data-at-rest, zodat de gegevens van elke tenant veilig worden geïsoleerd.
- Regelmatige sleutelrotatie: verbeter de beveiliging door regelmatig versleutelingssleutels te roteren die zijn opgeslagen in Azure Key Vault.
Praktijkvoorbeeld: ResearchHub implementeren
Partitiesleutel per tenant:
- Partitiesleutels toewijzen: aan elke organisatie (tenant) wordt een unieke partitiesleutel toegewezen.
- Gegevensopslag: alle gegevens van onderzoekers voor een tenant worden opgeslagen binnen de partitie, waardoor logische scheiding mogelijk is.
- Queryoptimalisatie: query's worden uitgevoerd met behulp van de partitiesleutel van de tenant, waardoor de prestaties worden verbeterd door gegevenstoegang te isoleren.
Hiërarchische partitionering:
- Partitiesleutels op meerdere niveaus: gegevens binnen de partitie van een tenant worden verder gesegmenteerd door 'DepartmentId' en 'ResearcherId' of andere relevante kenmerken.
- Gedetailleerde Gegevensbeheer: met deze hiërarchische benadering kan ResearchHub efficiënter gegevens beheren en opvragen, latentie verminderen en reactietijden verbeteren.
Account-per-tenant:
- Afzonderlijke Cosmos DB-accounts: clients met een hoog profiel of clients met gevoelige gegevens worden afzonderlijke Cosmos DB-accounts verstrekt.
- Aangepaste configuraties: resources en SLA's zijn afgestemd op de specifieke behoeften van elke tenant, waardoor optimale prestaties en beveiliging worden gegarandeerd.
- Verbeterde gegevensbeveiliging: fysieke scheiding van gegevens met door de klant beheerde versleutelingssleutels zorgt voor robuuste beveiligingsnaleving.
Conclusie
Multitenancy in Azure Cosmos DB, met name met de mogelijkheid van de DiskANN-vectorindex, biedt een krachtige oplossing voor het bouwen van schaalbare, krachtige AI-toepassingen. Of u nu partitiesleutels per tenant, hiërarchische partitionering of account-per-tenant-modellen kiest, u kunt kosten, beveiliging en prestaties effectief verdelen. Door deze modellen en best practices te gebruiken, kunt u ervoor zorgen dat uw multitenant-toepassing voldoet aan de diverse behoeften van uw klanten, wat een uitzonderlijke gebruikerservaring biedt.
Azure Cosmos DB biedt de hulpprogramma's die nodig zijn om een robuuste, veilige en schaalbare omgeving met meerdere tenants te bouwen. Met de kracht van DiskANN-vectorindexering kunt u snelle, hoogdimensionale zoekopdrachten leveren die uw AI-toepassingen stimuleren.
Volgende stappen
Gratis proefversie van 30 dagen zonder Azure-abonnement
Multitenancy en Azure Cosmos DB