Comprender el nivel de coherencia en la base de datos Milvus Vector - Parte II
Imagen_de_portada
Este artículo ha sido escrito por Jiquan Long y transcreado por Angela Ni.
En el blog anterior sobre consistencia, hemos explicado cuál es la connotación de la consistencia en una base de datos vectorial distribuida, hemos cubierto los cuatro niveles de consistencia - fuerte, estancamiento limitado, sesión y eventual - soportados en la base de datos vectorial Milvus, y hemos explicado el escenario de aplicación más adecuado para cada nivel de consistencia.
En este artículo, seguiremos examinando el mecanismo que permite a los usuarios de la base de datos vectorial Milvus elegir con flexibilidad el nivel de consistencia ideal para diversos escenarios de aplicación. También proporcionaremos un tutorial básico sobre cómo ajustar el nivel de consistencia en la base de datos vectorial Milvus.
Ir a:
- El mecanismo de marca de tiempo subyacente
- Marca de tiempo de garantía
- Niveles de consistencia
- ¿Cómo ajustar el nivel de consistencia en Milvus?
El mecanismo de marca de tiempo subyacente
Milvus utiliza el mecanismo de marca de tiempo para garantizar diferentes niveles de consistencia cuando se realiza una búsqueda o consulta vectorial. Time Tick es la marca de agua de Milvus que actúa como un reloj en Milvus y significa en qué punto del tiempo se encuentra el sistema Milvus. Cada vez que se envía una solicitud de lenguaje de manipulación de datos (DML) a la base de datos vectorial Milvus, asigna una marca de tiempo a la solicitud. Como se muestra en la siguiente figura, cuando se insertan nuevos datos en la cola de mensajes, por ejemplo, Milvus no sólo marca una marca de tiempo en estos datos insertados, sino que también inserta marcas de tiempo a intervalos regulares.
marca de tiempo
Tomemos como ejemplo syncTs1
en la figura anterior. Cuando los consumidores posteriores, como los nodos de consulta, ven syncTs1
, los componentes consumidores entienden que todos los datos insertados antes de syncTs1
se han consumido. En otras palabras, las solicitudes de inserción de datos cuyos valores de marca de tiempo sean inferiores a syncTs1
dejarán de aparecer en la cola de mensajes.
Marca de tiempo de garantía
Como se ha mencionado en la sección anterior, los componentes consumidores posteriores, como los nodos de consulta, obtienen continuamente mensajes de solicitudes de inserción de datos y marcas de tiempo de la cola de mensajes. Cada vez que se consume un tick de tiempo, el nodo de consulta marcará este tick de tiempo consumido como tiempo útil - ServiceTime
y todos los datos insertados antes de ServiceTime
son visibles para el nodo de consulta.
Además de ServiceTime
, Milvus también adopta un tipo de marca de tiempo - marca de tiempo de garantía (GuaranteeTS
) para satisfacer la necesidad de varios niveles de consistencia y disponibilidad por parte de diferentes usuarios. Esto significa que los usuarios de la base de datos vectorial Milvus pueden especificar GuaranteeTs
para informar a los nodos de consulta de que todos los datos anteriores a GuaranteeTs
deben ser visibles e intervenir cuando se realice una búsqueda o consulta.
Suele haber dos escenarios cuando el nodo de consulta ejecuta una petición de búsqueda en la base de datos vectorial Milvus.
Escenario 1: Ejecutar la petición de búsqueda inmediatamente
Como se muestra en la siguiente figura, si GuaranteeTs
es menor que ServiceTime
, los nodos de consulta pueden ejecutar la petición de búsqueda inmediatamente.
ejecutar_inmediatamente
Escenario 2: Esperar hasta que "ServiceTime > GuaranteeTs"
Si GuaranteeTs
es mayor que ServiceTime
, los nodos de consulta deben seguir consumiendo time tick de la cola de mensajes. Las peticiones de búsqueda no pueden ejecutarse hasta que ServiceTime
sea mayor que GuaranteeTs
.
wait_search
Niveles de coherencia
Por lo tanto, el GuaranteeTs
es configurable en la petición de búsqueda para alcanzar el nivel de consistencia especificado por usted. Un GuaranteeTs
con un valor grande asegura una fuerte consistencia a costa de una alta latencia de búsqueda. Y un GuaranteeTs
con un valor pequeño reduce la latencia de búsqueda pero la visibilidad de los datos se ve comprometida.
GuaranteeTs
en Milvus es un formato de marca de tiempo híbrido. Y el usuario no tiene ni idea del TSO dentro de Milvus. Por lo tanto, especificar el valor deGuaranteeTs
es una tarea demasiado complicada para los usuarios. Para ahorrar problemas a los usuarios y proporcionarles una experiencia óptima, Milvus sólo requiere que los usuarios elijan el nivel de consistencia específico, y la base de datos vectorial de Milvus gestionará automáticamente el valor de GuaranteeTs
para los usuarios. Es decir, el usuario de Milvus sólo tiene que elegir entre los cuatro niveles de consistencia: Strong
, Bounded
, Session
, y Eventually
. Y cada uno de los niveles de consistencia corresponde a un determinado valor GuaranteeTs
.
La siguiente figura ilustra el GuaranteeTs
para cada uno de los cuatro niveles de consistencia en la base de datos vectorial Milvus.
garantía_ts
La base de datos vectorial Milvus admite cuatro niveles de consistencia:
CONSISTENCY_STRONG
:GuaranteeTs
se establece en el mismo valor que la última marca de tiempo del sistema, y los nodos de consulta esperan hasta que el tiempo de servicio proceda a la última marca de tiempo del sistema para procesar la solicitud de búsqueda o consulta.CONSISTENCY_EVENTUALLY
Para omitir la comprobación de coherencia:GuaranteeTs
se establece en un valor insignificantemente inferior a la última marca de tiempo del sistema para omitir la comprobación de coherencia. Los nodos de consulta buscan inmediatamente en la vista de datos existente.CONSISTENCY_BOUNDED
GuaranteeTs
se establece en un valor relativamente menor que la última marca de tiempo del sistema, y los nodos de consulta buscan en una vista de datos tolerablemente menos actualizada.CONSISTENCY_SESSION
: El cliente utiliza la marca de tiempo de la última operación de escritura comoGuaranteeTs
para que cada cliente pueda al menos recuperar los datos insertados por sí mismo.
¿Cómo ajustar el nivel de consistencia en Milvus?
Milvus permite ajustar el nivel de consistencia cuando se crea una colección o se realiza una búsqueda o consulta.
Realizar una búsqueda de similitud vectorial
Para realizar una búsqueda de similitud vectorial con el nivel de consistencia que desee, simplemente establezca el valor para el parámetro consistency_level
como Strong
, Bounded
, Session
, o Eventually
. Si no establece el valor para el parámetro consistency_level
, el nivel de consistencia será Bounded
por defecto. El ejemplo realiza una búsqueda de similitud vectorial con la consistencia Strong
.
results = collection.search(
data=[[0.1, 0.2]],
anns_field="book_intro",
param=search_params,
limit=10,
expr=None,
consistency_level="Strong"
)
Realizar una consulta vectorial
De forma similar a la realización de una búsqueda de similitud vectorial, puede especificar el valor para el parámetro consistency_level
al realizar una consulta vectorial. En el ejemplo se realiza una consulta vectorial con la coherencia Strong
.
res = collection.query(
expr = "book_id in [2,4,6,8]",
output_fields = ["book_id", "book_intro"],
consistency_level="Strong"
)
Próximos pasos
Con el lanzamiento oficial de Milvus 2.1, hemos preparado una serie de blogs presentando las nuevas características. Lea más en esta serie de blogs:
- Cómo utilizar datos de cadenas para potenciar sus aplicaciones de búsqueda por similitud
- Uso de Milvus integrado para instalar y ejecutar Milvus con Python de forma instantánea
- Aumente el rendimiento de lectura de su base de datos vectorial con réplicas en memoria
- Comprender el nivel de consistencia en la base de datos vectorial Milvus
- Comprender el nivel de consistencia en la base de datos vectorial de Milvus (Parte II)
- ¿Cómo Garantiza la Seguridad de los Datos la Base de Datos Vectorial de Milvus?
- El mecanismo de marca de tiempo subyacente
- Marca de tiempo de garantía
- Niveles de coherencia
- ¿Cómo ajustar el nivel de consistencia en Milvus?
- Próximos pasos
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word