SlideShare uma empresa Scribd logo
1 de 44
Baixar para ler offline
Angelo CORSARO, Ph.D.
Chief Technology Officer 
OMG DDS Sig Co-Chair
PrismTech
angelo.corsaro@prismtech.com!
DDS Overview
Data Distribution in a Nutshell
                                                                             struct TempSensor {!
                                                      enum TScale {!
                                                                              @Key long   Id; !
                                                          C, F, K!
      Data distribution is about making                                            float temp;!




                                                                                                          Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
¨                                                    };!
                                                                                   TScale scale;!
      application defined data available                                     }!
      where needed and when needed,
      while preserving and end-to-end                                                               DR
      type contract                              DW
                                                               Id      Temp     Scale
¨    Data is a first class concept, it can be
      Created, Read, Updated, and
                                                              101       25        C                  DR
      eventually Disposed (CRUD)           DW                 202       78         F
                                                              303      299        K

¨    The last value (or last N-values) of a
      Data is always available to
                                                                                                     DR
      applications                           DW
                                                                                Fully Distributed
                                                      DW: DataWriter
                                                      DR: DataReader
                                                                             Global Data Space
DDS Topics
                      [1/2]
                                                        “com.myco.TTempSensor”


      A Topic defines the subject of




                                                                                        Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
¨ 
                                                                Name
      publications and subscriptions
¨    A Topic has associated a user
      defined type and QoS
¨    The Topic name, type and                                  Topic
      QoS have a well defined role
      in matching subscriptions
                                                      Type                QoS
¨    Topics can be discovered or
      locally defined                    struct TempSensor {!             DURABILITY,
                                          @Key long   Id; !               DEADLINE,
                                               float temp;!
                                                                          PRIORITY,
                                               TScale scale;!
                                         }!                               …
DDS Topics 
                  [2/2]
                                                     “com.myco.TTempSensor”




                                                                                     Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
                                                             Name
¨    DDS Topic types can have
      associated keys

¨    Each unique key-value                                  Topic
      identify a Topic Instance –
      a specific stream of values                  Type                QoS

                                      struct TempSensor {!             DURABILITY,
                                       @Key long   Id; !               DEADLINE,
                                            float temp;!
                                                                       PRIORITY,
                                            TScale scale;!
                                      }!                               …
DDS Type System
DDS Type System
The DDS Type System is defined by means of:




                                                                    Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
¨    Abstract Type System
      ¨    The definition of types supported by DDS

¨    Concrete Syntax(es) to express types
      ¨    Syntax for specifying DDS Topic Types

¨    Serialization Format
      ¨    Format for representing topics types as a byte-stream
Limitations in DDS v1.2
DDS v1.2 Type System
¨    Abstract Type System
            Monomorphic Nominal Type System




                                                                     Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
      ¨ 

      ¨    Not explicitly defined by the specification

¨    Concrete Syntax(es) to express types
      ¨    IDL Subset (e.g. struct, enum, union, primitive types)

¨    Serialization Format
      ¨    CDR (Common Data Representation)
[Abstract Type System]

Limitations
      The monomorphic nominal type system makes it




                                                                     Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
¨ 
      hard to, transparently extend, information models
      ¨    For a given topic, DataWriters and DataReaders need to
            use exactly the same type definition thus limiting
            independent evolutions of the reading/writing side

¨    The type system is not formally defined
Example
                [1/2]


      Suppose that a new Temperature            Old Sensor




                                                                     Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
¨ 
      Sensor was available that produced      struct TempSensor {!
      humidity estimates along with            @Key long   Id; !
                                                    float temp;!
      temperature                             }!
                                                    TScale scale;!


¨    In DDS v1.2 it would be impossible to
      deploy new sensors along with old
                                                New Sensor
      sensors while using the same topic
                                              struct TempSensor {!
¨    So what could we do to                   @Key long   Id; !
                                                    float temp;!
      incrementally update the system?              TScale scale;!
                                                    float hum;!
                                                      !
                                              }!
Inconsistent Topic Types
¨     The scenario below would lead, in DDS v1.2, to an Inconsistent Topic Type error




                                                                                                        Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
      TTempSensor                                                                  TTempSensor
                                                                                 struct TempSensor {!
  struct TempSensor {!
                                                                                  @Key long   Id; !
   @Key long   Id; !
                                                                                       float temp;!
        float temp;!
                                                                                       TScale scale;!
        TScale scale;!
                                                                                 }!
        float hum;!
  }!
                         DW                 TTempSensor                       DR
Example
                   [2/2]

¨    The solution to the problem is to introduce     Old Sensor




                                                                               Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
      and Extension Topic/Type                       struct TempSensor {!
                                                      @Key long   Id; !
¨    This extension topic/type shares the same            float temp;!
      key as the original topic and contains the     }!
                                                           TScale scale;!

      new attributes
¨    This gets the job done. Yet it adds           Sensor Extension
      complexity to the applications that will
                                                     struct TempSensorExt {!
      want to take advantage of the                   @Key long   Id; !
                                                           float hum;!
      capabilities provided by new sensors.          }!
      These applications, will now have to deal
      with two topics, or rely on Multi-Topics
