Data Distribution Service ou DDS est une norme (ou standard de jure) spécifiée par l'OMG (Object Management Group), dont le rôle est de proposer une technologie évoluée d'échanges de données via un réseau. Conceptuellement, les données échangées sont regroupées dans une notion d'Espace Global de Données EGD (ou GDS, Global Data Space en anglais). Contrairement aux technologies de base de données, cet espace de données est totalement distribué dans le réseau pour éviter les problématiques liées aux goulots d'étranglement et aux pannes des gestionnaires de données.
Fonctionnellement, cette technologie s'apparente aux systèmes de bases de données relationnelles et distribuées, mais elle relâche certaines contraintes d'intégrité jugées incongrues avec le traitement en temps réel, telles que le maintien d'une cohérence forte entre les copies des données ou les mécanismes d'isolation. Contrairement aux systèmes de bases de données, DDS prône plutôt un modèle de cohérence dit modèle de « cohérence à terme » (Eventual consistency).
Grâce à l'adoption d'un Protocole d’interopérabilité standard RTPS (Real-Time Publish/Subscribe Protocol), plusieurs implémentations émanant de constructeurs différents peuvent interopérer, ce qui contribue à l’émergence de systèmes ouverts, par opposition aux protocoles propriétaires contrôlés par une seule organisation.
La technologie DDS s'adresse principalement aux industries soumises à de fortes contraintes de fiabilité, de performances et de déterminisme, telles que :
Architecturalement parlant, DDS se positionne au-dessus des protocoles TCP/IP et comble les couches de niveau 7, 6 et 5 (couche applicative) du Modèle OSI. DDS offre également une panoplie de services de gestion tels que la gestion de la Durabilité des données, des services de journalisation et de rejeu (Record and Replay) et des services de supervision (Monitoring Services).
DDS se présente sous la forme d'une couche logicielle dite intergicielle (middleware) dont la fonction principale est d'offrir une technologie d’échanges de données typées, classifiées par sujet (topics) tout en respectant une panoplie de qualités de services (QoSs) négociées entre les producteurs de données et leurs consommateurs.
Cette technologie offre un niveau d'abstraction qui cache la complexité des couches réseau sous-jacentes et gère de façon transparente les problématiques liées à la distribution des données dans le système à large échelle.
Les problématiques telles que la découverte dynamique des données, la localisation de ceux qui les produisent et ceux qui les consomment sont résolues automatiquement par le middleware.
DDS est un middleware centré sur les données (Data Centric Middleware), par opposition au middleware centrés sur les services (Service Oriented Middleware) ou au middleware centré sur les messages, MOM (Message Oriented Middleware), la donnée et les qualités de services qui lui sont associées deviennent l'unique contrat d’intégration entre les applications.
DDS offre un découplage spatio-temporel, dans la mesure où les applications n'ont pas besoin d’être simultanément actives au moment de la production et de la consommation de la donnée. De ce fait, la communication est fondamentalement asynchrone. Les applications ne sont pas obligées de se connaître, ni de connaître leur localisation (telles que les adresses IP ou les ports d’écoute, etc.).
Dans DDS, un objet ou une instance de donnée est identifié par :
Les qualités de services (QoS), couvrent un large spectre, telles que :
Les applications disposent d'interface de programmation standard (ou API), dites DCPS API (Data Centric Pub/Sub APIs), leur permettant principalement de :
DDS introduit aussi une notion de Partition et de Domaine pour regrouper les applications et les machines qui les hébergent dans des ensembles administratifs disjoints :
À titre d'exemple, si nous considérons l'espace aérien européen comme un domaine DDS unique représentant les vols qui traversent cet espace, les systèmes de radars produiront tous des données de type "Vol", les systèmes de surveillance, d'identification et de classification pourront consommer les données "Vol" à l’échelle de chaque pays (ou région). La notion de partition servira à créer des vues sur l'espace aérien en fonction de chaque pays (e.g Partition1=/Europe/France/* , Partition2=/Europe/Suisse/* , Partition 3=/Europe/*)
Le paradigme de communication de prédilection utilisé par DDS est celui basé sur la Publication/Souscription, on peut avoir "n" producteurs pour "m" consommateurs. Selon la qualité de service dite "Ownership", les consommateurs peuvent voir toutes les mises à jour des producteurs ou voir exclusivement celle d'un seul producteur (désigné comme étant le maître ou le possesseur de l'instance de la donnée).
Les données sont décrites dans le langage IDL défini par l'OMG, dont l'analyse permet au service DDS de générer via des précompilateurs d'IDL des points d’accès typés au middleware et spécifiques au langage de programmation cible.
La spécification DDS offre deux niveaux d'interface :
DDS s'appuie par ailleurs sur RTPS (Real-Time Publish/Subscribe Protocol) en tant que protocole d’interopérabilité.
À l'heure actuelle, deux produits commerciaux conformes à DDS se détachent :
D'autres produits sont répertoriés par l'OMG sur son site.
Émergent en outre des solutions open source, notamment l'implémentation proposée par :