SlideShare une entreprise Scribd logo
1  sur  114
Télécharger pour lire hors ligne
Angelo Corsaro, PhD
Chief Technology Officer
angelo.corsaro@prismtech.com
Data Distribution Service
The
Tutorial
DDS is a standard technology for
ubiquitous, interoperable, secure,
platform independent, and real-time data
sharing across network connected devices
DDS in131
Characters
The DDS Standard
Standard
Adoption
CopyrightPrismTech,2015
John Deere’s machinery uses DDS for internal communication as well as for vehicle-to-vehicle
coordination
Telemetry Data is constantly sent to a Cloud for preventive maintenance
In this use case VORTEX enables fog computing as well as cloud computing
John Deere Autonomous FarmingSmart farming
smart cities
Smart Lightbulbs
96Kbytes Memory
Connected Medical Devices
CopyrightPrismTech,2015
Smart grids and power generation
European air traffic control
DDS is the standard recommended by
Eurocontrol/Eurocae for Pan-European
flight data sharing
Grasping the Idea
CopyrightPrismTech,2015
DDS provides a Distributed Data
Space abstraction where
applications can autonomously
and asynchronously read and write
data enjoying spatial and temporal
decoupling
Its built-in dynamic discovery
isolates applications from network
topology and connectivity details
DDS’ Data Space is completely
decentralised
High Level Abstraction
DDS Global Data Space
...
Data
Writer
Data
Writer
Data
Writer
Data
Reader
Data
Reader
Data
Reader
Data
Reader
Data
Writer
TopicA
QoS
TopicB
QoS
TopicC
QoS
TopicD
QoS
Conceptual Model
DDS Global Data Space
...
Data
Writer
Data
Writer
Data
Writer
Data
Reader
Data
Reader
Data
Reader
Data
Reader
Data
Writer
TopicA
QoS
TopicB
QoS
TopicC
QoS
TopicD
QoS
Conceptual Model Actual Implementation
Data
Writer
Data
Writer
Data
Writer
Data
Reader
Data
Reader
Data
Reader
Data
Writer
TopicA
QoS
TopicB
QoS
TopicC
QoS
TopicD
QoS
TopicD
QoS
TopicD
QoS
TopicA
QoS
DDS Global Data Space
...
Data
Writer
Data
Writer
Data
Writer
Data
Reader
Data
Reader
Data
Reader
Data
Reader
Data
Writer
TopicA
QoS
TopicB
QoS
TopicC
QoS
TopicD
QoS
The	
  communication	
  between	
  
the	
  DataWriter	
  and	
  matching	
  
DataReaders	
  can	
  be	
  peer-­‐to-­‐
peer	
  exploiting	
  UDP/IP	
  
(Unicast	
  and	
  Multicast)or	
  
TCP/IP
Data
Writer
Data
Writer
Data
Writer
Data
Reader
Data
Reader
Data
Reader
Data
Writer
TopicA
QoS
TopicB
QoS
TopicC
QoS
TopicD
QoS
TopicD
QoS
TopicD
QoS
TopicA
QoS
The	
  communication	
  between	
  
the	
  DataWriter	
  and	
  matching	
  
DataReaders	
  can	
  be	
  
“brokered”	
  but	
  still	
  
exploiting	
  UDP/IP	
  (Unicast	
  
and	
  Multicast)or	
  TCP/IP
CopyrightPrismTech,2014
DDS is independent from the
- Programming language,
- Operating System
- HW architecture
Platform Independent
Decomposing DDS
Information Organisation
Copyright2013,PrismTech–AllRightsReserved.
Domain
• DDS data lives within a domain
• A domain is identified with a non
negative integer, such as 1, 3, 31
• The number 0 identifies the default
domain
• A domain represent an impassable
communication plane DDS Domain
Copyright2013,PrismTech–AllRightsReserved.
Partitions
• Partitions are the mechanism provided by DDS to
organise 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
Information Definition
Copyright2013,PrismTech–AllRightsReserved.
Topic
• A Topic defines a domain-wide information’s class
• A Topic is defined by means of a (name, type, qos)
tuple, where
• name: identifies the topic within the domain
• type: is the programming language type associated
with the topic.Types are extensible and evolvable
• qos: is a collection of policies that express the non-
functional properties of this topic, e.g. reliability,
persistence, etc.
Topic
Type
Name
QoS
Copyright2013,PrismTech–AllRightsReserved.
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
Example
Copyright2013,PrismTech–AllRightsReserved.
Active Floor
• Assume we are building an active floor
• This active floor is made by a matrix of
pressure sensors used to detects position,
and indirectly movement
• This information is then used by the
application that uses the active floor for
positioning or entertainment
Cell:	
  (i,j)
Copyright2013,PrismTech–AllRightsReserved.
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:
• Each cell is now distinguishable and associated
with a topic instance
Cell:	
  (i,j)
struct	
  TCell	
  {	
  
	
  	
  	
  short	
  row;	
  	
  
	
  	
  	
  short	
  column;	
  
	
  	
  	
  float	
  pressure;	
  //	
  in	
  kPa	
  
};	
  
#pragma	
  keylist	
  TCell	
  row	
  column
Copyright2013,PrismTech–AllRightsReserved.
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:
Cell:	
  (i,j)
struct	
  TReferencePressure	
  {	
  
	
  	
  	
  float	
  pressure;	
  //	
  in	
  kPa	
  
	
  	
  	
  float	
  precision;	
  	
  
};	
  
#pragma	
  keylist	
  TReferencePressure
Copyright2013,PrismTech–AllRightsReserved.
Active Floor
• Each sensor has associated a topic
instance identified by the
(row,column) coordinate -- the
instance key
• Each instance produces a stream of
pressure values that in DDS terms
are called samples
0 1 2 3
0
1
2
3
4
Pressure
time
Pressure
time
Pressure
time
struct	
  TCell	
  {	
  
	
  	
  	
  short	
  row;	
  
	
  	
  	
  short	
  column;	
  
	
  	
  	
  float	
  pressure;	
  //	
  in	
  kPa	
  
};	
  
#pragma	
  keylist	
  Cell	
  row	
  column