Topic Extension
¨     The Legacy DR continues to use the old topic, while new DR are made
       aware of the extension topic




                                                                                           Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
                                                Legacy DR
      TTempSensor                                                   TTempSensor
                                                            DR    struct TempSensor {!
 struct TempSensor {!
                                                                   @Key long   Id; !
  @Key long   Id; !
                                                                        float temp;!
       float temp;!
                                                                        TScale scale;!
       TScale scale;!
                                                                  }!
 }!
                                  TTempSensor
                         DW
                                                             DR
  TTempSensorEx                                                    TTempSensorEx
struct TempSensorEx {!
 @Key long   Id; !             TTempSensorEx                      struct TempSensorEx {!
                                                                   @Key long   Id; !
      float temp;!                                                      float temp;!
}!                                                                }!
[Concrete Syntax]

Limitations
¨    DDS v1.2 specifies IDL as the only concrete syntax
      for specifying Topic Types




                                                            Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
¨     In addition, no standard/portable way of
      specifying keys is defined
¨    Not everyone is happy with using IDL. Some users
      would like to use UML to define topic types, other,
      XML, etc.
[Serialization Format]

Limitations




                                                                      Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
¨    CDR is a very efficient binary serialization format, its only
      limitation is the lack of support for extensible types

¨    This stems from the fact that CDR pre-supposes the exact
      knowledge of types and assumes that the order of type
      attributes is invariant
Limitations Recap




                                                           Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
¨    The main limitations present in the DDS v1.2 type
      system are the limited support for information
      model extensibility and evolution

¨    Under the current model, information model
      evolution or extensions are either non-transparent
      or require complete update-redeploy cycles
DDS Extensible and
Dynamic Topic Types
              [DDS-Xtypes]
DDS-XTypes Overview
The DDS-XTypes Specification defines:




                                                                   Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
¨    A polymorphic structural type system for DDS topic types
      – which formalizes extends in several ways the DDS v1.2
      type system
¨    A set of standard concrete syntaxes for representing
      topic types
¨    A set of serialization formats supporting extensible types
¨    A Dynamic API for defining Topic Types and DR/DW
      operating over these types
DDS-XTypes Type System
Type System




                                                            Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
¨    The DDS-Xtypes type system defines the rules and
      the type constructors that can be used to create
      valid DDS Topic Types

¨    The type system also defines a structural sub-type
      relation that is used to determine assignability of
      topic types
Primitive Types
¨    The DDS-XTypes defines the following Primitive Types




                                                                                                                 Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
¨    The Type mapping defines how DDS Types are
      mapped to native Programming Language Types
      (e.g. C99 int32_t, float, etc.)
                                                                 Primitive
                                                                  Types



                             Integral                                           Floating
                              Types                                            Point Type              Boolean




  Byte      Int16    Int32              Int64   Char8   Char16       Float32    Float64     Float128    Bool
Constructed Types
¨    The DDS-Xtypes introduces some new constructed types not




                                                                                                          Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
      originally available in DDS v1.2 (marked in red in the figure below)


                                                                 Constructed
                                                                    Type




                          Collection            BitSet       Enumeration       Aggregation     Alias




             Map    Sequence           String            Array         Union    Structure    Annotation
Annotations
¨    DDS-Xtypes introduces annotation as a way to
      attach meta-data to , and control the semantics




                                                        Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
      of, types and type members

¨    Annotations are aggregated types whose
      members are restricted to being:
      ¨    Primitive Types
      ¨    String
      ¨    Enumeration
Annotations in IDL
¨    Some built-in annotations, such as   @Annotation!




                                                                                   Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
      @ID, @Key, @Optional, etc., are      local interface MyAnnotation {!
                                              attribute long   attr1; !
      defined by DDS-XTypes                }!
                                              attribute string attr2 default “zzz”; !

      specification                        !
                                           @MyAnnotation!
                                           struct MyStructA {!

¨    User can define their own               long   member1;!
                                              string member2; !
      annotations                          }!
                                           !
                                           struct MyStructZ {!

      Annotation can also be added
                                              @MyAnnotation (attr1 = 10, !
¨                                                           attr2 = “yyy”)!

      as //@ after the annotated type          long   memberX;!
                                               string memberY; //@Optional!
      member                               }!
                                           !
Structure
¨    Structures are the type used to associate user-defined types with
      Topics




                                                                                       Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
¨    Structures defined by the DDS-Xtypes Specification support Single
      Inheritance
¨    Structures members have associated some properties, namely:
      ¨    ID. To uniquely identify an attribute
      ¨    Key. To identify whether the member is part of the key
      ¨    Optionality. To express the fact that an attributed is optional and thus
            might not be set
      ¨    Must Understand. To enforce that a given field is not discarded
      ¨    Shared. To allow for non-inline data-storage of the attribute
DDS-XTypes Structures
¨    Built-in annotations can




                                                                                Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
                                    struct TempSensor {!
      be used to control the          @Key @ID(10) !
                                      long Id; !
      semantic associated             @MustUnderstand @ID(11)!
                                      float temp;!
      with type members               @Optional @ID(12) !
                                      float hum;!
                                    };!

      Annotations, as
                                    !
¨                                  !

      explained next, are also
                                    Struct InfraRedTempSensor : TempSensor {!
                                        @Shared @ID(20) !

      used to control the kind
                                      byte spectrum[1024];!
                                    };!

      of extensibility/mutability
                                    !


      supported
