DéveloppeurWeb.Com
    DéveloppeurWeb.Com
    • Agile Zone
    • AI Zone
    • Cloud Zone
    • Database Zone
    • DevOps Zone
    • Integration Zone
    • Web Dev Zone
    DéveloppeurWeb.Com
    Home»Database Zone»Comprendre le niveau de cohérence dans la base de données de vecteurs Milvus (Partie II)
    Database Zone

    Comprendre le niveau de cohérence dans la base de données de vecteurs Milvus (Partie II)

    novembre 22, 2022
    Comprendre le niveau de cohérence dans la base de données de vecteurs Milvus (Partie II)
    Share
    Facebook Twitter Pinterest Reddit WhatsApp Email

    Dans le blog précédent sur la cohérence, nous avons expliqué ce qu’est la connotation de la cohérence dans une base de données vectorielles distribuée, couvert les quatre niveaux de cohérence – obsolescence forte, limitée, session et éventuellement pris en charge dans la base de données vectorielles Milvus, et expliqué le meilleur- scénario d’application adapté à chaque niveau de cohérence.

    Pour offrir un récapitulatif rapide, la cohérence dans une base de données distribuée fait spécifiquement référence à la propriété qui garantit que chaque nœud ou réplica a la même vue des données lors de l’écriture ou de la lecture des données à un moment donné. Par conséquent, le mot cohérence dont nous parlons dans ce blog correspond à la lettre « C » dans le théorème CAP.

    Milvus prend en charge quatre niveaux de cohérence :

    1. Fort : le niveau de cohérence le plus élevé et le plus strict. Il garantit que les utilisateurs peuvent lire la dernière version des données.
    2. Obsolescence limitée : permet l’incohérence des données pendant une certaine période. Cependant, les données sont généralement toujours globalement cohérentes hors de cette période.
    3. Session : Garantit que toutes les écritures de données peuvent être immédiatement perçues dans les lectures au cours de la même session.
    4. Éventuel : il n’y a pas d’ordre garanti de lectures et d’écritures, et les répliques finissent par converger vers le même état, étant donné qu’aucune autre opération d’écriture n’est effectuée.

    Dans cet article, nous continuerons à examiner le mécanisme qui permet aux utilisateurs de la base de données vectorielles Milvus de choisir de manière flexible le niveau de cohérence idéal pour divers scénarios d’application. Nous fournirons également un didacticiel de base sur la façon de régler le niveau de cohérence dans la base de données vectorielle Milvus.

    Le mécanisme de chronométrage sous-jacent

    Milvus utilise le mécanisme de chronométrage pour assurer différents niveaux de cohérence lorsqu’une recherche ou une requête vectorielle est effectuée. Time Tick est le filigrane de Milvus, qui agit comme une horloge dans Milvus et indique à quel moment se trouve le système Milvus. Chaque fois qu’une requête en langage de manipulation de données (DML) est envoyée à la base de données vectorielle Milvus, elle attribue un horodatage à la requête. Comme le montre la figure ci-dessous, lorsque de nouvelles données sont insérées dans la file d’attente de messages, par exemple, Milvus marque non seulement un horodatage sur ces données insérées, mais insère également des ticks de temps à intervalles réguliers.

    horodatage

    Horodatage et tic-tac.

    Prenons syncTs1 dans la figure ci-dessus à titre d’exemple. Lorsque les consommateurs en aval comme les nœuds de requête voient syncTs1les composants consommateurs comprennent que toutes les données insérées avant syncTs1 a été consommé. En d’autres termes, les demandes d’insertion de données dont les valeurs d’horodatage sont inférieures à syncTs1 n’apparaîtra plus dans la file d’attente des messages.

    Horodatage de garantie

    Comme mentionné dans la section précédente, les composants consommateurs en aval, tels que les nœuds de requête, obtiennent en permanence des messages de demandes d’insertion de données et de temps de la file d’attente de messages. Chaque fois qu’un tick de temps est consommé, le nœud de requête marquera ce tick de temps consommé comme le temps utilisable – ServiceTime, et toutes les données insérées avant ServiceTime sont visibles pour le nœud de requête.

    En plus de ServiceTimeMilvus adopte également un type d’horodatage à garantie d’horodatage (GuaranteeTS) pour satisfaire le besoin de différents niveaux de cohérence et de disponibilité par différents utilisateurs. Cela signifie que les utilisateurs de la base de données vectorielles Milvus peuvent spécifier GuaranteeTs pour informer les nœuds de requête que toutes les données avant GuaranteeTs doivent être visibles et impliqués lorsqu’une recherche ou une requête est effectuée.

    Il existe généralement deux scénarios lorsque le nœud de requête exécute une requête de recherche dans la base de données vectorielle Milvus.

    Scénario 1 : Exécuter la demande de recherche immédiatement

    Comme le montre la figure ci-dessous, si GuaranteeTs est plus petite que ServiceTimeles nœuds de requête peuvent exécuter la requête de recherche immédiatement.

    Exécutez les demandes de recherche immédiatement.

    Scénario 2 : attendre jusqu’à « ServiceTime > GuaranteeTs »

    Si GuaranteeTs est supérieur à ServiceTime, les nœuds de requête doivent continuer à consommer des ticks de temps de la file d’attente de messages. Les demandes de recherche ne peuvent pas être exécutées tant que ServiceTime est supérieur à GuaranteeTs.

    wait_search

    Attendez ServiceTime> GuaranteeTs.

    Niveaux de cohérence

    Par conséquent, la GuaranteeTs sont configurables dans la requête de recherche pour atteindre le niveau de cohérence que vous avez spécifié. UN GuaranteeTs avec une grande valeur assure une cohérence forte au prix d’une latence de recherche élevée. Et un GuaranteeTs avec une petite valeur réduit la latence de recherche, mais la visibilité des données est compromise.

    GuaranteeTs dans Milvus est un format d’horodatage hybride. Et l’utilisateur n’a aucune idée du TSO à l’intérieur de Milvus. Par conséquent, en spécifiant la valeur deGuaranteeTs est une tâche beaucoup trop compliquée pour les utilisateurs. Pour éviter les ennuis aux utilisateurs et offrir une expérience utilisateur optimale, Milvus demande uniquement aux utilisateurs de choisir un niveau de cohérence spécifique. La base de données vectorielles Milvus gérera automatiquement la GuaranteeTs valeur pour les utilisateurs. C’est-à-dire; l’utilisateur Milvus n’a qu’à choisir parmi les quatre niveaux de cohérence : Strong, Bounded, Sessionet Eventually. Et chacun des niveaux de cohérence correspond à un certain GuaranteeTs évaluer.

    La figure ci-dessous illustre la GuaranteeTs pour chacun des quatre niveaux de cohérence dans la base de données vectorielles Milvus.

    garantie_ts

    Les Garanties correspondantes pour les quatre niveaux de cohérence dans Milvus.

    La base de données vectorielle Milvus prend en charge quatre niveaux de cohérence :

    1. CONSISTENCY_STRONG: GuaranteeTs sont définis sur la même valeur que le dernier horodatage système, et les nœuds de requête attendent que l’heure du service passe au dernier horodatage système pour traiter la requête de recherche ou de requête.
    2. CONSISTENCY_EVENTUALLY: GuaranteeTs est défini sur une valeur légèrement inférieure au dernier horodatage système pour ignorer la vérification de cohérence. Les nœuds de requête recherchent immédiatement sur la vue de données existante.
    3. CONSISTENCY_BOUNDED: GuaranteeTs est défini sur une valeur relativement inférieure au dernier horodatage système, et les nœuds de requête recherchent sur une vue de données tolérablement moins mise à jour.
    4. CONSISTENCY_SESSION: Le client utilise l’horodatage de la dernière opération d’écriture comme GuaranteeTs afin que chaque client puisse au moins récupérer les données insérées par lui-même.

    Comment régler le niveau de cohérence dans Milvus ?

    Milvus prend en charge le réglage du niveau de cohérence lors de la création d’une collection ou de la réalisation d’une recherche ou d’une requête.

    Effectuer une recherche de similarité vectorielle

    Pour effectuer une recherche de similarité vectorielle avec le niveau de cohérence que vous souhaitez, définissez simplement la valeur du paramètre consistency_level comme soit Strong, Bounded, Sessionou Eventually. Si vous ne définissez pas la valeur du paramètre consistency_levelle niveau de cohérence sera Bounded par défaut. L’exemple effectue une recherche de similarité vectorielle avec Strong cohérence.

    results = collection.search(
            data=[[0.1, 0.2]], 
            anns_field="book_intro", 
            param=search_params, 
            limit=10, 
            expr=None,
            consistency_level="Strong"
    )

    Effectuer une requête vectorielle

    Comme pour effectuer une recherche de similarité vectorielle, vous pouvez spécifier la valeur du paramètre consistency_level lors de la réalisation d’une requête vectorielle. L’exemple effectue une requête vectorielle avec Strong cohérence.

    res = collection.query(
      expr = "book_id in [2,4,6,8]", 
      output_fields = ["book_id", "book_intro"],
      consistency_level="Strong"
    )

    Share. Facebook Twitter Pinterest LinkedIn WhatsApp Reddit Email
    Add A Comment

    Leave A Reply Cancel Reply

    Catégories

    • Politique de cookies
    • Politique de confidentialité
    • CONTACT
    • Politique du DMCA
    • CONDITIONS D’UTILISATION
    • Avertissement
    © 2023 DéveloppeurWeb.Com.

    Type above and press Enter to search. Press Esc to cancel.