SlideShare a Scribd company logo
1 of 57
Download to read offline
The Data Distribution Service
                 [For Real-Time Systems]
OpenSplice DDS




                                           Angelo CORSARO, Ph.D.
                                                   Chief Technology Officer
                                                   OMG DDS Sig Co-Chair
                                                              PrismTech
                                           angelo.corsaro@prismtech.com
OpenSplice DDS




             Background
Data Distribution Service
                 For Real-Time Systems




                                                                                                                                                                         Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐   Introduced in 2004 to address
                      the Data Distribution              Real-Timeliness                                                                                         Scale


                      challenges faced by a wide
                      class of Defense and
                      Aerospace Applications
OpenSplice DDS




                      Key requirement for the
                                                                   Parallelism      Determinism          Throughput, Availability   Scalability, Persistence, Security
                  ☐
                      standard were to deliver very    Systemic
                                                        Signal
                                                                     Data        Real-Time Information
                                                                                                         Near Real-Time Fault-
                                                                                                         Tolerant Information
                                                                                                                                       Complex Information

                      high and predictable
                                                                   Processing          Processing                                         Management
                                                      Processing                                              Processing



                      performance while scaling
                      from embedded to ultra-          Parallel Systems                                    Distributed Systems


                      large-scale deployments
Data Distribution Service
                 For Real-Time Systems




                                                                                                                                                                      Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐   Recommended by key              Real-Timeliness                                                                                         Scale


                      administration worldwide,
                      e.g. DoD, MoD, EUROCAE,
                      etc.
OpenSplice DDS




                      Widely adopted across
                                                                Parallelism      Determinism          Throughput, Availability   Scalability, Persistence, Security
                  ☐
                      several different domains,    Systemic
                                                     Signal
                                                                  Data        Real-Time Information
                                                                                                      Near Real-Time Fault-
                                                                                                      Tolerant Information
                                                                                                                                    Complex Information

                      e.g., Automated Trading,
                                                                Processing          Processing                                         Management
                                                   Processing                                              Processing



                      Simulations, SCADA,
                      Telemetry, etc.               Parallel Systems                                    Distributed Systems
Some Use Cases




                                                                                                                 Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                   Integrated Modular Vetronics    Training & Simulation Systems     Naval Combat Systems
OpenSplice DDS




                 Air Traffic Control & Management    Large Scale SCADA Systems      High Frequency Auto-Trading
Standards: What For?




                                                                           Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                Common “Language”
                   Data Model           +
OpenSplice DDS




                                 QoS Requirements

                                                        Interoperability
                     DDSI       Wire Interoperability
OpenSplice DDS




   DDS
                                        Application


    API Standard
                                                                                                    Standards: What For?



                   Portability




                           Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
OpenSplice DDS




      D
      D
    BaS ics
Data Distribution Service
                 For Real-Time Systems


                 DDS provides a Topic-Based Publish/




                                                                                                                       Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                 Subscribe abstraction based on:                                                      Data
                                                                                                     Reader
                                                                    Data
                                                                    Writer
                 ☐   Topics: data distribution subject’s
OpenSplice DDS




                                                                                                               Data
                                                                                                              Reader
                                                           Data                         TopicD
                                                           Writer
                     DataWriters: data producers
                                                                             TopicA
                 ☐
                                                                                                               Data
                                                                                       TopicB                 Reader
                                                           Data
                                                           Writer
                 ☐   DataReaders: data consumers                             TopicC
                                                                                           ...

                                                             Data                                         Data
                                                             Writer                                      Reader

                                                                             DDS Global Data Space
Data Distribution Service
                 For Real-Time Systems




                                                                                                                   Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐   DataWriters and DataReaders                                                 Data
                                                                                                 Reader

                      are automatically and
                                                                Data
                                                                Writer


                      dynamically matched by the
OpenSplice DDS




                                                                                                           Data
                                                                                                          Reader
                                                       Data                         TopicD
                      DDS Dynamic Discovery            Writer
                                                                         TopicA
                                                                                                           Data
                                                                                   TopicB                 Reader
                                                       Data
                  ☐   A rich set of QoS allows to      Writer
                                                                         TopicC
                                                                                       ...
                      control existential, temporal,     Data                                         Data
                      and spatial properties of data     Writer                                      Reader

                                                                         DDS Global Data Space
DDS Topics
                 ☐   A Topic defines a class of                    “TVehicleDynamics”
                     streams




                                                                                                      Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                                        Name
                 ☐   A Topic has associated a user
                     defined extensible type and a                      Topic




                                                                   Typ
                     set of QoS policies




                                                                                S
                                                                                        DURABILITY,




                                                                              Qo
OpenSplice DDS




                                                                        e
                                                                                         DEADLINE,
                 ☐   The Topic name, type and QoS     VehicleDynamics
                                                                                         PRIORITY,
                     defines the key functional and                                         …
                     non-functional invariants
                                                       struct VehicleDynamics {
                                                                                            IDL
                 ☐   Topics can be discovered or          long   vid;
                     locally defined                      long   x;   long   y;
                                                          long   dx; long    dy;};
                                                       #pragma keylist VehicleDynamics vid
Topic Instances
                  ☐   Each unique key value




                                                                                                                            Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                      identifies a unique stream
                      of data                          vid =701




                      DDS not only
                                                    vid =809                     struct VehicleStatus {
                  ☐                                                 Topic
                                                                                        long   vid;
OpenSplice DDS




                                                                                   long   x;   long   y;
                                                                                  long   dx; long    dy;};


                      demultiplexes “streams”
                                                                            #pragma keylist VehicleStatus vid

                                                    vid =977


                      but provides also lifecycle       Instances                                               Instances

                      information
                  ☐   A DDS DataWriter can
                      write multiple instances
OpenSplice DDS


                                                                                    Anatomy of a DDS Application




           Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
Anatomy of a DDS Application
                 [Scala API]

                 Domain
                                                                        Domain




                                                                                                Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  val dp = DomainParticipant(domainId)
                                                                       Participant



                                                         Publisher
      Topic
       Subscriber
OpenSplice DDS




                                                         DataWriter
                  DataReader
Anatomy of a DDS Application
                  [Scala API]

                 Domain
                                                                                                 Domain




                                                                                                                         Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                   val dp = DomainParticipant(domainId)
                                                                                                Participant

                 Session
                   // Create   a Publisher / Subscriber
                                                                                  Publisher
      Topic
       Subscriber
OpenSplice DDS




                   val pub =   Publisher(dp)
                   val sub =   Subscriber(dp)
                   // Create   a Topic
                   val topic   = Topic[VehicleDynamics](dp, “TVehicleDynamics”)


                                                                                  DataWriter
                  DataReader
Anatomy of a DDS Application
                  [Scala API]

                 Domain
                                                                                                    Domain




                                                                                                                               Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                   val dp = DomainParticipant(domainId)
                                                                                                   Participant

                 Session
                   // Create   a Publisher / Subscriber
                                                                                  Publisher
          Topic
         Subscriber
OpenSplice DDS




                   val pub =   Publisher(dp)
                   val sub =   Subscriber(dp)
                   // Create   a Topic
                   val topic   = Topic[VehicleDynamics](dp, “TVehicleDynamics”)


                 Reader/Writers for User Defined for Types                         DataWriter
                        DataReader
                   // Create a DataWriter/DataWriter
                   val writer = DataWriter[TempSensor](pub, topic)                              Reader/Writer for
                   val reader = DataReader[TempSensor](sub, topic)
                                                                                                application defined
                                                                                                   Topic Types
Anatomy of a DDS Application
                  [Scala API]

                 Domain
                                                                                                    Domain




                                                                                                                               Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                   val dp = DomainParticipant(domainId)
                                                                                                   Participant

                 Session
                   // Create   a Publisher / Subscriber
                                                                                  Publisher
          Topic
         Subscriber
OpenSplice DDS




                   val pub =   Publisher(dp)
                   val sub =   Subscriber(dp)
                   // Create   a Topic
                   val topic   = Topic[VehicleDynamics](dp, “TVehicleDynamics”)


                 Reader/Writers for User Defined for Types                         DataWriter
                        DataReader
                   // Write data
                   val data = new VehicleDynamics(101, 131, 107, 7, 5)
                   writer write data
                                                                                                Reader/Writer for
                   // But you can also write like this...                                       application defined
                   writer ! data                                                                   Topic Types
                   // Read new data and print it on the screen
                   (reader read) foreach (prinln)
Anatomy of a DDS Application
                 [DDS C++ API 2010]

                 Domain
                                                                                                    Domain




                                                                                                                               Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                   auto dp = DomainParticipant(domainId);
                                                                                                   Participant

                 Session
                   // Create a Publisher / Subscriber
                                                                                  Publisher
          Topic
         Subscriber
