SlideShare a Scribd company logo
1 of 44
Download to read offline
Angelo CORSARO, Ph.D.
Chief Technology Officer 
OMG DDS Sig Co-Chair
PrismTech
angelo.corsaro@prismtech.com!
海
賊
天
使
Defining "
Stream Processing
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
Stream Processing 
¨  Stream Processing can be seen as an architectural style
for building systems that operate over continuous
(theoretically infinite) streams of data
¨  Stream Processing is often reified under one of its many
declinations, such as:
¨  Reactive Systems
¨  Signal Processing Systems
¨  Functional Stream Programming
¨  Data Flow Systems
[1/3]
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
Stream Processing
¨  Stream Processing Architectures are very natural for
modeling systems needing to react to streams of
data produced by the external world, such as the
data produced by sensors, a camera or even the
data produced by the stock exchange.
¨  Stream Processing Systems usually operate in real-
time over streams and generate in turns other
streams of data providing information on what is
happening or suggesting actions to perform, such
as by stock X, raise alarm Y, or detected spatial
violation, etc.
[2/3]
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
Stream Processing
¨  Stream Processing Systems are
typically modeled as collection of
modules communicating via
typed data channels
¨  Modules usually play one of the
following roles:
¨  Sources: Injecting data into the System
¨  Filters/Actors: Performing some
computation over sources
¨  Sinks: Consuming the data produced
by the system
[3/3]
Filter
Filter
Filter
source
Sink
Channel
Implementing"
Stream Processing
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
Stream Processing Alternatives
¨  Different possibilities exist to
implement channels as well s
filters
¨  DDS is a very good fit for
channels due to its strong typing
as well as performance and
scalability
¨  Filter can be implemented by
custom business logic or by
leveraging CEP
Filter
Filter
Filter
DDS Writer
DDS Reader
DDS Topic
CEP | Custom
Stream Processing "
with DDS
Data Distribution in a
Nutshell
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
Data Distribution in a Nutshell
¨  Data distribution is about
making application defined
data available where needed
and when needed, while
preserving and end-to-end
type contract
¨  Data is a first class concept, it
can be Created, Read,
Updated, and eventually
Disposed (CRUD)
¨  The last value (or last N-values)
of a Data is always available to
applications
Id Temp Scale
101 25 C
202 78 F
303 299 K
DW
DW
DW
DR
DR
DR
struct TempSensor {!
long Id; !
float temp;!
float hum;!
}!
#pragma keylist TempSensor id!
Fully Distributed
Global Data SpaceDW: DataWriter
DR: DataReader
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
DDS Topics
¨  A Topic defines the subject of
publications and subscriptions
¨  A Topic has associated a user
defined type and QoS
¨  The Topic name, type and
QoS have a well defined role
in matching subscriptions
¨  Topics can be discovered or
locally defined
Topic
Name
QoSType
DURABILITY,
DEADLINE,
PRIORITY,
…
[1/2]
“org.opensplice.demo.TTempSensor”
struct TempSensor {!
long Id; !
float temp;!
float hum;!
}!
#pragma keylist TempSensor id!
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
DDS Topics 
¨  DDS Topic types can have
associated keys
¨  Each unique key-value
identify a Topic Instance –
a specific stream of values
[2/2]
Topic
Name
QoSType
“org.opensplice.demo.TTempSensor”
DURABILITY,
DEADLINE,
PRIORITY,
…
struct TempSensor {!
long Id; !
float temp;!
float hum;!
}!
#pragma keylist TempSensor id!
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
Anatomy of a DDS Application
Domain
Reader/Writers
User Defined for Types
Session
val dp = DomainParticipant(0) !
// Create a Publisher / Subscriber!
Publisher p = dp.create_publisher();!
Subscriber s = dp.create_subscriber();!
// Create a Topic!
Topic<TempSensor> t = !
dp.create_topic<TempSensor>(“com.myco.TSTopic”)!
Domain
Participant
Publisher
DataWrter
Topic Subscriber
DataReader
// Create a DataWriter/DataWriter!
DataWriter<TempSensor> dw = pub.create_datawriter(t);!
DataReader<TempSensor> dr = sub.create_datareader(t);!
Gives access to a
DDS Domain
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
Anatomy of a DDS Application
Domain
Reader/Writers
User Defined for Types
Session
val dp = DomainParticipant(0) !
// Create a Publisher / Subscriber!
val pub = Publisher(dp)!
val sub = Subscriber(dp)!
// Create a Topic!
val topic = Topic[TempSensor](dp, !
“org.opensplice.demo.TTempSensor”)!
Domain
Participant
Publisher
DataWrter
Topic Subscriber
DataReader
// Create a DataWriter/DataWriter!
DataWriter<TempSensor> dw = pub.create_datawriter(t);!
DataReader<TempSensor> dr = sub.create_datareader(t);!
Pub/Sub
Abstractions
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
Anatomy of a DDS Application
Domain
Reader/Writers for User Defined for Types
Session
Domain
Participant
Publisher
DataWrter
Topic Subscriber
DataReader
// Create a DataWriter/DataWriter!
val writer = DataWriter[TempSensor](pub, topic)!
val reader = DataReader[TempSensor](sub, topic) !
!
// Write data!
val t = new TempSensor ts(101, 25, 40)!
writer write ts;!
Reader/Writer for
application
defined Topic
Types
// Create a Publisher / Subscriber!
val pub = Publisher(dp)!
val sub = Subscriber(dp)!
// Create a Topic!
val topic = Topic[TempSensor](dp, !
“org.opensplice.demo.TTempSensor”)!
val dp = DomainParticipant(0) !
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
Domain & Partitions
Topic Instances/Samples
Domain (e.g. Domain 123)
Partition (e.g. Partition “Telemetry”)
Domain
Participant
Topic
Publisher
DataWrter
Subscriber
DataReader
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
Stream Processing in DDS
¨  DDS naturally supports stream processing through three
main concepts:
¨  Topics
¨  Data Writers
¨  Data Readers
¨  In addition DDS’ dynamic discovery, high availability and
high performance make it very easy to architect, deploy
and upgrade stream processing systems
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
DDS Topics as Streams
¨  In Stream Processing,
Streams are typed data
channel
¨  A DDS Topic provide an
elegant way of defining the
Streams that make up a
Streaming System while
capturing their type, as well
as their Non-Functional
Constraints
Filter
Filter
Filter
DDS Topic
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
DDS Data Writers as Sources
¨  DDS Data Writers
make ideal sources for
Stream Processing
systems due to their:
¨  Dynamic Discovery
¨  Durability
¨  Fault-Tolerance
Filter
Filter
Filter
DDS Writer
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
DDS Data Readers as Sinks
¨  DDS Data Readers
make ideal sinks for
Stream Processing
systems due to their:
¨  Dynamic Discovery
¨  Durability
Filter
Filter
Filter
DDS Reader
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
DDS & Filters
¨  Filters/Actors perform
transformations from one or
more input streams to one or
more output streams
¨  The combination of DDS
ContentFilteredTopics with a
powerful language like Scala
can make it relatively easy to
build custom filters
¨  Let’s explore this path…
DDS+Application Logic
Filter
Filter
Filter
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
Content Filtered Topics
¨  Content Filtered Topics
provide a way of defining a
local projection of the
stream of data associated
with a given topic
¨  Filters are expressed as the
“WHERE” clause of an SQL
statement
¨  Filters can operate on any
attribute of the type
associated with the topic
Example:
// Create a Topic (on default domain)!
val topic = Topic[TempSensor](“TTempSensor”)!
val ftopic = !
ContentFilteredTopic[TempSensor](“CFTempSensor”,!
topic,!
filter,!
params)!
!
// - filter is a WHERE-like clause, such as: !
// “temp > 20 AND hum > 50”!
// “temp > %0”!
// “temp > hum”!
// “temp BETWEEN (%0 AND %1)!
//!
// - params is the list of parameters to pass to the !
// filter expression – if any!
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
Filter Expression Syntax
¨  DDS Filters are condition
over a topic type attributes
¨  Temporal properties or
causality cannot be
captured via DDS filter
expression
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
History
¨  DDS provides a way of
controlling data
windows through the
History QoS
The window keeps
the last n data samples
Data older than “n samples ago”
get’s out the window
pastfuture
now
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
[Putting it All Together]"
TempSensor Moving Average
object MovingAverageFilter {!
def main(args: Array[String]) {!
if (args.length < 2) {!
println("USAGE:ntMovingAverageFilter <window> <filter-expression>")!
}!
!
val topic = Topic[TempSensor]("TTempSensor")!
val ftopic = ContentFilteredTopic[TempSensor]("CFTempSensor",topic, args(1))!
!
val rqos = DataReaderQos() <= KeepLastHistory(args(0).toInt)!
val reader = DataReader[TempSensor](ftopic, rqos)!
!
reader.reactions += {!
case e: DataAvailable[TempSensor] => {!
var average: Float = 0!
val window = e.reader.history!
window foreach (average += _.temp)!
average = average / window.length!
println("+--------------------------------------------------------")!
println("Moving Average: " + average)!
}!
}!
}!
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
Key Points So Far
¨  DDS provides some event processing capabilities that
facilitate the development of Stream Processing Filters
¨  Higher Level programming languages like Scala can make it
very easy to concisely express complex filters
¨  Note: Scala targets the JVM as well as the .Net CLR
Stream Processing "
with DDS & CEP
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
CEP In Brief
¨  Complex Event Processing (CEP)
engines provide a declarative
way of transforming a set of input
streams into one or more output
streams
¨  The declarative language
provided by CEP is usually based
on some extension of SQL to
include time, pattern matching
and causality
-  select *
from TempSensor(temp < 30)
-  select avg(temp)
from TempSensor.win:time(1 sec)
CEP
[1/2]
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
CEP In Brief
¨  CEP emerged from Stream
Processing as a way to
facilitate the development of
“Filters/Actors” and make it
“declarative”
¨  In line with the Stream
Processing principles, CEP
operate on typed data streams
-  select *
from TempSensor(temp < 30)
-  select avg(temp)
from TempSensor.win:time(1 sec)
CEP
[1/2]
Filter
Filter
Filter
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
DDS + CEP = Stream Processing
¨  DDS provides a powerful Stream
abstraction that is:
¨  Type Safe
¨  High Performance
¨  Highly Available
¨  Decoupled in Time/Space
¨  Dynamically Discoverable
¨  CEP provide a powerful abstraction for
processing streams
¨  The combination of DDS + CEP is not
only natural but a perfect fit for building
high performance, highly available
Stream Processing Systems
CEP
CEP
CEP
DDS Writer
DDS Reader
DDS Topic
DDS + CEP in Action
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
Esper CEP
¨  Esper is an Open Source, pure Java, CEP engine widely used
in a wide variety of applications ranging from the Capital
Market to Defense and Aerospace
¨  http://www.espertech.com
¨  Esper Rules are expressed EPL (Esper Processing
Language) which can be seen as an extension of SQL
with support for time, causality and pattern matching
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
OpenSplice + Esper 
¨  Esper Provides an EsperIO framework for plugging-in
new stream transports
¨  Plugging OpenSplice into Esper is trivial even w/o
relying on the EsperIO framework
¨  Let’s have a look…
Demo Application
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
iShapes Application
¨  To explore play with OpenSplice
and Esper, we’ll use the simd-cxx
ishapes application
¨  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	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
Esper Setup
Step 1: Register Topic Types
val config = new Configuration!
val ddsConf = new ConfigurationEventTypeLegacy!
!
ddsConf.setAccessorStyle(ConfigurationEventTypeLegacy.AccessorStyle.PUBLIC)!
!
config.addEventType("ShapeType", !
classOf[org.opensplice.demo.ShapeType].getName, !
ddsConf)!
!
val cep: EPServiceProvider = !
EPServiceProviderManager.getDefaultProvider(config)!
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
Esper Setup
Step 2: Register a Listener for receiving Esper Events
val listener = new UpdateListener {!
def update(ne: Array[EventBean], oe: Array[EventBean]) {!
ne foreach(e => {!
"// Handle the event!
})!
}!
}!
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
Esper Setup
Step 3: Hook-up DDS to Esper
reader.reactions += {!
case e: DataAvailable[ShapeType] => {!
(e.reader read) foreach(runtime sendEvent _)!
!
}!
}!
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
iShapes FrameRate
¨  Let’s suppose that we wanted to keep under
control the iShapes Frame rate for ech given color
¨  In Esper this can be achieved with the following
expression:
insert into ShapesxSec !
select color, count(*) as cnt !
from ShapeType.win:time_batch(1 second) !
group by color!
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
iShapes Center of Mass
¨  Suppose that we wanted to compute the center of
mass of all the shapes currently displayed over the
last second
¨  The Esper expression for this would be:
select ShapeFactory.createShape(color, cast(avg(x),int), cast(avg
(y),int), shapesize) as NewShape !
from ShapeType.win:time(10 sec)!
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
¥  Fastest growing JVM Language
¥  Open Source
¥  www.scala-lang.org
References
OpenSplice DDS
¥  #1 OMG DDS Implementation
¥  Open Source
¥  www.opensplice.org
¥  Scala API for OpenSplice DDS
¥  Open Source
¥  code.google.com/p/escalier
¥  #1 Java-Based CEP Engine
¥  Open Source
¥  www.espertech.com
Summing Up
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
Concluding Remarks
¨  DDS provides a very good
foundation to build high
performance, highly available and
scalable streaming systems
¨  DDS + CEP are the most natural,
effective and efficient way of
building next generation Stream
Processing Systems!
Copyright	
  2010,	
  PrismTech	
  –	
  	
