SlideShare a Scribd company logo
1 of 43
Download to read offline
OpenSplice DDS
                                                            Delivering Performance, Openness, and Freedom



       Angelo Corsaro, Ph.D.

                                        Hibernating DDS
Product Strategy & Marketing Manager
     OMG RTESS and DDS SIG Co-Chair
         angelo.corsaro@prismtech.com


                                        with Java and C++
Agenda

‣ The Object/Relational Impedance Mismatch
‣ Why Hibernating DDS?




                                                                   Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
‣ DLRL: The Mysterious Acronym
‣ Hibernating DDS with DLRL
‣ Concluding Remarks

                          © 2009, PrismTech. All Rights Reserved
Object/Relational Impedance Mismatch [1/2]

‣ When designing and building application with Object Oriented methodologies and
  programming languages, one often have to deal with the Object/Relational Impedance
  Mismatch

‣ The Object/Relational Impedance Mismatch arises all the time when data represented




                                                                                             Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
  in a relational form, e.g., stored in a DBMS, has to be manipulated by applications
  written in Object Oriented Programming Languages

‣ In these cases, the solution is often to manually reconstruct applications’ objects, and
  their relationships out of the data base tables

‣ This approach however, has several drawbacks, as for instance it is tedious, error-
  prone, requires application programmers to be familiar with SQL, etc.

                                       © 2009, PrismTech. All Rights Reserved
Object/Relational Impedance Mismatch [2/2]

‣ Several approaches have been
                                      Object-Oriented Representation                    Relational Representation
  suggested to gap the object/
  relational impedance
  mismatch

                                                                                    ?
                                         Alpha
                                                                           Beta
                                      a

‣ For the specific case of Data
                                                                       x
                                                        0..1     *
                                      b
                                                                       y




                                                                                                                    Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
                                      opOne()
                                                                       opX()
                                      opTwo()
  Bases, two approaches have                                           opY()


  received most attention:
                                          Theta
 ‣ Use of OODBMS                      j
                                      k
 ‣ Use of ORM technologies, such as   opA()
                                      opB()
   JDO, Hibernate, etc.
‣ However, due to the
  ubiquitous presence of
  RDBMS, ORM techniques are
  currently predominant


                                           © 2009, PrismTech. All Rights Reserved
Agenda

‣ The Object/Relational Impedance Mismatch
‣ Why Hibernating DDS?




                                                                   Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
‣ DLRL: The Mysterious Acronym
‣ Hibernating DDS with DLRL
‣ Concluding Remarks

                          © 2009, PrismTech. All Rights Reserved
Why Hibernating DDS?
‣ DDS allows application to do publish/                                                                 Subscriber
  subscribe over a Distributed Relational                            Publisher

  Data Model                                                                       B

                                                                                       m


‣ DDS Topics, the unit of information that                                                                 Subscriber
                                                                                   A           F


                                                                    Publisher




                                                                                                                        Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
  applications can publish/subscribe, can be                                       J
                                                                                           D       C



  seen and treated locally, as if it was a DBMS                                                            Subscriber
                                                                                   K
                                                                                           E


  Table
                                                                     Publisher
                                                                                                       Subscriber
‣ Thus, each DDS application can use a
  subset of SQL92 to access and navigate the
  set of topics it’s currently subscribing

   As a result, when using DDS with Object-Oriented Programming Languages the
   Object/Relational Mismatch needs to be addressed!

                                          © 2009, PrismTech. All Rights Reserved
A Simple Example[1/3]

                                                                                         ‣ Topic Keys can be used to identify
‣ Suppose we have to build an application                                                   instances as well as relationships
  for controlling the temperature in big
                                                                                         ‣ Relationships can be navigated by
  buildings                                                                                 relying on a subset of SQL 92

‣ The first step is to identify the DDS                                                  ‣ Keys can be represented by an




                                                                                                                                 Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
                                                                                            arbitrary number of Topic fields
  (actually DCPS) data model capturing the
  key entities of this application
                                                                       TConditioner

‣ Once this is done, we will write the                               cID: int                                     TTempSensor
                                                                     temp: float                                 tID: int
                                                                     humidity: float                             temp: float
  application by leveraging on DDS                                   fan_level: int          TRoom              humidity: float
                                                                     status: int       rID: int                 rID: int
  Readers/Writers and building the                                   rID: int          width: float
                                                                                       height: float
  business logic on-top of these                                                       length: float                   TFloor
                                                                                       fID: int                 fID: int
  abstractions                                                                                                  level: int
                                                                                                                open: int
                                                                                      Relational Data Model


                                           © 2009, PrismTech. All Rights Reserved
A Simple Example [2/3]
                                                                                          class Conditioner {
                                                                                          public:
class Room {
                                                                                          	 explicit Conditioner(int id);
public:
                                                                                          	 Conditioner(const TConditioner& tcond)
	 explicit Room(int id);
                                                                                          	 ~Conditioner();
	 Room(int it, float width, float height, float length);
                                                                                          public:
	 ~Room();
                                                                                          	 void set_temp(float temp);
public:
                                                                                          	 void set_humidity(float hum);
	
                                                                                          	 void set_fan_level(int level);
	 void set_climate(const Climate_t c);
                                                                                          	 void start();
	 void set_temperature(float temp);
                                                                                          	 void stop();




                                                                                                                                                        Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
	 float get_temperature();
                                                                                          	 void pause();
	 void set_humidity(float hum);
                                                                                          public:
	 float get_humidity();
                                                                                          	 // Performs required DDS pub/sub activities
public:
                                                                                          	 void update();
	 // Performs required DDS pub/sub activities
                                                                                          	 void flush();
	 void update();
                                                                                          private:
	 void flush();
                                                                                          	 TConditioner        cond_topic_;
	
                                                                                          	 TConditionerWriter* cond_writer_;
protected:
                                                                                          };
	 void init(int id);
	
private:
                                                                                      void
	 TRoom               room_topic_;
                                                                                      Room::init(int id) {
	 TRoomReader*        room_reader_;
                                                                                      	 TTempSensorReader*   temp_reader_ = ...; //Resolve the reader
	 TRoomWriter*        room_writer_;
                                                                                      	 TConditionerReader* cond_reader_ = ...; //Resolve the reader	
	
                                                                                      	
	 std::vector<Conditioner> cond_vec_;
                                                                                      	 // Query the reader for the TTempSensor and TConditioner
	 std::vector<TempSensor> temp_vec_;
                                                                                      	 // that have quot;rID == idquot; then add those to the container
};
                                                                                      }


                                                           © 2009, PrismTech. All Rights Reserved
A Simple Example [3/3]

‣ As the simple example reveals, if DDS (actually DCPS) is used from an Object Oriented
  programming language such as Java, or C++, the programmer is either left to deal with the
  Object/Relational Mismatch




                                                                                              Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
‣ Depending on how the programmer tackles this mismatch, its resulting application will be
  more or less polluted by “DDS” details
‣ Implementing by hand the Object/Relational Mapping is quite a bit of work, which becomes
  quickly non-creative and repetitive



Is there a better way to take tackle the Object/Relational Impedance Mismatch in DDS?


                                           © 2009, PrismTech. All Rights Reserved
Agenda

‣ The Object/Relational Impedance Mismatch
‣ Why Hibernating DDS?




                                                                   Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
‣ DLRL: The Mysterious Acronym
‣ Hibernating DDS with DLRL
‣ Concluding Remarks

                          © 2009, PrismTech. All Rights Reserved
DLRL: The Mysterious Acronym...

‣ The OMG DDS Standard included since its                                                         Application
  inception the Data Local Reconstruction
  Layer (DLRL). This optional layer provides an                                                       Object/Relational Mapping

  extended Object/Relational Mapping facility for                                              Data Local Reconstruction Layer (DLRL)




                                                                                                                                        Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
  DDS                                                                                                                     Content
                                                                                 Ownership           Durability
                                                                                                                        Subscription
‣ The DLRL is quite similar to Hibernate (or                                                     Minimum Profile
  Java Data Objects), although introduces some                                        Data Centric Publish/Subscribe (DCPS)
  extensions needed to deal with Distributed
  Systems                                                                              Real-Time Publish/Subscribe Protocol

                                                                                         DDS Interoperability Wire Protocol
‣ DLRL implementation currently exist for C++
                                                                                                      UDP/IP
  and Java


                                        © 2009, PrismTech. All Rights Reserved
DCPS Application

                                                                                  Application

‣ The application works directly at                         TConditioner                                   TTempSensor
  the DCPS level                                          cID: int                                       tID: int
                                                          temp: float                                     temp: float




                                                                                                                                     Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
                                                          humidity: float                TRoom            humidity: float


‣ When using OO Programming
                                                          fan_level: int          rID: int               rID: int
                                                          status: int             width: float
                                                          rID: int                height: float
                                                                                  length: float                 TFloor
  Languages the Object/Relational                                                 fID: int               fID: int
                                                                                                         level: int
  Impedance Mismatch has to be                                                                           open: int


  manually dealt                                                                                          Content




                                                                                                                          DDS v1.2
                                                               Ownership             Durability
                                                                                                        Subscription

                                                                                  Minimum Profile

                                                                        Data Centric Publish/Subscribe (DCPS)




                                      © 2009, PrismTech. All Rights Reserved
DLRL Application
                                                                                                      Application

                                                                                 TempSensor
                                                                             temp: float
                                                                             humidity: float
                                                                             getTemp()



‣ The DLRL Layer is used to
                                                                                                                 Room                       Floor
                                                                             getHumidity()        *
                                                                                                         width: float              level: int
                                                                                                       1
                                                                                                         height: float             open: int
                                                                                                                                1 climate: int
                                                                                                         length: float
                                                                                  Conditioner                             *
                                                                                                         climate: int             set_status()
                                                                             temp: float

  provide a Language Integrated                                                                        1 set_climate();           set_climate()
                                                                             humidity: float
                                                                                                         set_temp()               get_level()
                                                                             fan_level: int      *
                                                                                                         set_humidity()
                                                                             status: int
                                                                             setTemp()

  access to DDS data                                                         setHumidity()
                                                                             setFanLevel()




                                                                                                                                                               Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
                                                                             start()
                                                                             stop()
                                                                             pause():