OpenSplice DDS




                   auto pub = Publisher(dp);
                   auto sub = Subscriber(dp);
                   // Create a Topic
                   auto topic = Topic<VehicleDynamics>(dp, “TVehicleDynamics”);


                 Reader/Writers for User Defined for Types                         DataWriter
                        DataReader
                   // Create a DataWriter/DataWriter
                   auto writer = DataWriter<TempSensor>(pub, topic);                            Reader/Writer for
                   auto reader = DataReader<TempSensor>(sub, topic);
                                                                                                application defined
                                                                                                   Topic Types
Anatomy of a DDS Application
                 [DDS C++ API 2010]

                 Domain
                                                                                                    Domain




                                                                                                                               Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                   auto dp = DomainParticipant(domainId);
                                                                                                   Participant

                 Session
                   // Create a Publisher / Subscriber
                                                                                  Publisher
          Topic
         Subscriber
OpenSplice DDS




                   auto pub = Publisher(dp);
                   auto sub = Subscriber(dp);
                   // Create a Topic
                   auto topic = Topic<VehicleDynamics>(dp, “TVehicleDynamics”);


                 Reader/Writers for User Defined for Types                         DataWriter
                        DataReader
                   // Write data
                   writer.write(VehicleDynamics(101, 131, 107, 7, 5));                          Reader/Writer for
                   // But you can also write like this...
                   writer << VehicleDynamics(101, 131, 107, 7, 5);
                                                                                                application defined
                                                                                                   Topic Types
                   // Read new data
                   auto data = reader.read();
OpenSplice DDS




            QoS
QoS Model
                 ☐   QoS-Policies control local and
                     end-to-end properties of DDS




                                                                                                                                                                                   Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                     entities
                                                                                                    Type Matching
                                                                                                                                       QoS matching


                                                       QoS             QoS                QoS                   QoS                   QoS                QoS              QoS

                 ☐   Local properties controlled by                                                             Topic

                     QoS are related resource usage                  Publisher
                                                                                                                          Name
                                                                                                                                                      Subscriber

                                                                                 ...   DataWriter      writes   Type       reads   DataReader
                                                                                                                                                ...
                 ☐   End-to-end properties
OpenSplice DDS




                                                                                                                    ...

                     controlled by QoS are related
                                                        DomainParticipant              DataWriter    writes     Type      reads    DataReader                  DomainParticipant

                                                                                                                          Name

                     to temporal and spatial aspects
                                                                                                                Topic



                     of data distribution                                                QoS                    QoS                    QoS




                 ☐   Some QoS-Policies are
                     matched based on a Request
                     vs. Offered Model thus QoS-
                     enforcement
QoS Policies
                 [T: Topic] [DR: DataReader] [DW: DataWriter] [P: Publisher]   [S: Subscriber]     [DP: Domain Participant]

                                   QoS Policy      Applicability     RxO        Modifiable




                                                                                                                              Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                   USER_DATA       DP, DR, DW         N              Y
                                  TOPIC_DATA            T             N              Y            Configuration
                                  GROUP_DATA           P, S           N              Y
                                   DURABILITY       T, DR, DW         Y              N
OpenSplice DDS




                                   DURABILITY         T, DW           N              N
                                    SERVICE                                                      Data Availability
                                    HISTORY         T, DR, DW         N              N
                                 PRESENTATION          P, S           Y              N
                                   RELIABILITY      T, DR, DW         Y              N
                                   PARTITION           P, S           N              Y
                                                                                                  Data Delivery
                                  DESTINATION       T, DR, DW         Y              N
                                    ORDER
                                    LIFESPAN          T, DW           N              Y
QoS Policies
                 [T: Topic] [DR: DataReader] [DW: DataWriter] [P: Publisher]   [S: Subscriber]    [DP: Domain Participant]

                                    QoS Policy     Applicability     RxO        Modifiable




                                                                                                                             Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                    DEADLINE        T, DR, DW         Y              Y
                                    LATENCY         T, DR, DW         Y              Y
                                    BUDGET                                                         Temporal/
                                  TRANSPORT           T, DW           N              Y            Importance
                                   PRIORITY                                                      Characteristics
OpenSplice DDS




                                   TIME BASED          DR             N              Y
                                      FILTER
                                  OWNERSHIP         T, DR, DW         Y              N
                                  OWNERSHIP            DW             N              Y             Replication
                                  STRENGTH
                                   LIVELINESS       T, DR, DW         Y              N           Fault-Detection
Temporal Properties




                                                                                         Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                      TimeBasedFilter                                    Deadline

                    [Inbound]
OpenSplice DDS




                       Throughput                    LatencyBudget      Latency
                                        [Outbound]




                                                                     TransportPriority
Data Availability
                                  History




                                                            Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                   Data
OpenSplice DDS




                     Lifespan                  Durability
                                Availability


                                               Ownership
                                 Ownership
                                                Strength
OpenSplice DDS




                      Partition
                                                                                            Data Delivery
                                                                             Reliability




   Presentation
                    Data Delivery
                    Order
                  Destination




                   Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
Setting QoS Policies




                                                                            Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                                      C++
                       // Setting Partition QoS-Policy on Publisher
                       qos::PublisherQos pubQos;
                       pubQos << policy::Partition("Partition");
                       Publisher pub(dp, pubQoS);
OpenSplice DDS




                      // Setting various QoS-Policy on a Topic
                      qos::TopicQos tqos;
                      tqos << policy::Reliability::Reliable()
                           << policy::Durability::Transient()
                           << policy::History::KeepLast(5);

                      Topic<VehicleDynamics> topic(dp,"Partition", tqos);
Data Reader/Writer Caches
OpenSplice DDS
DDS Model
                                                                                 Topic Instances


                                  DataWriter                      DataReader                         DataReader




                                                                                                                        Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                        ...                             ...              ...                ...
                             ...




                                                              ...




                                                                                                   ...
                             ...



                                               ...



                                                              ...



                                                                               ...



                                                                                                   ...



                                                                                                                  ...
OpenSplice DDS




                             DataWriter Cache                 DataReader Cache                     DataReader Cache


                 Writer History                  Reader History

                                                                   network
DDS Model
                                       DataWriter                       DataReader                          DataReader




                                                                                                                               Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                             ...                                  ...               ...            ...
                                   ...




                                                                    ...




                                                                                                          ...
                                   ...



                                                    ...



                                                                    ...



                                                                                           ...



                                                                                                          ...



                                                                                                                         ...
OpenSplice DDS




                                   DataWriter Cache                DataReader Cache                       DataReader Cache


                    QoS Policies
                 ‣ History
                 ‣ Destination Order
                 ‣ Presentation                                           network
                 ‣ Partition
                 ‣ Time Based Filter                                    QoS Policies
                 ‣ Ownership                              ‣ Reliability      ‣ Durability
                                                          ‣ History          ‣ Transport Priority
                                                          ‣ Latency Budget ‣ Time Based Filter
Dynamic View of a Stream




                                                                     Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
OpenSplice DDS




                      ...


                               Stream: Set of samples written over
                               time for a given topic instance.
Dynamic View of a Stream
                 Assumptions:
                  Reader History = KeepLast (n)
                  WriterHistory = KeepLast (m)




                                                                                        Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                               Writer History
OpenSplice DDS




                                 ...


                                                  Stream: Set of samples written over
                                                     time for a given topic instance.
Dynamic View of a Stream
                 Assumptions:
                  Reader History = KeepLast (n)
                  WriterHistory = KeepLast (m)




                                                                                                   Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                  Samples ‘on
                               Writer History      the wire’
OpenSplice DDS




                                 ...


                                                            Stream: Set of samples written over
                                                                time for a given topic instance.
Dynamic View of a Stream
                 Assumptions:
                  Reader History = KeepLast (n)
                  WriterHistory = KeepLast (m)




                                                                                                   Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                  Samples ‘on
                               Writer History      the wire’       Reader History
OpenSplice DDS




                                 ...


                                                            Stream: Set of samples written over
                                                                time for a given topic instance.
Dynamic View of a Stream
                 Assumptions:
                  Reader History = KeepLast (n)
                  WriterHistory = KeepLast (m)




                                                                                                            Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                  Samples ‘on
                              Writer History      the wire’            Reader History
                                                                                           ‘Past’ Samples
OpenSplice DDS




                                 ...


                                                                Stream: Set of samples written over
                                                                time for a given topic instance.
Eventual View of a Stream
                 Assumptions (Default Settings):
                  Reader History = KeepLast (1)
                  WriterHistory = KeepLast (1)




                                                                                                             Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                               Writer History
                                                  Reader History                            ‘Past’ Samples
OpenSplice DDS




                                                                   Stream: Set of samples written over
                                                                      time for a given topic instance.
Eventual View of a Stream
                 Assumptions:
                  Reader History = KeepLast (n) with n > 1
                  WriterHistory = KeepLast (1)




                                                                                                       Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                               Writer History                Reader History
                                                                                      ‘Past’ Samples
OpenSplice DDS




                                                             Stream: Set of samples written over
                                                                time for a given topic instance.
