Consistencia
Este tema presenta los cuatro niveles de consistencia en Milvus y sus escenarios más adecuados. El mecanismo que garantiza la coherencia en Milvus también se trata en este tema.
Visión general
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 vista de los datos cuando escribe o lee datos en un momento dado.
Milvus soporta cuatro niveles de consistencia: fuerte, estancamiento limitado, sesión y eventual. El nivel de consistencia por defecto en Milvus es de caducidad limitada. Puede ajustar fácilmente el nivel de consistencia cuando realice una búsqueda monovectorial, una búsqueda híbrida o una consulta para que se adapte mejor a su aplicación.
Niveles de consistencia
Tal y como se define en el teorema PACELC, una base de datos distribuida debe establecer un equilibrio entre consistencia, disponibilidad y latencia. Una alta consistencia implica una gran precisión, pero también una alta latencia de búsqueda, mientras que una baja consistencia conlleva una rápida velocidad de búsqueda, pero una cierta pérdida de visibilidad de los datos. Por tanto, distintos niveles de coherencia se adaptan a distintos escenarios.
A continuación se explican las diferencias entre los cuatro niveles de consistencia soportados por Milvus y los escenarios a los que se adaptan.
Fuerte
Fuerte es el nivel más alto y estricto de consistencia. Garantiza que los usuarios puedan leer la última versión de los datos.
Consistencia fuerte
Según el teorema PACELC, si el nivel de consistencia se establece en fuerte, la latencia aumentará. Por lo tanto, recomendamos elegir una consistencia fuerte durante las pruebas funcionales para garantizar la precisión de los resultados de las pruebas. La consistencia fuerte también es la más adecuada para aplicaciones que exigen una consistencia estricta de los 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 son siempre globalmente consistentes fuera de ese periodo de tiempo.
Coherencia de la caducidad limitada
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ídeos, la invisibilidad de los datos a veces tiene un pequeño impacto en la tasa global de recuperación, pero puede aumentar significativamente el rendimiento del sistema de recomendación.
Sesión
La sesión garantiza que todas las escrituras de datos puedan percibirse inmediatamente en las 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.
Consistencia de 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.
Eventualmente
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 la consistencia de "eventualmente", 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.
Consistencia eventual
Sin embargo, según el teorema PACELC, la latencia de búsqueda puede reducirse enormemente sacrificando 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 ultrarrápido. Un ejemplo puede ser la recuperación de reseñas y valoraciones de productos de Amazon con el nivel eventualmente consistente.
Marca de tiempo de garantía
Milvus realiza diferentes niveles de consistencia introduciendo el sello de tiempo de garantía (GuaranteeTs).
Un GuaranteeTs sirve para informar a los nodos de consulta que una búsqueda o petición de consulta no se realizará hasta que todos los datos anteriores al GuaranteeTs puedan ser vistos por los nodos de consulta. Cuando se especifica el nivel de consistencia, el nivel de consistencia se asignará a un valor específico de GuaranteeTs. Diferentes valores de GuaranteeTs corresponden a diferentes niveles de consistencia:
Fuerte: GuaranteeTs se establece como idéntico a la marca de tiempo más reciente del sistema, y los nodos de consulta esperan hasta que todos los datos anteriores a la marca de tiempo más reciente del sistema puedan ser vistos, antes de procesar la petición de búsqueda o consulta.
Caducidad limitada: GuaranteeTs se establece relativamente más pequeña que la marca de tiempo más reciente del sistema, y los nodos de consulta buscan en una vista de datos tolerable y menos actualizada.
Sesión: El cliente utiliza la marca de tiempo de la última operación de escritura como GuaranteeTs, de modo que cada cliente pueda al menos recuperar los datos insertados por el mismo cliente.
Eventualmente: GuaranteeTs se establece en un valor muy pequeño para omitir la comprobación de coherencia. Los nodos de consulta buscan inmediatamente en la vista de datos existente.
Consulte Cómo funciona GuaranteeTs para obtener más información sobre el mecanismo que garantiza diferentes niveles de consistencia en Milvus.
Lo que sigue
- Aprenda a ajustar el nivel de consistencia cuando