‣ The Designer has great freedom




                                                                                                                                                    DDS v1.2
                                                                                                Object/Relational Mapping
  in deciding how Objects have to                                                   Data Local Reconstruction Layer (DLRL)
  map to Topics                                                                TConditioner                                     TTempSensor
                                                                             cID: int                                         tID: int
                                                                             temp: float                                       temp: float


‣ Different Object Reconstruction
                                                                             humidity: float                 TRoom             humidity: float
                                                                             fan_level: int           rID: int                rID: int
                                                                             status: int              width: float
                                                                             rID: int                 height: float

  can be created for different                                                                        length: float                  TFloor
                                                                                                      fID: int                fID: int
                                                                                                                              level: int
                                                                                                                              open: int
  applications
                                                                                                                                 Content




                                                                                                                                                    DDS v1.2
                                                                             Ownership                     Durability
                                                                                                                               Subscription

                                                                                                      Minimum Profile

                                                                                     Data Centric Publish/Subscribe (DCPS)


                                    © 2009, PrismTech. All Rights Reserved
Generic DDS Application
                                                                                                                           Application

                                                                                                        TempSensor
                                                                                                    temp: float
                                                                                                    humidity: float
                                                                                                    getTemp()
                                                                                                                                       Room                         Floor
                                                                                                    getHumidity()      *
                                                                                                                               width: float                level: int
                                                                                                                             1
                                                                                                                               height: float               open: int
                                                                                                                                                        1 climate: int
                                                                                                                               length: float
                                                                                                         Conditioner                              *
                                                                                                                               climate: int               set_status()
                                                                                                    temp: float
                                                                                                                             1 set_climate();             set_climate()
                                                                                                    humidity: float
                                                                                                                               set_temp()                 get_level()
                                                                                                    fan_level: int     *
                                                                                                                               set_humidity()


‣ In the most general case, different portion of
                                                                                                    status: int
                                                                                                    setTemp()
                                                                                                    setHumidity()
                                                                                                    setFanLevel()
                                                                                                    start()




                                                                                                                                                                                Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
  the application might rely on DLRL or DCPS
                                                                                                    stop()
                                                                                                    pause():




  depending on their specific needs                                                                               Object/Relational Mapping
                                                                                  Application
                                                                                                       Data Local Reconstruction Layer (DLRL)


‣ DCPS access might be required for accessing                                        TConditioner                                        TTempSensor
                                                                                   cID: int                                            tID: int
                                                                                   temp: float                                          temp: float

  and tuning some specific QoS
                                                                                   humidity: float             TRoom                    humidity: float
                                                                                   fan_level: int       rID: int                       rID: int
                                                                                   status: int          width: float
                                                                                   rID: int             height: float
                                                                                                        length: float                         TFloor
                                                                                                        fID: int                       fID: int
                                                                                                                                       level: int
                                                                                                                                       open: int


                                                                                                                                             Content




                                                                                                                                                                     DDS v1.2
                                                                                    Ownership                 Durability
                                                                                                                                           Subscription

                                                                                                         Minimum Profile

                                                                                            Data Centric Publish/Subscribe (DCPS)




                                         © 2009, PrismTech. All Rights Reserved
Agenda

‣ The Object/Relational Impedance Mismatch
‣ Why Hibernating DDS?




                                                                   Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
‣ DLRL: The Mysterious Acronym
‣ Hibernating DDS with DLRL
‣ Concluding Remarks

                          © 2009, PrismTech. All Rights Reserved
DLRL Key Features

‣ The main goal of DLRL is that of providing a seamless integration of DDS
 for Object Oriented Programming Languages
‣ DLRL provides a seamless integration for both:
 ‣ Applications that want to completely ignore the relational nature of DCPS




                                                                                       Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
 ‣ Application that need to leverage an existing DCPS Data Model
‣ DLRL provides support for:
 ‣ Local/Shared Attributes (only shared attributes are subject to data distribution)
 ‣ Mono-/Multi-valued attributes
 ‣ Association, with support for both one-to-one, one-to-many
 ‣ Aggregation, with support for both one-to-one, one-to-many
 ‣ Single Inheritance

                                             © 2009, PrismTech. All Rights Reserved
Structural Mapping
Two approaches are possible for structural mapping of DLRL Objects to DCPS

       DLRL mapping to DCPS Topics can be automatically inferred by the
  1
       middleware using default mapping rules




                                                                                      Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
       DLRL mapping to DCPS Topics can be specified by the designer, thus making it
  2
       possible for reconstructing Object Oriented views of existing data models




                                      © 2009, PrismTech. All Rights Reserved
Structural Mapping
    DLRL mapping to DCPS Topics can be automatically inferred by the
1
    middleware using default mapping rules




                                                                                  Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
                                                     Track
                  Radar                      x: real
                          0..1           *   y: real
                          a_radar   tracks   comments[*]: string




                                                     Track3D
                                                 z: real




                                         © 2009, PrismTech. All Rights Reserved
Structural Mapping
    DLRL mapping to DCPS Topics can be automatically inferred by the
1
    middleware using default mapping rules
                  RADAR_TOPIC
              oid: int




                                                                                                                    Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
                                                                                                   TRACK_TOPIC
                                                                                              class: string
                                                             Track
                                                                                              oid: int
                    Radar                           x: real                                   x: real
                                0..1            *   y: real                                   y: real
                                a_radar    tracks   comments[*]: string                       radar: int
                                                                                              comments: StringSeq




                                                            Track3D
                                                        z: real                                  T3D_TOPIC
                                                                                         oid: long
                                                                                         z: real
                           RADAR_TRACKS_TOPIC
                       r_oid: int
                       index: int
                       T_class: string
                       T_oid: int




                                                © 2009, PrismTech. All Rights Reserved
Structural Mapping
     DLRL mapping to DCPS Topics can be specified by the designer, thus making it
 2
     possible for reconstructing Object Oriented views of existing data models




                                                                                                   Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
                          TConditioner                                              TTempSensor
                        cID: int                                                  tID: int
                        temp: float                                                temp: float
                        humidity: float             TRoom                          humidity: float
                        fan_level: int       rID: int                             rID: int
                        status: int          width: float
                        rID: int             height: float
                                             length: float                               TFloor
                                             fID: int                             fID: int
                                                                                  level: int
                                                                                  open: int
                                         © 2009, PrismTech. All Rights Reserved
Structural Mapping
     DLRL mapping to DCPS Topics can be specified by the designer, thus making it
 2
     possible for reconstructing Object Oriented views of existing data models

               TempSensor
           temp: float
           humidity: float
           getTemp()




                                                                                                               Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
                                            Room                            Floor
           getHumidity()      *
                                    width: float                   level: int
                                   1
                                    height: float                  open: int
                                                                1 climate: int
                                    length: float
                Conditioner                           *
                                    climate: int                  set_status()
           temp: float
                                  1 set_climate();                set_climate()
           humidity: float
                                    set_temp()                    get_level()
           fan_level: int     *
                                    set_humidity()
           status: int
           setTemp()
           setHumidity()
           setFanLevel()
           start()
           stop()
           pause():
                                    TConditioner                                                TTempSensor
                                  cID: int                                                    tID: int
                                  temp: float                                                  temp: float
                                  humidity: float                TRoom                         humidity: float
                                  fan_level: int          rID: int                            rID: int
                                  status: int             width: float
                                  rID: int                height: float
                                                          length: float                              TFloor
                                                          fID: int                            fID: int
                                                                                              level: int
                                                                                              open: int
                                                     © 2009, PrismTech. All Rights Reserved
Specifying the Structural Mapping


‣ The structural mapping between DLRL and DCPS
 entities is specified by relying, depending on the case,




                                                                                           Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
 on:
 ‣ The IDL description of the DLRL Objects
 ‣ The Model Tags defining the mapping (which could be default)
 ‣ An Optional IDL file specifying DCPS Topics




                                                  © 2009, PrismTech. All Rights Reserved
Working with DLRL Objects


       Object Home(s)




                                                                                                            Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
Concepts                           Object Cache

The mechanism at the foundation is a managed Object Cache:
‣ An Object Cache can be populated by different types
  (classes) of Objects.
‣ Each object class has its own manager called an
  ObjectHome.
 ‣ They can inform the application about object creation/modification/
   deletion.
‣ Classes may contain navigable relationships to other
  classes.
‣ Each Object class may inherit from 1 other Object class.

                                                                   © 2009, PrismTech. All Rights Reserved
Working with DLRL Objects



                                       DR    DR
                                 DR




                                                                                                                     Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
                                         OpenSplice DDS Information backbone



Processing Updates
‣ DCPS updates arrive as separate samples at separate times.
‣ DLRL Updates are processed in ‘update rounds’:
 ‣ ObjectHomes read all available samples from the DDS information backbone and update their corresponding objects
   in the Cache accordingly.
 ‣ Objects are allocated once and their state is ‘overwritten’ on subsequent updates.
 ‣ Therefore an Object always contains the latest available state.
 ‣ Push mode: update rounds start when new data arrives. The application gets notified by Listeners.
 ‣ Pull mode: the application can determine the start of each update round manually.
                                                           © 2009, PrismTech. All Rights Reserved
Working with DLRL Objects



                                       DR    DR
                                 DR




                                                                                                                     Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
                                         OpenSplice DDS Information backbone



Processing Updates
‣ DCPS updates arrive as separate samples at separate times.
‣ DLRL Updates are processed in ‘update rounds’:
 ‣ ObjectHomes read all available samples from the DDS information backbone and update their corresponding objects
   in the Cache accordingly.
 ‣ Objects are allocated once and their state is ‘overwritten’ on subsequent updates.
 ‣ Therefore an Object always contains the latest available state.
 ‣ Push mode: update rounds start when new data arrives. The application gets notified by Listeners.
 ‣ Pull mode: the application can determine the start of each update round manually.
                                                           © 2009, PrismTech. All Rights Reserved
Working with DLRL Objects




                                                                                                                       Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
                                                                                           Application
                  DR   DR   DR


                                       OpenSplice DDS Information backbone


Notifying the application
The Object Caches offer two ways to notify an application of incoming information:
‣ Listeners can be triggered for each modification of an object’s state.
 ‣ Listeners registered to the Cache indicate the start and end of each update round.
 ‣ Listeners registered to the ObjectHome pass each modification back as a callback argument.
 ‣ With a simple mechanism that can be translated into callbacks for Listeners on individual objects.
