SlideShare uma empresa Scribd logo
1 de 71
Baixar para ler offline
OpenSplice | DDS Tutorial
-- Part I -Angelo CORSARO, Ph.D.
Chief Technology Officer
OMG DDS Sig Co-Chair

PrismTech
angelo.corsaro@prismtech.com
Grasping the Idea
DDS is a standard technology for ubiquitous,
interoperable, secure, platform independent, and
real-time data sharing across network connected devices
Data Distribution Service (DDS)

•

DDS’ Global Data Space is fully
distributed, highly efficient
and scalable

Data
Reader

Data
Writer
QoS

Data
Writer

TopicD

Data
Reader

QoS

TopicA
Data
Writer

QoS
QoS

TopicC

Data
Reader

TopicB
...

Data
Writer

Data
Reader

DDS Global Data Space

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

•

DDS provides a Global Data
Space abstraction that allow
applications to autonomously,
anonymously, securely and
efficiently share data
Data Distribution Service (DDS)

•

Data
Writer

DataWriters and DataReaders are
automatically and dynamically
matched by the DDS Discovery
A rich set of QoS allows to control
existential, temporal, and
spatial properties of data

QoS

Data
Writer

TopicD

Data
Reader

QoS

TopicA
Data
Writer

QoS
QoS

TopicC

Data
Reader

TopicB
...

Data
Writer

Data
Reader

DDS Global Data Space

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

•

Data
Reader
Fully Distributed Data Space
Conceptual Model

Actual Implementation
Data
Reader

QoS

Data
Writer

TopicD

Data
Writer

QoS
QoS

TopicC

TopicD

TopicD

TopicA

QoS

TopicD

Data
Reader

Data
Reader

QoS

Data
Writer

TopicB

Data
Reader

DDS Global Data Space

Data
Reader

QoS

Data
Writer

TopicB
...

Data
Writer

QoS

QoS

Data
Reader

QoS

TopicA

Data
Writer

QoS

TopicA
Data
Writer

QoS

TopicC

Data
Reader

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

Data
Writer
Fully Distributed Data Space
Data
Writer

QoS

QoS

TopicD

TopicD

Data
Reader

The	
  communication	
  
between	
  the	
  
DataWriter	
  and	
  the	
  
DataReader	
  can	
  use	
  
UDP/IP	
  (Unicast	
  
and	
  Multicast)or	
  
TCP/IP

QoS

Data
Writer

TopicA

QoS

TopicD

Data
Reader

QoS

Data
Writer

QoS

TopicA
Data
Writer

QoS

TopicC

Data
Reader

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

TopicB
Key Highlights
Elegant and High Level Data Sharing Abstraction
Polyglot and platform independent

•
•
•

Java, Scala, C, C++, C#, JavaScript, CoffeeScript etc.
Android, Windows, Linux,VxWorks, etc.

Peer-to-Peer by nature, Brokered when useful

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

•
•
Key Highlights
Content and Temporal Filtering (both sender and receiver
filtering supported)

•
•

Queries
20+ QoS to control existential, temporal, and spatial properties of
data

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

•
Key Highlights

•
•

~35-50 usec latency*
7M msgs/sec node-to-node throughput*

(*) Performance measured on Linux Host with i7 processor on a 1Gbps Ethernet network

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

•

High Performance and Scalable
Who is Using DDS?
Use Cases

Training & Simulation Systems

Naval Combat Systems

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

Integrated Modular Vetronics

Air Traffic Control & Management

Unmanned Air Vehicles

Aerospace Applications
Use Cases

Large Scale SCADA Systems

Smart Cities

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

Agricultural Vehicle Systems

Train Control Systems

Complex Medical Devices

High Frequency Auto-Trading
Decomposing DDS
Information Organization
Domain
•
•

DDS data lives within a domain

•

The number 0 identifies the default
domain
A domain represent an impassable
communication plane

DDS Domain

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

•

A domain is identified with a non
negative integer, such as 1, 3, 31
Partitions
•

Partitions are the mechanism provided by DDS to
organize information within a domain

•
•

Access to partitions is controlled through QoS Policies
Partitions are defined as strings:

•

“system:telemetry”
“system:log”
“data:row-­‐2:col-­‐3”

Partitions addressed by name or regular expressions:

•
•

”system:telemetry”
“data:row-­‐2:col-­‐*”

Partitions

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

•
•
•
Information Definition
Topic
A Topic defines a domain-wide information’s class
QoS

name: identifies the topic within the domain

•

qos: is a collection of policies that express the
non-functional properties of this topic, e.g.
reliability, persistence, etc.

type: is the programming language type
associated with the topic. Types are extensible
and evolvable

TopicA
QoS

QoS

TopicC

TopicB
...

Name
Topic

e
Typ

•
•

QoS

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

A Topic is defined by means of a (name, type, qos)
tuple, where

TopicD

Qo
S

•
•
Topic and Instances
As explained in the previous slide a topic defines a class/type of information
Topics can be defined as Singleton or can have multiple Instances
Topic Instances are identified by means of the topic key
A Topic Key is identified by a tuple of attributes -- like in databases
Remarks:

•
•

A Singleton topic has a single domain-wide instance
A “regular” Topic can have as many instances as the number of different key values,
e.g., if the key is an 8-bit character then the topic can have 256 different instances

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

•
•
•
•
•
Example
Active Floor
•
•

Assume we are building an active floor

•

This information is then used by the
application that uses the active floor for
positioning or entertainment

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

This active floor is made by a matrix of
pressure sensors used to detects position,
and indirectly movement

Cell:	
  (i,j)
Active Floor

•

The generic active cell can be modeled with a
topic that has an instance for each value of (i,j).
The topic type can be defined as:
struct	
  TCell	
  {
	
  	
  	
  short	
  row;	
  
	
  	
  	
  short	
  column;
	
  	
  	
  float	
  pressure;	
  //	
  in	
  kPa
};
#pragma	
  keylist	
  TCell	
  row	
  column

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

•

Each cell is now distinguishable and associated
with a topic instance
Cell:	
  (i,j)
Active Floor
How can we know when something is on the
cell?

•

The detection can be based on the difference
between the atmospheric pressure, say P0,
and the pressure sensed by the cell

•

We can model this as a Singleton Topic
ReferencePressure defined by the type:
struct	
  TReferencePressure	
  {
	
  	
  	
  float	
  pressure;	
  //	
  in	
  kPa
	
  	
  	
  float	
  precision;	
  
};
#pragma	
  keylist	
  TReferencePressure

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

•

Cell:	
  (i,j)
Active Floor
time

4

e
ssur
Pre

2
3

•

3

time

Each sensor has associated a topic
instance identified by the
(row,column) coordinate -- the
instance key
struct	
  TCell	
  {
	
  	
  	
  short	
  row;
	
  	
  	
  short	
  column;
	
  	
  	
  float	
  pressure;	
  //	
  in	
  kPa
};
#pragma	
  keylist	
  Cell	
  row	
  column

time

•

Each instance produces a stream
of pressure values that in DDS
terms are called samples

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

1

2

e
ssur
Pre

0

1

e
ssur
Pre

0
Going 3D
Active Floors on a Building
ti
me
re
su
es
Pr

1

re
su
es
Pr

2
3
4

Let’s assume now that we
have a building that uses
active floors to detect
presence and movement
How can we organize the
out data model?

ti
me

0

re
su
es
Pr

0

•
•

1

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

2

ti
me

3
Active Floors on a Building
1

re
su
es
Pr

1

re
su
es
Pr

2
3
4

ti
me

0

re
su
es
Pr

0

•

The first thing to do is to
introduce the third
dimension to our cell:
struct	
  TCell	
  {
	
  	
  	
  short	
  row;
	
  	
  	
  short	
  column;
	
  	
  	
  short	
  floor;
	
  	
  	
  float	
  pressure;	
  //	
  in	
  kPa
};
#pragma	
  keylist	
  TCell	
  row	
  column	
  floor

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

ti
me

2

ti
me

3
Active Floors on a Building
ti
me

ti
me

1

re
su
es
Pr

1

re
su
es
Pr

2
3
4

ti
me

0

re
su
es
Pr

0

As we move from a single floor to a
building we need to add some more
structure to our data

•

2

•

We can now use:

•
•
•
•

A Domain for each Building
A Partition for each Floor
A Partition for reference value,
i.e. Partition
A Partition for the configuration
information, e.g. how many floors,
how many rows/cols per floor

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

3
Active Floors on a Building
1

re
su
es
Pr

1

