🚀 Prueba Zilliz Cloud, el Milvus completamente gestionado, gratis—¡experimenta un rendimiento 10 veces más rápido! Prueba Ahora>>

milvus-logo
LFAI
  • Home
  • Blog
  • Comprender el nivel de coherencia en la base de datos de vectores Milvus

Comprender el nivel de coherencia en la base de datos de vectores Milvus

  • Engineering
August 29, 2022
Chenglong Li

Cover_image Imagen_de_portada

Este artículo ha sido escrito por Chenglong Li y transcrito por Angela Ni.

¿Te has preguntado alguna vez por qué a veces los datos que has borrado de la base de datos vectorial de Mlivus siguen apareciendo en los resultados de búsqueda?

Una razón muy probable es que no haya configurado el nivel de consistencia adecuado para su aplicación. El nivel de consistencia en una base de datos vectorial distribuida es crítico, ya que determina en qué momento una escritura de datos concreta puede ser leída por el sistema.

Por lo tanto, este artículo pretende desmitificar el concepto de consistencia y profundizar en los niveles de consistencia soportados por la base de datos vectorial Milvus.

Ir a:

Qué es la consistencia

Antes de empezar, es necesario aclarar la connotación de consistencia en este artículo, ya que la palabra "consistencia" es un término sobrecargado en la industria informática. La consistencia en una base de datos distribuida se refiere específicamente a la propiedad que asegura que cada nodo o réplica tiene la misma visión de los datos cuando escribe o lee datos en un momento dado. Por tanto, aquí hablamos de consistencia como en el teorema CAP.

Para dar servicio a las grandes empresas en línea del mundo moderno, se suelen adoptar múltiples réplicas. Por ejemplo, el gigante del comercio electrónico Amazon replica los datos de sus pedidos o SKU en varios centros de datos, zonas o incluso países para garantizar una alta disponibilidad del sistema en caso de caída o fallo del mismo. Esto plantea un reto al sistema: la coherencia de los datos en las múltiples réplicas. Sin consistencia, es muy probable que el artículo eliminado de su cesta de Amazon reaparezca, lo que causaría una muy mala experiencia al usuario.

De ahí que necesitemos distintos niveles de coherencia de datos para distintas aplicaciones. Y por suerte, Milvus, una base de datos para IA, ofrece flexibilidad en el nivel de consistencia y puede establecer el nivel de consistencia que mejor se adapte a su aplicación.

Consistencia en la base de datos vectorial Milvus

El concepto de nivel de consistencia se introdujo por primera vez con el lanzamiento de Milvus 2.0. La versión 1.0 de Milvus no era una base de datos vectorial distribuida, por lo que entonces no incluíamos niveles ajustables de consistencia. Milvus 1.0 vacía los datos cada segundo, lo que significa que los nuevos datos son visibles casi inmediatamente después de su inserción y Milvus lee la vista de datos más actualizada en el momento exacto en que llega una solicitud de búsqueda o consulta de similitud vectorial.

Sin embargo, Milvus fue refactorizado en su versión 2.0 y Milvus 2.0 es una base de datos vectorial distribuida basada en un mecanismo pub-sub. El teorema PACELC señala que un sistema distribuido debe establecer un equilibrio entre consistencia, disponibilidad y latencia. Además, diferentes niveles de consistencia sirven para diferentes escenarios. Por lo tanto, el concepto de consistencia se introdujo en Milvus 2.0 y admite el ajuste de los niveles de consistencia.

Cuatro niveles de consistencia en la base de datos vectorial Milvus

Milvus admite cuatro niveles de consistencia: fuerte, estancamiento limitado, sesión y eventual. Y un usuario de Milvus puede especificar el nivel de consistencia cuando crea una colección o realiza una búsqueda o consulta de similitud vectorial. Esta sección continuará explicando en qué se diferencian estos cuatro niveles de consistencia y para qué escenario son los más adecuados.

Fuerte