‣ It is possible to get a separate list of all objects that have been created/modified/deleted in the current update
  round.
                                                  © 2009, PrismTech. All Rights Reserved
Working with DLRL Objects


                                                                           attach_listener




                                                                                                                       Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
                                                                                             Application
                  DR   DR   DR


                                       OpenSplice DDS Information backbone


Notifying the application
The Object Caches offer two ways to notify an application of incoming information:
‣ Listeners can be triggered for each modification of an object’s state.
 ‣ Listeners registered to the Cache indicate the start and end of each update round.
 ‣ Listeners registered to the ObjectHome pass each modification back as a callback argument.
 ‣ With a simple mechanism that can be translated into callbacks for Listeners on individual objects.
‣ It is possible to get a separate list of all objects that have been created/modified/deleted in the current update
  round.
                                                  © 2009, PrismTech. All Rights Reserved
Working with DLRL Objects

                                                       attach_listener




                                                                                                                       Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
                                                                                           Application
                  DR   DR   DR


                                       OpenSplice DDS Information backbone


Notifying the application
The Object Caches offer two ways to notify an application of incoming information:
‣ Listeners can be triggered for each modification of an object’s state.
 ‣ Listeners registered to the Cache indicate the start and end of each update round.
 ‣ Listeners registered to the ObjectHome pass each modification back as a callback argument.
 ‣ With a simple mechanism that can be translated into callbacks for Listeners on individual objects.
‣ It is possible to get a separate list of all objects that have been created/modified/deleted in the current update
  round.
                                                  © 2009, PrismTech. All Rights Reserved
Working with DLRL Objects




                                                                                                                       Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
                                                                                           Application
                  DR   DR   DR


                                       OpenSplice DDS Information backbone


Notifying the application
The Object Caches offer two ways to notify an application of incoming information:
‣ Listeners can be triggered for each modification of an object’s state.
 ‣ Listeners registered to the Cache indicate the start and end of each update round.
 ‣ Listeners registered to the ObjectHome pass each modification back as a callback argument.
 ‣ With a simple mechanism that can be translated into callbacks for Listeners on individual objects.
‣ It is possible to get a separate list of all objects that have been created/modified/deleted in the current update
  round.
                                                  © 2009, PrismTech. All Rights Reserved
Working with DLRL Objects

                                                                            on_begin_
                                                                            updates()




                                                                                                                       Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
                                                                                           Application
                  DR   DR   DR


                                       OpenSplice DDS Information backbone


Notifying the application
The Object Caches offer two ways to notify an application of incoming information:
‣ Listeners can be triggered for each modification of an object’s state.
 ‣ Listeners registered to the Cache indicate the start and end of each update round.
 ‣ Listeners registered to the ObjectHome pass each modification back as a callback argument.
 ‣ With a simple mechanism that can be translated into callbacks for Listeners on individual objects.
‣ It is possible to get a separate list of all objects that have been created/modified/deleted in the current update
  round.
                                                  © 2009, PrismTech. All Rights Reserved
Working with DLRL Objects
                                                          on_object_created()




                                                                                                                       Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
                                                                                           Application
                  DR   DR   DR


                                       OpenSplice DDS Information backbone


Notifying the application
The Object Caches offer two ways to notify an application of incoming information:
‣ Listeners can be triggered for each modification of an object’s state.
 ‣ Listeners registered to the Cache indicate the start and end of each update round.
 ‣ Listeners registered to the ObjectHome pass each modification back as a callback argument.
 ‣ With a simple mechanism that can be translated into callbacks for Listeners on individual objects.
‣ It is possible to get a separate list of all objects that have been created/modified/deleted in the current update
  round.
                                                  © 2009, PrismTech. All Rights Reserved
Working with DLRL Objects
                                                  on_object_modified()




                                                                                                                       Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
                                                                                           Application
                  DR   DR   DR


                                       OpenSplice DDS Information backbone


Notifying the application
The Object Caches offer two ways to notify an application of incoming information:
‣ Listeners can be triggered for each modification of an object’s state.
 ‣ Listeners registered to the Cache indicate the start and end of each update round.
 ‣ Listeners registered to the ObjectHome pass each modification back as a callback argument.
 ‣ With a simple mechanism that can be translated into callbacks for Listeners on individual objects.
‣ It is possible to get a separate list of all objects that have been created/modified/deleted in the current update
  round.
                                                  © 2009, PrismTech. All Rights Reserved
Working with DLRL Objects


                                                                                on_end_
                                                                               updates()




                                                                                                                       Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
                                                                                           Application
                  DR   DR   DR


                                       OpenSplice DDS Information backbone


Notifying the application
The Object Caches offer two ways to notify an application of incoming information:
‣ Listeners can be triggered for each modification of an object’s state.
 ‣ Listeners registered to the Cache indicate the start and end of each update round.
 ‣ Listeners registered to the ObjectHome pass each modification back as a callback argument.
 ‣ With a simple mechanism that can be translated into callbacks for Listeners on individual objects.
‣ It is possible to get a separate list of all objects that have been created/modified/deleted in the current update
  round.
                                                  © 2009, PrismTech. All Rights Reserved
Working with DLRL Objects




                                                                                                                       Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
                                                                                           Application
                  DR   DR   DR
                                               get_modified_objects()
                                       OpenSplice DDS Information backbone


Notifying the application
The Object Caches offer two ways to notify an application of incoming information:
‣ Listeners can be triggered for each modification of an object’s state.
 ‣ Listeners registered to the Cache indicate the start and end of each update round.
 ‣ Listeners registered to the ObjectHome pass each modification back as a callback argument.
 ‣ With a simple mechanism that can be translated into callbacks for Listeners on individual objects.
‣ It is possible to get a separate list of all objects that have been created/modified/deleted in the current update
  round.
                                                  © 2009, PrismTech. All Rights Reserved
Working with DLRL Objects



                DR    DR   DR                                                        DW   DW   DW




                                                                                                    Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
                                                           DCPS




 Using snapshots
 Some applications want to be able to modify or create certain objects:
 ‣ An initial set of Objects may be cloned into a writeable CacheAccess.
 ‣ Available objects may then be modified locally.
 ‣ New objects can be created in the CacheAccess as well.
 ‣ The ‘write’ operation instructs the ObjectHomes to write any modifications into the system.

                                            © 2009, PrismTech. All Rights Reserved
Working with DLRL Objects
                                                       S              on_object_in()




                                                                                         Application




                                                                                                       Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
                     DR   DR    DR


                                                              DCPS



Creating and managing Selections
A Selection mechanism can keep track of subsets of information:
‣ Selections are created and managed by the ObjectHomes.
‣ A Criterion plugged into a Selection determines the boundaries of a subset:
 ‣ A QueryCriterion determines boundaries based on an SQL statement.
 ‣ A FilterCriterion determines boundaries based on user-defined callback filters.
‣ Selections can notify the application when objects enter and leave it.
                                                © 2009, PrismTech. All Rights Reserved
Putting it all Together
                                                                         Track.idl

                                                                        #include quot;dlrl.idlquot;
                                                                        valuetype stringStrMap;       // StrMap<string>
                                                                        valuetype TrackList;          // List<Track>
                                                                        valuetype Radar;
                                    Track
                                                                        valuetype Track : DLRL::ObjectRoot {
 Radar                      x: real
         0..1                                                               public double       x;




                                                                                                                          Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
                        *   y: real
         a_radar   tracks                                                   public double       y;
                            comments[*]: string
                                                                            public stringStrMap comments;
                                                                            public long         w;
                                                                            public Radar a_radar;
                                                                        };
                                  Track3D
                              z: real
                                                                        valuetype Track3D : Track {
                                                                            public double       z;
                                                                        };

                                                                        valuetype Radar : DLRL::ObjectRoot {
                                                                            public TrackList    tracks;
                                                                        };




                                                  © 2009, PrismTech. All Rights Reserved
Putting it all Together

                                                                                                   mapping.xml
    RADAR_TOPIC
                                                                                                  <?xml version=quot;1.0quot; encoding=quot;ISO-8859-1quot;?>
oid: int

                                                                                                  <!DOCTYPE Dlrl SYSTEM quot;dlrl.dtdquot;>
                                                                                                  <Dlrl name=quot;Examplequot;>
                                                                                                  <templateDef name=quot;stringStrMapquot; pattern=quot;StrMapquot; itemType=quot;stringquot;/>
                                                                     TRACK_TOPIC




                                                                                                                                                                          Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
                                                                                                  <templateDef name=quot;TrackListquot; pattern=quot;Listquot; itemType=quot;Trackquot;/>
                                                                class: string
                                             Track
                                                                oid: int
      Radar                           x: real
                                                                                                  <classMapping name=quot;Trackquot;>
                                                                x: real
                  0..1            *   y: real                   y: real
                                                                                                  <local name=quot;wquot;/>
                  a_radar    tracks   comments[*]: string       radar: int
                                                                                                  </classMapping>
                                                                comments: StringSeq
                                                                                                  <associationDef>
                                                                                                  <relation class=quot;Trackquot; attribute=quot;a_radarquot;/>
                                                                                                  <relation class=quot;Radarquot; attribute=quot;tracksquot;/>
                                            Track3D
                                        z: real
                                                                                                  </associationDef>
                                                                    T3D_TOPIC
                                                            oid: long
                                                                                                  </Dlrl>
                                                            z: real
             RADAR_TRACKS_TOPIC
         r_oid: int
         index: int
         T_class: string
         T_oid: int




                                                                          © 2009, PrismTech. All Rights Reserved
Putting it all Together
main.cpp

 DDS::DomainParticipant_var dp;
 DLRL::CacheFactory_var cf;
                                                                    main.cpp (cont)
 /*
  * Init phase
                                                                        /*
  */
                                                                         * Creation, modifications and publication
 DLRL::Cache_var c = cf->create_cache (WRITE_ONLY, dp);




                                                                                                                                  Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
                                                                         */
 RadarHome_var rh;
                                                                        Radar_var r1 = rh->create_object(c);
 TrackHome_var th;
                                                                        Track_var t1 = th->create-object (c);
 Track3DHome_var t3dh;
                                                                        Track3D_var t2 = t3dh->create-object (c);
 c->register_home (rh);
                                                                        t1->w(12); // setting of a pure local attribute
 c->register_home (th);
                                                                        t1->x(1000.0); // some DLRL attributes settings
 c->register_home (t3dh);
                                                                        t1->y(2000.0);
 c->register_all_for_pubsub();
                                                                        t1->a_radar->put(r1);// modifies r1->tracks accordingly
 // some QoS settings if needed
                                                                        t2->x(1000.0);
 c->enable_all_for_pubsub();
                                                                        t2->y(2000.0);
                                                                        t2->z(3000.0);
                                                                        t2->a_radar->put(r1);// modifies r1->tracks accordingly
                                                                        c->write(); // all modifications are published




                                                          © 2009, PrismTech. All Rights Reserved
