Víceklientská architektura pro vektorové vyhledávání ve službě Azure Cosmos DB
OpenAI spoléhá na službu Cosmos DB, která dynamicky škáluje svou službu ChatGPT – jednu z nejrychleji rostoucích spotřebitelských aplikací – která umožňuje vysokou spolehlivost a nízkou údržbu." – Satya Nadella
Azure Cosmos DB vynikne jako první plnohodnotná provozní databáze bez serveru s vektorovým vyhledáváním, která nabízí jedinečnou škálovatelnost a výkon. Pomocí služby Azure Cosmos DB můžou uživatelé vylepšit možnosti vektorového vyhledávání a zajistit vysokou spolehlivost a nízkou údržbu pro víceklientských aplikací.
Víceklientská architektura umožňuje jedné instanci databáze obsluhovat více zákazníků nebo tenantů současně. Tento přístup efektivně sdílí infrastrukturu a provozní režii, což vede k úsporám nákladů a zjednodušené správě. Je to zásadní aspekty návrhu pro aplikace SaaS a některá interní podniková řešení.
Víceklientská architektura představuje složitost. Váš systém se musí efektivně škálovat, aby se zachoval vysoký výkon napříč všemi tenanty, kteří můžou mít jedinečné úlohy, požadavky a smlouvy o úrovni služeb (SLA).
Představte si fiktivní výzkumnou platformu s asistencí umělé inteligence s názvem ResearchHub. ResearchHub spravuje tisíce společností a individuálních výzkumných pracovníků různé uživatelské základny, škálování dat a smlouvy SLA. Zajištění nízké latence dotazů a vysokého výkonu je nezbytné pro zajištění vynikajícího uživatelského prostředí.
Azure Cosmos DB s funkcí indexu vektorů DiskANN zjednodušuje návrh s více tenanty a poskytuje efektivní mechanismy úložiště dat a přístupu pro vysoce výkonné aplikace.
Modely s více tenanty ve službě Azure Cosmos DB
Ve službě Azure Cosmos DB doporučujeme dva primární přístupy ke správě víceklientské architektury: klíč oddílu na tenanta nebo účet na tenanta, z nichž každá má vlastní sadu výhod a kompromisů.
1. Dělení klíče na tenanta
Pro vyšší hustotu tenantů a nižší izolaci je efektivní model klíče oddílu pro jednotlivé tenanty. Každému tenantovi je přiřazen jedinečný klíč oddílu v daném kontejneru, který umožňuje logické oddělení dat. Tato strategie funguje nejlépe, když má každý tenant zhruba stejný svazek úloh. Pokud dojde k významné nerovnoměrné distribuci, měli by zákazníci zvážit izolování těchto tenantů ve svém vlastním účtu. Pokud má jeden tenant více než 20 GB dat, je potřeba použít hierarchické klíče oddílů (HPK). Pro vektorové vyhledávání konkrétně může index quantizedFlat velmi dobře fungovat, pokud se dotazy vektorového vyhledávání můžou zaměřit na konkrétní oddíl nebo sady oddílů.
Výhody:
- Efektivita nákladů: Sdílení jednoho účtu cosmos DB mezi více tenanty snižuje režii.
- Škálovatelnost: Může spravovat velký počet tenantů, z nichž každý je izolovaný v rámci klíče oddílu.
- Zjednodušená správa: Méně účtů Cosmos DB ke správě
- Hierarchické klíče oddílů (HPK): Optimalizuje organizaci dat a výkon dotazů ve víceklientských aplikacích s velkým počtem tenantů.
Nevýhody:
- Kolize prostředků: Sdílené prostředky můžou vést k kolizím během špičky využití.
- Omezená izolace: Logická, ale ne fyzická izolace, která nemusí splňovat přísné požadavky na izolaci.
- Menší flexibilita: Menší flexibilita na tenanta pro povolení funkcí na úrovni účtu, jako je geografická replikace, obnovení k určitému bodu v čase (PITR) a klíče spravované zákazníkem (CMK).
Hierarchické dělení: rozšířená organizace dat
Hierarchické dělení vychází z modelu klíče oddílu pro jednotlivé tenanty a přidává hlubší úrovně organizace dat. Tato metoda zahrnuje vytvoření více úrovní klíčů oddílů pro podrobnější správu dat. Nejnižší úroveň hierarchického dělení by měla mít vysokou kardinalitu. Obvykle se doporučuje pro tuto úroveň použít ID/guid, abyste zajistili nepřetržitou škálovatelnost nad 20 GB na tenanta.
Výhody:
- Optimalizované dotazy: Přesnější cílení dílčích oddílů na úrovni nadřazeného oddílu snižuje latenci dotazů.
- Vylepšená škálovatelnost: Usnadňuje hlubší segmentaci dat pro snadnější škálování.
- Lepší přidělování prostředků: Rovnoměrně distribuuje úlohy a minimalizuje kritické body pro vysoké počty tenantů.
Aspekty:
- Pokud mají aplikace velmi málo tenantů a používají hierarchické dělení, může to vést k kritickým bodům, protože všechny dokumenty se stejným klíčem první úrovně budou zapisovat do stejných fyzických oddílů.
Příklad: ResearchHub může stratifikovat data v rámci jednotlivých oddílů tenanta jejich uspořádáním na různých úrovních, jako je "DepartmentId" a "ResearcherId", což usnadňuje efektivní správu a dotazy.
2. Účet na tenanta
Pro maximální izolaci je vhodnější model účtu na tenanta. Každý tenant získá vyhrazený účet Cosmos DB, který zajišťuje úplné oddělení prostředků.
Výhody:
- Vysoká izolace: Kvůli vyhrazeným prostředkům nedošlo k kolizím ani rušení.
- Vlastní smlouvy SLA: Prostředky a smlouvy SLA se dají přizpůsobit potřebám jednotlivých tenantů.
- Rozšířené zabezpečení: Izolace fyzických dat zajišťuje robustní zabezpečení.
- Flexibilita: Tenanti můžou podle potřeby povolit funkce na úrovni účtu, jako je geografická replikace, obnovení k určitému bodu v čase (PITR) a klíče spravované zákazníkem (CMK).
Nevýhody:
- Zvýšená správa: Větší složitost při správě více účtů Cosmos DB
- Vyšší náklady: Více účtů znamená vyšší náklady na infrastrukturu.
Izolace zabezpečení pomocí klíčů spravovaných zákazníkem
Azure Cosmos DB umožňuje šifrování dat spravovaných zákazníkem a přidává další vrstvu zabezpečení pro víceklientských prostředí.
Postup implementace:
- Nastavení služby Azure Key Vault: Bezpečně uložte šifrovací klíče.
- Propojení se službou Cosmos DB: Přidružte službu Key Vault k účtu služby Cosmos DB.
- Obměňujte klíče pravidelně: Vylepšete zabezpečení tím, že pravidelně aktualizujete klíče.
Použití klíčů spravovaných zákazníkem zajišťuje, že se data každého tenanta šifrují jedinečně a poskytují robustní zabezpečení a dodržování předpisů.
Jiné modely izolace
Izolace kontejnerů a databází
Kromě modelů klíče oddílu pro jednotlivé tenanty a účtů na tenanta poskytuje Služba Azure Cosmos DB další metody izolace, jako je izolace kontejneru a izolace databáze. Tyto přístupy nabízejí různé stupně izolace výkonu, i když neposkytují stejnou úroveň izolace zabezpečení jako model účtů na tenanta.
Izolace kontejneru
V modelu izolace kontejneru je každému tenantovi přiřazen samostatný kontejner ve sdíleném účtu Cosmos DB. Tento model umožňuje určitou úroveň izolace z hlediska výkonu a přidělování prostředků.
Výhody:
- Lepší izolace výkonu: Kontejnery mohou být přiděleny konkrétní prostředky výkonu, což minimalizuje dopad úloh jednoho tenanta na jiný.
- Jednodušší správa: Správa více kontejnerů v rámci jednoho účtu je obecně jednodušší než správa více účtů.
- Efektivita nákladů: Podobně jako u modelu klíče oddílu na tenanta tato metoda snižuje režii více účtů.
Nevýhody:
- Omezená izolace zabezpečení: Na rozdíl od samostatných účtů kontejnery ve stejném účtu neposkytují fyzickou izolaci dat. Tento model tedy nemusí splňovat přísné požadavky na zabezpečení.
- Kolize prostředků: Velké úlohy v jednom kontejneru můžou i nadále ovlivnit ostatní, pokud dojde k porušení limitů prostředků.
Izolace databáze
Model izolace databáze přiřadí každému tenantovi samostatnou databázi ve sdíleném účtu Cosmos DB. To poskytuje vylepšenou izolaci z hlediska přidělování a správy prostředků.
Výhody:
- Vylepšený výkon: Samostatné databáze snižují riziko kolize prostředků a nabízejí lepší izolaci výkonu.
- Flexibilní přidělování prostředků: Prostředky je možné přidělovat a spravovat na úrovni databáze a poskytovat přizpůsobené možnosti výkonu.
- Centralizovaná správa: Jednodušší správa v porovnání s více účty, ale nabízí větší izolaci než oddělení na úrovni kontejneru.
Nevýhody:
- Omezená izolace zabezpečení: Podobně jako izolace kontejneru neposkytuje samostatná databáze v rámci jednoho účtu fyzickou izolaci dat.
- Složitost: Správa více databází může být složitější než správa kontejnerů, zejména s rostoucím počtem tenantů.
I když modely izolace kontejnerů a databází nenabízí stejnou úroveň izolace zabezpečení jako model účtů na tenanta, můžou být stále užitečné pro dosažení izolace výkonu a flexibilní správy prostředků. Tyto metody jsou užitečné pro scénáře, kdy jsou prioritou nákladová efektivita a zjednodušená správa a přísná izolace zabezpečení není kritickým požadavkem.
Pečlivým vyhodnocením konkrétních potřeb a omezení víceklientských aplikací si můžete vybrat nejvhodnější model izolace ve službě Azure Cosmos DB, vyvážit výkon, zabezpečení a náklady, abyste dosáhli nejlepších výsledků pro vaše tenanty.
Aspekty implementace z reálného světa
Při navrhování víceklientských systémů se službou Cosmos DB zvažte tyto faktory:
- Úloha tenanta: Vyhodnoťte velikost dat a aktivitu a vyberte příslušný model izolace.
- Požadavky na výkon: Sladění architektury s definovanými smlouvami SLA a metrikami výkonu
- Cost Management: Vyvážení nákladů na infrastrukturu proti potřebě izolace a výkonu
- Škálovatelnost: Naplánujte růst výběrem škálovatelných modelů.
Praktická implementace ve službě Azure Cosmos DB
Klíč oddílu na tenanta:
- Přiřaďte klíče oddílů: Jedinečné klíče pro každého tenanta zajišťují logické oddělení.
- Data úložiště: Data tenanta se omezují na odpovídající klíče oddílu.
- Optimalizovat dotazy: Používejte klíče oddílů k efektivním cílovým dotazům.
Hierarchické dělení:
- Vytvoření víceúrovňových klíčů: Další uspořádání dat v rámci oddílů tenanta
- Cílené dotazy: Zvýšení výkonu s přesným cílením na dílčí oddíly
- Správa prostředků: Rovnoměrně distribuuje úlohy, aby se zabránilo kritickým bodům.
Účet na tenanta:
- Zadejte samostatné účty: Každý tenant získá vyhrazený účet Cosmos DB.
- Přizpůsobení prostředků: Přizpůsobení výkonu a smluv SLA podle požadavků tenanta
- Zajištění zabezpečení: Izolace fyzických dat nabízí robustní zabezpečení a dodržování předpisů.
Osvědčené postupy pro používání služby Azure Cosmos DB s vektorovým vyhledáváním
Podpora funkcí indexu vektorů DiskANN ve službě Azure Cosmos DB je skvělou volbou pro aplikace, které vyžadují rychlé, vysoce dimenzionální vyhledávání, jako jsou výzkumné platformy s asistencí umělé inteligence, jako je ResearchHub. Tady je postup, jak můžete využít tyto funkce:
Efektivní ukládání a načítání:
- Indexování vektorů: Pomocí indexu vektoru DiskANN můžete efektivně ukládat a načítat vysoce dimenzionální vektory. To je užitečné pro aplikace, které zahrnují vyhledávání podobnosti ve velkých datových sadách, jako je rozpoznávání obrázků nebo podobnost dokumentů.
- Optimalizace výkonu: Funkce vektorového vyhledávání diskuANN umožňují rychlé, přesné vyhledávání, zajištění nízké latence a vysokého výkonu, což je důležité pro zachování dobrého uživatelského prostředí.
Škálování napříč tenanty:
- Klíč oddílu na tenanta: Využijte klíče oddílů k logické izolaci dat tenanta a zároveň využijte výhod škálovatelné infrastruktury služby Cosmos DB.
- Hierarchické dělení: Implementujte hierarchické dělení pro další segmentování dat v rámci oddílů každého tenanta, což zlepšuje výkon dotazů a distribuci prostředků.
Zabezpečení a dodržování předpisů:
- Klíče spravované zákazníkem: Implementujte klíče spravované zákazníkem pro šifrování neaktivních uložených dat a zajistěte, aby byla data každého tenanta bezpečně izolovaná.
- Běžná obměny klíčů: Vylepšete zabezpečení pravidelným obměnáním šifrovacích klíčů uložených ve službě Azure Key Vault.
Příklad z reálného světa: implementace ResearchHubu
Klíč oddílu na tenanta:
- Přiřadit klíče oddílu: Každá organizace (tenant) má přiřazený jedinečný klíč oddílu.
- Úložiště dat: Všechna data výzkumných pracovníků pro tenanta se ukládají v rámci jeho oddílu a zajišťují logické oddělení.
- Optimalizace dotazů: Dotazy se provádějí pomocí klíče oddílu tenanta a zvyšují výkon izolováním přístupu k datům.
Hierarchické dělení:
- Klíče oddílů na více úrovních: Data v rámci oddílu tenanta jsou dále segmentována podle "DepartmentId" a "ResearcherId" nebo jiných relevantních atributů.
- Podrobná Správa dat: Tento hierarchický přístup umožňuje ResearchHubu efektivněji spravovat a dotazovat data, snižovat latenci a zlepšovat dobu odezvy.
Účet na tenanta:
- Samostatné účty Cosmos DB: Klienti s vysokým profilem nebo klienti s citlivými daty jsou poskytováni jednotlivým účtům Cosmos DB.
- Vlastní konfigurace: Prostředky a smlouvy SLA jsou přizpůsobené tak, aby vyhovovaly konkrétním potřebám každého tenanta a zajistily optimální výkon a zabezpečení.
- Rozšířené zabezpečení dat: Fyzické oddělení dat pomocí šifrovacích klíčů spravovaných zákazníkem zajišťuje robustní dodržování předpisů zabezpečení.
Závěr
Víceklientská architektura ve službě Azure Cosmos DB, zejména s funkcí indexu vektorů DiskANN, nabízí výkonné řešení pro vytváření škálovatelných vysoce výkonných aplikací AI. Bez ohledu na to, jestli zvolíte klíč oddílu na tenanta, hierarchické dělení nebo modely účtů na tenanta, můžete efektivně vyvážit náklady, zabezpečení a výkon. Díky těmto modelům a osvědčeným postupům můžete zajistit, aby vaše víceklientová aplikace splňovala různorodé potřeby vašich zákazníků a poskytovala tak výjimečné uživatelské prostředí.
Azure Cosmos DB poskytuje nástroje potřebné k vytvoření robustního, zabezpečeného a škálovatelného víceklientských prostředí. Díky výkonu indexování vektorů DiskANN můžete poskytovat rychlá a vysoce dimenzionální vyhledávání, která řídí vaše aplikace AI.
Řešení vektorové databáze
Rozšíření pgvector serveru Azure PostgreSQL
Související obsah
- 30denní bezplatná zkušební verze bez předplatného Azure
- Víceklientská architektura a Azure Cosmos DB