Fuerte es el nivel de coherencia más alto y estricto. Garantiza que los usuarios puedan leer la última versión de los datos.

Strong Fuerte

Según el teorema PACELC, si el nivel de consistencia se establece en fuerte, la latencia aumentará. Por lo tanto, recomendamos elegir un nivel de consistencia fuerte durante las pruebas funcionales para garantizar la precisión de los resultados de las pruebas. Y la consistencia fuerte también es la más adecuada para aplicaciones que tienen una demanda estricta de consistencia de datos a costa de la velocidad de búsqueda. Un ejemplo puede ser un sistema financiero en línea que se ocupe del pago y la facturación de pedidos.

Estancamiento limitado

El estancamiento limitado, como su nombre indica, permite la inconsistencia de los datos durante un cierto periodo de tiempo. Sin embargo, por lo general, los datos siempre son globalmente coherentes fuera de ese periodo de tiempo.

Bounded_staleness Estancamiento_limitado

El estancamiento limitado es adecuado para escenarios que necesitan controlar la latencia de la búsqueda y pueden aceptar la invisibilidad esporádica de los datos. Por ejemplo, en sistemas de recomendación como los motores de recomendación de vídeo, la invisibilidad de datos de vez en cuando tiene un impacto realmente pequeño en la tasa de recuperación general, pero puede aumentar significativamente el rendimiento del sistema de recomendación. Un ejemplo puede ser una aplicación para seguir el estado de tus pedidos online.

Sesión

La sesión garantiza que todas las escrituras de datos puedan percibirse inmediatamente en lecturas durante la misma sesión. En otras palabras, cuando se escriben datos a través de un cliente, los datos recién insertados se convierten instantáneamente en lecturas.

Session Sesión

Recomendamos elegir sesión como nivel de consistencia para aquellos escenarios en los que la demanda de consistencia de datos en la misma sesión es alta. Un ejemplo puede ser la eliminación de los datos de una entrada de libro del sistema de la biblioteca, y después de confirmar la eliminación y actualizar la página (una sesión diferente), el libro ya no debería ser visible en los resultados de búsqueda.

Eventual

No hay un orden garantizado de lecturas y escrituras, y las réplicas convergen eventualmente al mismo estado dado que no se realizan más operaciones de escritura. Bajo consistencia eventual, las réplicas comienzan a trabajar en las peticiones de lectura con los últimos valores actualizados. La consistencia eventual es el nivel más débil de los cuatro.

Eventual Eventual

Sin embargo, según el teorema PACELC, la latencia de búsqueda puede reducirse enormemente si se sacrifica la consistencia. Por lo tanto, la consistencia eventual es la más adecuada para situaciones en las que no hay una gran demanda de consistencia de datos, pero se requiere un rendimiento de búsqueda rapidísimo. Un ejemplo puede ser la recuperación de reseñas y valoraciones de productos de Amazon con consistencia eventual.

Nota final

Volviendo a la pregunta planteada al principio de este artículo, los datos borrados siguen apareciendo como resultados de búsqueda porque el usuario no ha elegido el nivel de consistencia adecuado. El valor por defecto para el nivel de consistencia es "bounded staleness" (Bounded) en la base de datos vectorial Milvus. Por lo tanto, la lectura de datos podría retrasarse y Milvus podría leer la vista de datos antes de que usted realizara operaciones de borrado durante una búsqueda o consulta de similitud. Sin embargo, este problema es sencillo de resolver. Todo lo que tiene que hacer es ajustar el nivel de coherencia al crear una colección o realizar una búsqueda o consulta de similitud vectorial. Muy sencillo.

En la próxima entrada, desvelaremos el mecanismo que hay detrás y explicaremos cómo la base de datos vectorial Milvus alcanza diferentes niveles de consistencia. Permanezca atento.

Lo que viene a continuación

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:

Try Managed Milvus for Free

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

Get Started

Like the article? Spread the word

Sigue Leyendo