Agenda

‣ The Object/Relational Impedance Mismatch
‣ Why Hibernating DDS?




                                                                   Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
‣ DLRL: The Mysterious Acronym
‣ Hibernating DDS with DLRL
‣ Concluding Remarks

                          © 2009, PrismTech. All Rights Reserved
Concluding Remarks
‣ DDS provides a very powerful facility for automating                                                                         Application

  Object/Relational Mapping, namely the Data Local                                                          TempSensor
                                                                                                        temp: float
                                                                                                        humidity: float


  Reconstruction Layer (DLRL)                                                                           getTemp()
                                                                                                                                           Room                         Floor
                                                                                                        getHumidity()      *
                                                                                                                                   width: float                level: int
                                                                                                                                 1
                                                                                                                                   height: float               open: int
                                                                                                                                                            1 climate: int
                                                                                                                                   length: float
                                                                                                             Conditioner                              *
                                                                                                                                   climate: int               set_status()
                                                                                                        temp: float



‣ The DLRL is an optional layer of the DDS v1.2 standard,
                                                                                                                                 1 set_climate();             set_climate()
                                                                                                        humidity: float
                                                                                                                                   set_temp()                 get_level()
                                                                                                        fan_level: int     *
                                                                                                                                   set_humidity()
                                                                                                        status: int
                                                                                                        setTemp()
                                                                                                        setHumidity()


  and implementation exists, e.g., OpenSplice DDS, that                                                 setFanLevel()




                                                                                                                                                                                    Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
                                                                                                        start()
                                                                                                        stop()
                                                                                                        pause():


  support it for both C++ and Java                                                                                    Object/Relational Mapping
                                                                                      Application

‣ The use of DLRL make it much more productive to write
                                                                                                           Data Local Reconstruction Layer (DLRL)

                                                                                         TConditioner                                        TTempSensor
                                                                                       cID: int                                            tID: int
  DDS application with Object Oriented Languages                                       temp: float                                          temp: float
                                                                                       humidity: float             TRoom                    humidity: float
                                                                                       fan_level: int       rID: int                       rID: int
                                                                                       status: int          width: float


‣ It is easy to get started with DLRL since it is quite similar
                                                                                       rID: int             height: float
                                                                                                            length: float                         TFloor
                                                                                                            fID: int                       fID: int
                                                                                                                                           level: int

  to other popular Object/Relational Mapping                                                                                               open: int


                                                                                                                                                 Content
  Technologies such as Hibernate, JDO, etc.




                                                                                                                                                                         DDS v1.2
                                                                                        Ownership                 Durability
                                                                                                                                               Subscription

                                                                                                             Minimum Profile

                                                                                                Data Centric Publish/Subscribe (DCPS)



                                             © 2009, PrismTech. All Rights Reserved
Upcoming Webcasts

                                                       OpenSplice | DDS Webcast Series
                                                                                     April 22nd, 2009


  OpenSplice DDS: The Open Source Messaging




                                                                                                        Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
  Accelerating Wall Street
  Why Should I Attend?
  • Understand why Open Source is the best strategic, technical, and financial decision for your
  next messaging technology.

  • Discover how OpenSplice DDS can help you cope with increasing market data rates while
  dramatically reducing your trading latency

  • Understand how OpenSplice DDS can help you tear down the messaging silos and unify
  data distribution across your trading platform

                                            © 2009, PrismTech. All Rights Reserved
Online Resources

http://www.opensplice.com/

emailto:opensplicedds@prismtech.com




                                                                                                                   Proprietary Information - Distribution without Expressed Written Permission is Prohibited.
http://www.opensplice.com                                                         http://opensplice.blogspot.com




                                                                                  http://www.dds-forum.org

                                                                                  http://portals.omg.org/dds
 http://www.youtube.com/OpenSpliceTube


                                         © 2009, PrismTech. All Rights Reserved

More Related Content

What's hot

SF Mobile: Founder Labs Mobile Edition
SF Mobile: Founder Labs Mobile Edition SF Mobile: Founder Labs Mobile Edition
SF Mobile: Founder Labs Mobile Edition Lars Kamp
 
SFMobile: Founder Labs Mobile Edition 01/09/11
SFMobile: Founder Labs Mobile Edition 01/09/11SFMobile: Founder Labs Mobile Edition 01/09/11
SFMobile: Founder Labs Mobile Edition 01/09/11Jim Porter
 
Монетизания: Достижение прибыльности мобильного Интернета нового поколения.
 Монетизания: Достижение прибыльности мобильного Интернета нового поколения. Монетизания: Достижение прибыльности мобильного Интернета нового поколения.
Монетизания: Достижение прибыльности мобильного Интернета нового поколения.Cisco Russia
 
Avoiding Pitfalls in Product Mobility Apps / Teleca @ Droidcon NL
Avoiding Pitfalls in Product Mobility Apps / Teleca @ Droidcon NLAvoiding Pitfalls in Product Mobility Apps / Teleca @ Droidcon NL
Avoiding Pitfalls in Product Mobility Apps / Teleca @ Droidcon NLPeter Decker
 
PeopleSoft in the Cloud
PeopleSoft in the CloudPeopleSoft in the Cloud
PeopleSoft in the CloudJeffery Wong
 
AWS Partner Presentation - Riverbed
AWS Partner Presentation - RiverbedAWS Partner Presentation - Riverbed
AWS Partner Presentation - RiverbedAmazon Web Services
 
Siemens: The Evolution of Corporate Communications
Siemens: The Evolution of Corporate CommunicationsSiemens: The Evolution of Corporate Communications
Siemens: The Evolution of Corporate CommunicationsEntel
 
Etendez votre datacenter avec aws v4
Etendez votre datacenter avec aws v4Etendez votre datacenter avec aws v4
Etendez votre datacenter avec aws v4Amazon Web Services
 
S3 Group: Custom Mixed SIgnal SoCs
S3 Group: Custom Mixed SIgnal SoCsS3 Group: Custom Mixed SIgnal SoCs
S3 Group: Custom Mixed SIgnal SoCsS3 Group
 
Computing for Human Experience and Wellness
Computing for Human Experience and WellnessComputing for Human Experience and Wellness
Computing for Human Experience and WellnessAmit Sheth
 
Traffic Management, DPI, Internet Offload Gateway
Traffic Management, DPI, Internet Offload GatewayTraffic Management, DPI, Internet Offload Gateway
Traffic Management, DPI, Internet Offload GatewayContinuous Computing
 
IGC Microsoft SharePoint Solutions
IGC Microsoft SharePoint SolutionsIGC Microsoft SharePoint Solutions
IGC Microsoft SharePoint SolutionsNicole_Kensicki
 
4 g world 2011 renesas mobile overview
4 g world 2011 renesas mobile overview4 g world 2011 renesas mobile overview
4 g world 2011 renesas mobile overviewDavid McTernan
 
Looking for Solutions
Looking for SolutionsLooking for Solutions
Looking for Solutionswfhdesign
 
Introducing Jigjp April 22 2009
Introducing Jigjp April 22 2009Introducing Jigjp April 22 2009
Introducing Jigjp April 22 2009nkumei
 
HD Voice from GIPS customer Nimbuzz
HD Voice from GIPS customer NimbuzzHD Voice from GIPS customer Nimbuzz
HD Voice from GIPS customer NimbuzzJohn Gallagher
 

What's hot (19)

SF Mobile: Founder Labs Mobile Edition
SF Mobile: Founder Labs Mobile Edition SF Mobile: Founder Labs Mobile Edition
SF Mobile: Founder Labs Mobile Edition
 
SFMobile: Founder Labs Mobile Edition 01/09/11
SFMobile: Founder Labs Mobile Edition 01/09/11SFMobile: Founder Labs Mobile Edition 01/09/11
SFMobile: Founder Labs Mobile Edition 01/09/11
 
Монетизания: Достижение прибыльности мобильного Интернета нового поколения.
 Монетизания: Достижение прибыльности мобильного Интернета нового поколения. Монетизания: Достижение прибыльности мобильного Интернета нового поколения.
Монетизания: Достижение прибыльности мобильного Интернета нового поколения.
 
Avoiding Pitfalls in Product Mobility Apps / Teleca @ Droidcon NL
Avoiding Pitfalls in Product Mobility Apps / Teleca @ Droidcon NLAvoiding Pitfalls in Product Mobility Apps / Teleca @ Droidcon NL
Avoiding Pitfalls in Product Mobility Apps / Teleca @ Droidcon NL
 
PeopleSoft in the Cloud
PeopleSoft in the CloudPeopleSoft in the Cloud
PeopleSoft in the Cloud
 
AWS Partner Presentation - Riverbed
AWS Partner Presentation - RiverbedAWS Partner Presentation - Riverbed
AWS Partner Presentation - Riverbed
 
Siemens: The Evolution of Corporate Communications
Siemens: The Evolution of Corporate CommunicationsSiemens: The Evolution of Corporate Communications
Siemens: The Evolution of Corporate Communications
 
Populace+
Populace+Populace+
Populace+
 
Etendez votre datacenter avec aws v4
Etendez votre datacenter avec aws v4Etendez votre datacenter avec aws v4
Etendez votre datacenter avec aws v4
 
S3 Group: Custom Mixed SIgnal SoCs
S3 Group: Custom Mixed SIgnal SoCsS3 Group: Custom Mixed SIgnal SoCs
S3 Group: Custom Mixed SIgnal SoCs
 
Computing for Human Experience and Wellness
Computing for Human Experience and WellnessComputing for Human Experience and Wellness
Computing for Human Experience and Wellness
 
Traffic Management, DPI, Internet Offload Gateway
Traffic Management, DPI, Internet Offload GatewayTraffic Management, DPI, Internet Offload Gateway
Traffic Management, DPI, Internet Offload Gateway
 