Eventual View of a Stream
                 Assumptions:
                  Reader History = KeepLast (n) with n > 1
                  WriterHistory = KeepLast (m) with n > m > 1




                                                                                                          Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                               Writer History                   Reader History
                                                                                         ‘Past’ Samples
OpenSplice DDS




                                                                Stream: Set of samples written over
                                                                   time for a given topic instance.
Reading Data Samples
                  ☐   Samples can be read from the Data Reader History Cache




                                                                                       Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐   The action of reading a sample is non-destructive. Samples are
                      not removed from the cache
OpenSplice DDS




                           DataReader                          DataReader


                                  ...         read                    ...

                         DataReader Cache                    DataReader Cache
Taking Data Samples
                  ☐   Samples can be taken from the Data Reader History Cache




                                                                                  Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐   The action of taking a sample is destructive. Samples are
                      removed from the cache
OpenSplice DDS




                           DataReader                           DataReader


                                  ...                                  ...
                                              take
                         DataReader Cache                     DataReader Cache
Read vs. Take




                                                                               Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐   The read operation should always be access the latest
                      know value for topics that represent distributed state
OpenSplice DDS




                  ☐   The take operation should be used to get the last
                      notification from a topic that represent an event
Data Selectors
OpenSplice DDS
Cherry Picking in DDS




                                                                       Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐   DDS provides some very flexible mechanisms for
                      selecting the data to be read:
OpenSplice DDS




                      ☐   Data Content
                      ☐   Data Status

                  ☐   These mechanisms are composable
Content-Based Data Selection
OpenSplice DDS
Filters and Queries                                Application


                  ☐   DDS Filters allow to control what gets
                      into a DataReader cache




                                                                                        Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                                      Query
                  ☐   DDS Queries allow to control what gets
                      out of a DataReader cache                    DataReader
OpenSplice DDS




                  ☐   Filters are defined by means of
                                                                           ...
                      ContentFilteredTopics




                                                                 ...
                                                                 ...



                                                                                  ...
                  ☐   Queries operate in conjunction with        DataReader Cache
                      read operations
                                                                       Filter
                  ☐   Filters and Queries are expressed as SQL
                      where clauses
Filters
                 [Scala API]
                                                                                struct VehicleDynamics {
                                                                                   long   vid;
                                                                                   long   x;   long   y;
                                                                                   long   dx; long    dy;};
                                                                                #pragma keylist VehicleStatus vid




                                                                                                                    Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                     /**
                      ** NOTE:   The Scala API if not provided with DP/Sub/Pub assumes default domains and
                      **         default partition.
                      **/
                     // Create   a Topic
                     val topic   = Topic[VehicleDynamics](“TVehicleDynamics”)
OpenSplice DDS




                     // Define filter expression and parameters
                     val filter = “x < %0 AND y < %1”
                     val params = List(“200”, “300”)

                     // Define content filtered topic
                     val cftopic =
                       ContentFilteredTopic[VehicleDynamics](“CFTVehicleDynamics”, topic, filter, params)

                     // Create a DataReader for the content-filtered Topic
                     val reader =
                       DataReader[VehicleDynamics](cftopic)
