In short, the Data-Distribution Service for Real-Time Systems (DDS), is QoS-enabled data-centric (topic-based) publish subscribe middleware. In order to understand what this means, let's try to explain every relevant bit of the above definition
Publish/Subscribe (P/S): P/S is a communication paradigm under which different parties, namely publishers and subscribers, can asynchronously and anonymously exchange information based on their interest. Under this communication paradigm Publishers produce data, while Subscribers consume the portion of data they are interested in. The interest is usually captured under the form of a subscription, and depending on how subscriptions are expressed we usually distinguish between Topic-based P/S, Content-based P/S, Subject-based P/S, etc. In Topic-based P/S, subscription are expressed by means of topics, which usually are identified by means of unique names and an associated (dynamic) type. On the other hand, in Content-based P/S subscriptions are defined by a matching-expression which identifies the property of produced data that are of interest for a subscriber.
Data-Centric: DDS is Data-Centric in the sense that it makes it possible to organize its Topics in a relational model, thus providing support for identity and relations. As such, for each Topic can be defined one or more primary keys, and one or more foreign keys representing respectively the instance and the relationships with other Topics. In a sense, a DDS Topic can be thought as specifying a database table, where the Topic key(s) uniquely identify a row, and the topic attribute define the table columns. In DDS jargon a database row is called a Topic Instance, while the stream of update to a specific Topic Instance are called Topic Sample.
In DDS subscription are referred to a Topic, to a content-filtered Topic or a MultiTopic. A Topic subscription is pretty straightforward as express the interest to receive all the instance for a specific topic. A content-based Topic subscription allows to subscribe to a Topic but to receive only the samples the match the provided SQL92 filter. Finally, a multi-topic subscription provides a mean to subscribe to the JOIN of two or more Topics.
Since DDS supports relational data-modeling, it should not come at surprise that it also provides an Object/Relational Mapping (ORM), which in this context is called Data Local Reconstruction Layer(DLRL). But to avoid overloading you with information I'll explore this in another post, for the time being it is good to know that such a feature is available!
QoS-Enabled: DDS provides an extremely rich set of Quality of Service Policies that allow to control the most important non-functional properties of the Topics, as well as of the entities that generate and consume them. As an example, it is possible to control the timeliness properties, such as, deadline, time-based-filter, and latency-budget, it is possible to control the importance of data, is durability, etc.
I believe this is enough information for the time being. I'll provide more detailed explanation in later posts, but this should (hopefully) give a first idea of what DDS is capable of. Before I forget, some useful resources on the DDS can be found at:
- DDS Standard Portal
- DDS Forum
There are also a few intro paper that have been written by various folks, one of the latest it this.