OrbitDB : une base de données pair-à-pair pour le web décentralisé
pour différents modèles de données et cas d'utilisation

Les bases de données pair-à-pair sont apparues avec la montée des échanges d’informations entre des systèmes décentralisés autonomes et éventuellement hétérogènes sur le Web. Dérivée de l'application de chat Orbit, OrbitDB est une base de données pair-à-pair basée sur le protocole IPFS (InterPlanetary File System). OrbitDB fournit divers types de bases de données pour différents modèles de données et cas d'utilisation. Elle a été construite pour les applications décentralisées (dApps), les applications de la blockchain et les applications Web de première ligne.

OrbitDB est aussi une base de données distribuée et sans serveur. Selon le référentiel du projet, il utilise IPFS comme stockage de données et IPFS Pubsub pour synchroniser automatiquement les bases de données avec les pairs. Il utilise des CRDT (Conflict-free Replicated Data Type) pour des fusions de bases de données sans conflit. En effet, les CRDT (types de données répliquées sans conflit) sont des types de structures de données dont les répliques en réseau peuvent être mises à jour simultanément et indépendamment sans coordination des répliques.

C’est une façon de faire qui lui confère plusieurs avantages. En outre, OrbitDB utilise le protocole IPFS qui fonctionne comme un CDN distribué. C’est un protocole pair-à-pair de distribution de contenu adressable par hypermédia. IPFS ne dépend pas de serveurs centralisés. Il vise à connecter un ensemble d'équipements informatiques avec le même système de fichiers. IPFS est semblable au World Wide Web, à la différence qu'il peut être vu comme un essaim (Swarm) BitTorrent unique, qui échange des objets au sein d'un dépôt Git.


IFPS 0.5.0 a été publié la semaine dernière et rend la recherche et le partage de données sur le réseau beaucoup plus rapides qu’avant, grâce à des améliorations sur la logique DHT. À partir de cette version, un routage et une fourniture plus efficaces réduisent l'utilisation de la bande passante et le trafic en arrière-plan. L’équipe d’IFPS a aussi mis à jour le transport expérimental QUIC, réduisant la latence de connexion et les allers-retours avec pour but d'en faire la prochaine version par défaut.

IFPS a été développé par le dénommé Samuli Pöyhtäri à Berlin et financé par Protocol Labs. Samuli a ensuite fondé Haja Networks. Le projet OrbitDB relève en effet entièrement de Haja Networks. Pour l’instant, il est encore dans une version alpha. Cela signifie qu'OrbitDB n'a pas encore fait l'objet d'un audit de sécurité et que les API de programmation et les formats de données peuvent encore changer. « Nous vous encourageons à contacter les responsables si vous envisagez d'utiliser OrbitDB dans des systèmes critiques », ont écrit ses développeurs.

C’est une implémentation JavaScript et elle fonctionne à la fois dans les navigateurs et Node.js avec un support pour Linux, macOS et Windows. La version minimale de Node.js requise pour l'essayer est la 8.6.0 en raison de l'utilisation de la syntaxe spread (...). Les versions LTS sont les versions les plus conseillées. Pour permettre d’utiliser OrbitDB avec les anciennes versions de Node.js, l’équipe a fourni une version compatible avec ES5 par le biais du paquet npm, localisé dans le répertoire dist/es5/ lorsqu'il est téléchargé et installé à l'aide de npm.

Par ailleurs, OrbitDB est aussi un logiciel qui fournit divers types de bases de données pour différents modèles de données et cas d'utilisation, dont en voici quelques-unes :

  • log : un journal immuable (en annexe) avec un historique traversable. Elle est utile pour les “derniers N” cas d'utilisation ou comme file d'attente de messages ;
  • feed : un journal mutable avec un historique traversable. Des entrées peuvent être ajoutées et supprimées. Utile pour les cas d'utilisation de type “panier d'achats”, ou par exemple comme un flux de messages de blog ou de “tweets” ;
  • keyvalue : une base de données de valeurs clés comme votre base de données de valeurs clés préférée ;
  • docs : une base de données orientée documents dans laquelle les documents au format JSON peuvent être stockés et indexés par une clé spécifique. Elle est utile pour construire des index de recherche ou contrôler la version des documents et des données ;
  • counter : une base de données utile pour compter les événements séparément des données de journal/alimentation.

Toutes les bases de données sont implémentées en plus de l'ipfs-log, une structure de données répliquées (CRDT) immuable, basée sur les opérations et sans conflit pour les systèmes distribués. Si aucun des types de bases de données OrbitDB ne correspond à vos besoins ou si vous avez besoin de fonctionnalités spécifiques, vous pouvez facilement mettre en place et utiliser votre propre base de données personnalisée.

Sources : OrbitDB, Page GitHub du projet

Et vous ?

Qu'en pensez-vous ?

Voir aussi

La version 0.5.0 d'IPFS, le protocole pair-à-pair de distribution de contenu, est disponible, la recherche et l'extraction de données sont désormais 5 fois plus rapides

Plus de 51 millions de comptes utilisateurs de l'ancien service peer-to-peer iMesh en vente des millions avec des mots de passe faibles

Le prétendu inventeur du Bitcoin chercherait à breveter les composants fondamentaux de toute blockchain, cryptomonnaie ou base de données distribuée

Microsoft présente une préversion de son système décentralisé d'identification. ION s'appuie sur la blockchain Bitcoin