  All	
  Rights	
  Reserved.	
  
http://www.opensplice.com/
http://www.opensplice.org/
emailto:opensplicedds@prismtech.com
http://www.youtube.com/OpenSpliceTube http://opensplice.blogspot.com
http://bit.ly/1Sreg
http://www.slideshare.net/angelo.corsaro
http://twitter.com/acorsaro/
D e l i v e r i n g P e r f o r m a n c e , O p e n n e s s , a n d F r e e d o m
OpenSplice DDS

More Related Content

Viewers also liked

Foncier économique et locaux d’activités dans le Pays de Lorient. Évolution 2...
Foncier économique et locaux d’activités dans le Pays de Lorient. Évolution 2...Foncier économique et locaux d’activités dans le Pays de Lorient. Évolution 2...
Foncier économique et locaux d’activités dans le Pays de Lorient. Évolution 2...AudéLor
 
Todobicicletas asturias 2
Todobicicletas asturias 2Todobicicletas asturias 2
Todobicicletas asturias 2todobicicletas
 
What Social Media Isn’t
What Social Media Isn’tWhat Social Media Isn’t
What Social Media Isn’tJoanne Jacobs
 
IDEA - EXPECTATIVAS DE EJECUTIVOS OCT2013
IDEA - EXPECTATIVAS DE EJECUTIVOS OCT2013IDEA - EXPECTATIVAS DE EJECUTIVOS OCT2013
IDEA - EXPECTATIVAS DE EJECUTIVOS OCT2013Managers
 
Cenit 2 Grupo Frial
Cenit 2 Grupo FrialCenit 2 Grupo Frial
Cenit 2 Grupo FrialGrupo Frial
 
Ceo - Carmine Evangelista
Ceo - Carmine EvangelistaCeo - Carmine Evangelista
Ceo - Carmine EvangelistaAZ Holding spa
 
bibliobus CM 25 aniversario ElMundo
bibliobus CM 25 aniversario ElMundobibliobus CM 25 aniversario ElMundo
bibliobus CM 25 aniversario ElMundoIsabel Sanchez
 
Renolit SE Introduction PPT
Renolit SE Introduction PPTRenolit SE Introduction PPT
Renolit SE Introduction PPTMangesh Dhamele
 
Le rapport annuel 2011 de l'ICCA
Le rapport annuel 2011 de l'ICCALe rapport annuel 2011 de l'ICCA
Le rapport annuel 2011 de l'ICCAThierry Labro
 
Q2 2013 wessanen analyst&investor meeting
Q2 2013 wessanen analyst&investor meetingQ2 2013 wessanen analyst&investor meeting
Q2 2013 wessanen analyst&investor meetingKlaus Arntz
 
Internet of Things
Internet of ThingsInternet of Things
Internet of ThingsDavid Ruiz
 
Speedy Catalogue 2011 - Rail Pages
Speedy Catalogue 2011 - Rail PagesSpeedy Catalogue 2011 - Rail Pages
Speedy Catalogue 2011 - Rail Pagesspeedyservices
 
Expanding The Micro Blaze System
Expanding  The Micro Blaze  SystemExpanding  The Micro Blaze  System
Expanding The Micro Blaze Systemiuui
 

Viewers also liked (20)

Foncier économique et locaux d’activités dans le Pays de Lorient. Évolution 2...
Foncier économique et locaux d’activités dans le Pays de Lorient. Évolution 2...Foncier économique et locaux d’activités dans le Pays de Lorient. Évolution 2...
Foncier économique et locaux d’activités dans le Pays de Lorient. Évolution 2...
 
Todobicicletas asturias 2
Todobicicletas asturias 2Todobicicletas asturias 2
Todobicicletas asturias 2
 
What Social Media Isn’t
What Social Media Isn’tWhat Social Media Isn’t
What Social Media Isn’t
 
ADD APPRAISAL
ADD APPRAISALADD APPRAISAL
ADD APPRAISAL
 
IDEA - EXPECTATIVAS DE EJECUTIVOS OCT2013
IDEA - EXPECTATIVAS DE EJECUTIVOS OCT2013IDEA - EXPECTATIVAS DE EJECUTIVOS OCT2013
IDEA - EXPECTATIVAS DE EJECUTIVOS OCT2013
 
Cenit 2 Grupo Frial
Cenit 2 Grupo FrialCenit 2 Grupo Frial
Cenit 2 Grupo Frial
 
ProNatura
ProNaturaProNatura
ProNatura
 
Internet Y El Www
Internet Y El WwwInternet Y El Www
Internet Y El Www
 
Ceo - Carmine Evangelista
Ceo - Carmine EvangelistaCeo - Carmine Evangelista
Ceo - Carmine Evangelista
 
Itelligence - Presentacion corporativa
Itelligence - Presentacion corporativaItelligence - Presentacion corporativa
Itelligence - Presentacion corporativa
 
bibliobus CM 25 aniversario ElMundo
bibliobus CM 25 aniversario ElMundobibliobus CM 25 aniversario ElMundo
bibliobus CM 25 aniversario ElMundo
 
Renolit SE Introduction PPT
Renolit SE Introduction PPTRenolit SE Introduction PPT
Renolit SE Introduction PPT
 
Le rapport annuel 2011 de l'ICCA
Le rapport annuel 2011 de l'ICCALe rapport annuel 2011 de l'ICCA
Le rapport annuel 2011 de l'ICCA
 
NBN Living Mexico
NBN Living MexicoNBN Living Mexico
NBN Living Mexico
 
Glosario
GlosarioGlosario
Glosario
 
Q2 2013 wessanen analyst&investor meeting
Q2 2013 wessanen analyst&investor meetingQ2 2013 wessanen analyst&investor meeting
Q2 2013 wessanen analyst&investor meeting
 
Internet of Things
Internet of ThingsInternet of Things
Internet of Things
 
Speedy Catalogue 2011 - Rail Pages
Speedy Catalogue 2011 - Rail PagesSpeedy Catalogue 2011 - Rail Pages
Speedy Catalogue 2011 - Rail Pages
 
Expanding The Micro Blaze System
Expanding  The Micro Blaze  SystemExpanding  The Micro Blaze  System
Expanding The Micro Blaze System
 
English Dialogues
English DialoguesEnglish Dialogues
English Dialogues
 

Similar to Open splicedds espercep-webinar

Stream Processing with DDS and CEP
Stream Processing with  DDS and CEPStream Processing with  DDS and CEP
Stream Processing with DDS and CEPAngelo Corsaro
 
The Data Distribution Service Tutorial
The Data Distribution Service TutorialThe Data Distribution Service Tutorial
The Data Distribution Service TutorialAngelo 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
 
Distributed Algorithms with DDS
Distributed Algorithms with DDSDistributed Algorithms with DDS
Distributed Algorithms with DDSAngelo 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
 
DDS-PSM-Cxx and simd-cxx
DDS-PSM-Cxx and simd-cxxDDS-PSM-Cxx and simd-cxx
DDS-PSM-Cxx and simd-cxxAngelo Corsaro
 
Real Time Java DDS
Real Time Java DDSReal Time Java DDS
Real Time Java DDSkerush
 
DDS: The IoT Data Sharing Standard
DDS: The IoT Data Sharing StandardDDS: The IoT Data Sharing Standard
DDS: The IoT Data Sharing StandardAngelo Corsaro
 
The DDS Tutorial Part II
The DDS Tutorial Part IIThe DDS Tutorial Part II
The DDS Tutorial Part IIAngelo Corsaro
 
DDS Tutorial -- Part I
DDS Tutorial -- Part IDDS Tutorial -- Part I
DDS Tutorial -- Part IAngelo Corsaro
 
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
 
Reactive Data Centric Architectures with DDS
Reactive Data Centric Architectures with DDSReactive Data Centric Architectures with DDS
Reactive Data Centric Architectures with DDSAngelo Corsaro
 
Desktop, Embedded and Mobile Apps with PrismTech Vortex Cafe
Desktop, Embedded and Mobile Apps with PrismTech Vortex CafeDesktop, Embedded and Mobile Apps with PrismTech Vortex Cafe
Desktop, Embedded and Mobile Apps with PrismTech Vortex CafeADLINK Technology IoT
 
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
 
Building High Scalability Apps With Terracotta
Building High Scalability Apps With TerracottaBuilding High Scalability Apps With Terracotta
Building High Scalability Apps With TerracottaDavid Reines
 
Java 5 PSM for DDS: Revised Submission (out of date)
Java 5 PSM for DDS: Revised Submission (out of date)Java 5 PSM for DDS: Revised Submission (out of date)
Java 5 PSM for DDS: Revised Submission (out of date)Rick Warren
 

Similar to Open splicedds espercep-webinar (20)

Stream Processing with DDS and CEP
Stream Processing with  DDS and CEPStream Processing with  DDS and CEP
Stream Processing with DDS and CEP
 
The Data Distribution Service Tutorial
The Data Distribution Service TutorialThe Data Distribution Service Tutorial
The Data Distribution Service Tutorial
 
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
 
Distributed Algorithms with DDS
Distributed Algorithms with DDSDistributed Algorithms with DDS
Distributed Algorithms with 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
 
DDS-PSM-Cxx and simd-cxx
DDS-PSM-Cxx and simd-cxxDDS-PSM-Cxx and simd-cxx
DDS-PSM-Cxx and simd-cxx
 
Real Time Java DDS
Real Time Java DDSReal Time Java DDS
Real Time Java DDS
 
DDS: The IoT Data Sharing Standard
DDS: The IoT Data Sharing StandardDDS: The IoT Data Sharing Standard
DDS: The IoT Data Sharing Standard
 
The DDS Tutorial Part II
The DDS Tutorial Part IIThe DDS Tutorial Part II
The DDS Tutorial Part II
 
DDS In Action Part II
DDS In Action Part IIDDS In Action Part II
DDS In Action Part II
 
DDS Tutorial -- Part I
DDS Tutorial -- Part IDDS Tutorial -- Part I
DDS Tutorial -- Part I
 
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
 
Reactive Data Centric Architectures with DDS
Reactive Data Centric Architectures with DDSReactive Data Centric Architectures with DDS
Reactive Data Centric Architectures with DDS
 
Desktop, Embedded and Mobile Apps with PrismTech Vortex Cafe
Desktop, Embedded and Mobile Apps with PrismTech Vortex CafeDesktop, Embedded and Mobile Apps with PrismTech Vortex Cafe
Desktop, Embedded and Mobile Apps with PrismTech Vortex Cafe
 
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é
 
Building High Scalability Apps With Terracotta
Building High Scalability Apps With TerracottaBuilding High Scalability Apps With Terracotta
Building High Scalability Apps With Terracotta
 
Unit 2.3
Unit 2.3Unit 2.3
Unit 2.3
 
Unit 2.3
Unit 2.3Unit 2.3
Unit 2.3
 
Java 5 PSM for DDS: Revised Submission (out of date)
Java 5 PSM for DDS: Revised Submission (out of date)Java 5 PSM for DDS: Revised Submission (out of date)
Java 5 PSM for DDS: Revised Submission (out of date)
 
PrismTech Vortex Tutorial Part 1
PrismTech Vortex Tutorial Part 1PrismTech Vortex Tutorial Part 1
PrismTech Vortex Tutorial Part 1
 

More from Tomasz Waszczyk

Programowanie automatycznych strategii transakcyjnych czesc podstawowa
Programowanie automatycznych strategii transakcyjnych   czesc podstawowaProgramowanie automatycznych strategii transakcyjnych   czesc podstawowa
Programowanie automatycznych strategii transakcyjnych czesc podstawowaTomasz Waszczyk
 
trading_automatyczny-waszczyk-probka
trading_automatyczny-waszczyk-probkatrading_automatyczny-waszczyk-probka
trading_automatyczny-waszczyk-probkaTomasz Waszczyk
 
Jens valloe christiansen
Jens valloe christiansenJens valloe christiansen
Jens valloe christiansenTomasz Waszczyk
 
Wzory portfel-inwestycyjnyrynek-kapitalowy
Wzory portfel-inwestycyjnyrynek-kapitalowyWzory portfel-inwestycyjnyrynek-kapitalowy
Wzory portfel-inwestycyjnyrynek-kapitalowyTomasz Waszczyk
 
2012 11-03-boersenfuehrerschein-teil6-technische-analyse
2012 11-03-boersenfuehrerschein-teil6-technische-analyse2012 11-03-boersenfuehrerschein-teil6-technische-analyse
2012 11-03-boersenfuehrerschein-teil6-technische-analyseTomasz Waszczyk
 
Quant congressusa2011algotradinglast
Quant congressusa2011algotradinglastQuant congressusa2011algotradinglast
Quant congressusa2011algotradinglastTomasz Waszczyk
 
C plus plus_for_quantitative_finance
C plus plus_for_quantitative_financeC plus plus_for_quantitative_finance
C plus plus_for_quantitative_financeTomasz Waszczyk
 
Sdv 0405 design-pattern_thc_jps_skript
Sdv 0405 design-pattern_thc_jps_skriptSdv 0405 design-pattern_thc_jps_skript
Sdv 0405 design-pattern_thc_jps_skriptTomasz Waszczyk
 
In tech an-innovative_systematic_approach_to_financial_portfolio_management_v...
In tech an-innovative_systematic_approach_to_financial_portfolio_management_v...In tech an-innovative_systematic_approach_to_financial_portfolio_management_v...
In tech an-innovative_systematic_approach_to_financial_portfolio_management_v...Tomasz Waszczyk
 

More from Tomasz Waszczyk (20)

Programowanie automatycznych strategii transakcyjnych czesc podstawowa
Programowanie automatycznych strategii transakcyjnych   czesc podstawowaProgramowanie automatycznych strategii transakcyjnych   czesc podstawowa
Programowanie automatycznych strategii transakcyjnych czesc podstawowa
 
trading_automatyczny-waszczyk-probka
trading_automatyczny-waszczyk-probkatrading_automatyczny-waszczyk-probka
trading_automatyczny-waszczyk-probka
 
Codeconventions 150003
Codeconventions 150003Codeconventions 150003
Codeconventions 150003
 
Repeat after me_8_14_13
Repeat after me_8_14_13Repeat after me_8_14_13
Repeat after me_8_14_13
 
Jens valloe christiansen
Jens valloe christiansenJens valloe christiansen
Jens valloe christiansen
 
Vidyasagar rocond09
Vidyasagar rocond09Vidyasagar rocond09
Vidyasagar rocond09
 
Wzory portfel-inwestycyjnyrynek-kapitalowy
Wzory portfel-inwestycyjnyrynek-kapitalowyWzory portfel-inwestycyjnyrynek-kapitalowy
Wzory portfel-inwestycyjnyrynek-kapitalowy
 
2012 11-03-boersenfuehrerschein-teil6-technische-analyse
2012 11-03-boersenfuehrerschein-teil6-technische-analyse2012 11-03-boersenfuehrerschein-teil6-technische-analyse
2012 11-03-boersenfuehrerschein-teil6-technische-analyse
 
Lm mme090913
Lm mme090913Lm mme090913
Lm mme090913
 
Quant congressusa2011algotradinglast
Quant congressusa2011algotradinglastQuant congressusa2011algotradinglast
Quant congressusa2011algotradinglast
 
1108.1170
1108.11701108.1170
1108.1170
 
Efficient projections
Efficient projectionsEfficient projections
Efficient projections
 
Hsieh etal spl
Hsieh etal splHsieh etal spl
Hsieh etal spl
 
Comparison
ComparisonComparison
Comparison
 
C plus plus_for_quantitative_finance
C plus plus_for_quantitative_financeC plus plus_for_quantitative_finance
C plus plus_for_quantitative_finance
 
4587 11094-1-pb
4587 11094-1-pb4587 11094-1-pb
4587 11094-1-pb
 
G
GG
G
 
Sdv 0405 design-pattern_thc_jps_skript
Sdv 0405 design-pattern_thc_jps_skriptSdv 0405 design-pattern_thc_jps_skript
Sdv 0405 design-pattern_thc_jps_skript
 
Efficient projections
Efficient projectionsEfficient projections
Efficient projections
 
In tech an-innovative_systematic_approach_to_financial_portfolio_management_v...
In tech an-innovative_systematic_approach_to_financial_portfolio_management_v...In tech an-innovative_systematic_approach_to_financial_portfolio_management_v...
In tech an-innovative_systematic_approach_to_financial_portfolio_management_v...
 

Recently uploaded

The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
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
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 

Recently uploaded (20)

The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
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.
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 

Open splicedds espercep-webinar