Type Extensibility & Mutability
To better support incremental system updates, the DDS-XTypes Specification




                                                                                             Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
defines 3 different kinds of types. The @Extensibility annotation controls the
kind attached to a given type
¨    Final
      ¨    The type is sealed and nothing can be changed w/o breaking compatibility

¨    Extensible (Default)
      ¨    The Type is monotonically extensible, meaning that new attributes can be added
            while preserving the compatibility previous versions of the same type

¨    Mutable
      ¨    The Type can be mutated by adding, reordering and removing fields. The type
            compatibility depends on structural compatibility
Assignability
¨    The compatibility between different types, is expressed in




                                                                              Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
      terms of assignability

¨    Given two types, T1 and T2, then based on the kind of
      extensibility supported, T1 is-assignable-from T2 if the type T1
      can be “projected/widened” from T2

¨    Example
                           T2                                  T1
                   struct TempSensor {!
                    @Key long   Id; !     Projection   struct TempSensor {!
                         float temp;!                   @Key long   Id; !
                         TScale scale;!                      float temp;!
                         float hum;!                         TScale scale;!
                           !                           }!
                   }!
Final Types Assignability Rules
¨    Given two final types T1 and T2, we say that “T1 is-
      assignable-from T2”, iff:




                                                                                                Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
      ¨    T1 is-assignable-from T2 iff the two types have exactly the
            same members – meaning exactly same names and types
            as well as @ID and @Key annotations

¨    Example:
                             T2                                T1
                @Extensibility(FINAL_EXTENSIBILITY) !   @Extensibility(FINAL_EXTENSIBILITY) !
                struct TempSensor {!                    struct TSensor {!
                 @Key long   Id; !                       @Key long   Id; !
                      float temp;!                            float temp;!
                      TScale scale;!                          TScale scale;!
                }!                                      }!
Extensible Types Assignability Rule




                                                                                                        Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
¨    Given two extensible types, T1 and T2, we say that
      T1 is-assignable-from T2 iff:
      ¨    T2 is a monotonic extension of type T1, e.g., T1 is a “prefix”
            of T2

¨    Example:              T2                                    T1
              @Extensibility(EXTENSIBLE_EXTENSIBILITY) !   @Extensibility(EXTENSIBLE_EXTENSIBILITY) !
              struct TSensor {!                            struct TSensor {!
               @Key long   Id; !                            @Key long   Id; !
                    float temp;!                                 float temp;!
                    TScale scale;!                               TScale scale;!
                    float hum;!                            };!
              };!
Mutable Types Assignability Rule
¨    Given two mutable types, T1 and T2, we say that




                                                                          Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
      T1 is-assignable-from T2 iff:
      ¨    T1 and T2 share the same keys (e.g. same members
            sharing name and ID)
      ¨    Homonymous members in T1 and T2 share the same ID
            and vice-versa
      ¨    For each member x of T1 (T1.x) and y of T2 (T2.y) sharing a
            common ID then T1.x is-assignable-from T2.y
      ¨    All @MustUnderstand member of T2 also exist in T1
Mutable Types Example
       T2                                                    T1




                                                                                        Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
@Extensibility(MUTABLE_EXTENSIBILITY) !      @Extensibility(MUTABLE_EXTENSIBILITY) !
struct TempSensor {!                         struct HumSensor{!
 @Key @ID(10) long   Id; !                    @Key @ID(10) long   Id; !
      @ID(11)float temp;!                          @ID(13) float hum;!
      @ID(12)TScale scale;!                  };!
      @ID(13)float hum;!
};!
                              T1 is-assignable-from T2


       T2                                                     T1
@Extensibility(MUTABLE_EXTENSIBILITY) !       @Extensibility(MUTABLE_EXTENSIBILITY) !
struct TempSensor {!                          struct HumSensor{!
 @Key @ID(10) long   Id; !                     @Key @ID(10) long   Id; !
      @ID(11)float temp;!                           @ID(13) float hum;!
      @ID(12)TScale scale;!                         @ID(20) long   status;      !
      @ID(13)float hum;!                      };!
};!
                          T1 is-assignable-from T2
Type Consistency QoS
      The DDS-XTypes introduces a the Type Consistency




                                                                   Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
¨ 
      Enforcement Policy to control legal type conversion

¨    This Policy defines the following possibilities:
      ¨    EXACT_TYPE. As DDS today (but with checks)
      ¨    EXACT_NAME. What DDSI requires today
      ¨    DECLARED. Compatible type signatures + assignability
      ¨    ASSIGNABLE. Assignability is what matters
Topic Model
                                               “com.myco.TTempSensor”

¨    The DDS-XTypes




                                                                                  Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
      specification extends
                                                           Name



      the topic definition by   “TempSensor, TSensor”
      introducing the concept
      of a type signature
                                                Type
                                             Signature     Topic     QoS




¨    Type signature are used                                      TYPE_CONSISTENCY
      to constrain the set of                              Type
                                                                   DURABILITY,
                                                                   DEADLINE,
      types that might be           struct TempSensor {!
                                                                   PRIORITY,
      considered assignable          @Key long   Id; !
                                          float temp;!
                                                                   …

                                          TScale scale;!
                                    }!