re
su
es
Pr

4

Floor Partitions:

•

2
3

Thus the resulting structure is:

ti
me

0

re
su
es
Pr

0

•
•

•

•
•
•

“building:f-­‐1”
“building:f-­‐2”
...

Reference Values Partition:

•

“building:refvals”

Configuration Partition:

•

“building:config”

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

ti
me

2

ti
me

3
Producing Information
DataWriter

Conceptually, the DataWriter QoS should be
the same as the Topic QoS or more stringent

•

However, DDS does enforce a specific
relationship between the Topic and
DataWriter QoS

e
Typ

•

Topic
DW

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

A DataWriter (DW) is a strongly typed
entity used to produce samples for one or
more instances of a Topic, with a given QoS

Qo
S

•
DataWriter

Define a new topic instance
Write samples for a topic instance
Dispose the topic instance

e
Typ

•
•
•

Topic
DW

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

The DataWriter controls the life-cycle of Topic
Instances and allows to:

Qo
S

•
Consuming Information
DataReader

Conceptually, the DataReader QoS should be the same
as the Topic QoS or less stringent

•

However, DDS does enforce a specific relationship
between the Topic and DataReader QoS

e
Typ

•

Topic
DR

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

A DataReader (DR) is a strongly typed entity used
to access and/or consume samples for a Topic,
with a given QoS

Qo
S

•
DataReader
time

4

e
ssur
Pre

2
3

•

3

time

time

Depending on its QoS a
DataReader may provide
access to:

•
•
•

last sample
last n samples
all samples produced
since the DataReader was
created

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

1

2

e
ssur
Pre

0

1

e
ssur
Pre

0
DataReader
•

3
time

2

time

3
4

e
ssur
Pre

n=3
time

Depending on its QoS a
DataReader may provide
access to:

•
•
•

last sample
last n samples
all samples produced
since the DataReader was
created

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

1

2

e
ssur
Pre

0

1

e
ssur
Pre

0
DataReader
•

3
time

2

time

3
4

e
ssur
Pre

n=3
time

Depending on its QoS a
DataReader may provide
access to:

•
•
•

last sample
last n samples
all samples produced
since the DataReader was
created

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

1

2

e
ssur
Pre

0

1

e
ssur
Pre

0
DataReader
•

3
time

2

time

3
4

e
ssur
Pre

n=3
time

Depending on its QoS a
DataReader may provide
access to:

•
•
•

last sample
last n samples
all samples produced
since the DataReader was
created

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

1

2

e
ssur
Pre

0

1

e
ssur
Pre

0
DataReader
•

3
time

2

time

3
4

e
ssur
Pre

n=3
time

Depending on its QoS a
DataReader may provide
access to:

•
•
•

last sample
last n samples
all samples produced
since the DataReader was
created

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

1

2

e
ssur
Pre

0

1

e
ssur
Pre

0
DataReader
•

3
time

2

time

3
4

e
ssur
Pre

n=3
time

Depending on its QoS a
DataReader may provide
access to:

•
•
•

last sample
last n samples
all samples produced
since the DataReader was
created

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

1

2

e
ssur
Pre

0

1

e
ssur
Pre

0
DataReader
•

3
time

2

time

3
4

e
ssur
Pre

n=3
time

Depending on its QoS a
DataReader may provide
access to:

•
•
•

last sample
last n samples
all samples produced
since the DataReader was
created

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

1

2

e
ssur
Pre

0

1

e
ssur
Pre

0
DataReader
•

3
time

2

time

3
4

e
ssur
Pre

n=3
time

Depending on its QoS a
DataReader may provide
access to:

•
•
•

last sample
last n samples
all samples produced
since the DataReader was
created

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

1

2

e
ssur
Pre

0

1

e
ssur
Pre

0
DataReader

e
ssur
Pre

4

Samples are stored in the DataReader
Cache

•

time

2
3

•

3

Samples can be read or taken from the
cache

•

time

•

Samples taken are evicted from
the cache

•

time

Samples read remain in the cache
and are simply market as read

The cache content can be selected
based on content or state. More on
this later...

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

1

2

e
ssur
Pre

0

1

e
ssur
Pre

0
Putting all Together
DDS Entities
Domain (e.g. Domain 123)
Domain
Participant
Topic

Partition (e.g. “Telemetry”, “Shapes”, )

Topic Instances/Samples

Ta

•
•
•
•

Tb

Publisher
Subscriber

Tx
Ty

Tc

DataWrter

DataReader

DomainParticipant: Provides access to a data cloud -- called a domain in DDS
Topic: Domain-wide definition of a kind of Information
Publisher/Subscriber: Provide scope to data sharing through the concept of partitions
DataReader/DataWriter: Allow to read/write data for a given topic in the partitions their Subscriber/Publisher are associated with.

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

T1
T1 T3
DomainParticipant
The DomainParticipant is the programming entity that gives access
to a DDS domain

•

A DomainParticipant is created as follows:
//	
  ISO	
  C++	
  DDS	
  API
int	
  domain_id	
  =	
  18;
auto	
  dp	
  =	
  DomainParticipant(domain_id);

//	
  Java	
  5	
  DDS	
  API
int	
  domain_id	
  =	
  18;
DomainParticipantFactory	
  dpf	
  =	
  	
  	
  
	
  	
  	
  	
  DomainParticipantFactory.getInstance(env)
DomainParticipant	
  dp	
  =	
  
	
  	
  	
  	
  dpf.createParticipant(domainId);

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

•
Topic
Given a DomainParticipant we can define (or discover) Topics
within a domain. This can be done as follows:
//	
  ISO	
  C++	
  DDS	
  API
auto	
  topic	
  =	
  Topic<TCell>(dp,	
  “Cell”);

•

//	
  Java	
  5	
  DDS	
  API
Topic<TCell>	
  topic	
  =	
  
	
  	
  	
  	
  dp.createTopic(“Cell”,	
  TCell.class);

As this declaration does not explicitly provide QoS for the Topic,
the default QoS will be used

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

•
Publisher/Subscriber
Publisher/Subscriber, through the Partitions they are associated
with, define the scope of a write/read operation

•
•

Partitions association is done through the Partition QoS Policy
This association can be defined as a list of string as well as a list of
regular expressions

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

•
Publisher/Subscriber
Definition of a Publisher/Subscriber in the default partition:
//	
  ISO	
  C++	
  DDS	
  API
auto	
  pub	
  =	
  Publisher(dp);

•

//	
  ISO	
  C++	
  DDS	
  API
auto	
  sub	
  =	
  Subscriber(dp);	
  

Definition of a Publisher/Subscriber with Partition settings
//	
  ISO	
  C++	
  DDS	
  API
auto	
  pub_qos	
  =	
  
	
  	
  	
  dp.default_publisher_qos()	
  
	
  	
  	
  <<	
  Partition(”af:telemetry”);
auto	
  pub	
  =	
  Publisher(dp,	
  pub_qos);

//	
  ISO	
  C++	
  DDS	
  API
auto	
  sub_qos	
  =	
  
	
  	
  	
  dp.default_subscriber_qos()	
  
	
  	
  	
  <<	
  Partition(”af:telemetry”);
auto	
  sub	
  =	
  Subscriber(dp,	
  sub_qos);

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

•
Publisher/Subscriber
//	
  Java	
  5	
  DDS	
  API
Publisher	
  pub	
  =	
  dp.createPublisher();

•

//	
  Java	
  5	
  DDS	
  API
Subscriber	
  sub	
  =	
  dp.createSubscriber();	
  

Definition of a Publisher/Subscriber with Partition settings
//	
  Java	
  5	
  DDS	
  API
PublisherQos	
  pubQoS	
  =	
  
	
  	
  	
  dp.getDefaultPublisherQos()
	
  	
  	
  	
  	
  .with(pf.Partition(”af:telemetry”));

//	
  Java	
  5	
  DDS	
  API
SubscriberQos	
  subQoS	
  =	
  
	
  	
  	
  dp.getDefaultSubscriberQos()
	
  	
  	
  	
  	
  .with(pf.Partition(”af:telemetry”));

Publisher	
  pub	
  =	
  
	
  	
  	
  dp.createPublisher(pubQoS);

Subscriber	
  sub	
  =	
  
	
  	
  	
  dp.createSubscriber(subQoS);

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

•

Definition of a Publisher/Subscriber in the default partition:
DataWriter
A DataWriter with default QoS can be declared as follows:
//	
  ISO	
  C++	
  DDS	
  API