  • 1. Angelo CORSARO, Ph.D. Chief Technology Officer OMG DDS Sig Co-Chair PrismTech angelo.corsaro@prismtech.com! 海 賊 天 使
  • 3. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   Stream Processing ¨  Stream Processing can be seen as an architectural style for building systems that operate over continuous (theoretically infinite) streams of data ¨  Stream Processing is often reified under one of its many declinations, such as: ¨  Reactive Systems ¨  Signal Processing Systems ¨  Functional Stream Programming ¨  Data Flow Systems [1/3]
  • 4. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   Stream Processing ¨  Stream Processing Architectures are very natural for modeling systems needing to react to streams of data produced by the external world, such as the data produced by sensors, a camera or even the data produced by the stock exchange. ¨  Stream Processing Systems usually operate in real- time over streams and generate in turns other streams of data providing information on what is happening or suggesting actions to perform, such as by stock X, raise alarm Y, or detected spatial violation, etc. [2/3]
  • 5. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   Stream Processing ¨  Stream Processing Systems are typically modeled as collection of modules communicating via typed data channels ¨  Modules usually play one of the following roles: ¨  Sources: Injecting data into the System ¨  Filters/Actors: Performing some computation over sources ¨  Sinks: Consuming the data produced by the system [3/3] Filter Filter Filter source Sink Channel
  • 7. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   Stream Processing Alternatives ¨  Different possibilities exist to implement channels as well s filters ¨  DDS is a very good fit for channels due to its strong typing as well as performance and scalability ¨  Filter can be implemented by custom business logic or by leveraging CEP Filter Filter Filter DDS Writer DDS Reader DDS Topic CEP | Custom
  • 9. Data Distribution in a Nutshell
  • 10. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   Data Distribution in a Nutshell ¨  Data distribution is about making application defined data available where needed and when needed, while preserving and end-to-end type contract ¨  Data is a first class concept, it can be Created, Read, Updated, and eventually Disposed (CRUD) ¨  The last value (or last N-values) of a Data is always available to applications Id Temp Scale 101 25 C 202 78 F 303 299 K DW DW DW DR DR DR struct TempSensor {! long Id; ! float temp;! float hum;! }! #pragma keylist TempSensor id! Fully Distributed Global Data SpaceDW: DataWriter DR: DataReader
  • 11. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   DDS Topics ¨  A Topic defines the subject of publications and subscriptions ¨  A Topic has associated a user defined type and QoS ¨  The Topic name, type and QoS have a well defined role in matching subscriptions ¨  Topics can be discovered or locally defined Topic Name QoSType DURABILITY, DEADLINE, PRIORITY, … [1/2] “org.opensplice.demo.TTempSensor” struct TempSensor {! long Id; ! float temp;! float hum;! }! #pragma keylist TempSensor id!
  • 12. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   DDS Topics ¨  DDS Topic types can have associated keys ¨  Each unique key-value identify a Topic Instance – a specific stream of values [2/2] Topic Name QoSType “org.opensplice.demo.TTempSensor” DURABILITY, DEADLINE, PRIORITY, … struct TempSensor {! long Id; ! float temp;! float hum;! }! #pragma keylist TempSensor id!
  • 13. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   Anatomy of a DDS Application Domain Reader/Writers User Defined for Types Session val dp = DomainParticipant(0) ! // Create a Publisher / Subscriber! Publisher p = dp.create_publisher();! Subscriber s = dp.create_subscriber();! // Create a Topic! Topic<TempSensor> t = ! dp.create_topic<TempSensor>(“com.myco.TSTopic”)! Domain Participant Publisher DataWrter Topic Subscriber DataReader // Create a DataWriter/DataWriter! DataWriter<TempSensor> dw = pub.create_datawriter(t);! DataReader<TempSensor> dr = sub.create_datareader(t);! Gives access to a DDS Domain
  • 14. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   Anatomy of a DDS Application Domain Reader/Writers User Defined for Types Session val dp = DomainParticipant(0) ! // Create a Publisher / Subscriber! val pub = Publisher(dp)! val sub = Subscriber(dp)! // Create a Topic! val topic = Topic[TempSensor](dp, ! “org.opensplice.demo.TTempSensor”)! Domain Participant Publisher DataWrter Topic Subscriber DataReader // Create a DataWriter/DataWriter! DataWriter<TempSensor> dw = pub.create_datawriter(t);! DataReader<TempSensor> dr = sub.create_datareader(t);! Pub/Sub Abstractions
  • 15. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   Anatomy of a DDS Application Domain Reader/Writers for User Defined for Types Session Domain Participant Publisher DataWrter Topic Subscriber DataReader // Create a DataWriter/DataWriter! val writer = DataWriter[TempSensor](pub, topic)! val reader = DataReader[TempSensor](sub, topic) ! ! // Write data! val t = new TempSensor ts(101, 25, 40)! writer write ts;! Reader/Writer for application defined Topic Types // Create a Publisher / Subscriber! val pub = Publisher(dp)! val sub = Subscriber(dp)! // Create a Topic! val topic = Topic[TempSensor](dp, ! “org.opensplice.demo.TTempSensor”)! val dp = DomainParticipant(0) !
  • 16. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   Domain & Partitions Topic Instances/Samples Domain (e.g. Domain 123) Partition (e.g. Partition “Telemetry”) Domain Participant Topic Publisher DataWrter Subscriber DataReader
  • 17. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   Stream Processing in DDS ¨  DDS naturally supports stream processing through three main concepts: ¨  Topics ¨  Data Writers ¨  Data Readers ¨  In addition DDS’ dynamic discovery, high availability and high performance make it very easy to architect, deploy and upgrade stream processing systems
  • 18. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   DDS Topics as Streams ¨  In Stream Processing, Streams are typed data channel ¨  A DDS Topic provide an elegant way of defining the Streams that make up a Streaming System while capturing their type, as well as their Non-Functional Constraints Filter Filter Filter DDS Topic
  • 19. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   DDS Data Writers as Sources ¨  DDS Data Writers make ideal sources for Stream Processing systems due to their: ¨  Dynamic Discovery ¨  Durability ¨  Fault-Tolerance Filter Filter Filter DDS Writer
  • 20. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   DDS Data Readers as Sinks ¨  DDS Data Readers make ideal sinks for Stream Processing systems due to their: ¨  Dynamic Discovery ¨  Durability Filter Filter Filter DDS Reader
  • 21. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   DDS & Filters ¨  Filters/Actors perform transformations from one or more input streams to one or more output streams ¨  The combination of DDS ContentFilteredTopics with a powerful language like Scala can make it relatively easy to build custom filters ¨  Let’s explore this path… DDS+Application Logic Filter Filter Filter
  • 22. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   Content Filtered Topics ¨  Content Filtered Topics provide a way of defining a local projection of the stream of data associated with a given topic ¨  Filters are expressed as the “WHERE” clause of an SQL statement ¨  Filters can operate on any attribute of the type associated with the topic Example: // Create a Topic (on default domain)! val topic = Topic[TempSensor](“TTempSensor”)! val ftopic = ! ContentFilteredTopic[TempSensor](“CFTempSensor”,! topic,! filter,! params)! ! // - filter is a WHERE-like clause, such as: ! // “temp > 20 AND hum > 50”! // “temp > %0”! // “temp > hum”! // “temp BETWEEN (%0 AND %1)! //! // - params is the list of parameters to pass to the ! // filter expression – if any!
  • 23. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   Filter Expression Syntax ¨  DDS Filters are condition over a topic type attributes ¨  Temporal properties or causality cannot be captured via DDS filter expression
  • 24. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   History ¨  DDS provides a way of controlling data windows through the History QoS The window keeps the last n data samples Data older than “n samples ago” get’s out the window pastfuture now
  • 25. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   [Putting it All Together]" TempSensor Moving Average object MovingAverageFilter {! def main(args: Array[String]) {! if (args.length < 2) {! println("USAGE:ntMovingAverageFilter <window> <filter-expression>")! }! ! val topic = Topic[TempSensor]("TTempSensor")! val ftopic = ContentFilteredTopic[TempSensor]("CFTempSensor",topic, args(1))! ! val rqos = DataReaderQos() <= KeepLastHistory(args(0).toInt)! val reader = DataReader[TempSensor](ftopic, rqos)! ! reader.reactions += {! case e: DataAvailable[TempSensor] => {! var average: Float = 0! val window = e.reader.history! window foreach (average += _.temp)! average = average / window.length! println("+--------------------------------------------------------")! println("Moving Average: " + average)! }! }! }!
  • 26. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   Key Points So Far ¨  DDS provides some event processing capabilities that facilitate the development of Stream Processing Filters ¨  Higher Level programming languages like Scala can make it very easy to concisely express complex filters ¨  Note: Scala targets the JVM as well as the .Net CLR
  • 28. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   CEP In Brief ¨  Complex Event Processing (CEP) engines provide a declarative way of transforming a set of input streams into one or more output streams ¨  The declarative language provided by CEP is usually based on some extension of SQL to include time, pattern matching and causality -  select * from TempSensor(temp < 30) -  select avg(temp) from TempSensor.win:time(1 sec) CEP [1/2]
  • 29. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   CEP In Brief ¨  CEP emerged from Stream Processing as a way to facilitate the development of “Filters/Actors” and make it “declarative” ¨  In line with the Stream Processing principles, CEP operate on typed data streams -  select * from TempSensor(temp < 30) -  select avg(temp) from TempSensor.win:time(1 sec) CEP [1/2] Filter Filter Filter
  • 30. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   DDS + CEP = Stream Processing ¨  DDS provides a powerful Stream abstraction that is: ¨  Type Safe ¨  High Performance ¨  Highly Available ¨  Decoupled in Time/Space ¨  Dynamically Discoverable ¨  CEP provide a powerful abstraction for processing streams ¨  The combination of DDS + CEP is not only natural but a perfect fit for building high performance, highly available Stream Processing Systems CEP CEP CEP DDS Writer DDS Reader DDS Topic
  • 31. DDS + CEP in Action
  • 32. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   Esper CEP ¨  Esper is an Open Source, pure Java, CEP engine widely used in a wide variety of applications ranging from the Capital Market to Defense and Aerospace ¨  http://www.espertech.com ¨  Esper Rules are expressed EPL (Esper Processing Language) which can be seen as an extension of SQL with support for time, causality and pattern matching
  • 33. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   OpenSplice + Esper ¨  Esper Provides an EsperIO framework for plugging-in new stream transports ¨  Plugging OpenSplice into Esper is trivial even w/o relying on the EsperIO framework ¨  Let’s have a look…
  • 35. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   iShapes Application ¨  To explore play with OpenSplice and Esper, we’ll use the simd-cxx ishapes application ¨  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
  • 36. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   Esper Setup Step 1: Register Topic Types val config = new Configuration! val ddsConf = new ConfigurationEventTypeLegacy! ! ddsConf.setAccessorStyle(ConfigurationEventTypeLegacy.AccessorStyle.PUBLIC)! ! config.addEventType("ShapeType", ! classOf[org.opensplice.demo.ShapeType].getName, ! ddsConf)! ! val cep: EPServiceProvider = ! EPServiceProviderManager.getDefaultProvider(config)!
  • 37. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   Esper Setup Step 2: Register a Listener for receiving Esper Events val listener = new UpdateListener {! def update(ne: Array[EventBean], oe: Array[EventBean]) {! ne foreach(e => {! "// Handle the event! })! }! }!
  • 38. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   Esper Setup Step 3: Hook-up DDS to Esper reader.reactions += {! case e: DataAvailable[ShapeType] => {! (e.reader read) foreach(runtime sendEvent _)! ! }! }!
  • 39. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   iShapes FrameRate ¨  Let’s suppose that we wanted to keep under control the iShapes Frame rate for ech given color ¨  In Esper this can be achieved with the following expression: insert into ShapesxSec ! select color, count(*) as cnt ! from ShapeType.win:time_batch(1 second) ! group by color!
  • 40. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   iShapes Center of Mass ¨  Suppose that we wanted to compute the center of mass of all the shapes currently displayed over the last second ¨  The Esper expression for this would be: select ShapeFactory.createShape(color, cast(avg(x),int), cast(avg (y),int), shapesize) as NewShape ! from ShapeType.win:time(10 sec)!
  • 41. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   ¥  Fastest growing JVM Language ¥  Open Source ¥  www.scala-lang.org References OpenSplice DDS ¥  #1 OMG DDS Implementation ¥  Open Source ¥  www.opensplice.org ¥  Scala API for OpenSplice DDS ¥  Open Source ¥  code.google.com/p/escalier ¥  #1 Java-Based CEP Engine ¥  Open Source ¥  www.espertech.com
  • 43. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   Concluding Remarks ¨  DDS provides a very good foundation to build high performance, highly available and scalable streaming systems ¨  DDS + CEP are the most natural, effective and efficient way of building next generation Stream Processing Systems!
  • 44. Copyright  2010,  PrismTech  –    All  Rights  Reserved.   http://www.opensplice.com/ http://www.opensplice.org/ emailto:opensplicedds@prismtech.com http://www.youtube.com/OpenSpliceTube http://opensplice.blogspot.com http://bit.ly/1Sreg http://www.slideshare.net/angelo.corsaro http://twitter.com/acorsaro/ D e l i v e r i n g P e r f o r m a n c e , O p e n n e s s , a n d F r e e d o m OpenSplice DDS