Enterprise Applications in 2011
Enterprise Applications in 2011Enterprise Applications in 2011
Enterprise Applications in 2011
 
IGC Microsoft SharePoint Solutions
IGC Microsoft SharePoint SolutionsIGC Microsoft SharePoint Solutions
IGC Microsoft SharePoint Solutions
 
Intelligent Mobile Broadband
Intelligent Mobile BroadbandIntelligent Mobile Broadband
Intelligent Mobile Broadband
 
4 g world 2011 renesas mobile overview
4 g world 2011 renesas mobile overview4 g world 2011 renesas mobile overview
4 g world 2011 renesas mobile overview
 
Looking for Solutions
Looking for SolutionsLooking for Solutions
Looking for Solutions
 
Introducing Jigjp April 22 2009
Introducing Jigjp April 22 2009Introducing Jigjp April 22 2009
Introducing Jigjp April 22 2009
 
HD Voice from GIPS customer Nimbuzz
HD Voice from GIPS customer NimbuzzHD Voice from GIPS customer Nimbuzz
HD Voice from GIPS customer Nimbuzz
 

Viewers also liked

Color naming 65,274,705,768 pixels
Color naming 65,274,705,768 pixels Color naming 65,274,705,768 pixels
Color naming 65,274,705,768 pixels nmoroney
 
Pharm Collaborations Cbi Pres
Pharm Collaborations Cbi PresPharm Collaborations Cbi Pres
Pharm Collaborations Cbi Presthess1121
 
Rain Go Away
Rain Go AwayRain Go Away
Rain Go Awaysad asad
 
Foto na Parede - Processo de compra detalhado
Foto na Parede - Processo de compra detalhadoFoto na Parede - Processo de compra detalhado
Foto na Parede - Processo de compra detalhadoFoto na Parede
 
Euro Style Design Ltd Arxx P Panel Dura Viessmann Commercialresidential
Euro Style Design Ltd Arxx P Panel Dura Viessmann CommercialresidentialEuro Style Design Ltd Arxx P Panel Dura Viessmann Commercialresidential
Euro Style Design Ltd Arxx P Panel Dura Viessmann CommercialresidentialRoland Laufer
 
Redshift Company Credentials
Redshift Company CredentialsRedshift Company Credentials
Redshift Company CredentialsLisa_Bella
 
Charla uso tecnologías 3 er ciclo
Charla uso tecnologías 3 er cicloCharla uso tecnologías 3 er ciclo
Charla uso tecnologías 3 er cicloXXX XXX
 
O Lam
O LamO Lam
O Lamoiwan
 
Ralph credsdeck 12
Ralph credsdeck 12Ralph credsdeck 12
Ralph credsdeck 12Jay Armitage
 
Ei09 Thousands Observers
Ei09 Thousands ObserversEi09 Thousands Observers
Ei09 Thousands Observersnmoroney
 
Michael V Katsaitis
Michael V KatsaitisMichael V Katsaitis
Michael V Katsaitismkatsaitis
 
Visita aeropuerto 2º ciclo 13 14
Visita aeropuerto 2º ciclo 13 14Visita aeropuerto 2º ciclo 13 14
Visita aeropuerto 2º ciclo 13 14XXX XXX
 
Compramos la merienda 2º ciclo 2016
Compramos la merienda 2º ciclo 2016Compramos la merienda 2º ciclo 2016
Compramos la merienda 2º ciclo 2016XXX XXX
 

Viewers also liked (20)

ikd312-09-normalisasi
ikd312-09-normalisasiikd312-09-normalisasi
ikd312-09-normalisasi
 
Color naming 65,274,705,768 pixels
Color naming 65,274,705,768 pixels Color naming 65,274,705,768 pixels
Color naming 65,274,705,768 pixels
 
Pharm Collaborations Cbi Pres
Pharm Collaborations Cbi PresPharm Collaborations Cbi Pres
Pharm Collaborations Cbi Pres
 
Active Channel
Active ChannelActive Channel
Active Channel
 
Rain Go Away
Rain Go AwayRain Go Away
Rain Go Away
 
Foto na Parede - Processo de compra detalhado
Foto na Parede - Processo de compra detalhadoFoto na Parede - Processo de compra detalhado
Foto na Parede - Processo de compra detalhado
 
Euro Style Design Ltd Arxx P Panel Dura Viessmann Commercialresidential
Euro Style Design Ltd Arxx P Panel Dura Viessmann CommercialresidentialEuro Style Design Ltd Arxx P Panel Dura Viessmann Commercialresidential
Euro Style Design Ltd Arxx P Panel Dura Viessmann Commercialresidential
 
Redshift Company Credentials
Redshift Company CredentialsRedshift Company Credentials
Redshift Company Credentials
 
Arquitectura 2 B
Arquitectura 2 BArquitectura 2 B
Arquitectura 2 B
 
Charla uso tecnologías 3 er ciclo
Charla uso tecnologías 3 er cicloCharla uso tecnologías 3 er ciclo
Charla uso tecnologías 3 er ciclo
 
O Lam
O LamO Lam
O Lam
 
ikp213-07-stl
ikp213-07-stlikp213-07-stl
ikp213-07-stl
 
Ralph credsdeck 12
Ralph credsdeck 12Ralph credsdeck 12
Ralph credsdeck 12
 
ikp321-05
ikp321-05ikp321-05
ikp321-05
 
1fevrier
1fevrier1fevrier
1fevrier
 
Ei09 Thousands Observers
Ei09 Thousands ObserversEi09 Thousands Observers
Ei09 Thousands Observers
 
Michael V Katsaitis
Michael V KatsaitisMichael V Katsaitis
Michael V Katsaitis
 
Visita aeropuerto 2º ciclo 13 14
Visita aeropuerto 2º ciclo 13 14Visita aeropuerto 2º ciclo 13 14
Visita aeropuerto 2º ciclo 13 14
 
Compramos la merienda 2º ciclo 2016
Compramos la merienda 2º ciclo 2016Compramos la merienda 2º ciclo 2016
Compramos la merienda 2º ciclo 2016
 
第4文型
第4文型第4文型
第4文型
 

Similar to Hibernating DDS

Advanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part IIAdvanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part IIAngelo Corsaro
 
10 Reasons for Choosing OpenSplice DDS
10 Reasons for Choosing OpenSplice DDS10 Reasons for Choosing OpenSplice DDS
10 Reasons for Choosing OpenSplice DDSAngelo Corsaro
 
The Open Source Messaging Powering Wall Street
The Open Source Messaging Powering Wall StreetThe Open Source Messaging Powering Wall Street
The Open Source Messaging Powering Wall StreetAngelo Corsaro
 
A Gentle Introduction to OpenSplice DDS
A Gentle Introduction to OpenSplice DDSA Gentle Introduction to OpenSplice DDS
A Gentle Introduction to OpenSplice DDSAngelo Corsaro
 
Tweeting with OpenSplice DDS
Tweeting with OpenSplice DDSTweeting with OpenSplice DDS
Tweeting with OpenSplice DDSAngelo Corsaro
 
Standardizing the Data Distribution Service (DDS) API for Modern C++
Standardizing the Data Distribution Service (DDS) API for Modern C++Standardizing the Data Distribution Service (DDS) API for Modern C++
Standardizing the Data Distribution Service (DDS) API for Modern C++Sumant Tambe
 
Tuning and Troubleshooting OpenSplice DDS Applications
Tuning and Troubleshooting OpenSplice DDS ApplicationsTuning and Troubleshooting OpenSplice DDS Applications
Tuning and Troubleshooting OpenSplice DDS ApplicationsAngelo Corsaro
 
Classical Distributed Algorithms with DDS
Classical Distributed Algorithms with DDSClassical Distributed Algorithms with DDS
Classical Distributed Algorithms with DDSAngelo Corsaro
 
Ebs architecture con9036_pdf_9036_0001
Ebs architecture con9036_pdf_9036_0001Ebs architecture con9036_pdf_9036_0001
Ebs architecture con9036_pdf_9036_0001jucaab
 
Getting Started with OpenSplice DDS Community Ed.
Getting Started with OpenSplice DDS Community Ed.Getting Started with OpenSplice DDS Community Ed.
Getting Started with OpenSplice DDS Community Ed.Angelo Corsaro
 
The Open Splice.Org Community
The Open Splice.Org CommunityThe Open Splice.Org Community
The Open Splice.Org CommunityAngelo Corsaro
 
SISO LSA AND OMG DDS
SISO LSA AND OMG DDSSISO LSA AND OMG DDS
SISO LSA AND OMG DDSSimware
 
DDS-PSM-Cxx and simd-cxx
DDS-PSM-Cxx and simd-cxxDDS-PSM-Cxx and simd-cxx
DDS-PSM-Cxx and simd-cxxAngelo Corsaro
 
Ria2010 workshop dev mobile
Ria2010 workshop dev mobileRia2010 workshop dev mobile
Ria2010 workshop dev mobileMichael Chaize
 
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
 

Similar to Hibernating DDS (20)

Advanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part IIAdvanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part II
 
10 Reasons for Choosing OpenSplice DDS
10 Reasons for Choosing OpenSplice DDS10 Reasons for Choosing OpenSplice DDS
10 Reasons for Choosing OpenSplice DDS
 
The Open Source Messaging Powering Wall Street
The Open Source Messaging Powering Wall StreetThe Open Source Messaging Powering Wall Street
The Open Source Messaging Powering Wall Street
 
DDS QoS Unleashed
DDS QoS UnleashedDDS QoS Unleashed
DDS QoS Unleashed
 
A Gentle Introduction to OpenSplice DDS
A Gentle Introduction to OpenSplice DDSA Gentle Introduction to OpenSplice DDS
A Gentle Introduction to OpenSplice DDS
 
Tweeting with OpenSplice DDS
Tweeting with OpenSplice DDSTweeting with OpenSplice DDS
Tweeting with OpenSplice DDS
 
Cloudand Xchange
Cloudand XchangeCloudand Xchange
Cloudand Xchange
 
Standardizing the Data Distribution Service (DDS) API for Modern C++
Standardizing the Data Distribution Service (DDS) API for Modern C++Standardizing the Data Distribution Service (DDS) API for Modern C++
Standardizing the Data Distribution Service (DDS) API for Modern C++
 