auto	
  dw	
  =	
  DataWriter<TCell>(pub,	
  topic);
//	
  Write	
  the	
  cell	
  c(1,1)	
  using	
  `writer`
TCell	
  c11	
  =	
  {1,	
  1,	
  15};
dw.write(c11);
//	
  Write	
  the	
  cell	
  c(1,2)	
  using	
  the	
  `operator	
  <<`
TCell	
  c12	
  =	
  {1,	
  2,	
  5};
dw	
  <<	
  c12;

//	
  Java	
  5	
  DDS	
  API
DataWriter<TCell>	
  dw	
  =	
  pub.createDataWriter<TCell>(topic);
TCell	
  c11	
  =	
  new	
  TCell(1,	
  2,	
  15);
dw.write(c11);

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

•
DataReader
A DataReader with default QoS can be declared as follows:
//	
  ISO	
  C++	
  DDS	
  API
auto	
  dr	
  =	
  DataReader<TCell>(sub,	
  topic);
//	
  Read	
  Samples
auto	
  samples	
  =	
  dr.read();
//	
  Do	
  something	
  with	
  it
std::for_each(samples.begin(),	
  samples.end(),	
  do_something);

//	
  Java	
  5	
  DDS	
  API
DataReader<TCell>	
  dr	
  =	
  sub.createDataReader<TCell>(topic);

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

•
Does DDS “JavaScripts”?
Topic
JavaScript
var myTopic = new dds.Topic(domainID, topicName, topicType);

Example:
var topic = new dds.Topic(0, 'Cell', 'com.activefloor.Cell');

CoffeeScript
Example:
topic = new dds.Topic(0, 'Cell', 'com.activefloor.Cell')

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

myTopic = new dds.Topic(domainID, topicName, topicType)
DataWriter
CoffeeScript
dw = new dds.DataWriter(topic, qos)

Example:
dw = new dds.DataWriter(topic)

dw.write(cell)

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

cell = {}
cell.x = 3
cell.y = 5
cell.pressure = 3
DataReader
CoffeeScript
dr = new dds.DataReader(topic, qos)

Example:

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

dr = new dds.DataReader(topic)
Binding a DataReader
A DataReader can be bound to a user provided function that will
handle incoming data or to a cache

•

Notice, that as you are in control of how data-readers are bound to
cache you can be very creative

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

•
Binding to User Function
CoffeeScript
dr.addListener(f)

Example:

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

dr.addListener((s) -> console.log(JSON.stringify(s)))
Binding to a Cache
CoffeeScript
cache = new DataCache(historyDepth)
bind(keyMapper)(dr, cache)

// Binding
bindCell = dds.bind((s) -> s.x + “-” + s.y)
ccache = new DataCache(historyDepth)
bindCell(cache, cdr)
// Working with the Cache: Compute number of active cells
activeCells = ccache.map((c) -> if (c > p0) then 1 else 0).fold(0)((a, c) -> a + c)

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

Example:
Demo
Shapes Application
•

The iShapes application is used by DDS
vendors to demonstrate some of the
basic mechanism as well as product
interoperability

•

Three Topics

•

Circle, Square, Triangle
One Type
struct ShapeType {
string color;
long x;
long y;
long shapesize;
};
#pragma keylist ShapeType color

Spotted shapes represent subscriptions
Pierced shapes represent publications

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

•
Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

Android Shapes
Data Modeling
Data Centricity
•
•

DDS is Data Centric, it provides an
elegant, efficient and scalable data
sharing abstraction
When designing the architecture of
a DDS-based system the DataModel is the first thing that should
be devised
One of the most common question
from DDS novices is how to come
up with a good data model.

Data
Reader

Data
Writer
QoS

Data
Writer

TopicD

Data
Reader

QoS

TopicA
Data
Writer

QoS
QoS

TopicC

Data
Reader

TopicB
...

Data
Writer

Data
Reader

DDS Global Data Space

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

•
Data Modeling in DDS
A good starting point for identifying DDS topics is to describe your
system in a natural language and then use the following table:
English Language

DDS

Common Noun

Topic

Proper Noun

Topic Instance

Transitive Verb

Relationship

Intransitive Verb

Attribute Type

Adjective

Topic Attribute

Adverb

Relationship Attribute

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

•
Relationships
As in DBMS, relationships can be expressed, depending on
cardinality and relation attributes, by:

•
•

Keys and foreign keys
Relationship Topics
Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

•
Normalization

•

Notice that the nature of DDS may induce further data
normalization to deal with conflicting QoS requirements, such as:

•
•

Mix of frequently and infrequently changing data
Mix of attributes that have different persistence requirements

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

•

As in DBMS, Topics should be normalized to improve modularity,
efficiency and limit if not avoid anomalies. Typically you should have
your Topics in the 3NF
Part I
Summary & Remarks
Summary & Remarks
DDS provides an elegant Data Space abstraction that allows
application to share data ubiquitously and efficiently -- the Data
Space implementation is fully distributed

•

DDS provides primitives for defining classes of information as well
as organizing it

•

Data Modeling and normalization draws heavily from DBMS theory
and practice with some additional considerations w.r.t. the nature of
DDS

Copyright	
  2013,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.

•
:: Connect with Us ::

¥opensplice.com
¥opensplice.org

¥forums.opensplice.org
¥opensplicedds@prismtech.com

¥@acorsaro
¥@prismtech

¥ crc@prismtech.com
¥youtube.com/opensplicetube

¥slideshare.net/angelo.corsaro

¥sales@prismtech.com

Mais conteúdo relacionado

Mais procurados

Introduction to DDS
Introduction to DDSIntroduction to DDS
Introduction to DDSRick Warren
 
The Data Distribution Service Tutorial
The Data Distribution Service TutorialThe Data Distribution Service Tutorial
The Data Distribution Service TutorialAngelo 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
 
Applying MBSE to the Industrial IoT: Using SysML with Connext DDS and Simulink
Applying MBSE to the Industrial IoT: Using SysML with Connext DDS and SimulinkApplying MBSE to the Industrial IoT: Using SysML with Connext DDS and Simulink
Applying MBSE to the Industrial IoT: Using SysML with Connext DDS and SimulinkGerardo Pardo-Castellote
 
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
 
Comparison of MQTT and DDS as M2M Protocols for the Internet of Things
Comparison of MQTT and DDS as M2M Protocols for the Internet of ThingsComparison of MQTT and DDS as M2M Protocols for the Internet of Things
Comparison of MQTT and DDS as M2M Protocols for the Internet of ThingsReal-Time Innovations (RTI)
 
Deep Dive into the OPC UA / DDS Gateway Specification
Deep Dive into the OPC UA / DDS Gateway SpecificationDeep Dive into the OPC UA / DDS Gateway Specification
Deep Dive into the OPC UA / DDS Gateway SpecificationGerardo Pardo-Castellote
 
DDS Advanced Tutorial - OMG June 2013 Berlin Meeting
DDS Advanced Tutorial - OMG June 2013 Berlin MeetingDDS Advanced Tutorial - OMG June 2013 Berlin Meeting
DDS Advanced Tutorial - OMG June 2013 Berlin MeetingJaime Martin Losa
 
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 Art and Science of DDS Data Modelling
The Art and Science of DDS Data ModellingThe Art and Science of DDS Data Modelling
The Art and Science of DDS Data ModellingAngelo Corsaro
 
OMG DDS: The Data Distribution Service for Real-Time Systems
OMG DDS: The Data Distribution Service for Real-Time SystemsOMG DDS: The Data Distribution Service for Real-Time Systems
OMG DDS: The Data Distribution Service for Real-Time SystemsAngelo Corsaro
 
Distributed Simulations with DDS and HLA
Distributed Simulations with DDS and HLADistributed Simulations with DDS and HLA
Distributed Simulations with DDS and HLAAngelo Corsaro
 

Mais procurados (20)

DDS In Action Part II
DDS In Action Part IIDDS In Action Part II
DDS In Action Part II
 
DDS QoS Unleashed
DDS QoS UnleashedDDS QoS Unleashed
DDS QoS Unleashed
 
Introduction to DDS
Introduction to DDSIntroduction to DDS
Introduction to DDS
 
The Data Distribution Service Tutorial
The Data Distribution Service TutorialThe Data Distribution Service Tutorial
The Data Distribution Service Tutorial
 
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
 
UML Profile for DDS
UML Profile for DDSUML Profile for DDS
UML Profile for DDS
 