Information Model
Evolution Example
Example – Reloaded 
      Suppose that a new           Old Sensor




                                                        Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
¨ 

      Temperature Sensor was     struct TempSensor {!
                                  @Key long   Id; !

      available that produced
                                       float temp;!
                                       TScale scale;!
                                 }!

      humidity estimates along
      with temperature             New Sensor

¨    So what could we do to     struct TempSensor {!
                                  @Key long   Id; !
                                       float temp;!
      incrementally update the         TScale scale;!
                                       float hum;!

      system?
                                         !
                                 }!
Assignable Topic Types
¨     With DDS-XTypes the system evolution does not introduce any burden




                                                                                              Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
¨     Types are projected through the assignability rules              TTempSensor
                                                                      struct TempSensor {!
                                                                       @Key long   Id; !
      TTempSensor                                                           float temp;!
                                                                            TScale scale;!
 struct TempSensor {!                                          DR     }!
  @Key long   Id; !
       float temp;!
       TScale scale;!
                        DW              TTempSensor
       float hum;!
 }!                                                                     TTempSensor
                                                                 DR    struct TempSensor {!
                                                                        @Key long   Id; !
                                                                             float temp;!
                                                                             TScale scale;!
                                                                             float hum;!
                                                                       }!
Guidelines
Picking your “Extensibility”
¨    Final Types should be used to express universal invariant of the system.
      Something that is so fundamental it should never-ever change w/o




                                                                                    Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
      requiring a full system update

¨    Extensible Types are the default in the specification because their
      semantic is pretty straightforward and safe. Thus, if you don’t want to get
      into type refactoring you might stick with this default

¨    Mutable Types give you maximum flexibility, however you should be
      designing your information model around them. When using Mutable
      Types ensure that you carefully use the @MustUndertand and @Optional
      annotations to set structural lower bounds on your type as well as nicely
      dealing with absence of members
Type Signature
¨    If you design your information model properly, then




                                                            Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
      you are safe in ignoring the type signature and
      using the ASSIGNABLE Type Consistency policy
¨    However, when integrating existing systems, the
      type-signature is key to scope what you might
      match
Summing Up
Concluding Remarks




                                         Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
¨    The DDS-XTypes specification
      provides a set of powerful
      extensions to deal with system
      extensibility and evolution
¨    The Specification is adopted and
      under finalization
¨    The OpenSplice DDS team is
      already implementing it!
OpenSplice DDS
Delivering Performance, Openness, and Freedom


   http://www.opensplice.com/
  http://www.opensplice.org/                    http://www.slideshare.net/angelo.corsaro
   emailto:opensplicedds@prismtech.com




                                                                                           Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
   http://bit.ly/1Sreg
                                                http://twitter.com/acorsaro/




   http://www.youtube.com/OpenSpliceTube        http://opensplice.blogspot.com

Mais conteúdo relacionado

Destaque

Compramos la merienda 2º ciclo 2016
Compramos la merienda 2º ciclo 2016Compramos la merienda 2º ciclo 2016
Compramos la merienda 2º ciclo 2016XXX XXX
 
Ralph Capabilities Deck RR
Ralph Capabilities Deck RRRalph Capabilities Deck RR
Ralph Capabilities Deck RRJay Armitage
 
DDS Efficiency and Extensibility
DDS Efficiency and ExtensibilityDDS Efficiency and Extensibility
DDS Efficiency and ExtensibilityAngelo Corsaro
 
learning: yankin' out an engine
learning: yankin' out an enginelearning: yankin' out an engine
learning: yankin' out an engineKristin Cline
 
Lecture Eu Policy on EH Risks
Lecture Eu Policy on EH RisksLecture Eu Policy on EH Risks
Lecture Eu Policy on EH RisksEva Kunseler
 
Scaling the Data Distribution Service to Global Networks
Scaling the Data Distribution Service to Global NetworksScaling the Data Distribution Service to Global Networks
Scaling the Data Distribution Service to Global NetworksAngelo Corsaro
 
Joe Pollaro Obama look alike
Joe Pollaro Obama look alikeJoe Pollaro Obama look alike
Joe Pollaro Obama look alikeJoe Pollaro
 
Pa Bio 10 29 08
Pa Bio 10 29 08Pa Bio 10 29 08
Pa Bio 10 29 08thess1121
 
Test 2 Polymer Notes
Test 2 Polymer NotesTest 2 Polymer Notes
Test 2 Polymer Notessad asad
 
Coquitlam burnaby pns.jan2013
Coquitlam burnaby pns.jan2013Coquitlam burnaby pns.jan2013
Coquitlam burnaby pns.jan2013Faye Brownlie
 
Activist Angels - Leadership Development Programme
Activist Angels - Leadership Development ProgrammeActivist Angels - Leadership Development Programme
Activist Angels - Leadership Development ProgrammeOgunte CIC
 
Argus & Associates Brochure
Argus & Associates BrochureArgus & Associates Brochure
Argus & Associates Brochureargusgos
 
Rupert - AFL - Jan, 2014
Rupert - AFL - Jan, 2014Rupert - AFL - Jan, 2014
Rupert - AFL - Jan, 2014Faye Brownlie
 