Going 3D
Copyright2013,PrismTech–AllRightsReserved.
Active Floors on a Building
• 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?
0 1 2 3
0
1
2
3
4
Pressure
time
Pressure
time
Pressure
time
Copyright2013,PrismTech–AllRightsReserved.
Active Floors on a Building
• 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
0 1 2 3
0
1
2
3
4
Pressure
time
Pressure
time
Pressure
time
Copyright2013,PrismTech–AllRightsReserved.
Active Floors on a Building
• As we move from a single floor to a
building we need to add some more
structure to our data
• 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
0 1 2 3
0
1
2
3
4
Pressure
time
Pressure
time
Pressure
time
Copyright2013,PrismTech–AllRightsReserved.
Active Floors on a Building
• Thus the resulting structure is:
• Floor Partitions:
• “building:f-­‐1”	
  
• “building:f-­‐2”	
  
• ...	
  
• ReferenceValues Partition:
• “building:refvals”	
  
• Configuration Partition:
• “building:config”
0 1 2 3
0
1
2
3
4
Pressure
time
Pressure
time
Pressure
time
Producing Information
Copyright2013,PrismTech–AllRightsReserved.
DataWriter
• A DataWriter (DW) is a strongly typed
entity used to produce samples for one or
more instances of a Topic, with a given QoS
• 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
DW
Type
Topic
QoS
Copyright2013,PrismTech–AllRightsReserved.
DataWriter
• The DataWriter controls the life-cycle of Topic
Instances and allows to:
• Define a new topic instance
• Write samples for a topic instance
• Dispose the topic instance
DW
Type
Topic
QoS
Consuming Information
Copyright2013,PrismTech–AllRightsReserved.
DataReader
• A DataReader (DR) is a strongly typed entity used
to access and/or consume samples for a Topic,
with a given QoS
• 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
DR
Type
Topic
QoS
Copyright2013,PrismTech–AllRightsReserved.
DataReader
• Depending on its QoS a
DataReader may provide
access to:
• last sample
• last n samples
• all samples produced since
the DataReader was
created
0 1 2 3
0
1
2
3
4
Pressure
time
Pressure
time
Pressure
time
Copyright2013,PrismTech–AllRightsReserved.
DataReader
• Depending on its QoS a
DataReader may provide
access to:
• last sample
• last n samples
• all samples produced since
the DataReader was
created
n=3
0 1 2 3
0
1
2
3
4
Pressure
time
Pressure
time
Pressure
time
Copyright2013,PrismTech–AllRightsReserved.
DataReader
• Depending on its QoS a
DataReader may provide
access to:
• last sample
• last n samples
• all samples produced since
the DataReader was
created
n=3
0 1 2 3
0
1
2
3
4
Pressure
time
Pressure
time
Pressure
time
Copyright2013,PrismTech–AllRightsReserved.
DataReader
• Depending on its QoS a
DataReader may provide
access to:
• last sample
• last n samples
• all samples produced since
the DataReader was
created
n=3
0 1 2 3
0
1
2
3
4
Pressure
time
Pressure
time
Pressure
time
Copyright2013,PrismTech–AllRightsReserved.
DataReader
• Depending on its QoS a
DataReader may provide
access to:
• last sample
• last n samples
• all samples produced since
the DataReader was
created
n=3
0 1 2 3
0
1
2
3
4
Pressure
time
Pressure
time
Pressure
time
Copyright2013,PrismTech–AllRightsReserved.
DataReader
• Depending on its QoS a
DataReader may provide
access to:
• last sample
• last n samples
• all samples produced since
the DataReader was
created
0 1 2 3
0
1
2
3
4
Pressure
time
Pressure
time
Pressure
time
n=3
Copyright2013,PrismTech–AllRightsReserved.
DataReader
• Depending on its QoS a
DataReader may provide
access to:
• last sample
• last n samples
• all samples produced since
the DataReader was
created
0 1 2 3
0
1
2
3
4
Pressure
time
Pressure
time
Pressure
time
n=3
Copyright2013,PrismTech–AllRightsReserved.
DataReader
• Depending on its QoS a
DataReader may provide
access to:
• last sample
• last n samples
• all samples produced since
the DataReader was
created
0 1 2 3
0
1
2
3
4
Pressure
time
Pressure
time
Pressure
time
n=3
Copyright2013,PrismTech–AllRightsReserved.
DataReader
• Samples are stored in the DataReader
Cache
• Samples can be read or taken from the
cache
• Samples taken are evicted from the
cache
• 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...
0 1 2 3
0
1
2
3
4
Pressure
time
Pressure
time
Pressure
time
Putting all Together
CopyrightPrismTech,2015
Anatomy of a DDS Application
Copyright2013,PrismTech–AllRightsReserved.
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);
Copyright2013,PrismTech–AllRightsReserved.
Topic
• Given a DomainParticipant we can define (or discover) Topics within
a domain.This can be done as follows:
• As this declaration does not explicitly provide QoS for the Topic, the
default QoS will be used
//	
  ISO	
  C++	
  DDS	
  API	
  
auto	
  topic	
  =	
  Topic<TCell>(dp,	
  “Cell”);
//	
  Java	
  5	
  DDS	
  API	
  
Topic<TCell>	
  topic	
  =	
  	
  
	
  	
  	
  	
  dp.createTopic(“Cell”,	
  TCell.class);
Copyright2013,PrismTech–AllRightsReserved.
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
Copyright2013,PrismTech–AllRightsReserved.
Publisher/Subscriber
• Definition of a Publisher/Subscriber in the default partition:
• Definition of a Publisher/Subscriber with Partition settings
//	
  ISO	
  C++	
  DDS	
  API	
  
auto	
  pub	
  =	
  Publisher(dp);
//	
  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	
  =	
  Subscriber(dp);	
  
//	
  ISO	
  C++	
  DDS	
  API	
  
auto	
  sub_qos	
  =	
  	
  
	
  	
  	
  dp.default_subscriber_qos()	
  	
  
	
  	
  	
  <<	
  Partition(”af:telemetry”);	
  
auto	
  sub	
  =	
  Subscriber(dp,	
  sub_qos);
Copyright2013,PrismTech–AllRightsReserved.
Publisher/Subscriber
• Definition of a Publisher/Subscriber in the default partition:
• Definition of a Publisher/Subscriber with Partition settings
//	
  Java	
  5	
  DDS	
  API	
  
Publisher	
  pub	
  =	
  dp.createPublisher();
//	
  Java	
  5	
  DDS	
  API	
  
