Wielodostępność wyszukiwania wektorów w usłudze Azure Cosmos DB
"OpenAI opiera się na usłudze Cosmos DB, aby dynamicznie skalować swoją usługę ChatGPT — jedną z najszybciej rozwijających się aplikacji konsumenckich w historii — umożliwiając wysoką niezawodność i niską konserwację". — Satya Nadella
Usługa Azure Cosmos DB wyróżnia się jako pierwsza na świecie bezserwerowa operacyjna baza danych z wyszukiwaniem wektorowym, oferując niezrównaną skalowalność i wydajność. Korzystając z usługi Azure Cosmos DB, użytkownicy mogą zwiększyć możliwości wyszukiwania wektorów, zapewniając wysoką niezawodność i niską konserwację aplikacji wielodostępnych.
Wielodostępność umożliwia pojedyncze wystąpienie bazy danych do obsługi wielu klientów lub dzierżaw jednocześnie. Takie podejście efektywnie dzieli infrastrukturę i nakłady operacyjne, co skutkuje oszczędnościami kosztów i uproszczonym zarządzaniem. Jest to kluczowa kwestia projektowania aplikacji SaaS i niektórych wewnętrznych rozwiązań dla przedsiębiorstw.
Wielodostępność wprowadza złożoność. System musi być skalowany wydajnie, aby zachować wysoką wydajność we wszystkich dzierżawach, którzy mogą mieć unikatowe obciążenia, wymagania i umowy dotyczące poziomu usług (SLA).
Wyobraź sobie fikcyjną platformę badawczą wspomaganą przez sztuczną inteligencję o nazwie ResearchHub. Obsługa tysięcy firm i indywidualnych badaczy, ResearchHub zarządza różne bazy użytkowników, skalowanie danych i umowy SLA. Zapewnienie małych opóźnień zapytań i wysokiej wydajności jest niezbędne do utrzymania doskonałego środowiska użytkownika.
Usługa Azure Cosmos DB z funkcją indeksowania wektorów DiskANN upraszcza projektowanie wielodostępne, zapewniając wydajne przechowywanie danych i mechanizmy dostępu dla aplikacji o wysokiej wydajności.
Modele wielodostępności w usłudze Azure Cosmos DB
W usłudze Azure Cosmos DB zalecamy dwa podstawowe podejścia do zarządzania wieloma dzierżawami: klucz partycji na dzierżawę lub konto na dzierżawę, z których każdy ma własny zestaw korzyści i kompromisów.
1. Partycjonowanie klucza na dzierżawę
W przypadku większej gęstości dzierżaw i niższej izolacji model klucza partycji na dzierżawę jest skuteczny. Każda dzierżawa ma przypisany unikatowy klucz partycji w danym kontenerze, co umożliwia logiczne rozdzielenie danych. Ta strategia działa najlepiej, gdy każda dzierżawa ma mniej więcej ten sam wolumin obciążenia. Jeśli istnieje znaczna niesymetryczność, klienci powinni rozważyć izolowanie tych dzierżaw na własnym koncie. Ponadto, jeśli jedna dzierżawa ma więcej niż 20 GB danych, należy użyć hierarchicznych kluczy partycji (HPK). W szczególności w przypadku wyszukiwania wektorów indeks quantizedFlat może działać bardzo dobrze, jeśli zapytania wyszukiwania wektorów mogą być ukierunkowane na określoną partycję lub zestawy partycji.
Korzyści:
- Efektywność kosztowa: udostępnianie pojedynczego konta usługi Cosmos DB w wielu dzierżawach zmniejsza obciążenie.
- Skalowalność: może zarządzać dużą liczbą dzierżaw, z których każda jest odizolowana w ramach klucza partycji.
- Uproszczone zarządzanie: mniej kont usługi Cosmos DB do zarządzania.
- Hierarchiczne klucze partycji (HPK): optymalizuje organizację danych i wydajność zapytań w aplikacjach wielodostępnych z dużą liczbą dzierżaw.
Wady:
- Rywalizacja o zasoby: Współużytkowane zasoby mogą prowadzić do rywalizacji podczas szczytowego użycia.
- Ograniczona izolacja: izolacja logiczna, ale nie fizyczna, która może nie spełniać rygorystycznych wymagań dotyczących izolacji.
- Mniejsza elastyczność: zmniejszenie elastyczności dla dzierżawy w celu włączenia funkcji na poziomie konta, takich jak replikacja geograficzna, przywracanie do punktu w czasie (PITR) i klucze zarządzane przez klienta (CMK).
Partycjonowanie hierarchiczne: rozszerzona organizacja danych
Partycjonowanie hierarchiczne opiera się na modelu klucza partycji na dzierżawę, dodając bardziej szczegółowe poziomy organizacji danych. Ta metoda obejmuje utworzenie wielu poziomów kluczy partycji w celu bardziej szczegółowego zarządzania danymi. Najniższy poziom partycjonowania hierarchicznego powinien mieć wysoką kardynalność. Zazwyczaj zaleca się użycie identyfikatora/identyfikatora GUID dla tego poziomu w celu zapewnienia ciągłej skalowalności przekraczającej 20 GB na dzierżawę.
Zalety:
- Zoptymalizowane zapytania: Dokładniejsze określanie elementów docelowych części podrzędnych na poziomie partycji nadrzędnej zmniejsza opóźnienie zapytań.
- Ulepszona skalowalność: ułatwia bardziej szczegółowe segmentowanie danych w celu łatwiejszego skalowania.
- Lepsza alokacja zasobów: równomiernie dystrybuuje obciążenia, minimalizując wąskie gardła dla dużej liczby dzierżaw.
Ważne kwestie:
- Jeśli aplikacje mają bardzo mało dzierżaw i używają partycjonowania hierarchicznego, może to prowadzić do wąskich gardeł, ponieważ wszystkie dokumenty z tym samym kluczem pierwszego poziomu będą zapisywane w tych samych partycjach fizycznych.
Przykład: Usługa ResearchHub może stratyfikować dane w ramach partycji każdej dzierżawy, organizując je na różnych poziomach, takich jak "DepartmentId" i "ResearcherId", ułatwiając wydajne zarządzanie i zapytania.
2. Konto na dzierżawę
W przypadku maksymalnej izolacji preferowany jest model konta na dzierżawę. Każda dzierżawa otrzymuje dedykowane konto usługi Cosmos DB, zapewniając pełne rozdzielenie zasobów.
Korzyści:
- Wysoka izolacja: brak rywalizacji ani interferencji ze względu na dedykowane zasoby.
- Niestandardowe umowy SLA: zasoby i umowy SLA można dostosować do indywidualnych potrzeb dzierżawy.
- Zwiększone zabezpieczenia: Izolacja danych fizycznych zapewnia niezawodne zabezpieczenia.
- Elastyczność: Dzierżawcy mogą włączać funkcje na poziomie konta, takie jak replikacja geograficzna, przywracanie do punktu w czasie (PITR) i klucze zarządzane przez klienta (CMK) zgodnie z potrzebami.
Wady:
- Zwiększone zarządzanie: większa złożoność zarządzania wieloma kontami usługi Cosmos DB.
- Wyższe koszty: Więcej kont oznacza wyższe koszty infrastruktury.
Izolacja zabezpieczeń przy użyciu kluczy zarządzanych przez klienta
Usługa Azure Cosmos DB umożliwia szyfrowanie danych za pomocą kluczy zarządzanych przez klienta, dodając dodatkową warstwę zabezpieczeń dla środowisk wielodostępnych.
Kroki implementacji:
- Konfigurowanie usługi Azure Key Vault: bezpieczne przechowywanie kluczy szyfrowania.
- Link do usługi Cosmos DB: kojarzenie usługi Key Vault z kontem usługi Cosmos DB.
- Regularnie obracaj klucze: zwiększ bezpieczeństwo, rutynowo aktualizując klucze.
Użycie kluczy zarządzanych przez klienta zapewnia, że dane każdej dzierżawy są szyfrowane unikatowo, zapewniając niezawodne zabezpieczenia i zgodność.
Inne modele izolacji
Izolacja kontenera i bazy danych
Oprócz modeli klucza partycji na dzierżawę i konta na dzierżawę usługa Azure Cosmos DB udostępnia inne metody izolacji, takie jak izolacja kontenera i izolacja bazy danych. Te podejścia oferują różne stopnie izolacji wydajności, choć nie zapewniają tego samego poziomu izolacji zabezpieczeń co model kont na dzierżawę.
Izolacja kontenera
W modelu izolacji kontenera każda dzierżawa ma przypisany oddzielny kontener na udostępnionym koncie usługi Cosmos DB. Ten model umożliwia pewien poziom izolacji pod względem wydajności i alokacji zasobów.
Korzyści:
- Lepsza izolacja wydajności: kontenery można przydzielić określone zasoby wydajności, minimalizując wpływ obciążenia jednej dzierżawy na inny.
- Łatwiejsze zarządzanie: zarządzanie wieloma kontenerami w ramach jednego konta jest zwykle łatwiejsze niż zarządzanie wieloma kontami.
- Efektywność kosztowa: podobnie jak model klucza partycji na dzierżawę, ta metoda zmniejsza obciążenie wielu kont.
Wady:
- Ograniczona izolacja zabezpieczeń: w przeciwieństwie do oddzielnych kont kontenery na tym samym koncie nie zapewniają izolacji danych fizycznych. Dlatego ten model może nie spełniać rygorystycznych wymagań dotyczących zabezpieczeń.
- Rywalizacja o zasoby: duże obciążenia w jednym kontenerze mogą nadal wpływać na inne, jeśli limity zasobów zostaną naruszone.
Izolacja bazy danych
Model izolacji bazy danych przypisuje każdej dzierżawie oddzielną bazę danych na udostępnionym koncie usługi Cosmos DB. Zapewnia to rozszerzoną izolację pod względem alokacji zasobów i zarządzania nimi.
Korzyści:
- Zwiększona wydajność: oddzielne bazy danych zmniejszają ryzyko rywalizacji o zasoby, oferując lepszą izolację wydajności.
- Elastyczna alokacja zasobów: zasoby można przydzielać i zarządzać nimi na poziomie bazy danych, zapewniając dostosowane możliwości wydajności.
- Scentralizowane zarządzanie: łatwiejsze zarządzanie w porównaniu z wieloma kontami, ale oferuje większą izolację niż separacja na poziomie kontenera.
Wady:
- Ograniczona izolacja zabezpieczeń: podobnie jak izolacja kontenera, posiadanie oddzielnych baz danych na jednym koncie nie zapewnia izolacji danych fizycznych.
- Złożoność: Zarządzanie wieloma bazami danych może być bardziej złożone niż zarządzanie kontenerami, zwłaszcza w miarę wzrostu liczby dzierżaw.
Chociaż modele izolacji kontenerów i baz danych nie oferują tego samego poziomu izolacji zabezpieczeń co model konta na dzierżawę, nadal mogą być przydatne do osiągnięcia izolacji wydajności i elastycznego zarządzania zasobami. Te metody są korzystne w przypadku scenariuszy, w których efektywność kosztowa i uproszczone zarządzanie są priorytetami, a rygorystyczna izolacja zabezpieczeń nie jest wymaganiem krytycznym.
Starannie oceniając konkretne potrzeby i ograniczenia aplikacji wielodostępnej, możesz wybrać najbardziej odpowiedni model izolacji w usłudze Azure Cosmos DB, równoważenie wydajności, zabezpieczeń i kosztów, aby uzyskać najlepsze wyniki dla dzierżaw.
Zagadnienia dotyczące implementacji w świecie rzeczywistym
Podczas projektowania systemu wielodostępnego przy użyciu usługi Cosmos DB należy wziąć pod uwagę następujące czynniki:
- Obciążenie dzierżawy: oceń rozmiar danych i aktywność, aby wybrać odpowiedni model izolacji.
- Wymagania dotyczące wydajności: dostosuj architekturę do zdefiniowanych umów SLA i metryk wydajności.
- Zarządzanie kosztami: zrównoważ koszty infrastruktury pod kątem izolacji i wydajności.
- Skalowalność: zaplanuj wzrost, wybierając skalowalne modele.
Praktyczna implementacja w usłudze Azure Cosmos DB
Klucz partycji na dzierżawę:
- Przypisywanie kluczy partycji: unikatowe klucze dla każdej dzierżawy zapewniają separację logiczną.
- Dane magazynu: dane dzierżawy są ograniczone do odpowiednich kluczy partycji.
- Optymalizowanie zapytań: używaj kluczy partycji do wydajnych, docelowych zapytań.
Partycjonowanie hierarchiczne:
- Tworzenie kluczy wielo poziomowych: dalsze organizowanie danych w ramach partycji dzierżawy.
- Zapytania docelowe: zwiększ wydajność dzięki precyzyjnej docelowej partycji podrzędnej.
- Zarządzanie zasobami: równomiernie dystrybuuj obciążenia, aby zapobiec wąskim gardłom.
Konto na dzierżawę:
- Podaj oddzielne konta: każda dzierżawa otrzymuje dedykowane konto usługi Cosmos DB.
- Dostosowywanie zasobów: dostosowywanie wydajności i umów SLA do wymagań dzierżawy.
- Zapewnianie bezpieczeństwa: izolacja danych fizycznych zapewnia niezawodne zabezpieczenia i zgodność.
Najlepsze rozwiązania dotyczące korzystania z usługi Azure Cosmos DB z wyszukiwaniem wektorowym
Obsługa indeksu wektorów DiskANN w usłudze Azure Cosmos DB sprawia, że jest doskonałym wyborem dla aplikacji wymagających szybkich, wielowymiarowych wyszukiwań, takich jak platformy badawcze wspomagane przez sztuczną inteligencję, takie jak ResearchHub. Poniżej przedstawiono sposób korzystania z tych funkcji:
Wydajne przechowywanie i pobieranie:
- Indeksowanie wektorów: użyj indeksu wektora DiskANN, aby efektywnie przechowywać i pobierać wektory o wysokim wymiarach. Jest to przydatne w przypadku aplikacji obejmujących wyszukiwania podobieństw w dużych zestawach danych, takich jak rozpoznawanie obrazów lub podobieństwo dokumentów.
- Optymalizacja wydajności: funkcje wyszukiwania wektorów sieci DiskANN umożliwiają szybkie, dokładne wyszukiwanie, zapewniając małe opóźnienia i wysoką wydajność, co ma kluczowe znaczenie dla utrzymania dobrego środowiska użytkownika.
Skalowanie między dzierżawami:
- Partycjonowanie klucza na dzierżawę: użyj kluczy partycji, aby logicznie odizolować dane dzierżawy, korzystając z skalowalnej infrastruktury usługi Cosmos DB.
- Partycjonowanie hierarchiczne: zaimplementuj partycjonowanie hierarchiczne w celu dalszego segmentowania danych w ramach partycji każdej dzierżawy, zwiększając wydajność zapytań i dystrybucję zasobów.
Zabezpieczenia i zgodność:
- Klucze zarządzane przez klienta: Zaimplementuj klucze zarządzane przez klienta na potrzeby szyfrowania danych magazynowanych, zapewniając bezpieczne izolowanie danych każdej dzierżawy.
- Zwykła rotacja kluczy: zwiększ bezpieczeństwo, regularnie obracając klucze szyfrowania przechowywane w usłudze Azure Key Vault.
Rzeczywisty przykład: implementowanie usługi ResearchHub
Klucz partycji na dzierżawę:
- Przypisywanie kluczy partycji: każda organizacja (dzierżawa) ma przypisany unikatowy klucz partycji.
- Magazyn danych: wszystkie dane badaczy dla dzierżawy są przechowywane w partycji, zapewniając separację logiczną.
- Optymalizacja zapytań: zapytania są wykonywane przy użyciu klucza partycji dzierżawy, zwiększając wydajność przez izolowanie dostępu do danych.
Partycjonowanie hierarchiczne:
- Klucze partycji wielowymiarowych: dane w partycji dzierżawy są dalej segmentowane według wartości "DepartmentId" i "ResearcherId" lub innych odpowiednich atrybutów.
- Szczegółowe Zarządzanie danymi: takie podejście hierarchiczne umożliwia usłudze ResearchHub wydajniejsze zarządzanie danymi i wykonywanie zapytań o nie, zmniejszenie opóźnienia i skrócenie czasu odpowiedzi.
Konto na dzierżawę:
- Oddzielne konta usługi Cosmos DB: klienci o wysokim profilu lub osoby z danymi poufnymi są udostępniane poszczególnym kontom usługi Cosmos DB.
- Konfiguracje niestandardowe: zasoby i umowy SLA są dostosowane do konkretnych potrzeb każdej dzierżawy, zapewniając optymalną wydajność i bezpieczeństwo.
- Rozszerzone zabezpieczenia danych: fizyczne rozdzielenie danych przy użyciu kluczy szyfrowania zarządzanych przez klienta zapewnia niezawodną zgodność z zabezpieczeniami.
Podsumowanie
Obsługa wielu dzierżaw w usłudze Azure Cosmos DB, szczególnie w przypadku możliwości indeksowania wektorów DiskANN, oferuje zaawansowane rozwiązanie do tworzenia skalowalnych, wysokowydajnych aplikacji sztucznej inteligencji. Niezależnie od tego, czy wybierasz model partycji klucz na dzierżawę, partycjonowanie hierarchiczne, czy modele kont na dzierżawę, możesz skutecznie równoważyć koszty, zabezpieczenia i wydajność. Korzystając z tych modeli i najlepszych rozwiązań, możesz zapewnić, że aplikacja wielodostępna spełnia zróżnicowane potrzeby klientów, zapewniając wyjątkowe środowisko użytkownika.
Usługa Azure Cosmos DB udostępnia narzędzia niezbędne do tworzenia niezawodnego, bezpiecznego i skalowalnego środowiska wielodostępnego. Dzięki możliwości indeksowania wektorów DiskANN można dostarczać szybkie, wielowymiarowe wyszukiwania, które napędzają aplikacje sztucznej inteligencji.
Rozwiązania wektorowej bazy danych
Rozszerzenie pgvector serwera Azure PostgreSQL
Powiązana zawartość
- 30-dniowa bezpłatna wersja próbna bez subskrypcji platformy Azure
- Obsługa wielu dzierżaw i usługa Azure Cosmos DB