QueryAPI 2010]                                            struct VehicleDynamics {
                 [DDS C++                                                     long   vid;
                                                                              long   x;   long   y;
                                                                              long   dx; long    dy;};
                                                                           #pragma keylist VehicleStatus vid




                                                                                                               Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                    // Define the query and the parameters
OpenSplice DDS




                    std::vector<std::string> p;
                    p.push_back("100");
                    p.push_back("100");
                    dds::core::Query q("x < %0 AND y < %1", p.begin(), p.end());

                    auto data = reader
                       .selector()
                           .filter_content(q)
                       .read();
Instances
                  ☐   DDS provides a very efficient way of reading data belonging to a




                                                                                            Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                      specific Topic Instance

                  ☐   Obviously, one could use queries to match the key’s value, but this
                      is not as efficient as the special purpose instance selector
OpenSplice DDS




                      // C++
                      auto data = reader
                         .selector()
                             .instance(handle)
                         .read();

                      // Scala
                      val data = reader read(handle)
State-Based Selection
OpenSplice DDS
Sample, Instance, and View State
                  ☐   The samples included in the DataReader cache have associated




                                                                                            Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                      some meta-information which, among other things, describes the
                      status of the sample and its associated stream/instance
                  ☐   The Sample State (READ, NOT_READ) allows to distinguish between
OpenSplice DDS




                      new samples and samples that have already been read
                  ☐   The View State (NEW, NOT_NEW) allows to distinguish a new
                      instance from an existing one
                  ☐   The Intance State (ALIVE, NOT_ALIVE_DISPOSED,
                      NOT_ALIVE_NO_WRITERS) allows to track the life-cycle transitions of
                      the instance to which a sample belongs
State Selector in Action




                                                                                                                        Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                 // Read only new samples
                 auto data = reader
                                                             C++                                                Scala
                    .selector()                                       // Read only new samples
                       .filter_state(status::DataState::new_data())   val data = reader read
                    .read()
OpenSplice DDS




                                                                      // Read any samples from live instances
                 // Read any samples from live instances              val data = reader read(SampleSelector.AnyData)
                 auto data = reader
                    .selector()
                       .filter_state(status::DataState::any_data())
                    .read()
Putting all Together




                                                                                     Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐   Selectors can be composed in a flexible and
                      expressive manner
OpenSplice DDS




                                                                        C++
                              auto data = reader
                                  ! .selector()
                                       .instance(handle)
                                  ! ! .filter_state(status::DataState::new_data())
                                  ! ! .filter_content(q)
                                     .read();
OpenSplice DDS




    S
    D
    D
     tandard
DDS Standard Ecosystem
                                     Application                                                    Application




                                                                                                                                               Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                                                             2012             API                                  2012
                                              DDS RMI                                                   DDS RMI
                   2012        2010                                                                                        2010        2012
                                             ANSI C                 ISO C++             Java-5             Scala
OpenSplice DDS




                                                      2004                2010                   2010              201x
                    Security




                                                                                                                                    Security
                                X-Types




                                                                                                                          X-Types
                                                                              DDS                                  2004



                                                                       Wire Protocol
                                          DDSI-RTPS                           network                   DDSI-RTPS
                     2006                                                                                                           2006
Concluding Remarks




                                                                               Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  ☐   The Data Distribution Service for Real-Time Systems
                      provides a powerful and feature-rich topic-based
                      publish/subscribe abstraction
OpenSplice DDS




                  ☐   This technology is widely used in mission and business
                      critical systems and it being swiftly adopted in data-
                      centric/big-data systems
References




                                                                                                                         Copyright	
  2011,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.
                  OpenSplice | DDS                                                     Escalier
                  ¥ #1 OMG DDS Implementation    ¥ Fastest growing JVM Language      ¥ Scala API for OpenSplice DDS
                  ¥ Open Source                  ¥ Open Source                       ¥ Open Source
                  ¥ www.opensplice.org           ¥ www.scala-lang.org                ¥ github.com/kydos/escalier
OpenSplice DDS




                                          [C++]                           [Java]       DDS-PSM-Cxx 2010
                 ¥ Simple C++ API for DDS        ¥ DDS-PSM-Java for OpenSplice DDS   ¥ DDS-PSM-Cxx API Standard
                 ¥ Open Source                   ¥ Open Source                       ¥ Open Source
                 ¥ code.google.com/p/simd-cxx    ¥ github.com/kydos/simd-java        ¥ github.com/kydos/dds-psm-cxx
:: Connect with Us ::



                   ¥opensplice.com             ¥forums.opensplice.org
                                                                                         ¥@acorsaro
                   ¥opensplice.org             ¥opensplicedds@prismtech.com                 ¥@prismtech
OpenSplice DDS




                                                                                         ¥ crc@prismtech.com
                                                                                         ¥sales@prismtech.com
                 ¥youtube.com/opensplicetube          ¥slideshare.net/angelo.corsaro

More Related Content

What's hot

Getting Started in DDS with C++ and Java
Getting Started in DDS with C++ and JavaGetting Started in DDS with C++ and Java
Getting Started in DDS with C++ and JavaAngelo Corsaro
 
The DDS Tutorial - Part I
The DDS Tutorial - Part IThe DDS Tutorial - Part I
The DDS Tutorial - Part IAngelo Corsaro
 
DDS in Action -- Part I
DDS in Action -- Part IDDS in Action -- Part I
DDS in Action -- Part IAngelo Corsaro
 
Getting Started with DDS in C++, Java and Scala
Getting Started with DDS in C++, Java and ScalaGetting Started with DDS in C++, Java and Scala
Getting Started with DDS in C++, Java and ScalaAngelo Corsaro
 
DDS: The IoT Data Sharing Standard
DDS: The IoT Data Sharing StandardDDS: The IoT Data Sharing Standard
DDS: The IoT Data Sharing StandardAngelo Corsaro
 
OpenSplice DDS Tutorial -- Part II
OpenSplice DDS Tutorial -- Part IIOpenSplice DDS Tutorial -- Part II
OpenSplice DDS Tutorial -- Part IIAngelo Corsaro
 
The DDS Tutorial Part II
The DDS Tutorial Part IIThe DDS Tutorial Part II
The DDS Tutorial Part IIAngelo Corsaro
 
Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2
Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2
Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2Jaime Martin Losa
 
The Data Distribution Service Tutorial
The Data Distribution Service TutorialThe Data Distribution Service Tutorial
The Data Distribution Service TutorialAngelo Corsaro
 
ROS 2 Foxy with Eclipse Cyclone DDS | Philly ROS Meetup July 20th 2020
ROS 2 Foxy with Eclipse Cyclone DDS | Philly ROS Meetup July 20th 2020ROS 2 Foxy with Eclipse Cyclone DDS | Philly ROS Meetup July 20th 2020
ROS 2 Foxy with Eclipse Cyclone DDS | Philly ROS Meetup July 20th 2020Joe Speed
 
Cyclone DDS: Sharing Data in the IoT Age
Cyclone DDS: Sharing Data in the IoT AgeCyclone DDS: Sharing Data in the IoT Age
Cyclone DDS: Sharing Data in the IoT AgeAngelo Corsaro
 
The Art and Science of DDS Data Modelling
The Art and Science of DDS Data ModellingThe Art and Science of DDS Data Modelling
The Art and Science of DDS Data ModellingAngelo Corsaro
 
Deep Dive into the OPC UA / DDS Gateway Specification
Deep Dive into the OPC UA / DDS Gateway SpecificationDeep Dive into the OPC UA / DDS Gateway Specification
Deep Dive into the OPC UA / DDS Gateway SpecificationGerardo Pardo-Castellote
 
Distributed Simulations with DDS and HLA
Distributed Simulations with DDS and HLADistributed Simulations with DDS and HLA
Distributed Simulations with DDS and HLAAngelo Corsaro
 
OMG DDS: The Data Distribution Service for Real-Time Systems
OMG DDS: The Data Distribution Service for Real-Time SystemsOMG DDS: The Data Distribution Service for Real-Time Systems
OMG DDS: The Data Distribution Service for Real-Time SystemsAngelo Corsaro
 

What's hot (20)

Getting Started in DDS with C++ and Java
Getting Started in DDS with C++ and JavaGetting Started in DDS with C++ and Java
Getting Started in DDS with C++ and Java
 
The DDS Tutorial - Part I
The DDS Tutorial - Part IThe DDS Tutorial - Part I
The DDS Tutorial - Part I
 
DDS in Action -- Part I
DDS in Action -- Part IDDS in Action -- Part I
DDS in Action -- Part I
 
Getting Started with DDS in C++, Java and Scala
Getting Started with DDS in C++, Java and ScalaGetting Started with DDS in C++, Java and Scala
Getting Started with DDS in C++, Java and Scala
 
Real time simulation with HLA and DDS
Real time simulation with HLA and DDSReal time simulation with HLA and DDS
Real time simulation with HLA and DDS
 
DDS: The IoT Data Sharing Standard
DDS: The IoT Data Sharing StandardDDS: The IoT Data Sharing Standard
DDS: The IoT Data Sharing Standard
 
OpenSplice DDS Tutorial -- Part II
OpenSplice DDS Tutorial -- Part IIOpenSplice DDS Tutorial -- Part II
OpenSplice DDS Tutorial -- Part II
 
The DDS Tutorial Part II
The DDS Tutorial Part IIThe DDS Tutorial Part II
The DDS Tutorial Part II
 
DDS In Action Part II
DDS In Action Part IIDDS In Action Part II
DDS In Action Part II
 
Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2
Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2
Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2
 
The Data Distribution Service Tutorial
The Data Distribution Service TutorialThe Data Distribution Service Tutorial
The Data Distribution Service Tutorial
 
ROS 2 Foxy with Eclipse Cyclone DDS | Philly ROS Meetup July 20th 2020
ROS 2 Foxy with Eclipse Cyclone DDS | Philly ROS Meetup July 20th 2020ROS 2 Foxy with Eclipse Cyclone DDS | Philly ROS Meetup July 20th 2020
ROS 2 Foxy with Eclipse Cyclone DDS | Philly ROS Meetup July 20th 2020
 
Cyclone DDS: Sharing Data in the IoT Age
Cyclone DDS: Sharing Data in the IoT AgeCyclone DDS: Sharing Data in the IoT Age
Cyclone DDS: Sharing Data in the IoT Age
 
The Art and Science of DDS Data Modelling
The Art and Science of DDS Data ModellingThe Art and Science of DDS Data Modelling
The Art and Science of DDS Data Modelling
 
Deep Dive into the OPC UA / DDS Gateway Specification
Deep Dive into the OPC UA / DDS Gateway SpecificationDeep Dive into the OPC UA / DDS Gateway Specification
Deep Dive into the OPC UA / DDS Gateway Specification
 
DDS Best Practices
DDS Best PracticesDDS Best Practices
DDS Best Practices
 
Distributed Simulations with DDS and HLA
Distributed Simulations with DDS and HLADistributed Simulations with DDS and HLA
Distributed Simulations with DDS and HLA
 
OMG DDS: The Data Distribution Service for Real-Time Systems
OMG DDS: The Data Distribution Service for Real-Time SystemsOMG DDS: The Data Distribution Service for Real-Time Systems
OMG DDS: The Data Distribution Service for Real-Time Systems
 
Introduction to RTI DDS
Introduction to RTI DDSIntroduction to RTI DDS
Introduction to RTI DDS
 
SimD
SimDSimD
SimD
 

Viewers also liked

Java One - Designing a DSL in Kotlin
Java One - Designing a DSL in KotlinJava One - Designing a DSL in Kotlin
Java One - Designing a DSL in KotlinNicolas Fränkel
 
Integration Patterns for Mission Critical Systems
Integration Patterns for Mission Critical SystemsIntegration Patterns for Mission Critical Systems
Integration Patterns for Mission Critical SystemsAngelo Corsaro
 
Spoilt for Choice: How to Choose the Right Enterprise Service Bus (ESB)?
Spoilt for Choice: How to Choose the Right Enterprise Service Bus (ESB)?Spoilt for Choice: How to Choose the Right Enterprise Service Bus (ESB)?
Spoilt for Choice: How to Choose the Right Enterprise Service Bus (ESB)?Kai Wähner
 
Integration patterns and practices for cloud and mobile computing
Integration patterns and practices for cloud and mobile computingIntegration patterns and practices for cloud and mobile computing
Integration patterns and practices for cloud and mobile computingSHAKIL AKHTAR
 
The Enterprise Service Bus is Dead! Long live the Enterprise Service Bus, Rim...
The Enterprise Service Bus is Dead! Long live the Enterprise Service Bus, Rim...The Enterprise Service Bus is Dead! Long live the Enterprise Service Bus, Rim...
The Enterprise Service Bus is Dead! Long live the Enterprise Service Bus, Rim...confluent
 
Using Scala for building DSLs
Using Scala for building DSLsUsing Scala for building DSLs
Using Scala for building DSLsIndicThreads
 
Mule integration patterns
Mule    integration patternsMule    integration patterns
Mule integration patternshimajareddys
 
Microservices - Death of the Enterprise Service Bus (ESB)? (Update 2016)
Microservices - Death of the Enterprise Service Bus (ESB)? (Update 2016)Microservices - Death of the Enterprise Service Bus (ESB)? (Update 2016)
Microservices - Death of the Enterprise Service Bus (ESB)? (Update 2016)Kai Wähner
 
JMS - Java Messaging Service
JMS - Java Messaging ServiceJMS - Java Messaging Service
JMS - Java Messaging ServicePeter R. Egli
 
Showdown: Integration Framework (Spring Integration, Apache Camel) vs. Enterp...
Showdown: Integration Framework (Spring Integration, Apache Camel) vs. Enterp...Showdown: Integration Framework (Spring Integration, Apache Camel) vs. Enterp...
Showdown: Integration Framework (Spring Integration, Apache Camel) vs. Enterp...Kai Wähner
 

Viewers also liked (12)

Java One - Designing a DSL in Kotlin
Java One - Designing a DSL in KotlinJava One - Designing a DSL in Kotlin
Java One - Designing a DSL in Kotlin
 
Integration Patterns for Mission Critical Systems
Integration Patterns for Mission Critical SystemsIntegration Patterns for Mission Critical Systems
Integration Patterns for Mission Critical Systems
 
Spoilt for Choice: How to Choose the Right Enterprise Service Bus (ESB)?
Spoilt for Choice: How to Choose the Right Enterprise Service Bus (ESB)?Spoilt for Choice: How to Choose the Right Enterprise Service Bus (ESB)?
Spoilt for Choice: How to Choose the Right Enterprise Service Bus (ESB)?
 
Integration patterns and practices for cloud and mobile computing
Integration patterns and practices for cloud and mobile computingIntegration patterns and practices for cloud and mobile computing
Integration patterns and practices for cloud and mobile computing
 
The Enterprise Service Bus is Dead! Long live the Enterprise Service Bus, Rim...
The Enterprise Service Bus is Dead! Long live the Enterprise Service Bus, Rim...The Enterprise Service Bus is Dead! Long live the Enterprise Service Bus, Rim...
The Enterprise Service Bus is Dead! Long live the Enterprise Service Bus, Rim...
 
Java Messaging Service
Java Messaging ServiceJava Messaging Service
Java Messaging Service
 
Metamorphic Domain-Specific Languages
Metamorphic Domain-Specific LanguagesMetamorphic Domain-Specific Languages
Metamorphic Domain-Specific Languages
 
Using Scala for building DSLs
Using Scala for building DSLsUsing Scala for building DSLs
Using Scala for building DSLs
 
Mule integration patterns
Mule    integration patternsMule    integration patterns
Mule integration patterns
 
Microservices - Death of the Enterprise Service Bus (ESB)? (Update 2016)
Microservices - Death of the Enterprise Service Bus (ESB)? (Update 2016)Microservices - Death of the Enterprise Service Bus (ESB)? (Update 2016)
Microservices - Death of the Enterprise Service Bus (ESB)? (Update 2016)
 
JMS - Java Messaging Service
JMS - Java Messaging ServiceJMS - Java Messaging Service
JMS - Java Messaging Service
 
Showdown: Integration Framework (Spring Integration, Apache Camel) vs. Enterp...
Showdown: Integration Framework (Spring Integration, Apache Camel) vs. Enterp...Showdown: Integration Framework (Spring Integration, Apache Camel) vs. Enterp...
Showdown: Integration Framework (Spring Integration, Apache Camel) vs. Enterp...
 

Similar to The Data Distribution Service

High Performance Distributed Computing with DDS and Scala
High Performance Distributed Computing with DDS and ScalaHigh Performance Distributed Computing with DDS and Scala
High Performance Distributed Computing with DDS and ScalaAngelo Corsaro
 
DDS in SCADA, Utilities, Smart Grid and Smart Cities
DDS in SCADA, Utilities, Smart Grid and Smart CitiesDDS in SCADA, Utilities, Smart Grid and Smart Cities
DDS in SCADA, Utilities, Smart Grid and Smart CitiesAngelo Corsaro
 
OMG DDS Tutorial - Part I
OMG DDS Tutorial - Part IOMG DDS Tutorial - Part I
OMG DDS Tutorial - Part IAngelo Corsaro
 
Introducing the OMG DDS to the Aerospace Valley
Introducing the OMG DDS to the Aerospace Valley Introducing the OMG DDS to the Aerospace Valley
Introducing the OMG DDS to the Aerospace Valley Angelo Corsaro
 
International approaches to critical information infrastructure protection ...
International approaches to critical information infrastructure protection   ...International approaches to critical information infrastructure protection   ...
International approaches to critical information infrastructure protection ...owaspindia
 
Martine Lapierre - Security in Cloud computing: sharing more than resources
Martine Lapierre - Security in Cloud computing: sharing more than resourcesMartine Lapierre - Security in Cloud computing: sharing more than resources
Martine Lapierre - Security in Cloud computing: sharing more than resourcesServiceWave 2010
 
RTI Data-Distribution Service (DDS) Master Class - 2010
RTI Data-Distribution Service (DDS) Master Class - 2010RTI Data-Distribution Service (DDS) Master Class - 2010
RTI Data-Distribution Service (DDS) Master Class - 2010Gerardo Pardo-Castellote
 
OMG DDS: The data centric future beyond message-based integration
OMG DDS: The data centric future beyond message-based integrationOMG DDS: The data centric future beyond message-based integration
OMG DDS: The data centric future beyond message-based integrationGerardo Pardo-Castellote
 
Integration Platform For JMPS Using DDS
Integration Platform For JMPS Using DDSIntegration Platform For JMPS Using DDS
Integration Platform For JMPS Using DDSSupreet Oberoi
 
Mike Stolz Dramatic Scalability
Mike Stolz Dramatic ScalabilityMike Stolz Dramatic Scalability
Mike Stolz Dramatic Scalabilitydeimos
 
Network automation seminar
Network automation seminarNetwork automation seminar
Network automation seminarpatmisasi
 
Accel Partners New Data Workshop 7-14-10
Accel Partners New Data Workshop 7-14-10Accel Partners New Data Workshop 7-14-10
Accel Partners New Data Workshop 7-14-10keirdo1
 
Cloud Computing for Utilities
Cloud Computing for UtilitiesCloud Computing for Utilities
Cloud Computing for UtilitiesEsri
 
Cisco tec chris young - security intelligence operations
Cisco tec   chris young - security intelligence operationsCisco tec   chris young - security intelligence operations
Cisco tec chris young - security intelligence operationsCisco Public Relations
 
The Move to the Cloud for Regulated Industries
The Move to the Cloud for Regulated IndustriesThe Move to the Cloud for Regulated Industries
The Move to the Cloud for Regulated Industriesdirkbeth
 
Hadoop World 2011: Security Considerations for Hadoop Deployments - Jeremy Gl...
Hadoop World 2011: Security Considerations for Hadoop Deployments - Jeremy Gl...Hadoop World 2011: Security Considerations for Hadoop Deployments - Jeremy Gl...
Hadoop World 2011: Security Considerations for Hadoop Deployments - Jeremy Gl...Cloudera, Inc.
 

Similar to The Data Distribution Service (20)

High Performance Distributed Computing with DDS and Scala
High Performance Distributed Computing with DDS and ScalaHigh Performance Distributed Computing with DDS and Scala
High Performance Distributed Computing with DDS and Scala
 
DDS in SCADA, Utilities, Smart Grid and Smart Cities
DDS in SCADA, Utilities, Smart Grid and Smart CitiesDDS in SCADA, Utilities, Smart Grid and Smart Cities
DDS in SCADA, Utilities, Smart Grid and Smart Cities
 
OMG DDS Tutorial - Part I
OMG DDS Tutorial - Part IOMG DDS Tutorial - Part I
OMG DDS Tutorial - Part I
 
Introducing the OMG DDS to the Aerospace Valley
Introducing the OMG DDS to the Aerospace Valley Introducing the OMG DDS to the Aerospace Valley
Introducing the OMG DDS to the Aerospace Valley
 
International approaches to critical information infrastructure protection ...
International approaches to critical information infrastructure protection   ...International approaches to critical information infrastructure protection   ...
International approaches to critical information infrastructure protection ...
 
Martine Lapierre - Security in Cloud computing: sharing more than resources
Martine Lapierre - Security in Cloud computing: sharing more than resourcesMartine Lapierre - Security in Cloud computing: sharing more than resources
Martine Lapierre - Security in Cloud computing: sharing more than resources
 
RTI Data-Distribution Service (DDS) Master Class - 2010
RTI Data-Distribution Service (DDS) Master Class - 2010RTI Data-Distribution Service (DDS) Master Class - 2010
RTI Data-Distribution Service (DDS) Master Class - 2010
 
OMG DDS: The data centric future beyond message-based integration
OMG DDS: The data centric future beyond message-based integrationOMG DDS: The data centric future beyond message-based integration
OMG DDS: The data centric future beyond message-based integration
 
Integration Platform For JMPS Using DDS
Integration Platform For JMPS Using DDSIntegration Platform For JMPS Using DDS
Integration Platform For JMPS Using DDS
 
Mike Stolz Dramatic Scalability
Mike Stolz Dramatic ScalabilityMike Stolz Dramatic Scalability
Mike Stolz Dramatic Scalability
 
Best Practices for Migration
Best Practices for MigrationBest Practices for Migration
Best Practices for Migration
 
Best Practices for Migration
Best Practices for MigrationBest Practices for Migration
Best Practices for Migration
 
Network automation seminar
Network automation seminarNetwork automation seminar
Network automation seminar
 
Accel Partners New Data Workshop 7-14-10
Accel Partners New Data Workshop 7-14-10Accel Partners New Data Workshop 7-14-10
Accel Partners New Data Workshop 7-14-10
 
Cloud Computing for Utilities
Cloud Computing for UtilitiesCloud Computing for Utilities
Cloud Computing for Utilities
 
Cloud Security
Cloud Security Cloud Security
Cloud Security
 
Cisco tec chris young - security intelligence operations
Cisco tec   chris young - security intelligence operationsCisco tec   chris young - security intelligence operations
Cisco tec chris young - security intelligence operations
 
The Move to the Cloud for Regulated Industries
The Move to the Cloud for Regulated IndustriesThe Move to the Cloud for Regulated Industries
The Move to the Cloud for Regulated Industries
 
Hadoop World 2011: Security Considerations for Hadoop Deployments - Jeremy Gl...
Hadoop World 2011: Security Considerations for Hadoop Deployments - Jeremy Gl...Hadoop World 2011: Security Considerations for Hadoop Deployments - Jeremy Gl...
Hadoop World 2011: Security Considerations for Hadoop Deployments - Jeremy Gl...
 
TruWest
TruWestTruWest
TruWest
 

More from Angelo Corsaro

zenoh: The Edge Data Fabric
zenoh: The Edge Data Fabriczenoh: The Edge Data Fabric
zenoh: The Edge Data FabricAngelo Corsaro
 
Data Decentralisation: Efficiency, Privacy and Fair Monetisation
Data Decentralisation: Efficiency, Privacy and Fair MonetisationData Decentralisation: Efficiency, Privacy and Fair Monetisation
Data Decentralisation: Efficiency, Privacy and Fair MonetisationAngelo Corsaro
 
zenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query computezenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query computeAngelo Corsaro
 
zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolzenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolAngelo Corsaro
 
zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolzenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolAngelo Corsaro
 
Breaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Breaking the Edge -- A Journey Through Cloud, Edge and Fog ComputingBreaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Breaking the Edge -- A Journey Through Cloud, Edge and Fog ComputingAngelo Corsaro
 
fog05: The Fog Computing Infrastructure
fog05: The Fog Computing Infrastructurefog05: The Fog Computing Infrastructure
fog05: The Fog Computing InfrastructureAngelo Corsaro
 
fog05: The Fog Computing Platform
fog05: The Fog Computing Platformfog05: The Fog Computing Platform
fog05: The Fog Computing PlatformAngelo Corsaro
 
Programming in Scala - Lecture Four
Programming in Scala - Lecture FourProgramming in Scala - Lecture Four
Programming in Scala - Lecture FourAngelo Corsaro
 
Programming in Scala - Lecture Three
Programming in Scala - Lecture ThreeProgramming in Scala - Lecture Three
Programming in Scala - Lecture ThreeAngelo Corsaro
 
Programming in Scala - Lecture Two
Programming in Scala - Lecture TwoProgramming in Scala - Lecture Two
Programming in Scala - Lecture TwoAngelo Corsaro
 
Programming in Scala - Lecture One
Programming in Scala - Lecture OneProgramming in Scala - Lecture One
Programming in Scala - Lecture OneAngelo Corsaro
 
Data Sharing in Extremely Resource Constrained Envionrments
Data Sharing in Extremely Resource Constrained EnvionrmentsData Sharing in Extremely Resource Constrained Envionrments
Data Sharing in Extremely Resource Constrained EnvionrmentsAngelo Corsaro
 
The DDS Security Standard
The DDS Security StandardThe DDS Security Standard
The DDS Security StandardAngelo Corsaro
 
RUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming RuminationsRUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming RuminationsAngelo Corsaro
 
Vortex II -- The Industrial IoT Connectivity Standard
Vortex II -- The  Industrial IoT  Connectivity StandardVortex II -- The  Industrial IoT  Connectivity Standard
Vortex II -- The Industrial IoT Connectivity StandardAngelo Corsaro
 

More from Angelo Corsaro (20)

Zenoh: The Genesis
Zenoh: The GenesisZenoh: The Genesis
Zenoh: The Genesis
 
zenoh: The Edge Data Fabric
zenoh: The Edge Data Fabriczenoh: The Edge Data Fabric
zenoh: The Edge Data Fabric
 
Zenoh Tutorial
Zenoh TutorialZenoh Tutorial
Zenoh Tutorial
 
Data Decentralisation: Efficiency, Privacy and Fair Monetisation
Data Decentralisation: Efficiency, Privacy and Fair MonetisationData Decentralisation: Efficiency, Privacy and Fair Monetisation
Data Decentralisation: Efficiency, Privacy and Fair Monetisation
 
zenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query computezenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query compute
 
zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolzenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocol
 
zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolzenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocol
 
Breaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Breaking the Edge -- A Journey Through Cloud, Edge and Fog ComputingBreaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Breaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
 
Eastern Sicily
Eastern SicilyEastern Sicily
Eastern Sicily
 
fog05: The Fog Computing Infrastructure
fog05: The Fog Computing Infrastructurefog05: The Fog Computing Infrastructure
fog05: The Fog Computing Infrastructure
 
fog05: The Fog Computing Platform
fog05: The Fog Computing Platformfog05: The Fog Computing Platform
fog05: The Fog Computing Platform
 
Programming in Scala - Lecture Four
Programming in Scala - Lecture FourProgramming in Scala - Lecture Four
Programming in Scala - Lecture Four
 
Programming in Scala - Lecture Three
Programming in Scala - Lecture ThreeProgramming in Scala - Lecture Three
Programming in Scala - Lecture Three
 
Programming in Scala - Lecture Two
Programming in Scala - Lecture TwoProgramming in Scala - Lecture Two
Programming in Scala - Lecture Two
 
Programming in Scala - Lecture One
Programming in Scala - Lecture OneProgramming in Scala - Lecture One
Programming in Scala - Lecture One
 
Data Sharing in Extremely Resource Constrained Envionrments
Data Sharing in Extremely Resource Constrained EnvionrmentsData Sharing in Extremely Resource Constrained Envionrments
Data Sharing in Extremely Resource Constrained Envionrments
 
The DDS Security Standard
The DDS Security StandardThe DDS Security Standard
The DDS Security Standard
 
RUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming RuminationsRUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming Ruminations
 
Vortex II -- The Industrial IoT Connectivity Standard
Vortex II -- The  Industrial IoT  Connectivity StandardVortex II -- The  Industrial IoT  Connectivity Standard
Vortex II -- The Industrial IoT Connectivity Standard
 
Fog Computing Defined
Fog Computing DefinedFog Computing Defined
Fog Computing Defined
 

Recently uploaded

Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 

Recently uploaded (20)

Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 

The Data Distribution Service

  • 1. The Data Distribution Service [For Real-Time Systems] OpenSplice DDS Angelo CORSARO, Ph.D. Chief Technology Officer OMG DDS Sig Co-Chair PrismTech angelo.corsaro@prismtech.com
  • 2. OpenSplice DDS Background
  • 3. Data Distribution Service For Real-Time Systems Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ Introduced in 2004 to address the Data Distribution Real-Timeliness Scale challenges faced by a wide class of Defense and Aerospace Applications OpenSplice DDS Key requirement for the Parallelism Determinism Throughput, Availability Scalability, Persistence, Security ☐ standard were to deliver very Systemic Signal Data Real-Time Information Near Real-Time Fault- Tolerant Information Complex Information high and predictable Processing Processing Management Processing Processing performance while scaling from embedded to ultra- Parallel Systems Distributed Systems large-scale deployments
  • 4. Data Distribution Service For Real-Time Systems Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ Recommended by key Real-Timeliness Scale administration worldwide, e.g. DoD, MoD, EUROCAE, etc. OpenSplice DDS Widely adopted across Parallelism Determinism Throughput, Availability Scalability, Persistence, Security ☐ several different domains, Systemic Signal Data Real-Time Information Near Real-Time Fault- Tolerant Information Complex Information e.g., Automated Trading, Processing Processing Management Processing Processing Simulations, SCADA, Telemetry, etc. Parallel Systems Distributed Systems
  • 5. Some Use Cases Copyright  2011,  PrismTech  –    All  Rights  Reserved. Integrated Modular Vetronics Training & Simulation Systems Naval Combat Systems OpenSplice DDS Air Traffic Control & Management Large Scale SCADA Systems High Frequency Auto-Trading
  • 6. Standards: What For? Copyright  2011,  PrismTech  –    All  Rights  Reserved. Common “Language” Data Model + OpenSplice DDS QoS Requirements Interoperability DDSI Wire Interoperability
  • 7. OpenSplice DDS DDS Application API Standard Standards: What For? Portability Copyright  2011,  PrismTech  –    All  Rights  Reserved.
  • 8. OpenSplice DDS D D BaS ics
  • 9. Data Distribution Service For Real-Time Systems DDS provides a Topic-Based Publish/ Copyright  2011,  PrismTech  –    All  Rights  Reserved. Subscribe abstraction based on: Data Reader Data Writer ☐ Topics: data distribution subject’s OpenSplice DDS Data Reader Data TopicD Writer DataWriters: data producers TopicA ☐ Data TopicB Reader Data Writer ☐ DataReaders: data consumers TopicC ... Data Data Writer Reader DDS Global Data Space
  • 10. Data Distribution Service For Real-Time Systems Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ DataWriters and DataReaders Data Reader are automatically and Data Writer dynamically matched by the OpenSplice DDS Data Reader Data TopicD DDS Dynamic Discovery Writer TopicA Data TopicB Reader Data ☐ A rich set of QoS allows to Writer TopicC ... control existential, temporal, Data Data and spatial properties of data Writer Reader DDS Global Data Space
  • 11. DDS Topics ☐ A Topic defines a class of “TVehicleDynamics” streams Copyright  2011,  PrismTech  –    All  Rights  Reserved. Name ☐ A Topic has associated a user defined extensible type and a Topic Typ set of QoS policies S DURABILITY, Qo OpenSplice DDS e DEADLINE, ☐ The Topic name, type and QoS VehicleDynamics PRIORITY, defines the key functional and … non-functional invariants struct VehicleDynamics { IDL ☐ Topics can be discovered or long vid; locally defined long x; long y; long dx; long dy;}; #pragma keylist VehicleDynamics vid
  • 12. Topic Instances ☐ Each unique key value Copyright  2011,  PrismTech  –    All  Rights  Reserved. identifies a unique stream of data vid =701 DDS not only vid =809 struct VehicleStatus { ☐ Topic long vid; OpenSplice DDS long x; long y; long dx; long dy;}; demultiplexes “streams” #pragma keylist VehicleStatus vid vid =977 but provides also lifecycle Instances Instances information ☐ A DDS DataWriter can write multiple instances
  • 13. OpenSplice DDS Anatomy of a DDS Application Copyright  2011,  PrismTech  –    All  Rights  Reserved.
  • 14. Anatomy of a DDS Application [Scala API] Domain Domain Copyright  2011,  PrismTech  –    All  Rights  Reserved. val dp = DomainParticipant(domainId) Participant Publisher Topic Subscriber OpenSplice DDS DataWriter DataReader
  • 15. Anatomy of a DDS Application [Scala API] Domain Domain Copyright  2011,  PrismTech  –    All  Rights  Reserved. val dp = DomainParticipant(domainId) Participant Session // Create a Publisher / Subscriber Publisher Topic Subscriber OpenSplice DDS val pub = Publisher(dp) val sub = Subscriber(dp) // Create a Topic val topic = Topic[VehicleDynamics](dp, “TVehicleDynamics”) DataWriter DataReader
  • 16. Anatomy of a DDS Application [Scala API] Domain Domain Copyright  2011,  PrismTech  –    All  Rights  Reserved. val dp = DomainParticipant(domainId) Participant Session // Create a Publisher / Subscriber Publisher Topic Subscriber OpenSplice DDS val pub = Publisher(dp) val sub = Subscriber(dp) // Create a Topic val topic = Topic[VehicleDynamics](dp, “TVehicleDynamics”) Reader/Writers for User Defined for Types DataWriter DataReader // Create a DataWriter/DataWriter val writer = DataWriter[TempSensor](pub, topic) Reader/Writer for val reader = DataReader[TempSensor](sub, topic) application defined Topic Types
  • 17. Anatomy of a DDS Application [Scala API] Domain Domain Copyright  2011,  PrismTech  –    All  Rights  Reserved. val dp = DomainParticipant(domainId) Participant Session // Create a Publisher / Subscriber Publisher Topic Subscriber OpenSplice DDS val pub = Publisher(dp) val sub = Subscriber(dp) // Create a Topic val topic = Topic[VehicleDynamics](dp, “TVehicleDynamics”) Reader/Writers for User Defined for Types DataWriter DataReader // Write data val data = new VehicleDynamics(101, 131, 107, 7, 5) writer write data Reader/Writer for // But you can also write like this... application defined writer ! data Topic Types // Read new data and print it on the screen (reader read) foreach (prinln)
  • 18. Anatomy of a DDS Application [DDS C++ API 2010] Domain Domain Copyright  2011,  PrismTech  –    All  Rights  Reserved. auto dp = DomainParticipant(domainId); Participant Session // Create a Publisher / Subscriber Publisher Topic Subscriber OpenSplice DDS auto pub = Publisher(dp); auto sub = Subscriber(dp); // Create a Topic auto topic = Topic<VehicleDynamics>(dp, “TVehicleDynamics”); Reader/Writers for User Defined for Types DataWriter DataReader // Create a DataWriter/DataWriter auto writer = DataWriter<TempSensor>(pub, topic); Reader/Writer for auto reader = DataReader<TempSensor>(sub, topic); application defined Topic Types
  • 19. Anatomy of a DDS Application [DDS C++ API 2010] Domain Domain Copyright  2011,  PrismTech  –    All  Rights  Reserved. auto dp = DomainParticipant(domainId); Participant Session // Create a Publisher / Subscriber Publisher Topic Subscriber OpenSplice DDS auto pub = Publisher(dp); auto sub = Subscriber(dp); // Create a Topic auto topic = Topic<VehicleDynamics>(dp, “TVehicleDynamics”); Reader/Writers for User Defined for Types DataWriter DataReader // Write data writer.write(VehicleDynamics(101, 131, 107, 7, 5)); Reader/Writer for // But you can also write like this... writer << VehicleDynamics(101, 131, 107, 7, 5); application defined Topic Types // Read new data auto data = reader.read();
  • 21. QoS Model ☐ QoS-Policies control local and end-to-end properties of DDS Copyright  2011,  PrismTech  –    All  Rights  Reserved. entities Type Matching QoS matching QoS QoS QoS QoS QoS QoS QoS ☐ Local properties controlled by Topic QoS are related resource usage Publisher Name Subscriber ... DataWriter writes Type reads DataReader ... ☐ End-to-end properties OpenSplice DDS ... controlled by QoS are related DomainParticipant DataWriter writes Type reads DataReader DomainParticipant Name to temporal and spatial aspects Topic of data distribution QoS QoS QoS ☐ Some QoS-Policies are matched based on a Request vs. Offered Model thus QoS- enforcement
  • 22. QoS Policies [T: Topic] [DR: DataReader] [DW: DataWriter] [P: Publisher] [S: Subscriber] [DP: Domain Participant] QoS Policy Applicability RxO Modifiable Copyright  2011,  PrismTech  –    All  Rights  Reserved. USER_DATA DP, DR, DW N Y TOPIC_DATA T N Y Configuration GROUP_DATA P, S N Y DURABILITY T, DR, DW Y N OpenSplice DDS DURABILITY T, DW N N SERVICE Data Availability HISTORY T, DR, DW N N PRESENTATION P, S Y N RELIABILITY T, DR, DW Y N PARTITION P, S N Y Data Delivery DESTINATION T, DR, DW Y N ORDER LIFESPAN T, DW N Y
  • 23. QoS Policies [T: Topic] [DR: DataReader] [DW: DataWriter] [P: Publisher] [S: Subscriber] [DP: Domain Participant] QoS Policy Applicability RxO Modifiable Copyright  2011,  PrismTech  –    All  Rights  Reserved. DEADLINE T, DR, DW Y Y LATENCY T, DR, DW Y Y BUDGET Temporal/ TRANSPORT T, DW N Y Importance PRIORITY Characteristics OpenSplice DDS TIME BASED DR N Y FILTER OWNERSHIP T, DR, DW Y N OWNERSHIP DW N Y Replication STRENGTH LIVELINESS T, DR, DW Y N Fault-Detection
  • 24. Temporal Properties Copyright  2011,  PrismTech  –    All  Rights  Reserved. TimeBasedFilter Deadline [Inbound] OpenSplice DDS Throughput LatencyBudget Latency [Outbound] TransportPriority
  • 25. Data Availability History Copyright  2011,  PrismTech  –    All  Rights  Reserved. Data OpenSplice DDS Lifespan Durability Availability Ownership Ownership Strength
  • 26. OpenSplice DDS Partition Data Delivery Reliability Presentation Data Delivery Order Destination Copyright  2011,  PrismTech  –    All  Rights  Reserved.
  • 27. Setting QoS Policies Copyright  2011,  PrismTech  –    All  Rights  Reserved. C++ // Setting Partition QoS-Policy on Publisher qos::PublisherQos pubQos; pubQos << policy::Partition("Partition"); Publisher pub(dp, pubQoS); OpenSplice DDS // Setting various QoS-Policy on a Topic qos::TopicQos tqos; tqos << policy::Reliability::Reliable() << policy::Durability::Transient() << policy::History::KeepLast(5); Topic<VehicleDynamics> topic(dp,"Partition", tqos);
  • 29. DDS Model Topic Instances DataWriter DataReader DataReader Copyright  2011,  PrismTech  –    All  Rights  Reserved. ... ... ... ... ... ... ... ... ... ... ... ... ... OpenSplice DDS DataWriter Cache DataReader Cache DataReader Cache Writer History Reader History network
  • 30. DDS Model DataWriter DataReader DataReader Copyright  2011,  PrismTech  –    All  Rights  Reserved. ... ... ... ... ... ... ... ... ... ... ... ... ... OpenSplice DDS DataWriter Cache DataReader Cache DataReader Cache QoS Policies ‣ History ‣ Destination Order ‣ Presentation network ‣ Partition ‣ Time Based Filter QoS Policies ‣ Ownership ‣ Reliability ‣ Durability ‣ History ‣ Transport Priority ‣ Latency Budget ‣ Time Based Filter
  • 31. Dynamic View of a Stream Copyright  2011,  PrismTech  –    All  Rights  Reserved. OpenSplice DDS ... Stream: Set of samples written over time for a given topic instance.
  • 32. Dynamic View of a Stream Assumptions: Reader History = KeepLast (n) WriterHistory = KeepLast (m) Copyright  2011,  PrismTech  –    All  Rights  Reserved. Writer History OpenSplice DDS ... Stream: Set of samples written over time for a given topic instance.
  • 33. Dynamic View of a Stream Assumptions: Reader History = KeepLast (n) WriterHistory = KeepLast (m) Copyright  2011,  PrismTech  –    All  Rights  Reserved. Samples ‘on Writer History the wire’ OpenSplice DDS ... Stream: Set of samples written over time for a given topic instance.
  • 34. Dynamic View of a Stream Assumptions: Reader History = KeepLast (n) WriterHistory = KeepLast (m) Copyright  2011,  PrismTech  –    All  Rights  Reserved. Samples ‘on Writer History the wire’ Reader History OpenSplice DDS ... Stream: Set of samples written over time for a given topic instance.
  • 35. Dynamic View of a Stream Assumptions: Reader History = KeepLast (n) WriterHistory = KeepLast (m) Copyright  2011,  PrismTech  –    All  Rights  Reserved. Samples ‘on Writer History the wire’ Reader History ‘Past’ Samples OpenSplice DDS ... Stream: Set of samples written over time for a given topic instance.
  • 36. Eventual View of a Stream Assumptions (Default Settings): Reader History = KeepLast (1) WriterHistory = KeepLast (1) Copyright  2011,  PrismTech  –    All  Rights  Reserved. Writer History Reader History ‘Past’ Samples OpenSplice DDS Stream: Set of samples written over time for a given topic instance.
  • 37. Eventual View of a Stream Assumptions: Reader History = KeepLast (n) with n > 1 WriterHistory = KeepLast (1) Copyright  2011,  PrismTech  –    All  Rights  Reserved. Writer History Reader History ‘Past’ Samples OpenSplice DDS Stream: Set of samples written over time for a given topic instance.
  • 38. Eventual View of a Stream Assumptions: Reader History = KeepLast (n) with n > 1 WriterHistory = KeepLast (m) with n > m > 1 Copyright  2011,  PrismTech  –    All  Rights  Reserved. Writer History Reader History ‘Past’ Samples OpenSplice DDS Stream: Set of samples written over time for a given topic instance.
  • 39. Reading Data Samples ☐ Samples can be read from the Data Reader History Cache Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ The action of reading a sample is non-destructive. Samples are not removed from the cache OpenSplice DDS DataReader DataReader ... read ... DataReader Cache DataReader Cache
  • 40. Taking Data Samples ☐ Samples can be taken from the Data Reader History Cache Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ The action of taking a sample is destructive. Samples are removed from the cache OpenSplice DDS DataReader DataReader ... ... take DataReader Cache DataReader Cache
  • 41. Read vs. Take Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ The read operation should always be access the latest know value for topics that represent distributed state OpenSplice DDS ☐ The take operation should be used to get the last notification from a topic that represent an event
  • 43. Cherry Picking in DDS Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ DDS provides some very flexible mechanisms for selecting the data to be read: OpenSplice DDS ☐ Data Content ☐ Data Status ☐ These mechanisms are composable
  • 45. Filters and Queries Application ☐ DDS Filters allow to control what gets into a DataReader cache Copyright  2011,  PrismTech  –    All  Rights  Reserved. Query ☐ DDS Queries allow to control what gets out of a DataReader cache DataReader OpenSplice DDS ☐ Filters are defined by means of ... ContentFilteredTopics ... ... ... ☐ Queries operate in conjunction with DataReader Cache read operations Filter ☐ Filters and Queries are expressed as SQL where clauses
  • 46. Filters [Scala API] struct VehicleDynamics { long vid; long x; long y; long dx; long dy;}; #pragma keylist VehicleStatus vid Copyright  2011,  PrismTech  –    All  Rights  Reserved. /** ** NOTE: The Scala API if not provided with DP/Sub/Pub assumes default domains and ** default partition. **/ // Create a Topic val topic = Topic[VehicleDynamics](“TVehicleDynamics”) OpenSplice DDS // Define filter expression and parameters val filter = “x < %0 AND y < %1” val params = List(“200”, “300”) // Define content filtered topic val cftopic = ContentFilteredTopic[VehicleDynamics](“CFTVehicleDynamics”, topic, filter, params) // Create a DataReader for the content-filtered Topic val reader = DataReader[VehicleDynamics](cftopic)
  • 47. QueryAPI 2010] struct VehicleDynamics { [DDS C++ long vid; long x; long y; long dx; long dy;}; #pragma keylist VehicleStatus vid Copyright  2011,  PrismTech  –    All  Rights  Reserved. // Define the query and the parameters OpenSplice DDS std::vector<std::string> p; p.push_back("100"); p.push_back("100"); dds::core::Query q("x < %0 AND y < %1", p.begin(), p.end()); auto data = reader .selector() .filter_content(q) .read();
  • 48. Instances ☐ DDS provides a very efficient way of reading data belonging to a Copyright  2011,  PrismTech  –    All  Rights  Reserved. specific Topic Instance ☐ Obviously, one could use queries to match the key’s value, but this is not as efficient as the special purpose instance selector OpenSplice DDS // C++ auto data = reader .selector() .instance(handle) .read(); // Scala val data = reader read(handle)
  • 50. Sample, Instance, and View State ☐ The samples included in the DataReader cache have associated Copyright  2011,  PrismTech  –    All  Rights  Reserved. some meta-information which, among other things, describes the status of the sample and its associated stream/instance ☐ The Sample State (READ, NOT_READ) allows to distinguish between OpenSplice DDS new samples and samples that have already been read ☐ The View State (NEW, NOT_NEW) allows to distinguish a new instance from an existing one ☐ The Intance State (ALIVE, NOT_ALIVE_DISPOSED, NOT_ALIVE_NO_WRITERS) allows to track the life-cycle transitions of the instance to which a sample belongs
  • 51. State Selector in Action Copyright  2011,  PrismTech  –    All  Rights  Reserved. // Read only new samples auto data = reader C++ Scala .selector() // Read only new samples .filter_state(status::DataState::new_data()) val data = reader read .read() OpenSplice DDS // Read any samples from live instances // Read any samples from live instances val data = reader read(SampleSelector.AnyData) auto data = reader .selector() .filter_state(status::DataState::any_data()) .read()
  • 52. Putting all Together Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ Selectors can be composed in a flexible and expressive manner OpenSplice DDS C++ auto data = reader ! .selector() .instance(handle) ! ! .filter_state(status::DataState::new_data()) ! ! .filter_content(q) .read();
  • 53. OpenSplice DDS S D D tandard
  • 54. DDS Standard Ecosystem Application Application Copyright  2011,  PrismTech  –    All  Rights  Reserved. 2012 API 2012 DDS RMI DDS RMI 2012 2010 2010 2012 ANSI C ISO C++ Java-5 Scala OpenSplice DDS 2004 2010 2010 201x Security Security X-Types X-Types DDS 2004 Wire Protocol DDSI-RTPS network DDSI-RTPS 2006 2006
  • 55. Concluding Remarks Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ The Data Distribution Service for Real-Time Systems provides a powerful and feature-rich topic-based publish/subscribe abstraction OpenSplice DDS ☐ This technology is widely used in mission and business critical systems and it being swiftly adopted in data- centric/big-data systems
  • 56. References Copyright  2011,  PrismTech  –    All  Rights  Reserved. OpenSplice | DDS Escalier ¥ #1 OMG DDS Implementation ¥ Fastest growing JVM Language ¥ Scala API for OpenSplice DDS ¥ Open Source ¥ Open Source ¥ Open Source ¥ www.opensplice.org ¥ www.scala-lang.org ¥ github.com/kydos/escalier OpenSplice DDS [C++] [Java] DDS-PSM-Cxx 2010 ¥ Simple C++ API for DDS ¥ DDS-PSM-Java for OpenSplice DDS ¥ DDS-PSM-Cxx API Standard ¥ Open Source ¥ Open Source ¥ Open Source ¥ code.google.com/p/simd-cxx ¥ github.com/kydos/simd-java ¥ github.com/kydos/dds-psm-cxx
  • 57. :: Connect with Us :: ¥opensplice.com ¥forums.opensplice.org ¥@acorsaro ¥opensplice.org ¥opensplicedds@prismtech.com ¥@prismtech OpenSplice DDS ¥ crc@prismtech.com ¥sales@prismtech.com ¥youtube.com/opensplicetube ¥slideshare.net/angelo.corsaro