Tuning and Troubleshooting OpenSplice DDS Applications
Tuning and Troubleshooting OpenSplice DDS ApplicationsTuning and Troubleshooting OpenSplice DDS Applications
Tuning and Troubleshooting OpenSplice DDS Applications
 
Classical Distributed Algorithms with DDS
Classical Distributed Algorithms with DDSClassical Distributed Algorithms with DDS
Classical Distributed Algorithms with DDS
 
Ebs architecture con9036_pdf_9036_0001
Ebs architecture con9036_pdf_9036_0001Ebs architecture con9036_pdf_9036_0001
Ebs architecture con9036_pdf_9036_0001
 
Getting Started with OpenSplice DDS Community Ed.
Getting Started with OpenSplice DDS Community Ed.Getting Started with OpenSplice DDS Community Ed.
Getting Started with OpenSplice DDS Community Ed.
 
DDS vs AMQP
DDS vs AMQPDDS vs AMQP
DDS vs AMQP
 
The Open Splice.Org Community
The Open Splice.Org CommunityThe Open Splice.Org Community
The Open Splice.Org Community
 
SISO LSA AND OMG DDS
SISO LSA AND OMG DDSSISO LSA AND OMG DDS
SISO LSA AND OMG DDS
 
UML Profile for DDS
UML Profile for DDSUML Profile for DDS
UML Profile for DDS
 
DDS-PSM-Cxx and simd-cxx
DDS-PSM-Cxx and simd-cxxDDS-PSM-Cxx and simd-cxx
DDS-PSM-Cxx and simd-cxx
 
Embrace Change
Embrace ChangeEmbrace Change
Embrace Change
 
Ria2010 workshop dev mobile
Ria2010 workshop dev mobileRia2010 workshop dev mobile
Ria2010 workshop dev mobile
 
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
 

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
 
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
 

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
 
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
 

Recently uploaded

WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
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
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
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
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 

Recently uploaded (20)

WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
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
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 

