Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Le Framework Fluid fournit aux développeurs des structures de données distribuées (DDS) qui garantissent automatiquement que chaque client connecté a accès au même état. Les API fournies par les DDS sont conçues pour être familières aux programmeurs qui ont déjà utilisé des structures de données courantes.
Remarque
Cet article suppose que vous êtes familiarisé avec l’introduction de structures de données distribuées sur fluidframework.com.
Une structure de données distribuée se comporte comme une structure de données locale. Votre code peut y ajouter des données, supprimer des données, les mettre à jour, etc. Toutefois, un DDS n’est pas un objet local. Une DDS peut également être modifiée par d’autres clients qui exposent le même conteneur parent du DDS. Étant donné que les utilisateurs peuvent modifier simultanément les mêmes DDS, vous devez prendre en compte les DDS à utiliser pour modéliser vos données.
Remarque
Signification de 'simultanément'
Deux clients ou plus sont dits apporter une modification simultanément s’ils effectuent chacun une modification avant qu’ils n’aient reçu les modifications apportées par le serveur.
Le choix de la structure de données appropriée pour votre scénario peut améliorer les performances et la structure de code de votre application.
Les DDS varient les uns des autres par trois caractéristiques :
- Structure de données de base : par exemple, paire clé-valeur, séquence ou file d’attente.
- Autonomie du client : un DDS optimiste permet à tout client de modifier unilatéralement une valeur et la nouvelle valeur est relayée à tous les autres clients. Mais un DDS consensus autorise uniquement une modification si elle est acceptée par d’autres clients par un processus de consensus.
- Stratégie de fusion : stratégie qui détermine la façon dont les modifications en conflit des clients sont résolues.
Ci-dessous, nous avons énuméré les structures de données et décrit quand elles peuvent être les plus utiles.
Données clé-valeur
Ces DDS sont utilisés pour stocker des données clé-valeur. Elles sont optimistes et utilisent une stratégie de type last-writer-wins (dernière version valide). Bien que la valeur d’une paire puisse être un objet complexe, la valeur d’une paire donnée ne peut pas être modifiée directement ; la valeur entière doit être remplacée par une nouvelle valeur contenant les modifications souhaitées, entières et entières.
- SharedMap : structure de données clé-valeur de base.
Scénarios de clé-valeur
Les structures de données clé-valeur sont le choix le plus courant pour de nombreux scénarios.
- Données de préférence utilisateur.
- État actuel d’une enquête.
- Configuration d’une vue.
Problèmes courants et bonnes pratiques pour les DDS clé-valeur
- Le stockage d’un compteur dans un SharedMap aura un comportement inattendu. Utilisez plutôt SharedCounter.
- Le stockage de tableaux, de listes ou de journaux dans une entrée clé-valeur peut entraîner un comportement inattendu, car les utilisateurs ne peuvent pas modifier de manière collaborative des parties d’une entrée. Essayez de stocker les données de tableau ou de liste dans une instance SharedSequence ou SharedInk.
- Le stockage d’un grand nombre de données dans une entrée clé-valeur peut entraîner des problèmes de performances ou de fusion. Chaque mise à jour met à jour la valeur entière au lieu de fusionner deux mises à jour. Essayez de fractionner les données sur plusieurs clés.
Séquences
Ces DDS sont utilisés pour stocker des données séquentielles. Ils sont optimistes. Les structures de données de séquence sont utiles lorsque vous devez ajouter ou supprimer des données à un index spécifié dans une liste ou un tableau. Contrairement aux structures de données clé-valeur, les séquences ont un ordre séquentiel et peuvent gérer des insertions simultanées de plusieurs utilisateurs.
- SharedNumberSequence : séquence de nombres.
- SharedObjectSequence : séquence d’objets bruts.
Scénarios de séquence
- Listes
- Chronologies
Problèmes courants et bonnes pratiques pour les DDS de séquence
- Stockez uniquement des données immuables en tant qu’élément dans une séquence. La seule façon de modifier la valeur d’un élément consiste à la supprimer d’abord de la séquence, puis à insérer une nouvelle valeur à la position où l’ancienne valeur était. Toutefois, étant donné que d’autres clients peuvent insérer et supprimer, il n’existe aucun moyen fiable d’obtenir la nouvelle valeur dans la position souhaitée.
Chaînes
Le DDS SharedString est utilisé pour les données de texte non structurées qui peuvent être modifiées en collaboration. C’est optimiste.
-
SharedString-- structure de données pour la gestion du texte collaboratif.
Scénarios de chaîne
- Éditeurs de texte
Voir aussi
Pour en savoir plus sur les DDS et leur utilisation, consultez les sections suivantes de fluidframework.com :