Applying MBSE to the Industrial IoT: Using SysML with Connext DDS and Simulink
Applying MBSE to the Industrial IoT: Using SysML with Connext DDS and SimulinkApplying MBSE to the Industrial IoT: Using SysML with Connext DDS and Simulink
Applying MBSE to the Industrial IoT: Using SysML with Connext DDS and Simulink
 
DDS Security
DDS SecurityDDS Security
DDS Security
 
Introduction to RTI DDS
Introduction to RTI DDSIntroduction to RTI DDS
Introduction to RTI DDS
 
Best Practices Using RTI Connext DDS
Best Practices Using RTI Connext DDSBest Practices Using RTI Connext DDS
Best Practices Using RTI Connext DDS
 
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
 
Comparison of MQTT and DDS as M2M Protocols for the Internet of Things
Comparison of MQTT and DDS as M2M Protocols for the Internet of ThingsComparison of MQTT and DDS as M2M Protocols for the Internet of Things
Comparison of MQTT and DDS as M2M Protocols for the Internet of Things
 
Deep Dive into the OPC UA / DDS Gateway Specification
Deep Dive into the OPC UA / DDS Gateway SpecificationDeep Dive into the OPC UA / DDS Gateway Specification
Deep Dive into the OPC UA / DDS Gateway Specification
 
Real time simulation with HLA and DDS
Real time simulation with HLA and DDSReal time simulation with HLA and DDS
Real time simulation with HLA and DDS
 
DDS Advanced Tutorial - OMG June 2013 Berlin Meeting
DDS Advanced Tutorial - OMG June 2013 Berlin MeetingDDS Advanced Tutorial - OMG June 2013 Berlin Meeting
DDS Advanced Tutorial - OMG June 2013 Berlin Meeting
 
10 Reasons for Choosing OpenSplice DDS
10 Reasons for Choosing OpenSplice DDS10 Reasons for Choosing OpenSplice DDS
10 Reasons for Choosing OpenSplice DDS
 
The Art and Science of DDS Data Modelling
The Art and Science of DDS Data ModellingThe Art and Science of DDS Data Modelling
The Art and Science of DDS Data Modelling
 
OMG DDS: The Data Distribution Service for Real-Time Systems
OMG DDS: The Data Distribution Service for Real-Time SystemsOMG DDS: The Data Distribution Service for Real-Time Systems
OMG DDS: The Data Distribution Service for Real-Time Systems
 
Distributed Simulations with DDS and HLA
Distributed Simulations with DDS and HLADistributed Simulations with DDS and HLA
Distributed Simulations with DDS and HLA
 

Destaque

Connected Mobile and Web Applications with Vortex
Connected Mobile and Web Applications with VortexConnected Mobile and Web Applications with Vortex
Connected Mobile and Web Applications with VortexAngelo Corsaro
 
Getting Started with Vortex
Getting Started with VortexGetting Started with Vortex
Getting Started with VortexAngelo Corsaro
 
Advanced OpenSplice Programming - Part I
Advanced OpenSplice Programming - Part IAdvanced OpenSplice Programming - Part I
Advanced OpenSplice Programming - Part IAngelo Corsaro
 
Vortex Tutorial -- Part I
Vortex Tutorial -- Part IVortex Tutorial -- Part I
Vortex Tutorial -- Part IAngelo Corsaro
 
Stream Processing with DDS and CEP
Stream Processing with  DDS and CEPStream Processing with  DDS and CEP
Stream Processing with DDS and CEPAngelo Corsaro
 
Desktop, Embedded and Mobile Apps with Vortex Café
Desktop, Embedded and Mobile Apps with Vortex CaféDesktop, Embedded and Mobile Apps with Vortex Café
Desktop, Embedded and Mobile Apps with Vortex CaféAngelo Corsaro
 
Vortex Tutorial Part II
Vortex Tutorial Part IIVortex Tutorial Part II
Vortex Tutorial Part IIAngelo Corsaro
 
Building Real-Time Web Applications with Vortex-Web
Building Real-Time Web Applications with Vortex-WebBuilding Real-Time Web Applications with Vortex-Web
Building Real-Time Web Applications with Vortex-WebAngelo Corsaro
 
Advanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part IIAdvanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part IIAngelo Corsaro
 
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
 
Building Reactive Applications with DDS
Building Reactive Applications with DDSBuilding Reactive Applications with DDS
Building Reactive Applications with DDSAngelo Corsaro
 
20 Tips for OpenSplice Newbies
20 Tips for OpenSplice Newbies20 Tips for OpenSplice Newbies
20 Tips for OpenSplice NewbiesAngelo Corsaro
 
Introducing Vortex Lite
Introducing Vortex LiteIntroducing Vortex Lite
Introducing Vortex LiteAngelo Corsaro
 
Building and Scaling Internet of Things Applications with Vortex Cloud
Building and Scaling Internet of Things Applications with Vortex CloudBuilding and Scaling Internet of Things Applications with Vortex Cloud
Building and Scaling Internet of Things Applications with Vortex CloudAngelo Corsaro
 
IoT Protocols Integration with Vortex Gateway
IoT Protocols Integration with Vortex GatewayIoT Protocols Integration with Vortex Gateway
IoT Protocols Integration with Vortex GatewayAngelo Corsaro
 
The Data Distribution Service: The Communication Middleware Fabric for Scala...
The Data Distribution Service: The Communication  Middleware Fabric for Scala...The Data Distribution Service: The Communication  Middleware Fabric for Scala...
The Data Distribution Service: The Communication Middleware Fabric for Scala...Angelo Corsaro
 
Smart, Secure and Efficient Data Sharing in IoT
Smart, Secure and Efficient Data Sharing in IoTSmart, Secure and Efficient Data Sharing in IoT
Smart, Secure and Efficient Data Sharing in IoTAngelo Corsaro
 
Fluid IoT Architectures
Fluid IoT ArchitecturesFluid IoT Architectures
Fluid IoT ArchitecturesAngelo Corsaro
 
Microservices Architecture with Vortex — Part II
Microservices Architecture with Vortex — Part IIMicroservices Architecture with Vortex — Part II
Microservices Architecture with Vortex — Part IIAngelo Corsaro
 

Destaque (20)

Connected Mobile and Web Applications with Vortex
Connected Mobile and Web Applications with VortexConnected Mobile and Web Applications with Vortex
Connected Mobile and Web Applications with Vortex
 
Getting Started with Vortex
Getting Started with VortexGetting Started with Vortex
Getting Started with Vortex
 
Advanced OpenSplice Programming - Part I
Advanced OpenSplice Programming - Part IAdvanced OpenSplice Programming - Part I
Advanced OpenSplice Programming - Part I
 
Vortex Tutorial -- Part I
Vortex Tutorial -- Part IVortex Tutorial -- Part I
Vortex Tutorial -- Part I
 
Stream Processing with DDS and CEP
Stream Processing with  DDS and CEPStream Processing with  DDS and CEP
Stream Processing with DDS and CEP
 
Desktop, Embedded and Mobile Apps with Vortex Café
Desktop, Embedded and Mobile Apps with Vortex CaféDesktop, Embedded and Mobile Apps with Vortex Café
Desktop, Embedded and Mobile Apps with Vortex Café
 
Vortex Tutorial Part II
Vortex Tutorial Part IIVortex Tutorial Part II
Vortex Tutorial Part II
 
Building Real-Time Web Applications with Vortex-Web
Building Real-Time Web Applications with Vortex-WebBuilding Real-Time Web Applications with Vortex-Web
Building Real-Time Web Applications with Vortex-Web
 
Advanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part IIAdvanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part II
 
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.
 
Building Reactive Applications with DDS
Building Reactive Applications with DDSBuilding Reactive Applications with DDS
Building Reactive Applications with DDS
 
OpenSplice DDS v6
OpenSplice DDS v6OpenSplice DDS v6
OpenSplice DDS v6
 
20 Tips for OpenSplice Newbies
20 Tips for OpenSplice Newbies20 Tips for OpenSplice Newbies
20 Tips for OpenSplice Newbies
 
Introducing Vortex Lite
Introducing Vortex LiteIntroducing Vortex Lite
Introducing Vortex Lite
 
Building and Scaling Internet of Things Applications with Vortex Cloud
Building and Scaling Internet of Things Applications with Vortex CloudBuilding and Scaling Internet of Things Applications with Vortex Cloud
Building and Scaling Internet of Things Applications with Vortex Cloud
 
IoT Protocols Integration with Vortex Gateway
IoT Protocols Integration with Vortex GatewayIoT Protocols Integration with Vortex Gateway
IoT Protocols Integration with Vortex Gateway
 
