🚀 Testen Sie Zilliz Cloud, die vollständig verwaltete Milvus, kostenlos – erleben Sie 10x schnellere Leistung! Jetzt testen>>

milvus-logo
LFAI
  • Home
  • Blog
  • Verständnis der Konsistenzebene in der Milvus-Vektordatenbank

Verständnis der Konsistenzebene in der Milvus-Vektordatenbank

  • Engineering
August 29, 2022
Chenglong Li

Cover_image Cover_Bild

Dieser Artikel wurde von Chenglong Li geschrieben und von Angela Ni umgesetzt.

Haben Sie sich jemals gefragt, warum manchmal die Daten, die Sie aus der Mlivus-Vektordatenbank gelöscht haben, immer noch in den Suchergebnissen erscheinen?

Ein sehr wahrscheinlicher Grund ist, dass Sie nicht die richtige Konsistenzstufe für Ihre Anwendung eingestellt haben. Die Konsistenzstufe in einer verteilten Vektordatenbank ist von entscheidender Bedeutung, da sie bestimmt, zu welchem Zeitpunkt ein bestimmter Dateneintrag vom System gelesen werden kann.

In diesem Artikel soll daher das Konzept der Konsistenz entmystifiziert und die von der Milvus-Vektordatenbank unterstützten Konsistenzstufen näher erläutert werden.

Sprung zu:

Was ist Konsistenz?

Bevor wir beginnen, müssen wir zunächst die Bedeutung von Konsistenz in diesem Artikel klären, da das Wort "Konsistenz" in der Computerbranche ein überladener Begriff ist. Konsistenz in einer verteilten Datenbank bezieht sich speziell auf die Eigenschaft, die sicherstellt, dass jeder Knoten oder jede Replik dieselbe Sicht auf die Daten hat, wenn sie zu einem bestimmten Zeitpunkt Daten schreiben oder lesen. Daher sprechen wir hier von Konsistenz im Sinne des CAP-Theorems.

In der modernen Welt werden für den Betrieb großer Online-Unternehmen in der Regel mehrere Replikate eingesetzt. Der E-Commerce-Riese Amazon beispielsweise repliziert seine Bestellungen oder SKU-Daten über mehrere Rechenzentren, Zonen oder sogar Länder hinweg, um eine hohe Systemverfügbarkeit im Falle eines Systemabsturzes oder -ausfalls zu gewährleisten. Dies stellt eine Herausforderung für das System dar - die Datenkonsistenz über mehrere Replikate hinweg. Ohne Konsistenz ist es sehr wahrscheinlich, dass der gelöschte Artikel in Ihrem Amazon-Warenkorb wieder auftaucht, was zu einer sehr schlechten Benutzererfahrung führt.

Daher brauchen wir verschiedene Datenkonsistenzstufen für verschiedene Anwendungen. Glücklicherweise bietet Milvus, eine Datenbank für künstliche Intelligenz, Flexibilität bei der Konsistenzstufe und Sie können die Konsistenzstufe einstellen, die am besten zu Ihrer Anwendung passt.

Konsistenz in der Vektordatenbank Milvus

Das Konzept der Konsistenzstufe wurde erstmals mit der Veröffentlichung von Milvus 2.0 eingeführt. Die Version 1.0 von Milvus war keine verteilte Vektordatenbank, so dass wir damals noch keine einstellbaren Konsistenzstufen verwendet haben. In Milvus 1.0 werden die Daten jede Sekunde geleert, was bedeutet, dass neue Daten fast sofort nach dem Einfügen sichtbar sind und Milvus die aktuellste Datenansicht genau zu dem Zeitpunkt liest, zu dem eine Vektorähnlichkeitssuche oder eine Abfrageanfrage kommt.

Allerdings wurde Milvus in seiner Version 2.0 überarbeitet und Milvus 2.0 ist eine verteilte Vektordatenbank, die auf einem Pub-Sub-Mechanismus basiert. Das PACELC-Theorem besagt, dass ein verteiltes System einen Kompromiss zwischen Konsistenz, Verfügbarkeit und Latenz eingehen muss. Darüber hinaus dienen unterschiedliche Konsistenzniveaus für unterschiedliche Szenarien. Daher wurde in Milvus 2.0 das Konzept der Konsistenz eingeführt, das die Abstimmung der Konsistenzstufen unterstützt.

Vier Konsistenzstufen in der Milvus-Vektor-Datenbank

Milvus unterstützt vier Konsistenzstufen: strong, bounded staleness, session und eventual. Und ein Milvus-Benutzer kann die Konsistenzstufe angeben, wenn er eine Sammlung erstellt oder eine Vektorähnlichkeitssuche oder -abfrage durchführt. In diesem Abschnitt wird weiter erläutert, wie sich diese vier Konsistenzstufen unterscheiden und für welches Szenario sie am besten geeignet sind.