PublisherQos	
  pubQoS	
  =	
  	
  
	
  	
  	
  dp.getDefaultPublisherQos()	
  
	
  	
  	
  	
  	
  .with(pf.Partition(”af:telemetry”));	
  
Publisher	
  pub	
  =	
  	
  
	
  	
  	
  dp.createPublisher(pubQoS);
//	
  Java	
  5	
  DDS	
  API	
  
Subscriber	
  sub	
  =	
  dp.createSubscriber();	
  
//	
  Java	
  5	
  DDS	
  API	
  
SubscriberQos	
  subQoS	
  =	
  	
  
	
  	
  	
  dp.getDefaultSubscriberQos()	
  
	
  	
  	
  	
  	
  .with(pf.Partition(”af:telemetry”));	
  
Subscriber	
  sub	
  =	
  	
  
	
  	
  	
  dp.createSubscriber(subQoS);
Copyright2013,PrismTech–AllRightsReserved.
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);
Copyright2013,PrismTech–AllRightsReserved.
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);
Data Selection
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Reading Samples
• Samples can be read from the Data Reader History Cache
• The action of reading a sample is non-destructive. Samples are not
removed from the cache
DataReader Cache
DataReader
...
DataReader Cache
DataReader
... read
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Taking Samples
• Samples can be taken from the Data Reader History Cache
• The action of taking a sample is destructive. Samples are removed
from the cache
DataReader Cache
DataReader
...
DataReader Cache
DataReader
... take
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Sample Selectors
• DDS provides some very flexible mechanisms for selecting the
samples to be read/take:
• Content
• Status
• These mechanisms are composable
Content-Based Selection
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Filters and Queries
• DDS Filters allow to control what gets
into a DataReader cache
• DDS Queries allow to control what gets
out of a DataReader cache
• Filters are defined by means of
ContentFilteredTopics
• Queries operate in conjunction with
read operations
• Filters and Queries are expressed as
SQL where clauses
DataReader Cache
DataReader
...
...
...
...
Filter
Query
Application
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Filters
// == ISO C++ DDS API
// Create a Topic
auto topic = Topic<ShapeType>(dp, “Circle”);
// Define filter expression and parameters
auto filter = Filter(“x < 100 AND y < 200”);
// Define content filtered topic
auto cftopic =
ContentFilteredTopic<ShapeType>(“CFCircle”, topic,
filter)
// Create a DataReader for the content-filtered Topic
auto dr = DataReader<ShapeType>(sub,cftopic)
struct ShapeType {
string color;
long x;
long y;
long shapesize;
};
#pragma keylist ShapeType color
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Filters
//	
  	
  	
  ==	
  Java	
  5DDS	
  API	
  ==	
  