Errenazimenduko pintura. Veneziako eskola ppt
Errenazimenduko pintura. Veneziako eskola pptErrenazimenduko pintura. Veneziako eskola ppt
Errenazimenduko pintura. Veneziako eskola pptasunasenjo
 

Destaque (20)

Compramos la merienda 2º ciclo 2016
Compramos la merienda 2º ciclo 2016Compramos la merienda 2º ciclo 2016
Compramos la merienda 2º ciclo 2016
 
Ralph Capabilities Deck RR
Ralph Capabilities Deck RRRalph Capabilities Deck RR
Ralph Capabilities Deck RR
 
ikp321-04
ikp321-04ikp321-04
ikp321-04
 
DDS Efficiency and Extensibility
DDS Efficiency and ExtensibilityDDS Efficiency and Extensibility
DDS Efficiency and Extensibility
 
learning: yankin' out an engine
learning: yankin' out an enginelearning: yankin' out an engine
learning: yankin' out an engine
 
Lecture Eu Policy on EH Risks
Lecture Eu Policy on EH RisksLecture Eu Policy on EH Risks
Lecture Eu Policy on EH Risks
 
Scaling the Data Distribution Service to Global Networks
Scaling the Data Distribution Service to Global NetworksScaling the Data Distribution Service to Global Networks
Scaling the Data Distribution Service to Global Networks
 
7fevrier2009
7fevrier20097fevrier2009
7fevrier2009
 
Joe Pollaro Obama look alike
Joe Pollaro Obama look alikeJoe Pollaro Obama look alike
Joe Pollaro Obama look alike
 
ikd312-07-ddl
ikd312-07-ddlikd312-07-ddl
ikd312-07-ddl
 
isd312-09-summarization
isd312-09-summarizationisd312-09-summarization
isd312-09-summarization
 
Pa Bio 10 29 08
Pa Bio 10 29 08Pa Bio 10 29 08
Pa Bio 10 29 08
 
Test 2 Polymer Notes
Test 2 Polymer NotesTest 2 Polymer Notes
Test 2 Polymer Notes
 
Singular And Plural
Singular And PluralSingular And Plural
Singular And Plural
 
ikh311-01
ikh311-01ikh311-01
ikh311-01
 
Coquitlam burnaby pns.jan2013
Coquitlam burnaby pns.jan2013Coquitlam burnaby pns.jan2013
Coquitlam burnaby pns.jan2013
 
Activist Angels - Leadership Development Programme
Activist Angels - Leadership Development ProgrammeActivist Angels - Leadership Development Programme
Activist Angels - Leadership Development Programme
 
Argus & Associates Brochure
Argus & Associates BrochureArgus & Associates Brochure
Argus & Associates Brochure
 
Rupert - AFL - Jan, 2014
Rupert - AFL - Jan, 2014Rupert - AFL - Jan, 2014
Rupert - AFL - Jan, 2014
 
Errenazimenduko pintura. Veneziako eskola ppt
Errenazimenduko pintura. Veneziako eskola pptErrenazimenduko pintura. Veneziako eskola ppt
Errenazimenduko pintura. Veneziako eskola ppt
 

Mais de 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
 
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
 
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
 
The Data Distribution Service
The Data Distribution ServiceThe Data Distribution Service
The Data Distribution ServiceAngelo 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
 

Mais de 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
 
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
 
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
 
The Data Distribution Service
The Data Distribution ServiceThe Data Distribution Service
The Data Distribution Service
 
RUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming RuminationsRUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming Ruminations
 

Último

Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 

Último (20)

Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 

