milvus-logo
LFAI
Casa
  • Concetti

La coerenza

Questo argomento introduce i quattro livelli di coerenza in Milvus e i loro scenari più adatti. In questo argomento viene trattato anche il meccanismo che garantisce la coerenza in Milvus.

Panoramica

La consistenza in un database distribuito si riferisce specificamente alla proprietà che garantisce che ogni nodo o replica abbia la stessa visione dei dati quando scrive o legge i dati in un determinato momento.

Milvus supporta quattro livelli di consistenza: forte, bounded staleness, di sessione e finale. Il livello di consistenza predefinito in Milvus è bounded staleness. È possibile regolare facilmente il livello di consistenza quando si effettua una ricerca monovettoriale, una ricerca ibrida o una query per adattarlo al meglio alla propria applicazione.

Livelli di consistenza

Come definito dal teorema PACELC, un database distribuito deve trovare un compromesso tra coerenza, disponibilità e latenza. Un'alta consistenza implica un'elevata precisione ma anche un'alta latenza di ricerca, mentre una bassa consistenza porta a una velocità di ricerca elevata ma a una certa perdita di visibilità dei dati. Pertanto, livelli diversi di coerenza si adattano a scenari diversi.

Di seguito vengono illustrate le differenze tra i quattro livelli di coerenza supportati da Milvus e gli scenari a cui ciascuno di essi si adatta.

Forte

Strong è il livello di coerenza più alto e più rigoroso. Garantisce che gli utenti possano leggere la versione più recente dei dati.

Strong consistency Consistenza forte

Secondo il teorema PACELC, se il livello di coerenza è impostato su forte, la latenza aumenterà. Pertanto, si consiglia di scegliere una consistenza forte durante i test funzionali per garantire l'accuratezza dei risultati dei test. La consistenza forte è anche la più adatta per le applicazioni che richiedono una stretta consistenza dei dati a scapito della velocità di ricerca. Un esempio può essere un sistema finanziario online che si occupa di pagamenti e fatturazione degli ordini.

Stalliezza limitata

La staleness limitata, come suggerisce il nome, consente l'incoerenza dei dati durante un certo periodo di tempo. Tuttavia, in genere, i dati sono sempre globalmente coerenti al di fuori di quel periodo di tempo.

Bounded staleness consistency Consistenza della staleness limitata

La staleness limitata è adatta a scenari che devono controllare la latenza di ricerca e possono accettare l'invisibilità sporadica dei dati. Ad esempio, nei sistemi di raccomandazione come i motori di raccomandazione video, l'invisibilità dei dati ha talvolta un impatto minimo sul tasso di richiamo complessivo, ma può aumentare significativamente le prestazioni del sistema di raccomandazione.

Sessione

La sessione garantisce che tutti i dati scritti possano essere immediatamente percepiti in lettura durante la stessa sessione. In altre parole, quando si scrivono dati tramite un client, i nuovi dati inseriti diventano istantaneamente ricercabili.

Session consistency Consistenza di sessione

Si consiglia di scegliere la sessione come livello di coerenza per gli scenari in cui la richiesta di coerenza dei dati nella stessa sessione è elevata. Un esempio può essere la cancellazione dei dati di una voce di libro dal sistema bibliotecario; dopo la conferma della cancellazione e l'aggiornamento della pagina (una sessione diversa), il libro non dovrebbe più essere visibile nei risultati della ricerca.

Eventualmente

Non esiste un ordine garantito di lettura e scrittura, e le repliche alla fine convergono allo stesso stato se non vengono effettuate altre operazioni di scrittura. Con la consistenza "eventually", le repliche iniziano a lavorare sulle richieste di lettura con gli ultimi valori aggiornati. Eventualmente coerente è il livello più debole tra i quattro.

Eventual consistency Consistenza eventuale

Tuttavia, secondo il teorema PACELC, la latenza di ricerca può essere enormemente ridotta sacrificando la coerenza. Pertanto, il livello eventually consistent è il più adatto per gli scenari che non richiedono un'elevata coerenza dei dati, ma che richiedono prestazioni di ricerca rapidissime. Un esempio può essere il recupero di recensioni e valutazioni di prodotti Amazon con il livello eventually consistent.

Garantire il timestamp

Milvus realizza diversi livelli di coerenza introducendo il timestamp di garanzia (GuaranteeTs ).

Un GuaranteeTs serve a informare i nodi di interrogazione che una ricerca o una richiesta di interrogazione non verrà eseguita fino a quando tutti i dati precedenti al GuaranteeTs non potranno essere visti dai nodi di interrogazione. Quando si specifica il livello di consistenza, questo corrisponde a un valore specifico di GuaranteeTs. A diversi valori di GuaranteeTs corrispondono diversi livelli di consistenza:

  • Forte: GuaranteeTs è impostato come identico al timestamp più recente del sistema e i nodi di interrogazione attendono che tutti i dati precedenti al timestamp più recente del sistema siano visibili prima di elaborare la richiesta di ricerca o di interrogazione.

  • Stallo limitato: GuaranteeTs è impostato relativamente più piccolo del timestamp più recente del sistema e i nodi di interrogazione cercano su una vista di dati tollerabile e meno aggiornata.

  • Sessione: Il client utilizza il timestamp dell'ultima operazione di scrittura come GuaranteeTs, in modo che ogni client possa almeno recuperare i dati inseriti dallo stesso client.

  • Alla fine: GuaranteeTs viene impostato su un valore molto piccolo per saltare il controllo di coerenza. I nodi di query effettuano immediatamente una ricerca sulla vista dei dati esistenti.

Per ulteriori informazioni sul meccanismo che garantisce diversi livelli di coerenza in Milvus, si veda Come funziona GuaranteeTs.

Cosa succede dopo

Tradotto daDeepLogo

Try Managed Milvus for Free

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

Get Started
Feedback

Questa pagina è stata utile?