final	
  PolicyFactory	
  pf	
  =	
  runtime.policyFactory();	
  
	
  	
  	
  final	
  DataReaderQos	
  drqos	
  =	
  
	
  	
  	
  	
  	
  	
  sub.getDefaultDataReaderQos()	
  
	
  	
  	
  	
  	
  	
  	
  	
  .withPolicy	
  (	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  pf.ContentFilter()	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  .withFilter(	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  new	
  JavaScriptFilter<ShapeType>("data.x	
  >	
  data.y"))	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  );	
  
final	
  DataReader<ShapeType>	
  dr	
  =	
  sub.createDataReader(shape,	
  drqos);
struct ShapeType {
string color;
long x;
long y;
long shapesize;
};
#pragma keylist ShapeType color
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Query
//	
  	
  	
  ==	
  ISO	
  C++	
  DDS	
  API	
  ==	
  
//	
  Define	
  filter	
  expression	
  and	
  parameters	
  
auto	
  dr	
  =	
  DataReader<ShapeType>(sub,	
  topic)	
  	
  
val	
  query	
  =	
  Query(dr,	
  “x	
  <	
  100	
  AND	
  y	
  <	
  200”);	
  
dr.select()	
  
	
  	
  	
  	
  .content(query)	
  
	
  	
  	
  	
  .read();
struct ShapeType {
string color;
long x;
long y;
long shapesize;
};
#pragma keylist ShapeType color
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Query
//	
  	
  	
  ==	
  Java	
  5	
  DDS	
  API	
  ==	
  
Filter<ShapeType>	
  filter	
  =	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  new	
  JavaScriptFilter<ShapeType>("data.x	
  >	
  data.y"))	
  
dr.select()	
  
	
  	
  	
  	
  .content(filter)	
  
	
  	
  	
  	
  .read();
struct ShapeType {
string color;
long x;
long y;
long shapesize;
};
#pragma keylist ShapeType color
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Instances
• DDS provides a very efficient way of reading data belonging to a specific
Topic Instance
• Obviously, one could use queries to match the key’s value, but this is not as efficient
as the special purpose instance selector
//	
  	
  	
  ==	
  ISO	
  C++	
  DDS	
  API	
  ==	
  
auto	
  handle	
  =	
  	
  
	
  	
  	
  dr.lookup_instance(ShapeType(“RED”,	
  0,	
  0,	
  0));	
  
auto	
  data	
  =	
  	
  
	
  	
  	
  	
  	
  dr.select()	
  
	
  	
  	
  	
  	
  	
  .instance(handle)	
  
	
  	
  	
  	
  	
  	
  .read();
State Based Selection
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Sample, Instance, andView State
• The samples included in the DataReader cache have associated some meta-information
which, among other things, describes the status of the sample and its associated
stream/instance
• The Sample State (READ, NOT_READ) allows to distinguish between new samples
and samples that have already been read
• The View State (NEW, NOT_NEW) allows to distinguish a new instance from an
existing one
• The Instance State (ALIVE, NOT_ALIVE_DISPOSED,
NOT_ALIVE_NO_WRITERS) allows to track the life-cycle transitions of the instance
to which a sample belongs
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
State Selector in Action
//	
  	
  	
  ==	
  ISO	
  C++	
  DDS	
  API	
  ==	
  
//	
  Read	
  only	
  new	
  samples	
  
auto	
  data	
  =	
  dr.read()	
  
//	
  Read	
  any	
  samples	
  from	
  live	
  instances	
  
auto	
  data	
  =	
  	
  
	
  	
  	
  	
  	
  	
  	
  dr.select()	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  .state(DataState::any_data())	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  .read();
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
State Selector in Action
//	
  	
  	
  ==	
  Java	
  5	
  DDS	
  API	
  ==	
  
//	
  Read	
  only	
  new	
  samples	
  
Iterator<Sample<ShapeType>>	
  data	
  =	
  dr.read()	
  
//	
  Read	
  any	
  samples	
  from	
  live	
  instances	
  
Iterator<Sample<ShapeType>>	
  data	
  =	
  	
  
	
  	
  	
  	
  	
  	
  	
  dr.select()	
  
	
  	
  	
  	
  	
  	
  	
  	
  .dataState(sub.createDataState().withAnySampleState())	
  
	
  	
  	
  	
  	
  	
  	
  	
  .read();
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
//	
  	
  	
  ==	
  ISO	
  C++	
  DDS	
  API	
  ==	
  
auto	
  data	
  =	
  	
  
	
  	
  	
  dr.select()	
  
	
  	
  	
  	
  	
  	
  	
  	
  .content(query)	
  
	
  	
  	
  	
  	
  	
  	
  	
  .state(data_state)	
  
	
  	
  	
  	
  	
  	
  	
  	
  .instance(handle)	
  
	
  	
  	
  	
  	
  .read();
Putting all Together
• Selectors can be composed in a flexible and expressive manner
Application / DDS
Interaction Models
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Interaction Models
Polling
•The application proactively polls for data availability as well as special events, such as a
deadline being missed, etc. Notice that all DDS API calls, exclusion made for wait
operations, are non-blocking
Synchronous Notification
•The application synchronously waits for some conditions to be verified, e.g., data
availability, instance lifecycle change, etc.
Asynchronous Notification
•The application registers the interest to be asynchronously notified when specific
condition are satisfied, e.g. data available, a publication matched, etc.
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Synchronous Notifications
• DDS provides a mechanism known as WaitSet to synchronously
wait for a condition
• Condition can predicate on:
• communication statuses
• data availability
• data availability with specific content
• user-triggered conditions
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
WaitSet
//	
  	
  	
  ==	
  Java	
  5	
  DDS	
  API	
  ==	
  
//	
  Create	
  the	
  waitset	
  
WaitSet	
  ws	
  =	
  runtime.createWaitSet();	
  
Subscriber.DataState	
  ds	
  =	
  sub.createDataState();	
  
//	
  Create	
  the	
  condition	
  
Condition	
  c	
  =	
  dr.createReadCondition(	
  
	
   	
   	
   	
   	
   	
   	
   ds.withAnyViewState()	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  .with(InstanceState.ALIVE)	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  .with(SampleState.NOT_READ));	
  
//	
  Attach	
  the	
  condition	
  
ws.attachCondition(c);	
  
//	
  Wait	
  for	
  the	
  condition	
  
ws.wait();
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Asynchronous Notifications
• DDS provides a mechanism known as Listeners for asynchronous
notification of a given condition
• Listener interest can predicate on:
• communication statuses
• data availability
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Listener Declaration
//	
  	
  	
  ==	
  ISO	
  C++	
  DDS	
  API	
  ==	
  
class	
  ShapeListener	
  :	
  public	
  dds::sub::NoOpDataReaderListener<ShapeType>	
  {	
  
public:	
  
	
  	
  ShapeListener()	
  {}	
  
	
  	
  virtual	
  void	
  on_data_available(dds::sub::DataReader<ShapeType>&	
  dr)	
  {	
  
	
  	
  	
  	
  auto	
  samples	
  =	
  dr.read();	
  
	
  	
  	
  	
  std::for_each(samples.begin(),	
  
	
   	
   	
  	
  samples.end(),	
  
	
   	
   	
  	
  [](const	
  dds::sub::Sample<ShapeType>&	
  sample)	
  {	
  	
  
	
   	
   	
  	
  	
  	
  if	
  (sample.info().valid())	
  	
  //	
  Check	
  if	
  sample	
  contains	
  valid	
  data	
  
	
   	
   	
  	
  	
  	
  	
  	
  std::cout	
  <<	
  sample.data()	
  <<	
  std::endl;	
  
	
   	
   	
  	
  });	
  
	
  	
  }	
  
	
  	
  virtual	
  void	
  on_liveliness_changed(dds::sub::DataReader<ShapeType>&	
  the_reader,	
  
	
   	
   	
   	
   	
  	
  	
  	
  const	
  dds::core::status::LivelinessChangedStatus&	
  status)	
  	
  
	
  	
  {	
  	
  
	
  	
  	
  	
  std::cout	
  <<	
  ">>	
  Liveliness	
  Changed!	
  "	
  <<	
  std::endl;	
  
	
  	
  }	
  
};
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Listener Registration
//	
  	
  	
  ==	
  ISO	
  C++	
  DDS	
  API	
  ==	
  
auto	
  l	
  =	
  new	
  ShapeListener();	
  
//	
  Create	
  a	
  “nothing”	
  status	
  mask	
  
StatusMask	
  mask	
  =	
  StatusMask::none();	
  
//	
  Add	
  the	
  statuses	
  we	
  are	
  interested	
  in.	
  
mask	
  <<	
  StatusMask::data_available()	
  	
  
	
  	
  	
  	
  	
  <<	
  StatusMask::liveliness_changed()	
  	
  
	
  	
  	
  	
  	
  <<	
  StatusMask::liveliness_lost();	
  	
  
//	
  Register	
  the	
  listener	
  with	
  the	
  associated	
  mask	
  
dr.listener(l,	
  mask);
Quality of Service
CopyrightPrismTech,2015
For data to flow from a DataWriter (DW) to
one or many DataReader (DR) a few
conditions have to apply:
The DR and DW domain participants have
to be in the same domain
The partition expression of the DR’s
Subscriber and the DW’s Publisher
should match (in terms of regular
expression match)
The QoS Policies offered by the DW
should exceed or match those requested
by the DR
Quality of Service
Domain
Participant
DURABILITY
OWENERSHIP
DEADLINE
LATENCY BUDGET
LIVELINESS
RELIABILITY
DEST. ORDER
Publisher
DataWriter
PARTITION
DataReader
Subscriber
Domain
Participant
offered
QoS
Topic
writes reads
Domain Id
joins joins
produces-in consumes-from
RxO QoS Policies
requested
QoS
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
QoS DSL
• The ISO C++ and Java 5 APIs provide DSL for dealing with QoS Policies configuration
• The DSL uses language specific idioms, such as fluid interfaces, as well as specific features
of the languages
• Policies as well as Entity QoS are immutable — this allows for better safety and
object sharing
• Policies are treated as algebraic data types and the DSL provide constructors of
each of the cases
• A QoS Provider can now be used to retrieve QoS settings from external sources, e.g. a
file, an HTTP server, DDS durability
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
C++ QoS Policy DSL
//	
  	
  	
  ==	
  ISO	
  C++	
  DDS	
  API	
  ==	
  
DataWriterQos	
  dwqos	
  =	
  pub.default_datawriter_qos()	
  	
  
	
  	
  <<	
  History.KeepLast(10)	
  
	
  	
  <<	
  Durability.Transient();	
  
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Data Delivery
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Reliability QoS Policy
The Reliability Policy controls the level of guarantee offered by the DDS
in delivering data to subscribers
•Reliable. In steady-state, and with no data writer crashes, guarantees
that all samples in the DataWriter history will eventually be delivered
to all the DataReader
•Best Effort. Indicates that it is acceptable not to retry propagation
of samples
QoS Policy Applicability RxO Modifiable
RELIABILITY T, DR, DW Y N
Copyright2013,PrismTech–AllRightsReserved.
Reliability semantics
Copyright2013,PrismTech–AllRightsReserved.
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Data Availability
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
History QoS Policy
The DataWriter HISTORY QoS Policy controls
the amount of data that can be made available to
late joining DataReaders under
TRANSIENT_LOCAL Durability
The DataReader HISTORY QoS Policy controls
how many samples will be kept on the reader
cache
•Keep Last. DDS will keep the most recent
“depth” samples of each instance of data identified
by its key
•Keep All. The DDS keep all the samples of each
instance of data identified by its key -- up to
reaching some configurable resource limits
QoS Policy Applicability RxO Modifiable
HISTORY T, DR, DW N N
0 1 2 3
0
1
2
3
4
Pressure
time
Pressure
time
Pressure
time
KeepLast(3)
KeepLast(1)
KeepAll
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Durability QoS Policy
The DURABILITY QoS controls the data availability w.r.t. late joiners, specifically
the DDS provides the following variants:
• Volatile. No need to keep data instances for late joining data readers
• Transient Local. Data instance availability for late joining data reader is
tied to the data writer availability
• Transient. Data instance availability outlives the data writer
• Persistent. Data instance availability outlives system restarts
QoS Policy Applicability RxO Modifiable
DURABILITY T, DR, DW Y N
Copyright2013,PrismTech–AllRightsReserved.
Data
Writer
Data
Reader
TopicA
QoS
Volatile Durability
• No Time Decoupling
• Readers get only data produced after they joined the Global Data Space
1
Copyright2013,PrismTech–AllRightsReserved.
Volatile Durability
• No Time Decoupling
• Readers get only data produced after they joined the Global Data Space
Data
Writer
Data
Reader
TopicA
QoS
Data
Reader
1
Late Joiner
Copyright2013,PrismTech–AllRightsReserved.
Volatile Durability
• No Time Decoupling
• Readers get only data produced after they joined the Global Data Space
Data
Writer
Data
Reader
TopicA
QoS
Data
Reader
1
Late Joiner
22
Copyright2013,PrismTech–AllRightsReserved.
Data
Writer
Data
Reader
TopicA
QoS
Transient Local Durability
• Some Time Decoupling
• Data availability is tied to the availability of the data writer and the history settings
11
Copyright2013,PrismTech–AllRightsReserved.
Transient Local Durability
• Some Time Decoupling
• Data availability is tied to the availability of the data writer and the history settings
Data
Writer
Data
Reader
TopicA
QoS
Data
Reader
1
Late Joiner
11
Copyright2013,PrismTech–AllRightsReserved.
Data
Writer
Data
Reader
TopicA
QoS
Data
Reader
2
Transient-Local Durability
• Some Time Decoupling
• Data availability is tied to the availability of the data writer and the history settings
1
2
1
12
Copyright2013,PrismTech–AllRightsReserved.
Data
Writer
Data
Reader
TopicA
QoS
Transient Durability
• Time Decoupling
• Data availability is tied to the availability of the durability service
1
1
Copyright2013,PrismTech–AllRightsReserved.
Data
Writer
Data
Reader
TopicA
QoS
Data
Reader
1
Transient Durability
• Time Decoupling
• Data availability is tied to the availability of the durability service
1
Late Joiner
1
Copyright2013,PrismTech–AllRightsReserved.
Data
Writer
Data
Reader
TopicA
QoS
Data
Reader
2
Transient Durability
• Time Decoupling
• Data availability is tied to the availability of the durability service
1
2
1
1
2
Copyright2013,PrismTech–AllRightsReserved.
Data
Reader
TopicA
QoS
Data
Reader
Transient Durability
• Time Decoupling
• Data availability is tied to the availability of the durability service
1
1
2
2
12
Copyright2013,PrismTech–AllRightsReserved.
Transient Durability
• Time Decoupling
• Data availability is tied to the availability of the durability service
1
Late Joiner
1
Data
Reader
TopicA
QoS
Data
Reader
Data
Reader
2
2
12 12
Idioms
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Soft State
• In distributed systems you often need to model soft-state -- a state that
is periodically updated
• Examples are the reading of a sensor (e.g.Temperature Sensor), the
position of a vehicle, etc.
• The QoS combination to model Soft-State is the following:
Reliability	
  	
  	
  	
  	
  	
  =>	
  	
  BestEffort	
  
Durability	
  	
  	
  	
  	
  	
  	
  =>	
  	
  Volatile	
  	
  
History	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  =>	
  	
  KeepLast(n)	
  [with	
  n	
  =	
  1	
  in	
  most	
  of	
  the	
  cases]	
  
Deadline	
  	
  	
  	
  	
  	
  	
  	
  	
  =>	
  	
  updatePeriod	
  
LatencyBudget	
  	
  	
  	
  =>	
  	
  updatePeriod/3	
  [rule	
  of	
  thumb]	
  
DestinationOrder	
  =>	
  	
  SourceTimestamp	
  [if	
  multiple	
  writers	
  per	
  instance]
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Hard State
• In distributed systems you often need to model hard-state -- a state that
is sporadically updated and that often has temporal persistence
requirements
• Examples are system configuration, a price estimate, etc.
• The QoS combination to model Hard-State is the following:
Reliability	
  	
  	
  	
  	
  	
  =>	
  	
  Reliable	
  
Durability	
  	
  	
  	
  	
  	
  	
  =>	
  	
  Transient	
  |	
  Persistent	
  	
  
History	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  =>	
  	
  KeepLast(n)	
  [with	
  n	
  =	
  1	
  in	
  most	
  of	
  the	
  cases]	
  
DestinationOrder	
  =>	
  	
  SourceTimestamp	
  [if	
  multiple	
  writers	
  per	
  instance]
Copyright2013,PrismTech–AllRightsReserved.Copyright2013,PrismTech–AllRightsReserved.
Events
• In distributed systems you often need to model events -- the
occurrence of something noteworthy for our system
• Examples are a collision alert, the temperature beyond a given threshold,
etc.
• The QoS combination to model Events is the following:
Reliability	
  	
  	
  	
  	
  	
  =>	
  	
  Reliable	
  
Durability	
  	
  	
  	
  	
  	
  	
  =>	
  	
  any	
  	
  	
  	
  	
  	
  	
  	
  [depends	
  on	
  system	
  requirements]	
  	
  
History	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  =>	
  	
  KeepAll	
  [on	
  both	
  DataWriter	
  and	
  DataReader!]	
  
DestinationOrder	
  =>	
  	
  SourceTimestamp
Idiomatic DDS
CopyrightPrismTech,2015
State Writer
template <typename T>
class StateWriter {
public:
StateWriter(const std::string& name, int retain = 1,
bool persistent = false, int domainId = 0);
void write(const T& data);
};
CopyrightPrismTech,2015
State Reader
template <typename T>
class StateReader {
public:
StateReader(const std::string& name,
bool persistent = false, int domainId = 0);
Maybe<T> get(const T& key);
dds::sub::LoanedSamples<T> get();
std::function<void(StateReader<T>&)> on_change() const;
void on_change(std::function<void(StateReader<T>)> f);
};
CopyrightPrismTech,2015
StateVector Reader
template <typename T>
class StateVectorReader {
public:
StateVectorReader(const std::string& name, int retain,
bool persistent = false, int domainId = 0);
Maybe<dds::sub::LoanedSamples<T>>
get(const T& key);
dds::sub::LoanedSamples<T> get();
CopyrightPrismTech,2015
StateStream
template <typename T>
class StateStream {
public:
StateStream(const std::string& name,
std::function<void(const T&)> fun,
int retain = 1,
bool persistent = false,
int domainId = 0); :
~StateStream();
};
CopyrightPrismTech,2015
Queue
template <typename T>
class Queue {
public:
Queue(const std::string name, int retain = 0,
bool persistent = false, int domainId = 0)
void enqueue(const T& data);
T peek(const dds::core::Duration timeout = dds::core::Duration::infinite());
T dequeue(const dds::core::Duration timeout = dds::core::Duration::infinite());
void ack(const T& data);
};
CopyrightPrismTech,2015
Enqueue
template <typename T>
class Enqueue {
public:
Enqueue(const std::string name, int retain = 0,
bool persistent = false, int domainId = 0);
void enqueue(const T& data);
};
Live Coding lab
CopyrightPrismTech,2015

Contenu connexe

Tendances

10 Reasons for Choosing OpenSplice DDS
10 Reasons for Choosing OpenSplice DDS10 Reasons for Choosing OpenSplice DDS
10 Reasons for Choosing OpenSplice DDSAngelo Corsaro
 
Getting Started with DDS in C++, Java and Scala
Getting Started with DDS in C++, Java and ScalaGetting Started with DDS in C++, Java and Scala
Getting Started with DDS in C++, Java and ScalaAngelo Corsaro
 
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
 
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
 
Getting Started in DDS with C++ and Java
Getting Started in DDS with C++ and JavaGetting Started in DDS with C++ and Java
Getting Started in DDS with C++ and JavaAngelo Corsaro
 
Micro XRCE-DDS: Bringing DDS into microcontrollers
Micro XRCE-DDS: Bringing DDS into microcontrollersMicro XRCE-DDS: Bringing DDS into microcontrollers
Micro XRCE-DDS: Bringing DDS into microcontrollerseProsima
 
Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...
Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...
Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...IncQuery Labs
 
Putting Historical Data in Context: how to use DSpace-GLAM
Putting Historical Data in Context: how to use DSpace-GLAMPutting Historical Data in Context: how to use DSpace-GLAM
Putting Historical Data in Context: how to use DSpace-GLAM4Science
 
Intro to Neo4j
Intro to Neo4jIntro to Neo4j
Intro to Neo4jNeo4j
 
Tuning and Troubleshooting OpenSplice DDS Applications
Tuning and Troubleshooting OpenSplice DDS ApplicationsTuning and Troubleshooting OpenSplice DDS Applications
Tuning and Troubleshooting OpenSplice DDS ApplicationsAngelo Corsaro
 
Natural Language Processing with Graph Databases and Neo4j
Natural Language Processing with Graph Databases and Neo4jNatural Language Processing with Graph Databases and Neo4j
Natural Language Processing with Graph Databases and Neo4jWilliam Lyon
 
Data-Centric and Message-Centric System Architecture
Data-Centric and Message-Centric System ArchitectureData-Centric and Message-Centric System Architecture
Data-Centric and Message-Centric System ArchitectureRick Warren
 
RTI DDS Intro with DDS Secure
RTI DDS Intro with DDS SecureRTI DDS Intro with DDS Secure
RTI DDS Intro with DDS SecureJohn Breitenbach
 
Redis + Kafka = Performance at Scale | Julien Ruaux, Redis Labs
Redis + Kafka = Performance at Scale | Julien Ruaux, Redis LabsRedis + Kafka = Performance at Scale | Julien Ruaux, Redis Labs
Redis + Kafka = Performance at Scale | Julien Ruaux, Redis LabsHostedbyConfluent
 
PostgreSQL as a Big Data Platform
PostgreSQL as a Big Data Platform PostgreSQL as a Big Data Platform
PostgreSQL as a Big Data Platform Chris Travers
 
Introduction for internet connectivity (IoT)
 Introduction for internet connectivity (IoT) Introduction for internet connectivity (IoT)
Introduction for internet connectivity (IoT)FabMinds
 

Tendances (20)

10 Reasons for Choosing OpenSplice DDS
10 Reasons for Choosing OpenSplice DDS10 Reasons for Choosing OpenSplice DDS
10 Reasons for Choosing OpenSplice DDS
 
Getting Started with DDS in C++, Java and Scala
Getting Started with DDS in C++, Java and ScalaGetting Started with DDS in C++, Java and Scala
Getting Started with DDS in C++, Java and Scala
 
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
 
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
 
Getting Started in DDS with C++ and Java
Getting Started in DDS with C++ and JavaGetting Started in DDS with C++ and Java
Getting Started in DDS with C++ and Java
 
Introduction to RTI DDS
Introduction to RTI DDSIntroduction to RTI DDS
Introduction to RTI DDS
 
Micro XRCE-DDS: Bringing DDS into microcontrollers
Micro XRCE-DDS: Bringing DDS into microcontrollersMicro XRCE-DDS: Bringing DDS into microcontrollers
Micro XRCE-DDS: Bringing DDS into microcontrollers
 
Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...
Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...
Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...
 
Putting Historical Data in Context: how to use DSpace-GLAM
Putting Historical Data in Context: how to use DSpace-GLAMPutting Historical Data in Context: how to use DSpace-GLAM
Putting Historical Data in Context: how to use DSpace-GLAM
 
Intro to Neo4j
Intro to Neo4jIntro to Neo4j
Intro to Neo4j
 
Tuning and Troubleshooting OpenSplice DDS Applications
Tuning and Troubleshooting OpenSplice DDS ApplicationsTuning and Troubleshooting OpenSplice DDS Applications
Tuning and Troubleshooting OpenSplice DDS Applications
 
Integrating Apache Spark and NiFi for Data Lakes
Integrating Apache Spark and NiFi for Data LakesIntegrating Apache Spark and NiFi for Data Lakes
Integrating Apache Spark and NiFi for Data Lakes
 
Natural Language Processing with Graph Databases and Neo4j
Natural Language Processing with Graph Databases and Neo4jNatural Language Processing with Graph Databases and Neo4j
Natural Language Processing with Graph Databases and Neo4j
 
Data-Centric and Message-Centric System Architecture
Data-Centric and Message-Centric System ArchitectureData-Centric and Message-Centric System Architecture
Data-Centric and Message-Centric System Architecture
 
SQOOP PPT
SQOOP PPTSQOOP PPT
SQOOP PPT
 
Introduction to RTI DDS
Introduction to RTI DDSIntroduction to RTI DDS
Introduction to RTI DDS
 
RTI DDS Intro with DDS Secure
RTI DDS Intro with DDS SecureRTI DDS Intro with DDS Secure
RTI DDS Intro with DDS Secure
 
Redis + Kafka = Performance at Scale | Julien Ruaux, Redis Labs
Redis + Kafka = Performance at Scale | Julien Ruaux, Redis LabsRedis + Kafka = Performance at Scale | Julien Ruaux, Redis Labs
Redis + Kafka = Performance at Scale | Julien Ruaux, Redis Labs
 
PostgreSQL as a Big Data Platform
PostgreSQL as a Big Data Platform PostgreSQL as a Big Data Platform
PostgreSQL as a Big Data Platform
 
Introduction for internet connectivity (IoT)
 Introduction for internet connectivity (IoT) Introduction for internet connectivity (IoT)
Introduction for internet connectivity (IoT)
 

En vedette

Advanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part IIAdvanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part IIAngelo Corsaro
 
Distributed Algorithms with DDS
Distributed Algorithms with DDSDistributed Algorithms with DDS
Distributed Algorithms with DDSAngelo 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
 
The Data Distribution Service Tutorial
The Data Distribution Service TutorialThe Data Distribution Service Tutorial
The Data Distribution Service TutorialAngelo Corsaro
 
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
 
Vortex Tutorial Part II
Vortex Tutorial Part IIVortex Tutorial Part II
Vortex Tutorial Part IIAngelo 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
 
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
 
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
 
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 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
 
Getting Started with Vortex
Getting Started with VortexGetting Started with Vortex
Getting Started with VortexAngelo 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
 
Fog Computing with Vortex
Fog Computing with VortexFog Computing with Vortex
Fog Computing with VortexAngelo Corsaro
 

En vedette (20)

Advanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part IIAdvanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part II
 
Distributed Algorithms with DDS
Distributed Algorithms with DDSDistributed Algorithms with DDS
Distributed Algorithms with DDS
 
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é
 
The Data Distribution Service Tutorial
The Data Distribution Service TutorialThe Data Distribution Service Tutorial
The Data Distribution Service Tutorial
 
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
 
DDS QoS Unleashed
DDS QoS UnleashedDDS QoS Unleashed
DDS QoS Unleashed
 
Vortex Tutorial Part II
Vortex Tutorial Part IIVortex Tutorial Part II
Vortex Tutorial Part II
 
Stream Processing with DDS and CEP
Stream Processing with  DDS and CEPStream Processing with  DDS and CEP
Stream Processing with DDS and CEP
 
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
 
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
 
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 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.
 
OpenSplice DDS v6
OpenSplice DDS v6OpenSplice DDS v6
OpenSplice DDS v6
 
Building Reactive Applications with DDS
Building Reactive Applications with DDSBuilding Reactive Applications with DDS
Building Reactive Applications with DDS
 
Getting Started with Vortex
Getting Started with VortexGetting Started with Vortex
Getting Started with Vortex
 
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
 
Fog Computing with Vortex
Fog Computing with VortexFog Computing with Vortex
Fog Computing with Vortex
 

Similaire à The Data Distribution Service Tutorial

Real Time Java DDS
Real Time Java DDSReal Time Java DDS
Real Time Java DDSkerush
 
Open splicedds espercep-webinar
Open splicedds espercep-webinarOpen splicedds espercep-webinar
Open splicedds espercep-webinarTomasz Waszczyk
 
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
 
Architecting IoT Systems with Vortex
Architecting IoT Systems with VortexArchitecting IoT Systems with Vortex
Architecting IoT Systems with VortexAngelo Corsaro
 
Construire une « data fabric » pour les environnements edge
Construire une « data fabric » pour les environnements edgeConstruire une « data fabric » pour les environnements edge
Construire une « data fabric » pour les environnements edgeOpen Source Experience
 
Fiware: Connecting to robots
Fiware: Connecting to robotsFiware: Connecting to robots
Fiware: Connecting to robotsJaime Martin Losa
 
DDS: The IoT Data Sharing Standard
DDS: The IoT Data Sharing StandardDDS: The IoT Data Sharing Standard
DDS: The IoT Data Sharing StandardAngelo Corsaro
 
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
 
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
 
Cyclone DDS Unleashed: Scalability in DDS and Dealing with Large Systems
Cyclone DDS Unleashed: Scalability in DDS and Dealing with Large SystemsCyclone DDS Unleashed: Scalability in DDS and Dealing with Large Systems
Cyclone DDS Unleashed: Scalability in DDS and Dealing with Large SystemsZettaScaleTechnology
 
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
 
MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...
MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...
MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...Istvan Rath
 
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
 
Tamir Dresher - DotNet 7 What's new.pptx
Tamir Dresher - DotNet 7 What's new.pptxTamir Dresher - DotNet 7 What's new.pptx
Tamir Dresher - DotNet 7 What's new.pptxTamir Dresher
 
Nelson: Rigorous Deployment for a Functional World
Nelson: Rigorous Deployment for a Functional WorldNelson: Rigorous Deployment for a Functional World
Nelson: Rigorous Deployment for a Functional WorldTimothy Perrett
 
Using the Open Science Data Cloud for Data Science Research
Using the Open Science Data Cloud for Data Science ResearchUsing the Open Science Data Cloud for Data Science Research
Using the Open Science Data Cloud for Data Science ResearchRobert Grossman
 
IEEE 2014 JAVA CLOUD COMPUTING PROJECTS Performance and cost evaluation of an...
IEEE 2014 JAVA CLOUD COMPUTING PROJECTS Performance and cost evaluation of an...IEEE 2014 JAVA CLOUD COMPUTING PROJECTS Performance and cost evaluation of an...
IEEE 2014 JAVA CLOUD COMPUTING PROJECTS Performance and cost evaluation of an...IEEEGLOBALSOFTSTUDENTPROJECTS
 
2014 IEEE JAVA CLOUD COMPUTING PROJECT Performance and cost evaluation of an ...
2014 IEEE JAVA CLOUD COMPUTING PROJECT Performance and cost evaluation of an ...2014 IEEE JAVA CLOUD COMPUTING PROJECT Performance and cost evaluation of an ...
2014 IEEE JAVA CLOUD COMPUTING PROJECT Performance and cost evaluation of an ...IEEEFINALSEMSTUDENTPROJECTS
 

Similaire à The Data Distribution Service Tutorial (20)

Real Time Java DDS
Real Time Java DDSReal Time Java DDS
Real Time Java DDS
 
Open splicedds espercep-webinar
Open splicedds espercep-webinarOpen splicedds espercep-webinar
Open splicedds espercep-webinar
 
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
 
Architecting IoT Systems with Vortex
Architecting IoT Systems with VortexArchitecting IoT Systems with Vortex
Architecting IoT Systems with Vortex
 
Construire une « data fabric » pour les environnements edge
Construire une « data fabric » pour les environnements edgeConstruire une « data fabric » pour les environnements edge
Construire une « data fabric » pour les environnements edge
 
Fiware: Connecting to robots
Fiware: Connecting to robotsFiware: Connecting to robots
Fiware: Connecting to robots
 
DDS: The IoT Data Sharing Standard
DDS: The IoT Data Sharing StandardDDS: The IoT Data Sharing Standard
DDS: The IoT Data Sharing Standard
 
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
 
PrismTech Vortex Tutorial Part 1
PrismTech Vortex Tutorial Part 1PrismTech Vortex Tutorial Part 1
PrismTech Vortex Tutorial Part 1
 
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
 
Cyclone DDS Unleashed: Scalability in DDS and Dealing with Large Systems
Cyclone DDS Unleashed: Scalability in DDS and Dealing with Large SystemsCyclone DDS Unleashed: Scalability in DDS and Dealing with Large Systems
Cyclone DDS Unleashed: Scalability in DDS and Dealing with Large Systems
 
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
 
Vortex Cloud Beyond Cloud Messaging
Vortex Cloud Beyond Cloud MessagingVortex Cloud Beyond Cloud Messaging
Vortex Cloud Beyond Cloud Messaging
 
MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...
MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...
MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...
 
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
 
Tamir Dresher - DotNet 7 What's new.pptx
Tamir Dresher - DotNet 7 What's new.pptxTamir Dresher - DotNet 7 What's new.pptx
Tamir Dresher - DotNet 7 What's new.pptx
 
Nelson: Rigorous Deployment for a Functional World
Nelson: Rigorous Deployment for a Functional WorldNelson: Rigorous Deployment for a Functional World
Nelson: Rigorous Deployment for a Functional World
 
Using the Open Science Data Cloud for Data Science Research
Using the Open Science Data Cloud for Data Science ResearchUsing the Open Science Data Cloud for Data Science Research
Using the Open Science Data Cloud for Data Science Research
 
IEEE 2014 JAVA CLOUD COMPUTING PROJECTS Performance and cost evaluation of an...
IEEE 2014 JAVA CLOUD COMPUTING PROJECTS Performance and cost evaluation of an...IEEE 2014 JAVA CLOUD COMPUTING PROJECTS Performance and cost evaluation of an...
IEEE 2014 JAVA CLOUD COMPUTING PROJECTS Performance and cost evaluation of an...
 
2014 IEEE JAVA CLOUD COMPUTING PROJECT Performance and cost evaluation of an ...
2014 IEEE JAVA CLOUD COMPUTING PROJECT Performance and cost evaluation of an ...2014 IEEE JAVA CLOUD COMPUTING PROJECT Performance and cost evaluation of an ...
2014 IEEE JAVA CLOUD COMPUTING PROJECT Performance and cost evaluation of an ...
 

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

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

Dernier

Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
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
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
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
 
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
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
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
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
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
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
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
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
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
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
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
 

Dernier (20)

Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
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
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
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
 
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
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
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...
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.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
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
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
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
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...
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
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
 

The Data Distribution Service Tutorial