« Type de Données Répliqué sans Conflit » ( TDRC )
Un article qui parle d’informatique théorique et de gestion de données au travers des réseaux
Comment gérer la copie, la modification et la mise en commun de donnée comme un texte de manière automatique et décentralisé ?
C’est à cette question que tente de répondre cette technique CRDT.
Je précise tout de suite que je n’ai jamais utilisé CRDT en tant que développeur.
C’est quoi CRDT ?
C’est une structure de donnée qui simplifie le stockage distribué et la conception d’application multi-utilisateurs.
Il est possible de passer par un serveur centrale ou directement de pair-à-pair ( P2P ) pour faire les copies et pour synchroniser les changements apporté de chaque côté.
Chaque copie d’une jeu de donnée est appelé réplique.
Les avantages d’un tel système sont :
- l’indépendance de copies : changement de manière désynchronisé et sans coordination centrale
- un algorithme se charge de la mise en commun des changements, il fait parti du « Type de Donnée »
- même si les répliques ont différents états à un moment donné, leur convergence est garantie.
À quoi ça sert CRDT ?
Si vous avez à gérer une appli avec deux versions web et appli pour mobile, vous aller vite voir l’intérêt.
Un site web plus une appli mobile
Un exemple où CRDT serait utile : pour le portail de Saint-Pierre et Miquelon https://www.spm-patrimoine-naturel.fr/
Nous avons développé un site web qui affiche toute les observations du milieu naturel et qui permet la coopération pour l’identification. Ce site utilise la bonne vieille méthode du client/serveur. Ça marche très bien.
Pour l’application mobile qui est majoritairement hors ligne en revanche nous avons décidé de ne pas permettre l’édition des observations une fois celle-ci sur le serveur pour éviter toutes incohérences.
Nous aurions pu utiliser ce système de « Données Répliqué sans Conflit » pour gérer ce cas d’usage.
Quelques exemples
- Apple Notes
- Nimbus Note
- TomTom
- et beaucoup de framework et de librairies
Sources
Je me suis très largement appuyé sur la documentation officielle et partiellement traduit les sources suivantes :
- https://crdt.tech/
- https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type
Leave a Reply