Hibernating DDS

  • 1. OpenSplice DDS Delivering Performance, Openness, and Freedom Angelo Corsaro, Ph.D. Hibernating DDS Product Strategy & Marketing Manager OMG RTESS and DDS SIG Co-Chair angelo.corsaro@prismtech.com with Java and C++
  • 2. Agenda ‣ The Object/Relational Impedance Mismatch ‣ Why Hibernating DDS? Proprietary Information - Distribution without Expressed Written Permission is Prohibited. ‣ DLRL: The Mysterious Acronym ‣ Hibernating DDS with DLRL ‣ Concluding Remarks © 2009, PrismTech. All Rights Reserved
  • 3. Object/Relational Impedance Mismatch [1/2] ‣ When designing and building application with Object Oriented methodologies and programming languages, one often have to deal with the Object/Relational Impedance Mismatch ‣ The Object/Relational Impedance Mismatch arises all the time when data represented Proprietary Information - Distribution without Expressed Written Permission is Prohibited. in a relational form, e.g., stored in a DBMS, has to be manipulated by applications written in Object Oriented Programming Languages ‣ In these cases, the solution is often to manually reconstruct applications’ objects, and their relationships out of the data base tables ‣ This approach however, has several drawbacks, as for instance it is tedious, error- prone, requires application programmers to be familiar with SQL, etc. © 2009, PrismTech. All Rights Reserved
  • 4. Object/Relational Impedance Mismatch [2/2] ‣ Several approaches have been Object-Oriented Representation Relational Representation suggested to gap the object/ relational impedance mismatch ? Alpha Beta a ‣ For the specific case of Data x 0..1 * b y Proprietary Information - Distribution without Expressed Written Permission is Prohibited. opOne() opX() opTwo() Bases, two approaches have opY() received most attention: Theta ‣ Use of OODBMS j k ‣ Use of ORM technologies, such as opA() opB() JDO, Hibernate, etc. ‣ However, due to the ubiquitous presence of RDBMS, ORM techniques are currently predominant © 2009, PrismTech. All Rights Reserved
  • 5. Agenda ‣ The Object/Relational Impedance Mismatch ‣ Why Hibernating DDS? Proprietary Information - Distribution without Expressed Written Permission is Prohibited. ‣ DLRL: The Mysterious Acronym ‣ Hibernating DDS with DLRL ‣ Concluding Remarks © 2009, PrismTech. All Rights Reserved
  • 6. Why Hibernating DDS? ‣ DDS allows application to do publish/ Subscriber subscribe over a Distributed Relational Publisher Data Model B m ‣ DDS Topics, the unit of information that Subscriber A F Publisher Proprietary Information - Distribution without Expressed Written Permission is Prohibited. applications can publish/subscribe, can be J D C seen and treated locally, as if it was a DBMS Subscriber K E Table Publisher Subscriber ‣ Thus, each DDS application can use a subset of SQL92 to access and navigate the set of topics it’s currently subscribing As a result, when using DDS with Object-Oriented Programming Languages the Object/Relational Mismatch needs to be addressed! © 2009, PrismTech. All Rights Reserved
  • 7. A Simple Example[1/3] ‣ Topic Keys can be used to identify ‣ Suppose we have to build an application instances as well as relationships for controlling the temperature in big ‣ Relationships can be navigated by buildings relying on a subset of SQL 92 ‣ The first step is to identify the DDS ‣ Keys can be represented by an Proprietary Information - Distribution without Expressed Written Permission is Prohibited. arbitrary number of Topic fields (actually DCPS) data model capturing the key entities of this application TConditioner ‣ Once this is done, we will write the cID: int TTempSensor temp: float tID: int humidity: float temp: float application by leveraging on DDS fan_level: int TRoom humidity: float status: int rID: int rID: int Readers/Writers and building the rID: int width: float height: float business logic on-top of these length: float TFloor fID: int fID: int abstractions level: int open: int Relational Data Model © 2009, PrismTech. All Rights Reserved
  • 8. A Simple Example [2/3] class Conditioner { public: class Room { explicit Conditioner(int id); public: Conditioner(const TConditioner& tcond) explicit Room(int id); ~Conditioner(); Room(int it, float width, float height, float length); public: ~Room(); void set_temp(float temp); public: void set_humidity(float hum); void set_fan_level(int level); void set_climate(const Climate_t c); void start(); void set_temperature(float temp); void stop(); Proprietary Information - Distribution without Expressed Written Permission is Prohibited. float get_temperature(); void pause(); void set_humidity(float hum); public: float get_humidity(); // Performs required DDS pub/sub activities public: void update(); // Performs required DDS pub/sub activities void flush(); void update(); private: void flush(); TConditioner cond_topic_; TConditionerWriter* cond_writer_; protected: }; void init(int id); private: void TRoom room_topic_; Room::init(int id) { TRoomReader* room_reader_; TTempSensorReader* temp_reader_ = ...; //Resolve the reader TRoomWriter* room_writer_; TConditionerReader* cond_reader_ = ...; //Resolve the reader std::vector<Conditioner> cond_vec_; // Query the reader for the TTempSensor and TConditioner std::vector<TempSensor> temp_vec_; // that have quot;rID == idquot; then add those to the container }; } © 2009, PrismTech. All Rights Reserved
  • 9. A Simple Example [3/3] ‣ As the simple example reveals, if DDS (actually DCPS) is used from an Object Oriented programming language such as Java, or C++, the programmer is either left to deal with the Object/Relational Mismatch Proprietary Information - Distribution without Expressed Written Permission is Prohibited. ‣ Depending on how the programmer tackles this mismatch, its resulting application will be more or less polluted by “DDS” details ‣ Implementing by hand the Object/Relational Mapping is quite a bit of work, which becomes quickly non-creative and repetitive Is there a better way to take tackle the Object/Relational Impedance Mismatch in DDS? © 2009, PrismTech. All Rights Reserved
  • 10. Agenda ‣ The Object/Relational Impedance Mismatch ‣ Why Hibernating DDS? Proprietary Information - Distribution without Expressed Written Permission is Prohibited. ‣ DLRL: The Mysterious Acronym ‣ Hibernating DDS with DLRL ‣ Concluding Remarks © 2009, PrismTech. All Rights Reserved
  • 11. DLRL: The Mysterious Acronym... ‣ The OMG DDS Standard included since its Application inception the Data Local Reconstruction Layer (DLRL). This optional layer provides an Object/Relational Mapping extended Object/Relational Mapping facility for Data Local Reconstruction Layer (DLRL) Proprietary Information - Distribution without Expressed Written Permission is Prohibited. DDS Content Ownership Durability Subscription ‣ The DLRL is quite similar to Hibernate (or Minimum Profile Java Data Objects), although introduces some Data Centric Publish/Subscribe (DCPS) extensions needed to deal with Distributed Systems Real-Time Publish/Subscribe Protocol DDS Interoperability Wire Protocol ‣ DLRL implementation currently exist for C++ UDP/IP and Java © 2009, PrismTech. All Rights Reserved
  • 12. DCPS Application Application ‣ The application works directly at TConditioner TTempSensor the DCPS level cID: int tID: int temp: float temp: float Proprietary Information - Distribution without Expressed Written Permission is Prohibited. humidity: float TRoom humidity: float ‣ When using OO Programming fan_level: int rID: int rID: int status: int width: float rID: int height: float length: float TFloor Languages the Object/Relational fID: int fID: int level: int Impedance Mismatch has to be open: int manually dealt Content DDS v1.2 Ownership Durability Subscription Minimum Profile Data Centric Publish/Subscribe (DCPS) © 2009, PrismTech. All Rights Reserved
  • 13. DLRL Application Application TempSensor temp: float humidity: float getTemp() ‣ The DLRL Layer is used to Room Floor getHumidity() * width: float level: int 1 height: float open: int 1 climate: int length: float Conditioner * climate: int set_status() temp: float provide a Language Integrated 1 set_climate(); set_climate() humidity: float set_temp() get_level() fan_level: int * set_humidity() status: int setTemp() access to DDS data setHumidity() setFanLevel() Proprietary Information - Distribution without Expressed Written Permission is Prohibited. start() stop() pause(): ‣ The Designer has great freedom DDS v1.2 Object/Relational Mapping in deciding how Objects have to Data Local Reconstruction Layer (DLRL) map to Topics TConditioner TTempSensor cID: int tID: int temp: float temp: float ‣ Different Object Reconstruction humidity: float TRoom humidity: float fan_level: int rID: int rID: int status: int width: float rID: int height: float can be created for different length: float TFloor fID: int fID: int level: int open: int applications Content DDS v1.2 Ownership Durability Subscription Minimum Profile Data Centric Publish/Subscribe (DCPS) © 2009, PrismTech. All Rights Reserved
  • 14. Generic DDS Application Application TempSensor temp: float humidity: float getTemp() Room Floor getHumidity() * width: float level: int 1 height: float open: int 1 climate: int length: float Conditioner * climate: int set_status() temp: float 1 set_climate(); set_climate() humidity: float set_temp() get_level() fan_level: int * set_humidity() ‣ In the most general case, different portion of status: int setTemp() setHumidity() setFanLevel() start() Proprietary Information - Distribution without Expressed Written Permission is Prohibited. the application might rely on DLRL or DCPS stop() pause(): depending on their specific needs Object/Relational Mapping Application Data Local Reconstruction Layer (DLRL) ‣ DCPS access might be required for accessing TConditioner TTempSensor cID: int tID: int temp: float temp: float and tuning some specific QoS humidity: float TRoom humidity: float fan_level: int rID: int rID: int status: int width: float rID: int height: float length: float TFloor fID: int fID: int level: int open: int Content DDS v1.2 Ownership Durability Subscription Minimum Profile Data Centric Publish/Subscribe (DCPS) © 2009, PrismTech. All Rights Reserved
  • 15. Agenda ‣ The Object/Relational Impedance Mismatch ‣ Why Hibernating DDS? Proprietary Information - Distribution without Expressed Written Permission is Prohibited. ‣ DLRL: The Mysterious Acronym ‣ Hibernating DDS with DLRL ‣ Concluding Remarks © 2009, PrismTech. All Rights Reserved
  • 16. DLRL Key Features ‣ The main goal of DLRL is that of providing a seamless integration of DDS for Object Oriented Programming Languages ‣ DLRL provides a seamless integration for both: ‣ Applications that want to completely ignore the relational nature of DCPS Proprietary Information - Distribution without Expressed Written Permission is Prohibited. ‣ Application that need to leverage an existing DCPS Data Model ‣ DLRL provides support for: ‣ Local/Shared Attributes (only shared attributes are subject to data distribution) ‣ Mono-/Multi-valued attributes ‣ Association, with support for both one-to-one, one-to-many ‣ Aggregation, with support for both one-to-one, one-to-many ‣ Single Inheritance © 2009, PrismTech. All Rights Reserved
  • 17. Structural Mapping Two approaches are possible for structural mapping of DLRL Objects to DCPS DLRL mapping to DCPS Topics can be automatically inferred by the 1 middleware using default mapping rules Proprietary Information - Distribution without Expressed Written Permission is Prohibited. DLRL mapping to DCPS Topics can be specified by the designer, thus making it 2 possible for reconstructing Object Oriented views of existing data models © 2009, PrismTech. All Rights Reserved
  • 18. Structural Mapping DLRL mapping to DCPS Topics can be automatically inferred by the 1 middleware using default mapping rules Proprietary Information - Distribution without Expressed Written Permission is Prohibited. Track Radar x: real 0..1 * y: real a_radar tracks comments[*]: string Track3D z: real © 2009, PrismTech. All Rights Reserved
  • 19. Structural Mapping DLRL mapping to DCPS Topics can be automatically inferred by the 1 middleware using default mapping rules RADAR_TOPIC oid: int Proprietary Information - Distribution without Expressed Written Permission is Prohibited. TRACK_TOPIC class: string Track oid: int Radar x: real x: real 0..1 * y: real y: real a_radar tracks comments[*]: string radar: int comments: StringSeq Track3D z: real T3D_TOPIC oid: long z: real RADAR_TRACKS_TOPIC r_oid: int index: int T_class: string T_oid: int © 2009, PrismTech. All Rights Reserved
  • 20. Structural Mapping DLRL mapping to DCPS Topics can be specified by the designer, thus making it 2 possible for reconstructing Object Oriented views of existing data models Proprietary Information - Distribution without Expressed Written Permission is Prohibited. TConditioner TTempSensor cID: int tID: int temp: float temp: float humidity: float TRoom humidity: float fan_level: int rID: int rID: int status: int width: float rID: int height: float length: float TFloor fID: int fID: int level: int open: int © 2009, PrismTech. All Rights Reserved
  • 21. Structural Mapping DLRL mapping to DCPS Topics can be specified by the designer, thus making it 2 possible for reconstructing Object Oriented views of existing data models TempSensor temp: float humidity: float getTemp() Proprietary Information - Distribution without Expressed Written Permission is Prohibited. Room Floor getHumidity() * width: float level: int 1 height: float open: int 1 climate: int length: float Conditioner * climate: int set_status() temp: float 1 set_climate(); set_climate() humidity: float set_temp() get_level() fan_level: int * set_humidity() status: int setTemp() setHumidity() setFanLevel() start() stop() pause(): TConditioner TTempSensor cID: int tID: int temp: float temp: float humidity: float TRoom humidity: float fan_level: int rID: int rID: int status: int width: float rID: int height: float length: float TFloor fID: int fID: int level: int open: int © 2009, PrismTech. All Rights Reserved
  • 22. Specifying the Structural Mapping ‣ The structural mapping between DLRL and DCPS entities is specified by relying, depending on the case, Proprietary Information - Distribution without Expressed Written Permission is Prohibited. on: ‣ The IDL description of the DLRL Objects ‣ The Model Tags defining the mapping (which could be default) ‣ An Optional IDL file specifying DCPS Topics © 2009, PrismTech. All Rights Reserved
  • 23. Working with DLRL Objects Object Home(s) Proprietary Information - Distribution without Expressed Written Permission is Prohibited. Concepts Object Cache The mechanism at the foundation is a managed Object Cache: ‣ An Object Cache can be populated by different types (classes) of Objects. ‣ Each object class has its own manager called an ObjectHome. ‣ They can inform the application about object creation/modification/ deletion. ‣ Classes may contain navigable relationships to other classes. ‣ Each Object class may inherit from 1 other Object class. © 2009, PrismTech. All Rights Reserved
  • 24. Working with DLRL Objects DR DR DR Proprietary Information - Distribution without Expressed Written Permission is Prohibited. OpenSplice DDS Information backbone Processing Updates ‣ DCPS updates arrive as separate samples at separate times. ‣ DLRL Updates are processed in ‘update rounds’: ‣ ObjectHomes read all available samples from the DDS information backbone and update their corresponding objects in the Cache accordingly. ‣ Objects are allocated once and their state is ‘overwritten’ on subsequent updates. ‣ Therefore an Object always contains the latest available state. ‣ Push mode: update rounds start when new data arrives. The application gets notified by Listeners. ‣ Pull mode: the application can determine the start of each update round manually. © 2009, PrismTech. All Rights Reserved
  • 25. Working with DLRL Objects DR DR DR Proprietary Information - Distribution without Expressed Written Permission is Prohibited. OpenSplice DDS Information backbone Processing Updates ‣ DCPS updates arrive as separate samples at separate times. ‣ DLRL Updates are processed in ‘update rounds’: ‣ ObjectHomes read all available samples from the DDS information backbone and update their corresponding objects in the Cache accordingly. ‣ Objects are allocated once and their state is ‘overwritten’ on subsequent updates. ‣ Therefore an Object always contains the latest available state. ‣ Push mode: update rounds start when new data arrives. The application gets notified by Listeners. ‣ Pull mode: the application can determine the start of each update round manually. © 2009, PrismTech. All Rights Reserved
  • 26. Working with DLRL Objects Proprietary Information - Distribution without Expressed Written Permission is Prohibited. Application DR DR DR OpenSplice DDS Information backbone Notifying the application The Object Caches offer two ways to notify an application of incoming information: ‣ Listeners can be triggered for each modification of an object’s state. ‣ Listeners registered to the Cache indicate the start and end of each update round. ‣ Listeners registered to the ObjectHome pass each modification back as a callback argument. ‣ With a simple mechanism that can be translated into callbacks for Listeners on individual objects. ‣ It is possible to get a separate list of all objects that have been created/modified/deleted in the current update round. © 2009, PrismTech. All Rights Reserved
  • 27. Working with DLRL Objects attach_listener Proprietary Information - Distribution without Expressed Written Permission is Prohibited. Application DR DR DR OpenSplice DDS Information backbone Notifying the application The Object Caches offer two ways to notify an application of incoming information: ‣ Listeners can be triggered for each modification of an object’s state. ‣ Listeners registered to the Cache indicate the start and end of each update round. ‣ Listeners registered to the ObjectHome pass each modification back as a callback argument. ‣ With a simple mechanism that can be translated into callbacks for Listeners on individual objects. ‣ It is possible to get a separate list of all objects that have been created/modified/deleted in the current update round. © 2009, PrismTech. All Rights Reserved
  • 28. Working with DLRL Objects attach_listener Proprietary Information - Distribution without Expressed Written Permission is Prohibited. Application DR DR DR OpenSplice DDS Information backbone Notifying the application The Object Caches offer two ways to notify an application of incoming information: ‣ Listeners can be triggered for each modification of an object’s state. ‣ Listeners registered to the Cache indicate the start and end of each update round. ‣ Listeners registered to the ObjectHome pass each modification back as a callback argument. ‣ With a simple mechanism that can be translated into callbacks for Listeners on individual objects. ‣ It is possible to get a separate list of all objects that have been created/modified/deleted in the current update round. © 2009, PrismTech. All Rights Reserved
  • 29. Working with DLRL Objects Proprietary Information - Distribution without Expressed Written Permission is Prohibited. Application DR DR DR OpenSplice DDS Information backbone Notifying the application The Object Caches offer two ways to notify an application of incoming information: ‣ Listeners can be triggered for each modification of an object’s state. ‣ Listeners registered to the Cache indicate the start and end of each update round. ‣ Listeners registered to the ObjectHome pass each modification back as a callback argument. ‣ With a simple mechanism that can be translated into callbacks for Listeners on individual objects. ‣ It is possible to get a separate list of all objects that have been created/modified/deleted in the current update round. © 2009, PrismTech. All Rights Reserved
  • 30. Working with DLRL Objects on_begin_ updates() Proprietary Information - Distribution without Expressed Written Permission is Prohibited. Application DR DR DR OpenSplice DDS Information backbone Notifying the application The Object Caches offer two ways to notify an application of incoming information: ‣ Listeners can be triggered for each modification of an object’s state. ‣ Listeners registered to the Cache indicate the start and end of each update round. ‣ Listeners registered to the ObjectHome pass each modification back as a callback argument. ‣ With a simple mechanism that can be translated into callbacks for Listeners on individual objects. ‣ It is possible to get a separate list of all objects that have been created/modified/deleted in the current update round. © 2009, PrismTech. All Rights Reserved
  • 31. Working with DLRL Objects on_object_created() Proprietary Information - Distribution without Expressed Written Permission is Prohibited. Application DR DR DR OpenSplice DDS Information backbone Notifying the application The Object Caches offer two ways to notify an application of incoming information: ‣ Listeners can be triggered for each modification of an object’s state. ‣ Listeners registered to the Cache indicate the start and end of each update round. ‣ Listeners registered to the ObjectHome pass each modification back as a callback argument. ‣ With a simple mechanism that can be translated into callbacks for Listeners on individual objects. ‣ It is possible to get a separate list of all objects that have been created/modified/deleted in the current update round. © 2009, PrismTech. All Rights Reserved
  • 32. Working with DLRL Objects on_object_modified() Proprietary Information - Distribution without Expressed Written Permission is Prohibited. Application DR DR DR OpenSplice DDS Information backbone Notifying the application The Object Caches offer two ways to notify an application of incoming information: ‣ Listeners can be triggered for each modification of an object’s state. ‣ Listeners registered to the Cache indicate the start and end of each update round. ‣ Listeners registered to the ObjectHome pass each modification back as a callback argument. ‣ With a simple mechanism that can be translated into callbacks for Listeners on individual objects. ‣ It is possible to get a separate list of all objects that have been created/modified/deleted in the current update round. © 2009, PrismTech. All Rights Reserved
  • 33. Working with DLRL Objects on_end_ updates() Proprietary Information - Distribution without Expressed Written Permission is Prohibited. Application DR DR DR OpenSplice DDS Information backbone Notifying the application The Object Caches offer two ways to notify an application of incoming information: ‣ Listeners can be triggered for each modification of an object’s state. ‣ Listeners registered to the Cache indicate the start and end of each update round. ‣ Listeners registered to the ObjectHome pass each modification back as a callback argument. ‣ With a simple mechanism that can be translated into callbacks for Listeners on individual objects. ‣ It is possible to get a separate list of all objects that have been created/modified/deleted in the current update round. © 2009, PrismTech. All Rights Reserved
  • 34. Working with DLRL Objects Proprietary Information - Distribution without Expressed Written Permission is Prohibited. Application DR DR DR get_modified_objects() OpenSplice DDS Information backbone Notifying the application The Object Caches offer two ways to notify an application of incoming information: ‣ Listeners can be triggered for each modification of an object’s state. ‣ Listeners registered to the Cache indicate the start and end of each update round. ‣ Listeners registered to the ObjectHome pass each modification back as a callback argument. ‣ With a simple mechanism that can be translated into callbacks for Listeners on individual objects. ‣ It is possible to get a separate list of all objects that have been created/modified/deleted in the current update round. © 2009, PrismTech. All Rights Reserved
  • 35. Working with DLRL Objects DR DR DR DW DW DW Proprietary Information - Distribution without Expressed Written Permission is Prohibited. DCPS Using snapshots Some applications want to be able to modify or create certain objects: ‣ An initial set of Objects may be cloned into a writeable CacheAccess. ‣ Available objects may then be modified locally. ‣ New objects can be created in the CacheAccess as well. ‣ The ‘write’ operation instructs the ObjectHomes to write any modifications into the system. © 2009, PrismTech. All Rights Reserved
  • 36. Working with DLRL Objects S on_object_in() Application Proprietary Information - Distribution without Expressed Written Permission is Prohibited. DR DR DR DCPS Creating and managing Selections A Selection mechanism can keep track of subsets of information: ‣ Selections are created and managed by the ObjectHomes. ‣ A Criterion plugged into a Selection determines the boundaries of a subset: ‣ A QueryCriterion determines boundaries based on an SQL statement. ‣ A FilterCriterion determines boundaries based on user-defined callback filters. ‣ Selections can notify the application when objects enter and leave it. © 2009, PrismTech. All Rights Reserved
  • 37. Putting it all Together Track.idl #include quot;dlrl.idlquot; valuetype stringStrMap; // StrMap<string> valuetype TrackList; // List<Track> valuetype Radar; Track valuetype Track : DLRL::ObjectRoot { Radar x: real 0..1 public double x; Proprietary Information - Distribution without Expressed Written Permission is Prohibited. * y: real a_radar tracks public double y; comments[*]: string public stringStrMap comments; public long w; public Radar a_radar; }; Track3D z: real valuetype Track3D : Track { public double z; }; valuetype Radar : DLRL::ObjectRoot { public TrackList tracks; }; © 2009, PrismTech. All Rights Reserved
  • 38. Putting it all Together mapping.xml RADAR_TOPIC <?xml version=quot;1.0quot; encoding=quot;ISO-8859-1quot;?> oid: int <!DOCTYPE Dlrl SYSTEM quot;dlrl.dtdquot;> <Dlrl name=quot;Examplequot;> <templateDef name=quot;stringStrMapquot; pattern=quot;StrMapquot; itemType=quot;stringquot;/> TRACK_TOPIC Proprietary Information - Distribution without Expressed Written Permission is Prohibited. <templateDef name=quot;TrackListquot; pattern=quot;Listquot; itemType=quot;Trackquot;/> class: string Track oid: int Radar x: real <classMapping name=quot;Trackquot;> x: real 0..1 * y: real y: real <local name=quot;wquot;/> a_radar tracks comments[*]: string radar: int </classMapping> comments: StringSeq <associationDef> <relation class=quot;Trackquot; attribute=quot;a_radarquot;/> <relation class=quot;Radarquot; attribute=quot;tracksquot;/> Track3D z: real </associationDef> T3D_TOPIC oid: long </Dlrl> z: real RADAR_TRACKS_TOPIC r_oid: int index: int T_class: string T_oid: int © 2009, PrismTech. All Rights Reserved
  • 39. Putting it all Together main.cpp DDS::DomainParticipant_var dp; DLRL::CacheFactory_var cf; main.cpp (cont) /* * Init phase /* */ * Creation, modifications and publication DLRL::Cache_var c = cf->create_cache (WRITE_ONLY, dp); Proprietary Information - Distribution without Expressed Written Permission is Prohibited. */ RadarHome_var rh; Radar_var r1 = rh->create_object(c); TrackHome_var th; Track_var t1 = th->create-object (c); Track3DHome_var t3dh; Track3D_var t2 = t3dh->create-object (c); c->register_home (rh); t1->w(12); // setting of a pure local attribute c->register_home (th); t1->x(1000.0); // some DLRL attributes settings c->register_home (t3dh); t1->y(2000.0); c->register_all_for_pubsub(); t1->a_radar->put(r1);// modifies r1->tracks accordingly // some QoS settings if needed t2->x(1000.0); c->enable_all_for_pubsub(); t2->y(2000.0); t2->z(3000.0); t2->a_radar->put(r1);// modifies r1->tracks accordingly c->write(); // all modifications are published © 2009, PrismTech. All Rights Reserved
  • 40. Agenda ‣ The Object/Relational Impedance Mismatch ‣ Why Hibernating DDS? Proprietary Information - Distribution without Expressed Written Permission is Prohibited. ‣ DLRL: The Mysterious Acronym ‣ Hibernating DDS with DLRL ‣ Concluding Remarks © 2009, PrismTech. All Rights Reserved
  • 41. Concluding Remarks ‣ DDS provides a very powerful facility for automating Application Object/Relational Mapping, namely the Data Local TempSensor temp: float humidity: float Reconstruction Layer (DLRL) getTemp() Room Floor getHumidity() * width: float level: int 1 height: float open: int 1 climate: int length: float Conditioner * climate: int set_status() temp: float ‣ The DLRL is an optional layer of the DDS v1.2 standard, 1 set_climate(); set_climate() humidity: float set_temp() get_level() fan_level: int * set_humidity() status: int setTemp() setHumidity() and implementation exists, e.g., OpenSplice DDS, that setFanLevel() Proprietary Information - Distribution without Expressed Written Permission is Prohibited. start() stop() pause(): support it for both C++ and Java Object/Relational Mapping Application ‣ The use of DLRL make it much more productive to write Data Local Reconstruction Layer (DLRL) TConditioner TTempSensor cID: int tID: int DDS application with Object Oriented Languages temp: float temp: float humidity: float TRoom humidity: float fan_level: int rID: int rID: int status: int width: float ‣ It is easy to get started with DLRL since it is quite similar rID: int height: float length: float TFloor fID: int fID: int level: int to other popular Object/Relational Mapping open: int Content Technologies such as Hibernate, JDO, etc. DDS v1.2 Ownership Durability Subscription Minimum Profile Data Centric Publish/Subscribe (DCPS) © 2009, PrismTech. All Rights Reserved
  • 42. Upcoming Webcasts OpenSplice | DDS Webcast Series April 22nd, 2009 OpenSplice DDS: The Open Source Messaging Proprietary Information - Distribution without Expressed Written Permission is Prohibited. Accelerating Wall Street Why Should I Attend? • Understand why Open Source is the best strategic, technical, and financial decision for your next messaging technology. • Discover how OpenSplice DDS can help you cope with increasing market data rates while dramatically reducing your trading latency • Understand how OpenSplice DDS can help you tear down the messaging silos and unify data distribution across your trading platform © 2009, PrismTech. All Rights Reserved
  • 43. Online Resources http://www.opensplice.com/ emailto:opensplicedds@prismtech.com Proprietary Information - Distribution without Expressed Written Permission is Prohibited. http://www.opensplice.com http://opensplice.blogspot.com http://www.dds-forum.org http://portals.omg.org/dds http://www.youtube.com/OpenSpliceTube © 2009, PrismTech. All Rights Reserved