Stark

Strong ist die höchste und strengste Konsistenzstufe. Sie stellt sicher, dass die Benutzer die neueste Version der Daten lesen können.

Strong Stark

Nach dem PACELC-Theorem erhöht sich die Latenzzeit, wenn die Konsistenzstufe auf Strong gesetzt wird. Daher empfehlen wir, bei Funktionstests starke Konsistenz zu wählen, um die Genauigkeit der Testergebnisse zu gewährleisten. Starke Konsistenz eignet sich auch am besten für Anwendungen, die strenge Anforderungen an die Datenkonsistenz stellen, was auf Kosten der Suchgeschwindigkeit geht. Ein Beispiel hierfür ist ein Online-Finanzsystem, das sich mit der Bezahlung von Bestellungen und der Rechnungsstellung befasst.

Begrenzte Unbeständigkeit

Bounded Staleness lässt, wie der Name schon sagt, Dateninkonsistenz während eines bestimmten Zeitraums zu. Im Allgemeinen sind die Daten jedoch außerhalb dieses Zeitraums immer global konsistent.

Bounded_staleness Begrenzte Stetigkeit

Bounded Staleness eignet sich für Szenarien, in denen die Suchlatenz kontrolliert werden muss und eine sporadische Unsichtbarkeit der Daten akzeptiert werden kann. Bei Empfehlungssystemen wie Videoempfehlungsmaschinen hat die sporadische Unsichtbarkeit von Daten beispielsweise nur geringe Auswirkungen auf die Gesamtauffindungsrate, kann aber die Leistung des Empfehlungssystems erheblich steigern. Ein Beispiel ist eine App zur Verfolgung des Status Ihrer Online-Bestellungen.

Sitzung

Session sorgt dafür, dass alle Daten, die Sie schreiben, sofort in derselben Sitzung gelesen werden können. Mit anderen Worten: Wenn Sie Daten über einen Client schreiben, werden die neu eingefügten Daten sofort durchsuchbar.

Session Sitzung

Wir empfehlen die Wahl von Session als Konsistenzlevel für jene Szenarien, in denen die Anforderung an die Datenkonsistenz in derselben Sitzung hoch ist. Ein Beispiel wäre das Löschen der Daten eines Bucheintrags aus dem Bibliothekssystem. Nach der Bestätigung der Löschung und dem Auffrischen der Seite (einer anderen Sitzung) sollte das Buch nicht mehr in den Suchergebnissen erscheinen.

Eventuell

Es gibt keine garantierte Reihenfolge der Lese- und Schreibvorgänge, und die Replikate konvergieren schließlich zum gleichen Zustand, wenn keine weiteren Schreibvorgänge durchgeführt werden. Bei der eventuellen Konsistenz beginnen die Replikate bei Leseanforderungen mit den zuletzt aktualisierten Werten zu arbeiten. Eventuelle Konsistenz ist die schwächste der vier Stufen.

Eventual Eventuelle

Nach dem PACELC-Theorem kann die Suchlatenz jedoch enorm verkürzt werden, wenn die Konsistenz geopfert wird. Daher eignet sich die eventuelle Konsistenz am besten für Szenarien, in denen keine hohen Anforderungen an die Datenkonsistenz gestellt werden, aber eine blitzschnelle Suchleistung erforderlich ist. Ein Beispiel ist das Abrufen von Rezensionen und Bewertungen von Amazon-Produkten mit eventueller Konsistenz.

Endnote

Um auf die zu Beginn dieses Artikels gestellte Frage zurückzukommen: Gelöschte Daten werden immer noch als Suchergebnisse zurückgegeben, weil der Benutzer nicht die richtige Konsistenzstufe gewählt hat. Der Standardwert für die Konsistenzstufe ist "bounded staleness" (Bounded) in der Milvus-Vektordatenbank. Daher kann es vorkommen, dass die gelesenen Daten hinterherhinken und dass Milvus die Datenansicht liest, bevor Sie bei einer Ähnlichkeitssuche oder -abfrage Löschvorgänge durchgeführt haben. Dieses Problem ist jedoch einfach zu lösen. Sie müssen lediglich die Konsistenzstufe bei der Erstellung einer Sammlung oder bei der Durchführung einer Vektorgleichheitssuche oder -abfrage einstellen. Ganz einfach!

Im nächsten Beitrag werden wir den Mechanismus dahinter enthüllen und erklären, wie die Milvus-Vektordatenbank verschiedene Konsistenzniveaus erreicht. Bleiben Sie dran!

Was kommt als Nächstes?

Mit der offiziellen Veröffentlichung von Milvus 2.1 haben wir eine Reihe von Blogs vorbereitet, in denen die neuen Funktionen vorgestellt werden. Lesen Sie mehr in dieser Blogserie:

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

Weiterlesen