The Data Distribution Service: The Communication Middleware Fabric for Scala...
The Data Distribution Service: The Communication  Middleware Fabric for Scala...The Data Distribution Service: The Communication  Middleware Fabric for Scala...
The Data Distribution Service: The Communication Middleware Fabric for Scala...
 
Smart, Secure and Efficient Data Sharing in IoT
Smart, Secure and Efficient Data Sharing in IoTSmart, Secure and Efficient Data Sharing in IoT
Smart, Secure and Efficient Data Sharing in IoT
 
Fluid IoT Architectures
Fluid IoT ArchitecturesFluid IoT Architectures
Fluid IoT Architectures
 
Microservices Architecture with Vortex — Part II
Microservices Architecture with Vortex — Part IIMicroservices Architecture with Vortex — Part II
Microservices Architecture with Vortex — Part II
 

Semelhante a DDS Tutorial -- Part I

Fast RTPS Workshop at FIWARE Summit 2018
Fast RTPS Workshop at FIWARE Summit 2018Fast RTPS Workshop at FIWARE Summit 2018
Fast RTPS Workshop at FIWARE Summit 2018Jaime Martin Losa
 
Fiware - communicating with ROS robots using Fast RTPS
Fiware - communicating with ROS robots using Fast RTPSFiware - communicating with ROS robots using Fast RTPS
Fiware - communicating with ROS robots using Fast RTPSJaime Martin Losa
 
Fiware: Connecting to robots
Fiware: Connecting to robotsFiware: Connecting to robots
Fiware: Connecting to robotsJaime Martin Losa
 
Azure Cosmos DB - Technical Deep Dive
Azure Cosmos DB - Technical Deep DiveAzure Cosmos DB - Technical Deep Dive
Azure Cosmos DB - Technical Deep DiveAndre Essing
 
Real Time Java DDS
Real Time Java DDSReal Time Java DDS
Real Time Java DDSkerush
 
Reactive Data Centric Architectures with Vortex, Spark and ReactiveX
Reactive Data Centric Architectures with Vortex, Spark and ReactiveXReactive Data Centric Architectures with Vortex, Spark and ReactiveX
Reactive Data Centric Architectures with Vortex, Spark and ReactiveXAngelo Corsaro
 
Distributed Systems: How to connect your real-time applications
Distributed Systems: How to connect your real-time applicationsDistributed Systems: How to connect your real-time applications
Distributed Systems: How to connect your real-time applicationsJaime Martin Losa
 
A Secure and Dynamic Multi Keyword Ranked Search over Encrypted Cloud Data
A Secure and Dynamic Multi Keyword Ranked Search over Encrypted Cloud DataA Secure and Dynamic Multi Keyword Ranked Search over Encrypted Cloud Data
A Secure and Dynamic Multi Keyword Ranked Search over Encrypted Cloud DataIRJET Journal
 
Distributed Algorithms with DDS
Distributed Algorithms with DDSDistributed Algorithms with DDS
Distributed Algorithms with DDSAngelo Corsaro
 
Architecting IoT Systems with Vortex
Architecting IoT Systems with VortexArchitecting IoT Systems with Vortex
Architecting IoT Systems with VortexAngelo Corsaro
 
Phil Day [Configured Things] | Policy-Driven Real-Time Data Filtering from Io...
Phil Day [Configured Things] | Policy-Driven Real-Time Data Filtering from Io...Phil Day [Configured Things] | Policy-Driven Real-Time Data Filtering from Io...
Phil Day [Configured Things] | Policy-Driven Real-Time Data Filtering from Io...InfluxData
 
From Events to Networks: Time Series Analysis on Scale
From Events to Networks: Time Series Analysis on ScaleFrom Events to Networks: Time Series Analysis on Scale
From Events to Networks: Time Series Analysis on ScaleDr. Mirko Kämpf
 
Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2
Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2
Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2Jaime Martin Losa
 
Ijarcet vol-2-issue-7-2236-2240
Ijarcet vol-2-issue-7-2236-2240Ijarcet vol-2-issue-7-2236-2240
Ijarcet vol-2-issue-7-2236-2240Editor IJARCET
 
Ijarcet vol-2-issue-7-2236-2240
Ijarcet vol-2-issue-7-2236-2240Ijarcet vol-2-issue-7-2236-2240
Ijarcet vol-2-issue-7-2236-2240Editor IJARCET
 
FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...
FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...
FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...FIWARE
 
Cloudify workshop at CCCEU 2014
Cloudify workshop at CCCEU 2014 Cloudify workshop at CCCEU 2014
Cloudify workshop at CCCEU 2014 Uri Cohen
 

Semelhante a DDS Tutorial -- Part I (20)

PrismTech Vortex Tutorial Part 1
PrismTech Vortex Tutorial Part 1PrismTech Vortex Tutorial Part 1
PrismTech Vortex Tutorial Part 1
 
Fast RTPS Workshop at FIWARE Summit 2018
Fast RTPS Workshop at FIWARE Summit 2018Fast RTPS Workshop at FIWARE Summit 2018
Fast RTPS Workshop at FIWARE Summit 2018
 
Fiware - communicating with ROS robots using Fast RTPS
Fiware - communicating with ROS robots using Fast RTPSFiware - communicating with ROS robots using Fast RTPS
Fiware - communicating with ROS robots using Fast RTPS
 
Fiware: Connecting to robots
Fiware: Connecting to robotsFiware: Connecting to robots
Fiware: Connecting to robots
 
Azure Cosmos DB - Technical Deep Dive
Azure Cosmos DB - Technical Deep DiveAzure Cosmos DB - Technical Deep Dive
Azure Cosmos DB - Technical Deep Dive
 
Real Time Java DDS
Real Time Java DDSReal Time Java DDS
Real Time Java DDS
 
Reactive Data Centric Architectures with Vortex, Spark and ReactiveX
Reactive Data Centric Architectures with Vortex, Spark and ReactiveXReactive Data Centric Architectures with Vortex, Spark and ReactiveX
Reactive Data Centric Architectures with Vortex, Spark and ReactiveX
 
Distributed Systems: How to connect your real-time applications
Distributed Systems: How to connect your real-time applicationsDistributed Systems: How to connect your real-time applications
Distributed Systems: How to connect your real-time applications
 
A Secure and Dynamic Multi Keyword Ranked Search over Encrypted Cloud Data
A Secure and Dynamic Multi Keyword Ranked Search over Encrypted Cloud DataA Secure and Dynamic Multi Keyword Ranked Search over Encrypted Cloud Data
A Secure and Dynamic Multi Keyword Ranked Search over Encrypted Cloud Data
 
Distributed Algorithms with DDS
Distributed Algorithms with DDSDistributed Algorithms with DDS
Distributed Algorithms with DDS
 
Architecting IoT Systems with Vortex
Architecting IoT Systems with VortexArchitecting IoT Systems with Vortex
Architecting IoT Systems with Vortex
 
Phil Day [Configured Things] | Policy-Driven Real-Time Data Filtering from Io...
Phil Day [Configured Things] | Policy-Driven Real-Time Data Filtering from Io...Phil Day [Configured Things] | Policy-Driven Real-Time Data Filtering from Io...
Phil Day [Configured Things] | Policy-Driven Real-Time Data Filtering from Io...
 
From Events to Networks: Time Series Analysis on Scale
From Events to Networks: Time Series Analysis on ScaleFrom Events to Networks: Time Series Analysis on Scale
From Events to Networks: Time Series Analysis on Scale
 
Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2
Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2
Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2
 
Ijarcet vol-2-issue-7-2236-2240
Ijarcet vol-2-issue-7-2236-2240Ijarcet vol-2-issue-7-2236-2240
Ijarcet vol-2-issue-7-2236-2240
 
Ijarcet vol-2-issue-7-2236-2240
Ijarcet vol-2-issue-7-2236-2240Ijarcet vol-2-issue-7-2236-2240
Ijarcet vol-2-issue-7-2236-2240
 
FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...
FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...
FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...
 
Fast RTPS
Fast RTPSFast RTPS
Fast RTPS
 
Influx data basic
Influx data basicInflux data basic
Influx data basic
 
Cloudify workshop at CCCEU 2014
Cloudify workshop at CCCEU 2014 Cloudify workshop at CCCEU 2014
Cloudify workshop at CCCEU 2014
 

Mais de Angelo Corsaro

zenoh: The Edge Data Fabric
zenoh: The Edge Data Fabriczenoh: The Edge Data Fabric
zenoh: The Edge Data FabricAngelo Corsaro
 