Extensible Information Models with DDS

  • 1. Angelo CORSARO, Ph.D. Chief Technology Officer OMG DDS Sig Co-Chair PrismTech angelo.corsaro@prismtech.com!
  • 3. Data Distribution in a Nutshell struct TempSensor {! enum TScale {! @Key long Id; ! C, F, K! Data distribution is about making float temp;! Copyright  2010,  PrismTech  –    All  Rights  Reserved.   ¨  };! TScale scale;! application defined data available }! where needed and when needed, while preserving and end-to-end DR type contract DW Id Temp Scale ¨  Data is a first class concept, it can be Created, Read, Updated, and 101 25 C DR eventually Disposed (CRUD) DW 202 78 F 303 299 K ¨  The last value (or last N-values) of a Data is always available to DR applications DW Fully Distributed DW: DataWriter DR: DataReader Global Data Space
  • 4. DDS Topics [1/2] “com.myco.TTempSensor” A Topic defines the subject of Copyright  2010,  PrismTech  –    All  Rights  Reserved.   ¨  Name publications and subscriptions ¨  A Topic has associated a user defined type and QoS ¨  The Topic name, type and Topic QoS have a well defined role in matching subscriptions Type QoS ¨  Topics can be discovered or locally defined struct TempSensor {! DURABILITY, @Key long Id; ! DEADLINE, float temp;! PRIORITY, TScale scale;! }! …
  • 5. DDS Topics [2/2] “com.myco.TTempSensor” Copyright  2010,  PrismTech  –    All  Rights  Reserved.   Name ¨  DDS Topic types can have associated keys ¨  Each unique key-value Topic identify a Topic Instance – a specific stream of values Type QoS struct TempSensor {! DURABILITY, @Key long Id; ! DEADLINE, float temp;! PRIORITY, TScale scale;! }! …
  • 7. DDS Type System The DDS Type System is defined by means of: Copyright  2010,  PrismTech  –    All  Rights  Reserved.   ¨  Abstract Type System ¨  The definition of types supported by DDS ¨  Concrete Syntax(es) to express types ¨  Syntax for specifying DDS Topic Types ¨  Serialization Format ¨  Format for representing topics types as a byte-stream
  • 9. DDS v1.2 Type System ¨  Abstract Type System Monomorphic Nominal Type System Copyright  2010,  PrismTech  –    All  Rights  Reserved.   ¨  ¨  Not explicitly defined by the specification ¨  Concrete Syntax(es) to express types ¨  IDL Subset (e.g. struct, enum, union, primitive types) ¨  Serialization Format ¨  CDR (Common Data Representation)
  • 10. [Abstract Type System] Limitations The monomorphic nominal type system makes it Copyright  2010,  PrismTech  –    All  Rights  Reserved.   ¨  hard to, transparently extend, information models ¨  For a given topic, DataWriters and DataReaders need to use exactly the same type definition thus limiting independent evolutions of the reading/writing side ¨  The type system is not formally defined
  • 11. Example [1/2] Suppose that a new Temperature Old Sensor Copyright  2010,  PrismTech  –    All  Rights  Reserved.   ¨  Sensor was available that produced struct TempSensor {! humidity estimates along with @Key long Id; ! float temp;! temperature }! TScale scale;! ¨  In DDS v1.2 it would be impossible to deploy new sensors along with old New Sensor sensors while using the same topic struct TempSensor {! ¨  So what could we do to @Key long Id; ! float temp;! incrementally update the system? TScale scale;! float hum;! ! }!
  • 12. Inconsistent Topic Types ¨  The scenario below would lead, in DDS v1.2, to an Inconsistent Topic Type error Copyright  2010,  PrismTech  –    All  Rights  Reserved.   TTempSensor TTempSensor struct TempSensor {! struct TempSensor {! @Key long Id; ! @Key long Id; ! float temp;! float temp;! TScale scale;! TScale scale;! }! float hum;! }! DW TTempSensor DR
  • 13. Example [2/2] ¨  The solution to the problem is to introduce Old Sensor Copyright  2010,  PrismTech  –    All  Rights  Reserved.   and Extension Topic/Type struct TempSensor {! @Key long Id; ! ¨  This extension topic/type shares the same float temp;! key as the original topic and contains the }! TScale scale;! new attributes ¨  This gets the job done. Yet it adds Sensor Extension complexity to the applications that will struct TempSensorExt {! want to take advantage of the @Key long Id; ! float hum;! capabilities provided by new sensors. }! These applications, will now have to deal with two topics, or rely on Multi-Topics
  • 14. Topic Extension ¨  The Legacy DR continues to use the old topic, while new DR are made aware of the extension topic Copyright  2010,  PrismTech  –    All  Rights  Reserved.   Legacy DR TTempSensor TTempSensor DR struct TempSensor {! struct TempSensor {! @Key long Id; ! @Key long Id; ! float temp;! float temp;! TScale scale;! TScale scale;! }! }! TTempSensor DW DR TTempSensorEx TTempSensorEx struct TempSensorEx {! @Key long Id; ! TTempSensorEx struct TempSensorEx {! @Key long Id; ! float temp;! float temp;! }! }!
  • 15. [Concrete Syntax] Limitations ¨  DDS v1.2 specifies IDL as the only concrete syntax for specifying Topic Types Copyright  2010,  PrismTech  –    All  Rights  Reserved.   ¨  In addition, no standard/portable way of specifying keys is defined ¨  Not everyone is happy with using IDL. Some users would like to use UML to define topic types, other, XML, etc.
  • 16. [Serialization Format] Limitations Copyright  2010,  PrismTech  –    All  Rights  Reserved.   ¨  CDR is a very efficient binary serialization format, its only limitation is the lack of support for extensible types ¨  This stems from the fact that CDR pre-supposes the exact knowledge of types and assumes that the order of type attributes is invariant
  • 17. Limitations Recap Copyright  2010,  PrismTech  –    All  Rights  Reserved.   ¨  The main limitations present in the DDS v1.2 type system are the limited support for information model extensibility and evolution ¨  Under the current model, information model evolution or extensions are either non-transparent or require complete update-redeploy cycles
  • 18. DDS Extensible and Dynamic Topic Types [DDS-Xtypes]
  • 19. DDS-XTypes Overview The DDS-XTypes Specification defines: Copyright  2010,  PrismTech  –    All  Rights  Reserved.   ¨  A polymorphic structural type system for DDS topic types – which formalizes extends in several ways the DDS v1.2 type system ¨  A set of standard concrete syntaxes for representing topic types ¨  A set of serialization formats supporting extensible types ¨  A Dynamic API for defining Topic Types and DR/DW operating over these types
  • 21. Type System Copyright  2010,  PrismTech  –    All  Rights  Reserved.   ¨  The DDS-Xtypes type system defines the rules and the type constructors that can be used to create valid DDS Topic Types ¨  The type system also defines a structural sub-type relation that is used to determine assignability of topic types
  • 22. Primitive Types ¨  The DDS-XTypes defines the following Primitive Types Copyright  2010,  PrismTech  –    All  Rights  Reserved.   ¨  The Type mapping defines how DDS Types are mapped to native Programming Language Types (e.g. C99 int32_t, float, etc.) Primitive Types Integral Floating Types Point Type Boolean Byte Int16 Int32 Int64 Char8 Char16 Float32 Float64 Float128 Bool
  • 23. Constructed Types ¨  The DDS-Xtypes introduces some new constructed types not Copyright  2010,  PrismTech  –    All  Rights  Reserved.   originally available in DDS v1.2 (marked in red in the figure below) Constructed Type Collection BitSet Enumeration Aggregation Alias Map Sequence String Array Union Structure Annotation
  • 24. Annotations ¨  DDS-Xtypes introduces annotation as a way to attach meta-data to , and control the semantics Copyright  2010,  PrismTech  –    All  Rights  Reserved.   of, types and type members ¨  Annotations are aggregated types whose members are restricted to being: ¨  Primitive Types ¨  String ¨  Enumeration
  • 25. Annotations in IDL ¨  Some built-in annotations, such as @Annotation! Copyright  2010,  PrismTech  –    All  Rights  Reserved.   @ID, @Key, @Optional, etc., are local interface MyAnnotation {! attribute long attr1; ! defined by DDS-XTypes }! attribute string attr2 default “zzz”; ! specification ! @MyAnnotation! struct MyStructA {! ¨  User can define their own long member1;! string member2; ! annotations }! ! struct MyStructZ {! Annotation can also be added @MyAnnotation (attr1 = 10, ! ¨  attr2 = “yyy”)! as //@ after the annotated type long memberX;! string memberY; //@Optional! member }! !
  • 26. Structure ¨  Structures are the type used to associate user-defined types with Topics Copyright  2010,  PrismTech  –    All  Rights  Reserved.   ¨  Structures defined by the DDS-Xtypes Specification support Single Inheritance ¨  Structures members have associated some properties, namely: ¨  ID. To uniquely identify an attribute ¨  Key. To identify whether the member is part of the key ¨  Optionality. To express the fact that an attributed is optional and thus might not be set ¨  Must Understand. To enforce that a given field is not discarded ¨  Shared. To allow for non-inline data-storage of the attribute
  • 27. DDS-XTypes Structures ¨  Built-in annotations can Copyright  2010,  PrismTech  –    All  Rights  Reserved.   struct TempSensor {! be used to control the @Key @ID(10) ! long Id; ! semantic associated @MustUnderstand @ID(11)! float temp;! with type members @Optional @ID(12) ! float hum;! };! Annotations, as ! ¨  ! explained next, are also Struct InfraRedTempSensor : TempSensor {! @Shared @ID(20) ! used to control the kind byte spectrum[1024];! };! of extensibility/mutability ! supported
  • 28. Type Extensibility & Mutability To better support incremental system updates, the DDS-XTypes Specification Copyright  2010,  PrismTech  –    All  Rights  Reserved.   defines 3 different kinds of types. The @Extensibility annotation controls the kind attached to a given type ¨  Final ¨  The type is sealed and nothing can be changed w/o breaking compatibility ¨  Extensible (Default) ¨  The Type is monotonically extensible, meaning that new attributes can be added while preserving the compatibility previous versions of the same type ¨  Mutable ¨  The Type can be mutated by adding, reordering and removing fields. The type compatibility depends on structural compatibility
  • 29. Assignability ¨  The compatibility between different types, is expressed in Copyright  2010,  PrismTech  –    All  Rights  Reserved.   terms of assignability ¨  Given two types, T1 and T2, then based on the kind of extensibility supported, T1 is-assignable-from T2 if the type T1 can be “projected/widened” from T2 ¨  Example T2 T1 struct TempSensor {! @Key long Id; ! Projection struct TempSensor {! float temp;! @Key long Id; ! TScale scale;! float temp;! float hum;! TScale scale;! ! }! }!
  • 30. Final Types Assignability Rules ¨  Given two final types T1 and T2, we say that “T1 is- assignable-from T2”, iff: Copyright  2010,  PrismTech  –    All  Rights  Reserved.   ¨  T1 is-assignable-from T2 iff the two types have exactly the same members – meaning exactly same names and types as well as @ID and @Key annotations ¨  Example: T2 T1 @Extensibility(FINAL_EXTENSIBILITY) ! @Extensibility(FINAL_EXTENSIBILITY) ! struct TempSensor {! struct TSensor {! @Key long Id; ! @Key long Id; ! float temp;! float temp;! TScale scale;! TScale scale;! }! }!
  • 31. Extensible Types Assignability Rule Copyright  2010,  PrismTech  –    All  Rights  Reserved.   ¨  Given two extensible types, T1 and T2, we say that T1 is-assignable-from T2 iff: ¨  T2 is a monotonic extension of type T1, e.g., T1 is a “prefix” of T2 ¨  Example: T2 T1 @Extensibility(EXTENSIBLE_EXTENSIBILITY) ! @Extensibility(EXTENSIBLE_EXTENSIBILITY) ! struct TSensor {! struct TSensor {! @Key long Id; ! @Key long Id; ! float temp;! float temp;! TScale scale;! TScale scale;! float hum;! };! };!
  • 32. Mutable Types Assignability Rule ¨  Given two mutable types, T1 and T2, we say that Copyright  2010,  PrismTech  –    All  Rights  Reserved.   T1 is-assignable-from T2 iff: ¨  T1 and T2 share the same keys (e.g. same members sharing name and ID) ¨  Homonymous members in T1 and T2 share the same ID and vice-versa ¨  For each member x of T1 (T1.x) and y of T2 (T2.y) sharing a common ID then T1.x is-assignable-from T2.y ¨  All @MustUnderstand member of T2 also exist in T1
  • 33. Mutable Types Example T2 T1 Copyright  2010,  PrismTech  –    All  Rights  Reserved.   @Extensibility(MUTABLE_EXTENSIBILITY) ! @Extensibility(MUTABLE_EXTENSIBILITY) ! struct TempSensor {! struct HumSensor{! @Key @ID(10) long Id; ! @Key @ID(10) long Id; ! @ID(11)float temp;! @ID(13) float hum;! @ID(12)TScale scale;! };! @ID(13)float hum;! };! T1 is-assignable-from T2 T2 T1 @Extensibility(MUTABLE_EXTENSIBILITY) ! @Extensibility(MUTABLE_EXTENSIBILITY) ! struct TempSensor {! struct HumSensor{! @Key @ID(10) long Id; ! @Key @ID(10) long Id; ! @ID(11)float temp;! @ID(13) float hum;! @ID(12)TScale scale;! @ID(20) long status; ! @ID(13)float hum;! };! };! T1 is-assignable-from T2
  • 34. Type Consistency QoS The DDS-XTypes introduces a the Type Consistency Copyright  2010,  PrismTech  –    All  Rights  Reserved.   ¨  Enforcement Policy to control legal type conversion ¨  This Policy defines the following possibilities: ¨  EXACT_TYPE. As DDS today (but with checks) ¨  EXACT_NAME. What DDSI requires today ¨  DECLARED. Compatible type signatures + assignability ¨  ASSIGNABLE. Assignability is what matters
  • 35. Topic Model “com.myco.TTempSensor” ¨  The DDS-XTypes Copyright  2010,  PrismTech  –    All  Rights  Reserved.   specification extends Name the topic definition by “TempSensor, TSensor” introducing the concept of a type signature Type Signature Topic QoS ¨  Type signature are used TYPE_CONSISTENCY to constrain the set of Type DURABILITY, DEADLINE, types that might be struct TempSensor {! PRIORITY, considered assignable @Key long Id; ! float temp;! … TScale scale;! }!
  • 37. Example – Reloaded Suppose that a new Old Sensor Copyright  2010,  PrismTech  –    All  Rights  Reserved.   ¨  Temperature Sensor was struct TempSensor {! @Key long Id; ! available that produced float temp;! TScale scale;! }! humidity estimates along with temperature New Sensor ¨  So what could we do to struct TempSensor {! @Key long Id; ! float temp;! incrementally update the TScale scale;! float hum;! system? ! }!
  • 38. Assignable Topic Types ¨  With DDS-XTypes the system evolution does not introduce any burden Copyright  2010,  PrismTech  –    All  Rights  Reserved.   ¨  Types are projected through the assignability rules TTempSensor struct TempSensor {! @Key long Id; ! TTempSensor float temp;! TScale scale;! struct TempSensor {! DR }! @Key long Id; ! float temp;! TScale scale;! DW TTempSensor float hum;! }! TTempSensor DR struct TempSensor {! @Key long Id; ! float temp;! TScale scale;! float hum;! }!
  • 40. Picking your “Extensibility” ¨  Final Types should be used to express universal invariant of the system. Something that is so fundamental it should never-ever change w/o Copyright  2010,  PrismTech  –    All  Rights  Reserved.   requiring a full system update ¨  Extensible Types are the default in the specification because their semantic is pretty straightforward and safe. Thus, if you don’t want to get into type refactoring you might stick with this default ¨  Mutable Types give you maximum flexibility, however you should be designing your information model around them. When using Mutable Types ensure that you carefully use the @MustUndertand and @Optional annotations to set structural lower bounds on your type as well as nicely dealing with absence of members
  • 41. Type Signature ¨  If you design your information model properly, then Copyright  2010,  PrismTech  –    All  Rights  Reserved.   you are safe in ignoring the type signature and using the ASSIGNABLE Type Consistency policy ¨  However, when integrating existing systems, the type-signature is key to scope what you might match
  • 43. Concluding Remarks Copyright  2010,  PrismTech  –    All  Rights  Reserved.   ¨  The DDS-XTypes specification provides a set of powerful extensions to deal with system extensibility and evolution ¨  The Specification is adopted and under finalization ¨  The OpenSplice DDS team is already implementing it!
  • 44. OpenSplice DDS Delivering Performance, Openness, and Freedom http://www.opensplice.com/ http://www.opensplice.org/ http://www.slideshare.net/angelo.corsaro emailto:opensplicedds@prismtech.com Copyright  2010,  PrismTech  –    All  Rights  Reserved.   http://bit.ly/1Sreg http://twitter.com/acorsaro/ http://www.youtube.com/OpenSpliceTube http://opensplice.blogspot.com