Data Decentralisation: Efficiency, Privacy and Fair Monetisation
Data Decentralisation: Efficiency, Privacy and Fair MonetisationData Decentralisation: Efficiency, Privacy and Fair Monetisation
Data Decentralisation: Efficiency, Privacy and Fair MonetisationAngelo Corsaro
 
zenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query computezenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query computeAngelo Corsaro
 
zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolzenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolAngelo Corsaro
 
zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolzenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolAngelo Corsaro
 
Breaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Breaking the Edge -- A Journey Through Cloud, Edge and Fog ComputingBreaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Breaking the Edge -- A Journey Through Cloud, Edge and Fog ComputingAngelo Corsaro
 
fog05: The Fog Computing Infrastructure
fog05: The Fog Computing Infrastructurefog05: The Fog Computing Infrastructure
fog05: The Fog Computing InfrastructureAngelo Corsaro
 
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
 
RUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming RuminationsRUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming RuminationsAngelo Corsaro
 
Vortex II -- The Industrial IoT Connectivity Standard
Vortex II -- The  Industrial IoT  Connectivity StandardVortex II -- The  Industrial IoT  Connectivity Standard
Vortex II -- The Industrial IoT Connectivity StandardAngelo Corsaro
 
DDS and OPC UA Explained
DDS and OPC UA ExplainedDDS and OPC UA Explained
DDS and OPC UA ExplainedAngelo Corsaro
 

Mais de Angelo Corsaro (20)

Zenoh: The Genesis
Zenoh: The GenesisZenoh: The Genesis
Zenoh: The Genesis
 
zenoh: The Edge Data Fabric
zenoh: The Edge Data Fabriczenoh: The Edge Data Fabric
zenoh: The Edge Data Fabric
 
Zenoh Tutorial
Zenoh TutorialZenoh Tutorial
Zenoh Tutorial
 
Data Decentralisation: Efficiency, Privacy and Fair Monetisation
Data Decentralisation: Efficiency, Privacy and Fair MonetisationData Decentralisation: Efficiency, Privacy and Fair Monetisation
Data Decentralisation: Efficiency, Privacy and Fair Monetisation
 
zenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query computezenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query compute
 
zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolzenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocol
 
zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolzenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocol
 
Breaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Breaking the Edge -- A Journey Through Cloud, Edge and Fog ComputingBreaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Breaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
 
Eastern Sicily
Eastern SicilyEastern Sicily
Eastern Sicily
 
fog05: The Fog Computing Infrastructure
fog05: The Fog Computing Infrastructurefog05: The Fog Computing Infrastructure
fog05: The Fog Computing Infrastructure
 
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
 
RUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming RuminationsRUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming Ruminations
 
Vortex II -- The Industrial IoT Connectivity Standard
Vortex II -- The  Industrial IoT  Connectivity StandardVortex II -- The  Industrial IoT  Connectivity Standard
Vortex II -- The Industrial IoT Connectivity Standard
 
Fog Computing Defined
Fog Computing DefinedFog Computing Defined
Fog Computing Defined
 
DDS and OPC UA Explained
DDS and OPC UA ExplainedDDS and OPC UA Explained
DDS and OPC UA Explained
 

Último

Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 

Último (20)

Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 

DDS Tutorial -- Part I

  • 1. OpenSplice | DDS Tutorial -- Part I -Angelo CORSARO, Ph.D. Chief Technology Officer OMG DDS Sig Co-Chair PrismTech angelo.corsaro@prismtech.com
  • 3. DDS is a standard technology for ubiquitous, interoperable, secure, platform independent, and real-time data sharing across network connected devices
  • 4. Data Distribution Service (DDS) • DDS’ Global Data Space is fully distributed, highly efficient and scalable Data Reader Data Writer QoS Data Writer TopicD Data Reader QoS TopicA Data Writer QoS QoS TopicC Data Reader TopicB ... Data Writer Data Reader DDS Global Data Space Copyright  2013,  PrismTech  –    All  Rights  Reserved. • DDS provides a Global Data Space abstraction that allow applications to autonomously, anonymously, securely and efficiently share data
  • 5. Data Distribution Service (DDS) • Data Writer DataWriters and DataReaders are automatically and dynamically matched by the DDS Discovery A rich set of QoS allows to control existential, temporal, and spatial properties of data QoS Data Writer TopicD Data Reader QoS TopicA Data Writer QoS QoS TopicC Data Reader TopicB ... Data Writer Data Reader DDS Global Data Space Copyright  2013,  PrismTech  –    All  Rights  Reserved. • Data Reader
  • 6. Fully Distributed Data Space Conceptual Model Actual Implementation Data Reader QoS Data Writer TopicD Data Writer QoS QoS TopicC TopicD TopicD TopicA QoS TopicD Data Reader Data Reader QoS Data Writer TopicB Data Reader DDS Global Data Space Data Reader QoS Data Writer TopicB ... Data Writer QoS QoS Data Reader QoS TopicA Data Writer QoS TopicA Data Writer QoS TopicC Data Reader Copyright  2013,  PrismTech  –    All  Rights  Reserved. Data Writer
  • 7. Fully Distributed Data Space Data Writer QoS QoS TopicD TopicD Data Reader The  communication   between  the   DataWriter  and  the   DataReader  can  use   UDP/IP  (Unicast   and  Multicast)or   TCP/IP QoS Data Writer TopicA QoS TopicD Data Reader QoS Data Writer QoS TopicA Data Writer QoS TopicC Data Reader Copyright  2013,  PrismTech  –    All  Rights  Reserved. TopicB
  • 8. Key Highlights Elegant and High Level Data Sharing Abstraction Polyglot and platform independent • • • Java, Scala, C, C++, C#, JavaScript, CoffeeScript etc. Android, Windows, Linux,VxWorks, etc. Peer-to-Peer by nature, Brokered when useful Copyright  2013,  PrismTech  –    All  Rights  Reserved. • •
  • 9. Key Highlights Content and Temporal Filtering (both sender and receiver filtering supported) • • Queries 20+ QoS to control existential, temporal, and spatial properties of data Copyright  2013,  PrismTech  –    All  Rights  Reserved. •
  • 10. Key Highlights • • ~35-50 usec latency* 7M msgs/sec node-to-node throughput* (*) Performance measured on Linux Host with i7 processor on a 1Gbps Ethernet network Copyright  2013,  PrismTech  –    All  Rights  Reserved. • High Performance and Scalable
  • 11. Who is Using DDS?
  • 12. Use Cases Training & Simulation Systems Naval Combat Systems Copyright  2013,  PrismTech  –    All  Rights  Reserved. Integrated Modular Vetronics Air Traffic Control & Management Unmanned Air Vehicles Aerospace Applications
  • 13. Use Cases Large Scale SCADA Systems Smart Cities Copyright  2013,  PrismTech  –    All  Rights  Reserved. Agricultural Vehicle Systems Train Control Systems Complex Medical Devices High Frequency Auto-Trading
  • 16. Domain • • DDS data lives within a domain • The number 0 identifies the default domain A domain represent an impassable communication plane DDS Domain Copyright  2013,  PrismTech  –    All  Rights  Reserved. • A domain is identified with a non negative integer, such as 1, 3, 31
  • 17. Partitions • Partitions are the mechanism provided by DDS to organize information within a domain • • Access to partitions is controlled through QoS Policies Partitions are defined as strings: • “system:telemetry” “system:log” “data:row-­‐2:col-­‐3” Partitions addressed by name or regular expressions: • • ”system:telemetry” “data:row-­‐2:col-­‐*” Partitions Copyright  2013,  PrismTech  –    All  Rights  Reserved. • • •
  • 19. Topic A Topic defines a domain-wide information’s class QoS name: identifies the topic within the domain • qos: is a collection of policies that express the non-functional properties of this topic, e.g. reliability, persistence, etc. type: is the programming language type associated with the topic. Types are extensible and evolvable TopicA QoS QoS TopicC TopicB ... Name Topic e Typ • • QoS Copyright  2013,  PrismTech  –    All  Rights  Reserved. A Topic is defined by means of a (name, type, qos) tuple, where TopicD Qo S • •
  • 20. Topic and Instances As explained in the previous slide a topic defines a class/type of information Topics can be defined as Singleton or can have multiple Instances Topic Instances are identified by means of the topic key A Topic Key is identified by a tuple of attributes -- like in databases Remarks: • • A Singleton topic has a single domain-wide instance A “regular” Topic can have as many instances as the number of different key values, e.g., if the key is an 8-bit character then the topic can have 256 different instances Copyright  2013,  PrismTech  –    All  Rights  Reserved. • • • • •
  • 22. Active Floor • • Assume we are building an active floor • This information is then used by the application that uses the active floor for positioning or entertainment Copyright  2013,  PrismTech  –    All  Rights  Reserved. This active floor is made by a matrix of pressure sensors used to detects position, and indirectly movement Cell:  (i,j)
  • 23. Active Floor • The generic active cell can be modeled with a topic that has an instance for each value of (i,j). The topic type can be defined as: struct  TCell  {      short  row;        short  column;      float  pressure;  //  in  kPa }; #pragma  keylist  TCell  row  column Copyright  2013,  PrismTech  –    All  Rights  Reserved. • Each cell is now distinguishable and associated with a topic instance Cell:  (i,j)
  • 24. Active Floor How can we know when something is on the cell? • The detection can be based on the difference between the atmospheric pressure, say P0, and the pressure sensed by the cell • We can model this as a Singleton Topic ReferencePressure defined by the type: struct  TReferencePressure  {      float  pressure;  //  in  kPa      float  precision;   }; #pragma  keylist  TReferencePressure Copyright  2013,  PrismTech  –    All  Rights  Reserved. • Cell:  (i,j)
  • 25. Active Floor time 4 e ssur Pre 2 3 • 3 time Each sensor has associated a topic instance identified by the (row,column) coordinate -- the instance key struct  TCell  {      short  row;      short  column;      float  pressure;  //  in  kPa }; #pragma  keylist  Cell  row  column time • Each instance produces a stream of pressure values that in DDS terms are called samples Copyright  2013,  PrismTech  –    All  Rights  Reserved. 1 2 e ssur Pre 0 1 e ssur Pre 0
  • 27. Active Floors on a Building ti me re su es Pr 1 re su es Pr 2 3 4 Let’s assume now that we have a building that uses active floors to detect presence and movement How can we organize the out data model? ti me 0 re su es Pr 0 • • 1 Copyright  2013,  PrismTech  –    All  Rights  Reserved. 2 ti me 3
  • 28. Active Floors on a Building 1 re su es Pr 1 re su es Pr 2 3 4 ti me 0 re su es Pr 0 • The first thing to do is to introduce the third dimension to our cell: struct  TCell  {      short  row;      short  column;      short  floor;      float  pressure;  //  in  kPa }; #pragma  keylist  TCell  row  column  floor Copyright  2013,  PrismTech  –    All  Rights  Reserved. ti me 2 ti me 3
  • 29. Active Floors on a Building ti me ti me 1 re su es Pr 1 re su es Pr 2 3 4 ti me 0 re su es Pr 0 As we move from a single floor to a building we need to add some more structure to our data • 2 • We can now use: • • • • A Domain for each Building A Partition for each Floor A Partition for reference value, i.e. Partition A Partition for the configuration information, e.g. how many floors, how many rows/cols per floor Copyright  2013,  PrismTech  –    All  Rights  Reserved. 3
  • 30. Active Floors on a Building 1 re su es Pr 1 re su es Pr 4 Floor Partitions: • 2 3 Thus the resulting structure is: ti me 0 re su es Pr 0 • • • • • • “building:f-­‐1” “building:f-­‐2” ... Reference Values Partition: • “building:refvals” Configuration Partition: • “building:config” Copyright  2013,  PrismTech  –    All  Rights  Reserved. ti me 2 ti me 3
  • 32. DataWriter Conceptually, the DataWriter QoS should be the same as the Topic QoS or more stringent • However, DDS does enforce a specific relationship between the Topic and DataWriter QoS e Typ • Topic DW Copyright  2013,  PrismTech  –    All  Rights  Reserved. A DataWriter (DW) is a strongly typed entity used to produce samples for one or more instances of a Topic, with a given QoS Qo S •
  • 33. DataWriter Define a new topic instance Write samples for a topic instance Dispose the topic instance e Typ • • • Topic DW Copyright  2013,  PrismTech  –    All  Rights  Reserved. The DataWriter controls the life-cycle of Topic Instances and allows to: Qo S •
  • 35. DataReader Conceptually, the DataReader QoS should be the same as the Topic QoS or less stringent • However, DDS does enforce a specific relationship between the Topic and DataReader QoS e Typ • Topic DR Copyright  2013,  PrismTech  –    All  Rights  Reserved. A DataReader (DR) is a strongly typed entity used to access and/or consume samples for a Topic, with a given QoS Qo S •
  • 36. DataReader time 4 e ssur Pre 2 3 • 3 time time Depending on its QoS a DataReader may provide access to: • • • last sample last n samples all samples produced since the DataReader was created Copyright  2013,  PrismTech  –    All  Rights  Reserved. 1 2 e ssur Pre 0 1 e ssur Pre 0
  • 37. DataReader • 3 time 2 time 3 4 e ssur Pre n=3 time Depending on its QoS a DataReader may provide access to: • • • last sample last n samples all samples produced since the DataReader was created Copyright  2013,  PrismTech  –    All  Rights  Reserved. 1 2 e ssur Pre 0 1 e ssur Pre 0
  • 38. DataReader • 3 time 2 time 3 4 e ssur Pre n=3 time Depending on its QoS a DataReader may provide access to: • • • last sample last n samples all samples produced since the DataReader was created Copyright  2013,  PrismTech  –    All  Rights  Reserved. 1 2 e ssur Pre 0 1 e ssur Pre 0
  • 39. DataReader • 3 time 2 time 3 4 e ssur Pre n=3 time Depending on its QoS a DataReader may provide access to: • • • last sample last n samples all samples produced since the DataReader was created Copyright  2013,  PrismTech  –    All  Rights  Reserved. 1 2 e ssur Pre 0 1 e ssur Pre 0
  • 40. DataReader • 3 time 2 time 3 4 e ssur Pre n=3 time Depending on its QoS a DataReader may provide access to: • • • last sample last n samples all samples produced since the DataReader was created Copyright  2013,  PrismTech  –    All  Rights  Reserved. 1 2 e ssur Pre 0 1 e ssur Pre 0
  • 41. DataReader • 3 time 2 time 3 4 e ssur Pre n=3 time Depending on its QoS a DataReader may provide access to: • • • last sample last n samples all samples produced since the DataReader was created Copyright  2013,  PrismTech  –    All  Rights  Reserved. 1 2 e ssur Pre 0 1 e ssur Pre 0
  • 42. DataReader • 3 time 2 time 3 4 e ssur Pre n=3 time Depending on its QoS a DataReader may provide access to: • • • last sample last n samples all samples produced since the DataReader was created Copyright  2013,  PrismTech  –    All  Rights  Reserved. 1 2 e ssur Pre 0 1 e ssur Pre 0
  • 43. DataReader • 3 time 2 time 3 4 e ssur Pre n=3 time Depending on its QoS a DataReader may provide access to: • • • last sample last n samples all samples produced since the DataReader was created Copyright  2013,  PrismTech  –    All  Rights  Reserved. 1 2 e ssur Pre 0 1 e ssur Pre 0
  • 44. DataReader e ssur Pre 4 Samples are stored in the DataReader Cache • time 2 3 • 3 Samples can be read or taken from the cache • time • Samples taken are evicted from the cache • time Samples read remain in the cache and are simply market as read The cache content can be selected based on content or state. More on this later... Copyright  2013,  PrismTech  –    All  Rights  Reserved. 1 2 e ssur Pre 0 1 e ssur Pre 0
  • 46. DDS Entities Domain (e.g. Domain 123) Domain Participant Topic Partition (e.g. “Telemetry”, “Shapes”, ) Topic Instances/Samples Ta • • • • Tb Publisher Subscriber Tx Ty Tc DataWrter DataReader DomainParticipant: Provides access to a data cloud -- called a domain in DDS Topic: Domain-wide definition of a kind of Information Publisher/Subscriber: Provide scope to data sharing through the concept of partitions DataReader/DataWriter: Allow to read/write data for a given topic in the partitions their Subscriber/Publisher are associated with. Copyright  2013,  PrismTech  –    All  Rights  Reserved. T1 T1 T3
  • 47. DomainParticipant The DomainParticipant is the programming entity that gives access to a DDS domain • A DomainParticipant is created as follows: //  ISO  C++  DDS  API int  domain_id  =  18; auto  dp  =  DomainParticipant(domain_id); //  Java  5  DDS  API int  domain_id  =  18; DomainParticipantFactory  dpf  =              DomainParticipantFactory.getInstance(env) DomainParticipant  dp  =          dpf.createParticipant(domainId); Copyright  2013,  PrismTech  –    All  Rights  Reserved. •
  • 48. Topic Given a DomainParticipant we can define (or discover) Topics within a domain. This can be done as follows: //  ISO  C++  DDS  API auto  topic  =  Topic<TCell>(dp,  “Cell”); • //  Java  5  DDS  API Topic<TCell>  topic  =          dp.createTopic(“Cell”,  TCell.class); As this declaration does not explicitly provide QoS for the Topic, the default QoS will be used Copyright  2013,  PrismTech  –    All  Rights  Reserved. •
  • 49. Publisher/Subscriber Publisher/Subscriber, through the Partitions they are associated with, define the scope of a write/read operation • • Partitions association is done through the Partition QoS Policy This association can be defined as a list of string as well as a list of regular expressions Copyright  2013,  PrismTech  –    All  Rights  Reserved. •
  • 50. Publisher/Subscriber Definition of a Publisher/Subscriber in the default partition: //  ISO  C++  DDS  API auto  pub  =  Publisher(dp); • //  ISO  C++  DDS  API auto  sub  =  Subscriber(dp);   Definition of a Publisher/Subscriber with Partition settings //  ISO  C++  DDS  API auto  pub_qos  =        dp.default_publisher_qos()        <<  Partition(”af:telemetry”); auto  pub  =  Publisher(dp,  pub_qos); //  ISO  C++  DDS  API auto  sub_qos  =        dp.default_subscriber_qos()        <<  Partition(”af:telemetry”); auto  sub  =  Subscriber(dp,  sub_qos); Copyright  2013,  PrismTech  –    All  Rights  Reserved. •
  • 51. Publisher/Subscriber //  Java  5  DDS  API Publisher  pub  =  dp.createPublisher(); • //  Java  5  DDS  API Subscriber  sub  =  dp.createSubscriber();   Definition of a Publisher/Subscriber with Partition settings //  Java  5  DDS  API PublisherQos  pubQoS  =        dp.getDefaultPublisherQos()          .with(pf.Partition(”af:telemetry”)); //  Java  5  DDS  API SubscriberQos  subQoS  =        dp.getDefaultSubscriberQos()          .with(pf.Partition(”af:telemetry”)); Publisher  pub  =        dp.createPublisher(pubQoS); Subscriber  sub  =        dp.createSubscriber(subQoS); Copyright  2013,  PrismTech  –    All  Rights  Reserved. • Definition of a Publisher/Subscriber in the default partition:
  • 52. DataWriter A DataWriter with default QoS can be declared as follows: //  ISO  C++  DDS  API auto  dw  =  DataWriter<TCell>(pub,  topic); //  Write  the  cell  c(1,1)  using  `writer` TCell  c11  =  {1,  1,  15}; dw.write(c11); //  Write  the  cell  c(1,2)  using  the  `operator  <<` TCell  c12  =  {1,  2,  5}; dw  <<  c12; //  Java  5  DDS  API DataWriter<TCell>  dw  =  pub.createDataWriter<TCell>(topic); TCell  c11  =  new  TCell(1,  2,  15); dw.write(c11); Copyright  2013,  PrismTech  –    All  Rights  Reserved. •
  • 53. DataReader A DataReader with default QoS can be declared as follows: //  ISO  C++  DDS  API auto  dr  =  DataReader<TCell>(sub,  topic); //  Read  Samples auto  samples  =  dr.read(); //  Do  something  with  it std::for_each(samples.begin(),  samples.end(),  do_something); //  Java  5  DDS  API DataReader<TCell>  dr  =  sub.createDataReader<TCell>(topic); Copyright  2013,  PrismTech  –    All  Rights  Reserved. •
  • 55. Topic JavaScript var myTopic = new dds.Topic(domainID, topicName, topicType); Example: var topic = new dds.Topic(0, 'Cell', 'com.activefloor.Cell'); CoffeeScript Example: topic = new dds.Topic(0, 'Cell', 'com.activefloor.Cell') Copyright  2013,  PrismTech  –    All  Rights  Reserved. myTopic = new dds.Topic(domainID, topicName, topicType)
  • 56. DataWriter CoffeeScript dw = new dds.DataWriter(topic, qos) Example: dw = new dds.DataWriter(topic) dw.write(cell) Copyright  2013,  PrismTech  –    All  Rights  Reserved. cell = {} cell.x = 3 cell.y = 5 cell.pressure = 3
  • 57. DataReader CoffeeScript dr = new dds.DataReader(topic, qos) Example: Copyright  2013,  PrismTech  –    All  Rights  Reserved. dr = new dds.DataReader(topic)
  • 58. Binding a DataReader A DataReader can be bound to a user provided function that will handle incoming data or to a cache • Notice, that as you are in control of how data-readers are bound to cache you can be very creative Copyright  2013,  PrismTech  –    All  Rights  Reserved. •
  • 59. Binding to User Function CoffeeScript dr.addListener(f) Example: Copyright  2013,  PrismTech  –    All  Rights  Reserved. dr.addListener((s) -> console.log(JSON.stringify(s)))
  • 60. Binding to a Cache CoffeeScript cache = new DataCache(historyDepth) bind(keyMapper)(dr, cache) // Binding bindCell = dds.bind((s) -> s.x + “-” + s.y) ccache = new DataCache(historyDepth) bindCell(cache, cdr) // Working with the Cache: Compute number of active cells activeCells = ccache.map((c) -> if (c > p0) then 1 else 0).fold(0)((a, c) -> a + c) Copyright  2013,  PrismTech  –    All  Rights  Reserved. Example:
  • 61. Demo
  • 62. Shapes Application • The iShapes application is used by DDS vendors to demonstrate some of the basic mechanism as well as product interoperability • Three Topics • Circle, Square, Triangle One Type struct ShapeType { string color; long x; long y; long shapesize; }; #pragma keylist ShapeType color Spotted shapes represent subscriptions Pierced shapes represent publications Copyright  2013,  PrismTech  –    All  Rights  Reserved. •
  • 63. Copyright  2013,  PrismTech  –    All  Rights  Reserved. Android Shapes
  • 65. Data Centricity • • DDS is Data Centric, it provides an elegant, efficient and scalable data sharing abstraction When designing the architecture of a DDS-based system the DataModel is the first thing that should be devised One of the most common question from DDS novices is how to come up with a good data model. Data Reader Data Writer QoS Data Writer TopicD Data Reader QoS TopicA Data Writer QoS QoS TopicC Data Reader TopicB ... Data Writer Data Reader DDS Global Data Space Copyright  2013,  PrismTech  –    All  Rights  Reserved. •
  • 66. Data Modeling in DDS A good starting point for identifying DDS topics is to describe your system in a natural language and then use the following table: English Language DDS Common Noun Topic Proper Noun Topic Instance Transitive Verb Relationship Intransitive Verb Attribute Type Adjective Topic Attribute Adverb Relationship Attribute Copyright  2013,  PrismTech  –    All  Rights  Reserved. •
  • 67. Relationships As in DBMS, relationships can be expressed, depending on cardinality and relation attributes, by: • • Keys and foreign keys Relationship Topics Copyright  2013,  PrismTech  –    All  Rights  Reserved. •
  • 68. Normalization • Notice that the nature of DDS may induce further data normalization to deal with conflicting QoS requirements, such as: • • Mix of frequently and infrequently changing data Mix of attributes that have different persistence requirements Copyright  2013,  PrismTech  –    All  Rights  Reserved. • As in DBMS, Topics should be normalized to improve modularity, efficiency and limit if not avoid anomalies. Typically you should have your Topics in the 3NF
  • 69. Part I Summary & Remarks
  • 70. Summary & Remarks DDS provides an elegant Data Space abstraction that allows application to share data ubiquitously and efficiently -- the Data Space implementation is fully distributed • DDS provides primitives for defining classes of information as well as organizing it • Data Modeling and normalization draws heavily from DBMS theory and practice with some additional considerations w.r.t. the nature of DDS Copyright  2013,  PrismTech  –    All  Rights  Reserved. •
  • 71. :: Connect with Us :: ¥opensplice.com ¥opensplice.org ¥forums.opensplice.org ¥opensplicedds@prismtech.com ¥@acorsaro ¥@prismtech ¥ crc@prismtech.com ¥youtube.com/opensplicetube ¥slideshare.net/angelo.corsaro ¥sales@prismtech.com