SlideShare a Scribd company logo
Time flows, my friend 
Managing event sequences and time series with a 
Document-Graph Database 
Codemotion Milan 2014 
Luigi Dell’Aquila 
Orient Technologies LTD 
Twitter: @ldellaquila
Time What…?
Time What…? 
Time series: 
A time series is a sequence of data points, typically 
consisting of successive measurements made over a 
time interval (Wikipedia)
Time What…? 
Event sequences: 
• A set of events with a timestamp 
• A set of relationships “happened 
before/after” 
• Cause and effect relationships
Time What…? 
Time as a dimension: 
• Direct: 
– Eg. begin and end of relationships (I’m a 
friend of John since…) 
• Calculated 
– Eg. Speed (distance/time)
Time What…? 
Time as a constraint: 
• Query execution time!
The problem: 
Fast and Effective
Fast and Effective 
Fast write: Time doesn’t wait! Writes just arrive 
Fast read: a lot of data to be read in a short time 
Effective manipulation: complex operations like 
- Aggregation 
- Prediction 
- Analysis
Current approaches
Current approaches 
0. Relational approach: table 
Timestamp Value 
2014:11:21 14:35:00 1321 
2014:11:21 14:35:01 2444 
2014:11:21 14:35:02 2135 
2014:11:21 14:35:03 1833
Current approaches 
0. Relational approach: table 
HH MM SS Value 
14 35 0 1321 
14 35 1 2444 
14 35 2 2135 
14 35 3 1833
Current approaches 
0. Relational – Advantages 
• Simple 
• It can be used together with your application data 
(operational)
Current approaches 
0. Relational – Disadvantages 
• Slow read (relies on an index) 
• Slow insert (update the index…)
Current approaches 
1. Document Database 
• Collections of Documents instead of tables 
• Schemaless 
• Complex data structures
Current approaches 
1. Document approach: Minute Based 
{ 
timestamp: “2014-11-21 12.05“ 
load: [10, 15, 3, … 30] //array of 60, one per second 
}
Current approaches 
1. Document approach: Hour Based 
{ 
timestamp: “2014-11-21 12.00“ 
load: { 
0: [10, 15, 3, … 30], //array of 60, one per second 
1: [0, 12, 31, … 24], 
… 
59: [10, 10, 1, … 16] 
} 
}
Current approaches 
1. Document approach – Advantages 
• Fast write: One insert x 60 updates 
• Fast fetch
Current approaches 
1. Document approach – Disadvantages 
• Fixed time windows 
• Single point per unit 
• How to pre-aggregate? 
• Relationships with the rest of the world? 
• Relationships between events?
Current approaches 
2. Graph Database 
• Nodes/Edges instead of tables 
• Index free adjacency 
• Fast traversal 
• Dynamic structure
Current approaches 
2. Graph approach: linked sequence 
e 
1 
next e 
e 
2 
next e 
next e 
3 
4 
5 
next 
(timestamp on vertex)
Current approaches 
2. Graph approach: linked sequence (tag 
based) 
e 
1 
e 
2 
nextTag1 
e 
3 
nextTag2 
e 
4 
nextTag1 
e 
5 
nextTag1 
nextTag2 
[Tag1, Tag2] [Tag1] 
[Tag1, Tag2] 
[Tag1] 
[Tag2]
Current approaches 
2. Graph approach: Hierarchy 
e 
1 
e 
2 
e6 
0 
1 
1 
8 
24 
2 60 … 
… 
Days 
Hours 
Minutes 
Seconds 
… 
e 
3
Current approaches 
2. Graph approach: mixed 
e 
1 
e 
2 
e6 
0 
1 
1 
8 
24 
2 60 … 
… 
Days 
Hours 
Minutes 
Seconds 
… 
e 
3
Current approaches 
1. Graph approach – Advantages 
• Flexible 
• Events can be connected together in different ways 
• You can connect events to other entities 
• Fast traversal of dynamic time windows 
• Fast aggregation (based on hierarchy)
Current approaches 
1. Graph approach – Disadvantages 
• Slow writes (vertex + edge + maintenance) 
• Not so fast reads
Can we mix different models and get 
all the advantages?
Can we mix all this with the rest of 
application logic?
Multi-Model!
• Document database (schema-free, complex 
properties) 
• Graph database (index-free adjacency, fast 
traversal) 
• SQL (extended) 
• Operational (schema - ACID) 
• OO concepts (Classes, inheritance, polymorphism) 
• REST/JSON interface 
• Native Javascript (extend query language, expose 
services, event hooks) 
• Distributed (Multi-master replica/sharding) 
architecture
OrientDB 
First step: put them together 
1 
1 
8 
24 
2 60 … 
Days 
Hours 
Minutes 
… 
{ 
0: 1000, 
1: 1500. 
… 
59: 96 
}
OrientDB 
First step: put them together 
1 
1 
8 
24 
2 60 … 
Days 
Hours 
Minutes 
… 
{ 
0: 1000, 
1: 1500. 
… 
59: 96 
} 
Graph 
Document <- IT’S A VERTEX TOO!!!
OrientDB 
First step: put them together 
1 
8 
24 
Days 
… Hours 
{ 
0: { 
0: 1000, 
1: 1500, 
… 
59: 210 
} 
1: { … } 
… 
59: { … } 
} 
Graph 
Document
Where should I stop? 
It depends on my domain and 
requirements.
OrientDB 
Result: 
• Same insert speed of Document approach 
• But with flexibility of a Graph 
• (as a side effect of mixing models, 
documents can also contain “pointers” to 
other elements of app domain)
OrientDB 
Second step: Pre-aggregate 
1 
1 
8 
24 
2 60 … 
Days 
Hours 
Minutes 
… 
{ 
0: 1000, 
1: 1500. 
… 
59: 96 
} 
Graph 
Document <- IT’S A VERTEX TOO!!!
OrientDB 
Second step: Pre-aggregate 
1 
1 
8 
24 
2 60 … 
Days 
Hours 
Minutes 
… 
{ 
0: 1000, 
1: 1500. 
… 
59: 96 
} 
Graph 
sum() 
Document <- IT’S A VERTEX TOO!!!
OrientDB 
Second step: Pre-aggregate 
1 
sum() 
1 
8 
24 
2 60 … 
Days 
Hours 
Minutes 
… 
{ 
0: 1000, 
1: 1500. 
… 
59: 96 
} 
Graph 
sum() 
Document <- IT’S A VERTEX TOO!!!
OrientDB 
How to aggregate 
Hooks: Server side triggers (Java or Javascript), 
executed when DB operations happen (eg. Insert 
or update) 
Java interface: 
Public RESULT onBeforeInsert(…); 
public void onAfterInsert(…); 
public RESULT onBeforeUpdate(…); 
public void onAfterUpdate(…);
OrientDB 
Aggregation logic 
• Second 0 -> insert 
• Second 1 -> update 
• … 
• Second 57 -> update 
• Second 58 -> update 
• Second 59 -> update + aggregate 
– Write aggregate value on minute vertex 
• Minute == 59? Calculate aggregate on hour vertex
OrientDB 
1 
1 
8 
24 
2 60 … 
Days 
Hours 
Minutes 
… 
{ 
0: 1, 
1: 12. 
… 
59: 3 
} 
sum = 1000 
sum = 15000 
sum = 300 
1 2 
incomplete 
complete 
sum = null 
sum = null
OrientDB 
Query logic: 
• Traverse from root node to specified level 
(filtering based on vertex data) 
• Is there aggregate value? 
– Yes: return it 
– No: go one level down and do the same 
Aggregation on a level will be VERY fast if you 
have horizontal edges!
OrientDB 
How to calculate aggregate values with a query 
Input params: 
- Root node (suppose it is #11:11) 
select sum(aggregateVal) from ( 
traverse out() from #11:11 
while in().aggregateVal is null 
) 
With the same logic you can query based on time 
windows
OrientDB 
Third step: Complex domains 
1 
1 2 60 … 
Hours 
Minutes 
{ 
0: {val: 1000}, 
1: {val: 1500}. 
… 
59: { 
val: 96, 
eventTags: [tag1, tag2] 
… 
} 
} 
Graph 
Document <- Enrich the domain
OrientDB 
Another use case: Event Categories and OO 
e 
1 
e 
2 
nextTag1 
e 
3 
nextTag2 
e 
4 
nextTag1 
e 
5 
nextTag1 
nextTag2 
[Tag1, Tag2, Tag3] [Tag1] 
[Tag1, Tag2] 
[Tag1] 
[Tag2] 
nextTag3 
e 
3 
[Tag3]
OrientDB 
Another use case: Event Categories and OO 
Suppose tags are hierarchical categories 
(Classes for vertices and/or edges) 
nextTAG 
nextTagX nextTag3 
nextTag1 nextTag2
OrientDB 
Subset of events 
TRAVERSE out(‘nextTag1’) FROM <e1> 
e 
1 
e 
2 
nextTag1 
e 
4 
nextTag1 
e 
5 
nextTag1 
[Tag1, Tag2, Tag3] [Tag1] 
[Tag1, Tag2] 
[Tag1]
OrientDB 
Subset of events 
TRAVERSE out(‘nextTag2’) FROM <e1> 
e 
1 
nextTag1 
nextTag2 e 
e 
3 
5 
nextTag2 
[Tag1, Tag2, Tag3] 
[Tag1, Tag2] 
[Tag2]
OrientDB 
Subset of events (Polymorphic!!!) 
TRAVERSE out(‘nextTagX’) FROM <e1> 
e 
1 
e 
2 
nextTag1 
e 
3 
nextTag2 
e 
4 
nextTag1 
e 
5 
nextTag1 
nextTag2 
[Tag1, Tag2, Tag3] [Tag1] 
[Tag1, Tag2] 
[Tag1] 
[Tag2]
Connect all this with the rest of your 
application domain
You’ll see, everything will get more 
complex: you will discover new time-related 
dimensions (speed, 
position…) and new needs (complex 
forecasting)
CHASE!
Chase 
• Your target is running away 
• You have informers that track his moves 
(coordinates in a point of time) and give 
you additional (unstructured) information 
• You have a street map 
• You want to: 
– Catch him ASAP 
– Predict his moves 
– Be sure that he is inside an area
Chase
Chase
Chase 
• Map is made of points and distances 
• You also have speed limits for streets 
point1 
pointN Distance: 1Km 
Max speed: 70Km/h 
Distance: 2Km 
Max speed: 120Km/h 
Distance: 8Km 
Max speed: 90Km/h 
Map point 
Street
Chase 
• Map is made of points and distances 
• You also have speed limits for streets 
• Distance / Speed = TIME!!!
Chase 
You have a time series of your target’s moves 
{ 
{ 
Timestamp: 29/11/2014 17:15:00 
LAT: 19,12223 
LON: 42,134 
} 
Timestamp: 29/11/2014 17:55:00 
LAT: 19,12223 
LON: 42,134 
} 
Event 
Event seqence 
{ 
Timestamp: 29/11/2014 17:55:00 
LAT: 19,12223 
LON: 42,134 
}
Chase 
You have a time series of your target’s moves 
21/11/2014 
2:35:00 PM 
20/11/2014 
1:20:00 PM 
Map point 
Street
Chase 
You have a time series of your target’s moves 
21/11/2014 
14:35:00 
20/11/2014 
13:20:00 
Event 
Map point 
Where 
Event seqence 
Street 
29/11/2014 
17:55:00
Chase 
Vertices and edges are also documents 
So you can store complex information inside them 
{ 
timestamp: 22213989487987, 
lat: xxxx, 
lon: yyy, 
informer: 15, 
additional: { 
speed: 120, 
description: “the target was in a car” 
car: { 
model: “Fiat 500”, 
licensePlate: “AA 123 BB” 
} 
} 
}
Chase 
Now you can: 
• Predict his moves (eg. statistical methods, 
interpolation on lat/lon + time) 
• Calculate how far he can be (based on last 
position, avg speed and street data) 
• Reach him quickly (shortest path, Dijkstra) 
• … intelligence?
Chase 
But to have all this you need: 
• An easy way for your informers to send 
time series events 
Hint: REST interface 
With OrientDB you can expose Javascript 
functions as REST services!
Chase 
And you need: 
• An extended query language 
Eg. 
TRAVERSE out(“street”) FROM ( 
SELECT out(“point”) FROM #11:11 
// my last event 
) WHILE canBeReached($current, #11:11) 
(where he could be)
Chase 
With OrientDB you can write 
function canBeReached(node, event) 
In Javascript and use it in your queries
Chase 
It’s just a game, but think about: 
• Fraud detection 
• Traffic routing 
• Multi-dimensional analytics 
• Forecasting 
• …
Summary
One model is not enough 
One of most common issues of my customers 
is: 
“I have a zoo of technologies in my application 
stack, and it’s getting worse every day” 
My answer is: Multi-Model DB
One model is not enough 
One of most common issues of my customers 
is: 
“I have a zoo of technologies in my application 
stack, and it’s getting worse every day” 
My answer is: Multi-Model DB 
of course ;-)
From: 
“choose the right data model for your 
use case” 
To: 
“Your application has multiple data 
models, you need all of them!”
This is NoSQL 2.0!!!
Thank you! 
@ldellaquila 
l.dellaquila@orientechnologies.com

More Related Content

What's hot

Apache Arrow and Python: The latest
Apache Arrow and Python: The latestApache Arrow and Python: The latest
Apache Arrow and Python: The latest
Wes McKinney
 
DNS Security Presentation ISSA
DNS Security Presentation ISSADNS Security Presentation ISSA
DNS Security Presentation ISSA
Srikrupa Srivatsan
 
Apache Iceberg Presentation for the St. Louis Big Data IDEA
Apache Iceberg Presentation for the St. Louis Big Data IDEAApache Iceberg Presentation for the St. Louis Big Data IDEA
Apache Iceberg Presentation for the St. Louis Big Data IDEA
Adam Doyle
 
Apache Spark Architecture
Apache Spark ArchitectureApache Spark Architecture
Apache Spark Architecture
Alexey Grishchenko
 
Apache Spark Introduction and Resilient Distributed Dataset basics and deep dive
Apache Spark Introduction and Resilient Distributed Dataset basics and deep diveApache Spark Introduction and Resilient Distributed Dataset basics and deep dive
Apache Spark Introduction and Resilient Distributed Dataset basics and deep dive
Sachin Aggarwal
 
Enabling Vectorized Engine in Apache Spark
Enabling Vectorized Engine in Apache SparkEnabling Vectorized Engine in Apache Spark
Enabling Vectorized Engine in Apache Spark
Kazuaki Ishizaki
 
Inside Parquet Format
Inside Parquet FormatInside Parquet Format
Inside Parquet Format
Yue Chen
 
Hudi architecture, fundamentals and capabilities
Hudi architecture, fundamentals and capabilitiesHudi architecture, fundamentals and capabilities
Hudi architecture, fundamentals and capabilities
Nishith Agarwal
 
Introduction and Overview of Apache Kafka, TriHUG July 23, 2013
Introduction and Overview of Apache Kafka, TriHUG July 23, 2013Introduction and Overview of Apache Kafka, TriHUG July 23, 2013
Introduction and Overview of Apache Kafka, TriHUG July 23, 2013
mumrah
 
Ibm db2 big sql
Ibm db2 big sqlIbm db2 big sql
Ibm db2 big sql
ModusOptimum
 
Spark Shuffle Deep Dive (Explained In Depth) - How Shuffle Works in Spark
Spark Shuffle Deep Dive (Explained In Depth) - How Shuffle Works in SparkSpark Shuffle Deep Dive (Explained In Depth) - How Shuffle Works in Spark
Spark Shuffle Deep Dive (Explained In Depth) - How Shuffle Works in Spark
Bo Yang
 
Airflow at lyft for Airflow summit 2020 conference
Airflow at lyft for Airflow summit 2020 conferenceAirflow at lyft for Airflow summit 2020 conference
Airflow at lyft for Airflow summit 2020 conference
Tao Feng
 
[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅
NAVER D2
 
Tech Talk: RocksDB Slides by Dhruba Borthakur & Haobo Xu of Facebook
Tech Talk: RocksDB Slides by Dhruba Borthakur & Haobo Xu of FacebookTech Talk: RocksDB Slides by Dhruba Borthakur & Haobo Xu of Facebook
Tech Talk: RocksDB Slides by Dhruba Borthakur & Haobo Xu of Facebook
The Hive
 
Applied Computer Science Concepts in Android
Applied Computer Science Concepts in AndroidApplied Computer Science Concepts in Android
Applied Computer Science Concepts in Android
National Cheng Kung University
 
Node Labels in YARN
Node Labels in YARNNode Labels in YARN
Node Labels in YARN
DataWorks Summit
 
Best Practices of running PostgreSQL in Virtual Environments
Best Practices of running PostgreSQL in Virtual EnvironmentsBest Practices of running PostgreSQL in Virtual Environments
Best Practices of running PostgreSQL in Virtual Environments
Jignesh Shah
 
Apache Kafka’s Transactions in the Wild! Developing an exactly-once KafkaSink...
Apache Kafka’s Transactions in the Wild! Developing an exactly-once KafkaSink...Apache Kafka’s Transactions in the Wild! Developing an exactly-once KafkaSink...
Apache Kafka’s Transactions in the Wild! Developing an exactly-once KafkaSink...
HostedbyConfluent
 
Delivering the Future of High-Performance Computing
Delivering the Future of High-Performance ComputingDelivering the Future of High-Performance Computing
Delivering the Future of High-Performance Computing
AMD
 
Optimizing Apache Spark SQL Joins
Optimizing Apache Spark SQL JoinsOptimizing Apache Spark SQL Joins
Optimizing Apache Spark SQL Joins
Databricks
 

What's hot (20)

Apache Arrow and Python: The latest
Apache Arrow and Python: The latestApache Arrow and Python: The latest
Apache Arrow and Python: The latest
 
DNS Security Presentation ISSA
DNS Security Presentation ISSADNS Security Presentation ISSA
DNS Security Presentation ISSA
 
Apache Iceberg Presentation for the St. Louis Big Data IDEA
Apache Iceberg Presentation for the St. Louis Big Data IDEAApache Iceberg Presentation for the St. Louis Big Data IDEA
Apache Iceberg Presentation for the St. Louis Big Data IDEA
 
Apache Spark Architecture
Apache Spark ArchitectureApache Spark Architecture
Apache Spark Architecture
 
Apache Spark Introduction and Resilient Distributed Dataset basics and deep dive
Apache Spark Introduction and Resilient Distributed Dataset basics and deep diveApache Spark Introduction and Resilient Distributed Dataset basics and deep dive
Apache Spark Introduction and Resilient Distributed Dataset basics and deep dive
 
Enabling Vectorized Engine in Apache Spark
Enabling Vectorized Engine in Apache SparkEnabling Vectorized Engine in Apache Spark
Enabling Vectorized Engine in Apache Spark
 
Inside Parquet Format
Inside Parquet FormatInside Parquet Format
Inside Parquet Format
 
Hudi architecture, fundamentals and capabilities
Hudi architecture, fundamentals and capabilitiesHudi architecture, fundamentals and capabilities
Hudi architecture, fundamentals and capabilities
 
Introduction and Overview of Apache Kafka, TriHUG July 23, 2013
Introduction and Overview of Apache Kafka, TriHUG July 23, 2013Introduction and Overview of Apache Kafka, TriHUG July 23, 2013
Introduction and Overview of Apache Kafka, TriHUG July 23, 2013
 
Ibm db2 big sql
Ibm db2 big sqlIbm db2 big sql
Ibm db2 big sql
 
Spark Shuffle Deep Dive (Explained In Depth) - How Shuffle Works in Spark
Spark Shuffle Deep Dive (Explained In Depth) - How Shuffle Works in SparkSpark Shuffle Deep Dive (Explained In Depth) - How Shuffle Works in Spark
Spark Shuffle Deep Dive (Explained In Depth) - How Shuffle Works in Spark
 
Airflow at lyft for Airflow summit 2020 conference
Airflow at lyft for Airflow summit 2020 conferenceAirflow at lyft for Airflow summit 2020 conference
Airflow at lyft for Airflow summit 2020 conference
 
[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅
 
Tech Talk: RocksDB Slides by Dhruba Borthakur & Haobo Xu of Facebook
Tech Talk: RocksDB Slides by Dhruba Borthakur & Haobo Xu of FacebookTech Talk: RocksDB Slides by Dhruba Borthakur & Haobo Xu of Facebook
Tech Talk: RocksDB Slides by Dhruba Borthakur & Haobo Xu of Facebook
 
Applied Computer Science Concepts in Android
Applied Computer Science Concepts in AndroidApplied Computer Science Concepts in Android
Applied Computer Science Concepts in Android
 
Node Labels in YARN
Node Labels in YARNNode Labels in YARN
Node Labels in YARN
 
Best Practices of running PostgreSQL in Virtual Environments
Best Practices of running PostgreSQL in Virtual EnvironmentsBest Practices of running PostgreSQL in Virtual Environments
Best Practices of running PostgreSQL in Virtual Environments
 
Apache Kafka’s Transactions in the Wild! Developing an exactly-once KafkaSink...
Apache Kafka’s Transactions in the Wild! Developing an exactly-once KafkaSink...Apache Kafka’s Transactions in the Wild! Developing an exactly-once KafkaSink...
Apache Kafka’s Transactions in the Wild! Developing an exactly-once KafkaSink...
 
Delivering the Future of High-Performance Computing
Delivering the Future of High-Performance ComputingDelivering the Future of High-Performance Computing
Delivering the Future of High-Performance Computing
 
Optimizing Apache Spark SQL Joins
Optimizing Apache Spark SQL JoinsOptimizing Apache Spark SQL Joins
Optimizing Apache Spark SQL Joins
 

Viewers also liked

Time Series With OrientDB - Fosdem 2015
Time Series With OrientDB - Fosdem 2015Time Series With OrientDB - Fosdem 2015
Time Series With OrientDB - Fosdem 2015
wolf4ood
 
Geospatial Graphs made easy with OrientDB - Codemotion Milan 2016
Geospatial Graphs made easy with OrientDB - Codemotion Milan 2016Geospatial Graphs made easy with OrientDB - Codemotion Milan 2016
Geospatial Graphs made easy with OrientDB - Codemotion Milan 2016
Luigi Dell'Aquila
 
General trends in skill supply and demand on the labour market
General trends in skill supply and demand on the labour marketGeneral trends in skill supply and demand on the labour market
General trends in skill supply and demand on the labour market
European Economic and Social Committee - SOC Section
 
Geospatial Graphs made easy with OrientDB - Codemotion Spain
Geospatial Graphs made easy with OrientDB - Codemotion SpainGeospatial Graphs made easy with OrientDB - Codemotion Spain
Geospatial Graphs made easy with OrientDB - Codemotion Spain
Luigi Dell'Aquila
 
OrientDB Distributed Architecture v2.0
OrientDB Distributed Architecture v2.0OrientDB Distributed Architecture v2.0
OrientDB Distributed Architecture v2.0
Orient Technologies
 
Determinants of Demand and Supply in Tourism
Determinants of Demand and Supply in TourismDeterminants of Demand and Supply in Tourism
Determinants of Demand and Supply in Tourism
Chinmoy Saikia
 
Demand analysis
Demand analysisDemand analysis
Demand analysis
metnashikiom2011-13
 
Event Driven Architecture
Event Driven ArchitectureEvent Driven Architecture
Event Driven Architecture
Stefan Norberg
 

Viewers also liked (9)

Time Series With OrientDB - Fosdem 2015
Time Series With OrientDB - Fosdem 2015Time Series With OrientDB - Fosdem 2015
Time Series With OrientDB - Fosdem 2015
 
Geospatial Graphs made easy with OrientDB - Codemotion Milan 2016
Geospatial Graphs made easy with OrientDB - Codemotion Milan 2016Geospatial Graphs made easy with OrientDB - Codemotion Milan 2016
Geospatial Graphs made easy with OrientDB - Codemotion Milan 2016
 
General trends in skill supply and demand on the labour market
General trends in skill supply and demand on the labour marketGeneral trends in skill supply and demand on the labour market
General trends in skill supply and demand on the labour market
 
Geospatial Graphs made easy with OrientDB - Codemotion Spain
Geospatial Graphs made easy with OrientDB - Codemotion SpainGeospatial Graphs made easy with OrientDB - Codemotion Spain
Geospatial Graphs made easy with OrientDB - Codemotion Spain
 
OrientDB Distributed Architecture v2.0
OrientDB Distributed Architecture v2.0OrientDB Distributed Architecture v2.0
OrientDB Distributed Architecture v2.0
 
Determinants of Demand and Supply in Tourism
Determinants of Demand and Supply in TourismDeterminants of Demand and Supply in Tourism
Determinants of Demand and Supply in Tourism
 
Demand analysis
Demand analysisDemand analysis
Demand analysis
 
Demand Analysis
Demand  AnalysisDemand  Analysis
Demand Analysis
 
Event Driven Architecture
Event Driven ArchitectureEvent Driven Architecture
Event Driven Architecture
 

Similar to OrientDB - Time Series and Event Sequences - Codemotion Milan 2014

Il tempo vola: rappresentare e manipolare sequenze di eventi e time series co...
Il tempo vola: rappresentare e manipolare sequenze di eventi e time series co...Il tempo vola: rappresentare e manipolare sequenze di eventi e time series co...
Il tempo vola: rappresentare e manipolare sequenze di eventi e time series co...
Codemotion
 
Intel realtime analytics_spark
Intel realtime analytics_sparkIntel realtime analytics_spark
Intel realtime analytics_sparkGeetanjali G
 
Dataflow - A Unified Model for Batch and Streaming Data Processing
Dataflow - A Unified Model for Batch and Streaming Data ProcessingDataflow - A Unified Model for Batch and Streaming Data Processing
Dataflow - A Unified Model for Batch and Streaming Data Processing
DoiT International
 
Big Data Day LA 2016/ Big Data Track - Portable Stream and Batch Processing w...
Big Data Day LA 2016/ Big Data Track - Portable Stream and Batch Processing w...Big Data Day LA 2016/ Big Data Track - Portable Stream and Batch Processing w...
Big Data Day LA 2016/ Big Data Track - Portable Stream and Batch Processing w...
Data Con LA
 
Streaming SQL Foundations: Why I ❤ Streams+Tables
Streaming SQL Foundations: Why I ❤ Streams+TablesStreaming SQL Foundations: Why I ❤ Streams+Tables
Streaming SQL Foundations: Why I ❤ Streams+Tables
C4Media
 
Cloud Dataflow - A Unified Model for Batch and Streaming Data Processing
Cloud Dataflow - A Unified Model for Batch and Streaming Data ProcessingCloud Dataflow - A Unified Model for Batch and Streaming Data Processing
Cloud Dataflow - A Unified Model for Batch and Streaming Data Processing
DoiT International
 
MongoDB for Time Series Data: Setting the Stage for Sensor Management
MongoDB for Time Series Data: Setting the Stage for Sensor ManagementMongoDB for Time Series Data: Setting the Stage for Sensor Management
MongoDB for Time Series Data: Setting the Stage for Sensor ManagementMongoDB
 
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...
Flink Forward
 
MongoDB World 2018: Overnight to 60 Seconds: An IOT ETL Performance Case Study
MongoDB World 2018: Overnight to 60 Seconds: An IOT ETL Performance Case StudyMongoDB World 2018: Overnight to 60 Seconds: An IOT ETL Performance Case Study
MongoDB World 2018: Overnight to 60 Seconds: An IOT ETL Performance Case Study
MongoDB
 
So you think you can stream.pptx
So you think you can stream.pptxSo you think you can stream.pptx
So you think you can stream.pptx
Prakash Chockalingam
 
cb streams - gavin pickin
cb streams - gavin pickincb streams - gavin pickin
cb streams - gavin pickin
Ortus Solutions, Corp
 
Foundations of streaming SQL: stream & table theory
Foundations of streaming SQL: stream & table theoryFoundations of streaming SQL: stream & table theory
Foundations of streaming SQL: stream & table theory
DataWorks Summit
 
Lifting the hood on spark streaming - StampedeCon 2015
Lifting the hood on spark streaming - StampedeCon 2015Lifting the hood on spark streaming - StampedeCon 2015
Lifting the hood on spark streaming - StampedeCon 2015
StampedeCon
 
PEARC17: Visual exploration and analysis of time series earthquake data
PEARC17: Visual exploration and analysis of time series earthquake dataPEARC17: Visual exploration and analysis of time series earthquake data
PEARC17: Visual exploration and analysis of time series earthquake data
Amit Chourasia
 
MongoDB for Time Series Data
MongoDB for Time Series DataMongoDB for Time Series Data
MongoDB for Time Series Data
MongoDB
 
MapReduce basics
MapReduce basicsMapReduce basics
MapReduce basics
Harisankar H
 
Streaming SQL to unify batch and stream processing: Theory and practice with ...
Streaming SQL to unify batch and stream processing: Theory and practice with ...Streaming SQL to unify batch and stream processing: Theory and practice with ...
Streaming SQL to unify batch and stream processing: Theory and practice with ...
Fabian Hueske
 
Have your cake and eat it too, further dispelling the myths of the lambda arc...
Have your cake and eat it too, further dispelling the myths of the lambda arc...Have your cake and eat it too, further dispelling the myths of the lambda arc...
Have your cake and eat it too, further dispelling the myths of the lambda arc...
Dimos Raptis
 
Intro to Spark - for Denver Big Data Meetup
Intro to Spark - for Denver Big Data MeetupIntro to Spark - for Denver Big Data Meetup
Intro to Spark - for Denver Big Data MeetupGwen (Chen) Shapira
 
Re-Engineering PostgreSQL as a Time-Series Database
Re-Engineering PostgreSQL as a Time-Series DatabaseRe-Engineering PostgreSQL as a Time-Series Database
Re-Engineering PostgreSQL as a Time-Series Database
All Things Open
 

Similar to OrientDB - Time Series and Event Sequences - Codemotion Milan 2014 (20)

Il tempo vola: rappresentare e manipolare sequenze di eventi e time series co...
Il tempo vola: rappresentare e manipolare sequenze di eventi e time series co...Il tempo vola: rappresentare e manipolare sequenze di eventi e time series co...
Il tempo vola: rappresentare e manipolare sequenze di eventi e time series co...
 
Intel realtime analytics_spark
Intel realtime analytics_sparkIntel realtime analytics_spark
Intel realtime analytics_spark
 
Dataflow - A Unified Model for Batch and Streaming Data Processing
Dataflow - A Unified Model for Batch and Streaming Data ProcessingDataflow - A Unified Model for Batch and Streaming Data Processing
Dataflow - A Unified Model for Batch and Streaming Data Processing
 
Big Data Day LA 2016/ Big Data Track - Portable Stream and Batch Processing w...
Big Data Day LA 2016/ Big Data Track - Portable Stream and Batch Processing w...Big Data Day LA 2016/ Big Data Track - Portable Stream and Batch Processing w...
Big Data Day LA 2016/ Big Data Track - Portable Stream and Batch Processing w...
 
Streaming SQL Foundations: Why I ❤ Streams+Tables
Streaming SQL Foundations: Why I ❤ Streams+TablesStreaming SQL Foundations: Why I ❤ Streams+Tables
Streaming SQL Foundations: Why I ❤ Streams+Tables
 
Cloud Dataflow - A Unified Model for Batch and Streaming Data Processing
Cloud Dataflow - A Unified Model for Batch and Streaming Data ProcessingCloud Dataflow - A Unified Model for Batch and Streaming Data Processing
Cloud Dataflow - A Unified Model for Batch and Streaming Data Processing
 
MongoDB for Time Series Data: Setting the Stage for Sensor Management
MongoDB for Time Series Data: Setting the Stage for Sensor ManagementMongoDB for Time Series Data: Setting the Stage for Sensor Management
MongoDB for Time Series Data: Setting the Stage for Sensor Management
 
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...
 
MongoDB World 2018: Overnight to 60 Seconds: An IOT ETL Performance Case Study
MongoDB World 2018: Overnight to 60 Seconds: An IOT ETL Performance Case StudyMongoDB World 2018: Overnight to 60 Seconds: An IOT ETL Performance Case Study
MongoDB World 2018: Overnight to 60 Seconds: An IOT ETL Performance Case Study
 
So you think you can stream.pptx
So you think you can stream.pptxSo you think you can stream.pptx
So you think you can stream.pptx
 
cb streams - gavin pickin
cb streams - gavin pickincb streams - gavin pickin
cb streams - gavin pickin
 
Foundations of streaming SQL: stream & table theory
Foundations of streaming SQL: stream & table theoryFoundations of streaming SQL: stream & table theory
Foundations of streaming SQL: stream & table theory
 
Lifting the hood on spark streaming - StampedeCon 2015
Lifting the hood on spark streaming - StampedeCon 2015Lifting the hood on spark streaming - StampedeCon 2015
Lifting the hood on spark streaming - StampedeCon 2015
 
PEARC17: Visual exploration and analysis of time series earthquake data
PEARC17: Visual exploration and analysis of time series earthquake dataPEARC17: Visual exploration and analysis of time series earthquake data
PEARC17: Visual exploration and analysis of time series earthquake data
 
MongoDB for Time Series Data
MongoDB for Time Series DataMongoDB for Time Series Data
MongoDB for Time Series Data
 
MapReduce basics
MapReduce basicsMapReduce basics
MapReduce basics
 
Streaming SQL to unify batch and stream processing: Theory and practice with ...
Streaming SQL to unify batch and stream processing: Theory and practice with ...Streaming SQL to unify batch and stream processing: Theory and practice with ...
Streaming SQL to unify batch and stream processing: Theory and practice with ...
 
Have your cake and eat it too, further dispelling the myths of the lambda arc...
Have your cake and eat it too, further dispelling the myths of the lambda arc...Have your cake and eat it too, further dispelling the myths of the lambda arc...
Have your cake and eat it too, further dispelling the myths of the lambda arc...
 
Intro to Spark - for Denver Big Data Meetup
Intro to Spark - for Denver Big Data MeetupIntro to Spark - for Denver Big Data Meetup
Intro to Spark - for Denver Big Data Meetup
 
Re-Engineering PostgreSQL as a Time-Series Database
Re-Engineering PostgreSQL as a Time-Series DatabaseRe-Engineering PostgreSQL as a Time-Series Database
Re-Engineering PostgreSQL as a Time-Series Database
 

More from Luigi Dell'Aquila

GeeCON Prague 2016 - Geospatial Graphs made easy with OrientDB
GeeCON Prague 2016 - Geospatial Graphs made easy with OrientDBGeeCON Prague 2016 - Geospatial Graphs made easy with OrientDB
GeeCON Prague 2016 - Geospatial Graphs made easy with OrientDB
Luigi Dell'Aquila
 
OrientDB - the 2nd generation of (Multi-Model) NoSQL - Codemotion Warsaw 2016
OrientDB - the 2nd generation of (Multi-Model) NoSQL - Codemotion Warsaw 2016OrientDB - the 2nd generation of (Multi-Model) NoSQL - Codemotion Warsaw 2016
OrientDB - the 2nd generation of (Multi-Model) NoSQL - Codemotion Warsaw 2016
Luigi Dell'Aquila
 
Geospatial Graphs made easy with OrientDB - Codemotion Warsaw 2016
Geospatial Graphs made easy with OrientDB - Codemotion Warsaw 2016Geospatial Graphs made easy with OrientDB - Codemotion Warsaw 2016
Geospatial Graphs made easy with OrientDB - Codemotion Warsaw 2016
Luigi Dell'Aquila
 
OrientDB - the 2nd generation of (Multi-Model) NoSQL - J On The Beach 2016
OrientDB - the 2nd generation of (Multi-Model) NoSQL  - J On The Beach 2016OrientDB - the 2nd generation of (Multi-Model) NoSQL  - J On The Beach 2016
OrientDB - the 2nd generation of (Multi-Model) NoSQL - J On The Beach 2016
Luigi Dell'Aquila
 
OrientDB - Voxxed Days Berlin 2016
OrientDB - Voxxed Days Berlin 2016OrientDB - Voxxed Days Berlin 2016
OrientDB - Voxxed Days Berlin 2016
Luigi Dell'Aquila
 
OrientDB - Voxxed Days Berlin 2016
OrientDB - Voxxed Days Berlin 2016OrientDB - Voxxed Days Berlin 2016
OrientDB - Voxxed Days Berlin 2016
Luigi Dell'Aquila
 
OrientDB - the 2nd generation of (Multi-Model) NoSQL - Devoxx Belgium 2015
OrientDB - the 2nd generation  of  (Multi-Model) NoSQL - Devoxx Belgium 2015OrientDB - the 2nd generation  of  (Multi-Model) NoSQL - Devoxx Belgium 2015
OrientDB - the 2nd generation of (Multi-Model) NoSQL - Devoxx Belgium 2015
Luigi Dell'Aquila
 
OrientDB - the 2nd generation of (Multi-Model) NoSQL
OrientDB - the 2nd generation  of  (Multi-Model) NoSQLOrientDB - the 2nd generation  of  (Multi-Model) NoSQL
OrientDB - the 2nd generation of (Multi-Model) NoSQL
Luigi Dell'Aquila
 
​Fully Reactive - from Data to UI with OrientDB + Node.js + Socket.io
​Fully Reactive - from Data to UI with OrientDB + Node.js + Socket.io​Fully Reactive - from Data to UI with OrientDB + Node.js + Socket.io
​Fully Reactive - from Data to UI with OrientDB + Node.js + Socket.io
Luigi Dell'Aquila
 
OrientDB Codemotion 2014
OrientDB Codemotion 2014OrientDB Codemotion 2014
OrientDB Codemotion 2014
Luigi Dell'Aquila
 
OrientDB - cloud barcamp Libero Cloud
OrientDB - cloud barcamp Libero CloudOrientDB - cloud barcamp Libero Cloud
OrientDB - cloud barcamp Libero Cloud
Luigi Dell'Aquila
 
Orient DB on the cloud - Cloud Party 2013
Orient DB on the cloud - Cloud Party 2013Orient DB on the cloud - Cloud Party 2013
Orient DB on the cloud - Cloud Party 2013
Luigi Dell'Aquila
 

More from Luigi Dell'Aquila (13)

GeeCON Prague 2016 - Geospatial Graphs made easy with OrientDB
GeeCON Prague 2016 - Geospatial Graphs made easy with OrientDBGeeCON Prague 2016 - Geospatial Graphs made easy with OrientDB
GeeCON Prague 2016 - Geospatial Graphs made easy with OrientDB
 
OrientDB - the 2nd generation of (Multi-Model) NoSQL - Codemotion Warsaw 2016
OrientDB - the 2nd generation of (Multi-Model) NoSQL - Codemotion Warsaw 2016OrientDB - the 2nd generation of (Multi-Model) NoSQL - Codemotion Warsaw 2016
OrientDB - the 2nd generation of (Multi-Model) NoSQL - Codemotion Warsaw 2016
 
Geospatial Graphs made easy with OrientDB - Codemotion Warsaw 2016
Geospatial Graphs made easy with OrientDB - Codemotion Warsaw 2016Geospatial Graphs made easy with OrientDB - Codemotion Warsaw 2016
Geospatial Graphs made easy with OrientDB - Codemotion Warsaw 2016
 
OrientDB - the 2nd generation of (Multi-Model) NoSQL - J On The Beach 2016
OrientDB - the 2nd generation of (Multi-Model) NoSQL  - J On The Beach 2016OrientDB - the 2nd generation of (Multi-Model) NoSQL  - J On The Beach 2016
OrientDB - the 2nd generation of (Multi-Model) NoSQL - J On The Beach 2016
 
OrientDB - Voxxed Days Berlin 2016
OrientDB - Voxxed Days Berlin 2016OrientDB - Voxxed Days Berlin 2016
OrientDB - Voxxed Days Berlin 2016
 
OrientDB - Voxxed Days Berlin 2016
OrientDB - Voxxed Days Berlin 2016OrientDB - Voxxed Days Berlin 2016
OrientDB - Voxxed Days Berlin 2016
 
OrientDB - the 2nd generation of (Multi-Model) NoSQL - Devoxx Belgium 2015
OrientDB - the 2nd generation  of  (Multi-Model) NoSQL - Devoxx Belgium 2015OrientDB - the 2nd generation  of  (Multi-Model) NoSQL - Devoxx Belgium 2015
OrientDB - the 2nd generation of (Multi-Model) NoSQL - Devoxx Belgium 2015
 
OrientDB - the 2nd generation of (Multi-Model) NoSQL
OrientDB - the 2nd generation  of  (Multi-Model) NoSQLOrientDB - the 2nd generation  of  (Multi-Model) NoSQL
OrientDB - the 2nd generation of (Multi-Model) NoSQL
 
​Fully Reactive - from Data to UI with OrientDB + Node.js + Socket.io
​Fully Reactive - from Data to UI with OrientDB + Node.js + Socket.io​Fully Reactive - from Data to UI with OrientDB + Node.js + Socket.io
​Fully Reactive - from Data to UI with OrientDB + Node.js + Socket.io
 
OrientDB meetup roma 2014
OrientDB meetup roma 2014OrientDB meetup roma 2014
OrientDB meetup roma 2014
 
OrientDB Codemotion 2014
OrientDB Codemotion 2014OrientDB Codemotion 2014
OrientDB Codemotion 2014
 
OrientDB - cloud barcamp Libero Cloud
OrientDB - cloud barcamp Libero CloudOrientDB - cloud barcamp Libero Cloud
OrientDB - cloud barcamp Libero Cloud
 
Orient DB on the cloud - Cloud Party 2013
Orient DB on the cloud - Cloud Party 2013Orient DB on the cloud - Cloud Party 2013
Orient DB on the cloud - Cloud Party 2013
 

Recently uploaded

一比一原版(UofS毕业证书)萨省大学毕业证如何办理
一比一原版(UofS毕业证书)萨省大学毕业证如何办理一比一原版(UofS毕业证书)萨省大学毕业证如何办理
一比一原版(UofS毕业证书)萨省大学毕业证如何办理
v3tuleee
 
Empowering Data Analytics Ecosystem.pptx
Empowering Data Analytics Ecosystem.pptxEmpowering Data Analytics Ecosystem.pptx
Empowering Data Analytics Ecosystem.pptx
benishzehra469
 
一比一原版(ArtEZ毕业证)ArtEZ艺术学院毕业证成绩单
一比一原版(ArtEZ毕业证)ArtEZ艺术学院毕业证成绩单一比一原版(ArtEZ毕业证)ArtEZ艺术学院毕业证成绩单
一比一原版(ArtEZ毕业证)ArtEZ艺术学院毕业证成绩单
vcaxypu
 
The affect of service quality and online reviews on customer loyalty in the E...
The affect of service quality and online reviews on customer loyalty in the E...The affect of service quality and online reviews on customer loyalty in the E...
The affect of service quality and online reviews on customer loyalty in the E...
jerlynmaetalle
 
Criminal IP - Threat Hunting Webinar.pdf
Criminal IP - Threat Hunting Webinar.pdfCriminal IP - Threat Hunting Webinar.pdf
Criminal IP - Threat Hunting Webinar.pdf
Criminal IP
 
一比一原版(NYU毕业证)纽约大学毕业证成绩单
一比一原版(NYU毕业证)纽约大学毕业证成绩单一比一原版(NYU毕业证)纽约大学毕业证成绩单
一比一原版(NYU毕业证)纽约大学毕业证成绩单
ewymefz
 
Chatty Kathy - UNC Bootcamp Final Project Presentation - Final Version - 5.23...
Chatty Kathy - UNC Bootcamp Final Project Presentation - Final Version - 5.23...Chatty Kathy - UNC Bootcamp Final Project Presentation - Final Version - 5.23...
Chatty Kathy - UNC Bootcamp Final Project Presentation - Final Version - 5.23...
John Andrews
 
Adjusting primitives for graph : SHORT REPORT / NOTES
Adjusting primitives for graph : SHORT REPORT / NOTESAdjusting primitives for graph : SHORT REPORT / NOTES
Adjusting primitives for graph : SHORT REPORT / NOTES
Subhajit Sahu
 
原版制作(Deakin毕业证书)迪肯大学毕业证学位证一模一样
原版制作(Deakin毕业证书)迪肯大学毕业证学位证一模一样原版制作(Deakin毕业证书)迪肯大学毕业证学位证一模一样
原版制作(Deakin毕业证书)迪肯大学毕业证学位证一模一样
u86oixdj
 
Criminal IP - Threat Hunting Webinar.pdf
Criminal IP - Threat Hunting Webinar.pdfCriminal IP - Threat Hunting Webinar.pdf
Criminal IP - Threat Hunting Webinar.pdf
Criminal IP
 
Opendatabay - Open Data Marketplace.pptx
Opendatabay - Open Data Marketplace.pptxOpendatabay - Open Data Marketplace.pptx
Opendatabay - Open Data Marketplace.pptx
Opendatabay
 
哪里卖(usq毕业证书)南昆士兰大学毕业证研究生文凭证书托福证书原版一模一样
哪里卖(usq毕业证书)南昆士兰大学毕业证研究生文凭证书托福证书原版一模一样哪里卖(usq毕业证书)南昆士兰大学毕业证研究生文凭证书托福证书原版一模一样
哪里卖(usq毕业证书)南昆士兰大学毕业证研究生文凭证书托福证书原版一模一样
axoqas
 
一比一原版(UPenn毕业证)宾夕法尼亚大学毕业证成绩单
一比一原版(UPenn毕业证)宾夕法尼亚大学毕业证成绩单一比一原版(UPenn毕业证)宾夕法尼亚大学毕业证成绩单
一比一原版(UPenn毕业证)宾夕法尼亚大学毕业证成绩单
ewymefz
 
Malana- Gimlet Market Analysis (Portfolio 2)
Malana- Gimlet Market Analysis (Portfolio 2)Malana- Gimlet Market Analysis (Portfolio 2)
Malana- Gimlet Market Analysis (Portfolio 2)
TravisMalana
 
standardisation of garbhpala offhgfffghh
standardisation of garbhpala offhgfffghhstandardisation of garbhpala offhgfffghh
standardisation of garbhpala offhgfffghh
ArpitMalhotra16
 
Quantitative Data AnalysisReliability Analysis (Cronbach Alpha) Common Method...
Quantitative Data AnalysisReliability Analysis (Cronbach Alpha) Common Method...Quantitative Data AnalysisReliability Analysis (Cronbach Alpha) Common Method...
Quantitative Data AnalysisReliability Analysis (Cronbach Alpha) Common Method...
2023240532
 
一比一原版(BCU毕业证书)伯明翰城市大学毕业证如何办理
一比一原版(BCU毕业证书)伯明翰城市大学毕业证如何办理一比一原版(BCU毕业证书)伯明翰城市大学毕业证如何办理
一比一原版(BCU毕业证书)伯明翰城市大学毕业证如何办理
dwreak4tg
 
一比一原版(QU毕业证)皇后大学毕业证成绩单
一比一原版(QU毕业证)皇后大学毕业证成绩单一比一原版(QU毕业证)皇后大学毕业证成绩单
一比一原版(QU毕业证)皇后大学毕业证成绩单
enxupq
 
一比一原版(CBU毕业证)不列颠海角大学毕业证成绩单
一比一原版(CBU毕业证)不列颠海角大学毕业证成绩单一比一原版(CBU毕业证)不列颠海角大学毕业证成绩单
一比一原版(CBU毕业证)不列颠海角大学毕业证成绩单
nscud
 
Influence of Marketing Strategy and Market Competition on Business Plan
Influence of Marketing Strategy and Market Competition on Business PlanInfluence of Marketing Strategy and Market Competition on Business Plan
Influence of Marketing Strategy and Market Competition on Business Plan
jerlynmaetalle
 

Recently uploaded (20)

一比一原版(UofS毕业证书)萨省大学毕业证如何办理
一比一原版(UofS毕业证书)萨省大学毕业证如何办理一比一原版(UofS毕业证书)萨省大学毕业证如何办理
一比一原版(UofS毕业证书)萨省大学毕业证如何办理
 
Empowering Data Analytics Ecosystem.pptx
Empowering Data Analytics Ecosystem.pptxEmpowering Data Analytics Ecosystem.pptx
Empowering Data Analytics Ecosystem.pptx
 
一比一原版(ArtEZ毕业证)ArtEZ艺术学院毕业证成绩单
一比一原版(ArtEZ毕业证)ArtEZ艺术学院毕业证成绩单一比一原版(ArtEZ毕业证)ArtEZ艺术学院毕业证成绩单
一比一原版(ArtEZ毕业证)ArtEZ艺术学院毕业证成绩单
 
The affect of service quality and online reviews on customer loyalty in the E...
The affect of service quality and online reviews on customer loyalty in the E...The affect of service quality and online reviews on customer loyalty in the E...
The affect of service quality and online reviews on customer loyalty in the E...
 
Criminal IP - Threat Hunting Webinar.pdf
Criminal IP - Threat Hunting Webinar.pdfCriminal IP - Threat Hunting Webinar.pdf
Criminal IP - Threat Hunting Webinar.pdf
 
一比一原版(NYU毕业证)纽约大学毕业证成绩单
一比一原版(NYU毕业证)纽约大学毕业证成绩单一比一原版(NYU毕业证)纽约大学毕业证成绩单
一比一原版(NYU毕业证)纽约大学毕业证成绩单
 
Chatty Kathy - UNC Bootcamp Final Project Presentation - Final Version - 5.23...
Chatty Kathy - UNC Bootcamp Final Project Presentation - Final Version - 5.23...Chatty Kathy - UNC Bootcamp Final Project Presentation - Final Version - 5.23...
Chatty Kathy - UNC Bootcamp Final Project Presentation - Final Version - 5.23...
 
Adjusting primitives for graph : SHORT REPORT / NOTES
Adjusting primitives for graph : SHORT REPORT / NOTESAdjusting primitives for graph : SHORT REPORT / NOTES
Adjusting primitives for graph : SHORT REPORT / NOTES
 
原版制作(Deakin毕业证书)迪肯大学毕业证学位证一模一样
原版制作(Deakin毕业证书)迪肯大学毕业证学位证一模一样原版制作(Deakin毕业证书)迪肯大学毕业证学位证一模一样
原版制作(Deakin毕业证书)迪肯大学毕业证学位证一模一样
 
Criminal IP - Threat Hunting Webinar.pdf
Criminal IP - Threat Hunting Webinar.pdfCriminal IP - Threat Hunting Webinar.pdf
Criminal IP - Threat Hunting Webinar.pdf
 
Opendatabay - Open Data Marketplace.pptx
Opendatabay - Open Data Marketplace.pptxOpendatabay - Open Data Marketplace.pptx
Opendatabay - Open Data Marketplace.pptx
 
哪里卖(usq毕业证书)南昆士兰大学毕业证研究生文凭证书托福证书原版一模一样
哪里卖(usq毕业证书)南昆士兰大学毕业证研究生文凭证书托福证书原版一模一样哪里卖(usq毕业证书)南昆士兰大学毕业证研究生文凭证书托福证书原版一模一样
哪里卖(usq毕业证书)南昆士兰大学毕业证研究生文凭证书托福证书原版一模一样
 
一比一原版(UPenn毕业证)宾夕法尼亚大学毕业证成绩单
一比一原版(UPenn毕业证)宾夕法尼亚大学毕业证成绩单一比一原版(UPenn毕业证)宾夕法尼亚大学毕业证成绩单
一比一原版(UPenn毕业证)宾夕法尼亚大学毕业证成绩单
 
Malana- Gimlet Market Analysis (Portfolio 2)
Malana- Gimlet Market Analysis (Portfolio 2)Malana- Gimlet Market Analysis (Portfolio 2)
Malana- Gimlet Market Analysis (Portfolio 2)
 
standardisation of garbhpala offhgfffghh
standardisation of garbhpala offhgfffghhstandardisation of garbhpala offhgfffghh
standardisation of garbhpala offhgfffghh
 
Quantitative Data AnalysisReliability Analysis (Cronbach Alpha) Common Method...
Quantitative Data AnalysisReliability Analysis (Cronbach Alpha) Common Method...Quantitative Data AnalysisReliability Analysis (Cronbach Alpha) Common Method...
Quantitative Data AnalysisReliability Analysis (Cronbach Alpha) Common Method...
 
一比一原版(BCU毕业证书)伯明翰城市大学毕业证如何办理
一比一原版(BCU毕业证书)伯明翰城市大学毕业证如何办理一比一原版(BCU毕业证书)伯明翰城市大学毕业证如何办理
一比一原版(BCU毕业证书)伯明翰城市大学毕业证如何办理
 
一比一原版(QU毕业证)皇后大学毕业证成绩单
一比一原版(QU毕业证)皇后大学毕业证成绩单一比一原版(QU毕业证)皇后大学毕业证成绩单
一比一原版(QU毕业证)皇后大学毕业证成绩单
 
一比一原版(CBU毕业证)不列颠海角大学毕业证成绩单
一比一原版(CBU毕业证)不列颠海角大学毕业证成绩单一比一原版(CBU毕业证)不列颠海角大学毕业证成绩单
一比一原版(CBU毕业证)不列颠海角大学毕业证成绩单
 
Influence of Marketing Strategy and Market Competition on Business Plan
Influence of Marketing Strategy and Market Competition on Business PlanInfluence of Marketing Strategy and Market Competition on Business Plan
Influence of Marketing Strategy and Market Competition on Business Plan
 

OrientDB - Time Series and Event Sequences - Codemotion Milan 2014

  • 1. Time flows, my friend Managing event sequences and time series with a Document-Graph Database Codemotion Milan 2014 Luigi Dell’Aquila Orient Technologies LTD Twitter: @ldellaquila
  • 3. Time What…? Time series: A time series is a sequence of data points, typically consisting of successive measurements made over a time interval (Wikipedia)
  • 4. Time What…? Event sequences: • A set of events with a timestamp • A set of relationships “happened before/after” • Cause and effect relationships
  • 5. Time What…? Time as a dimension: • Direct: – Eg. begin and end of relationships (I’m a friend of John since…) • Calculated – Eg. Speed (distance/time)
  • 6. Time What…? Time as a constraint: • Query execution time!
  • 7. The problem: Fast and Effective
  • 8. Fast and Effective Fast write: Time doesn’t wait! Writes just arrive Fast read: a lot of data to be read in a short time Effective manipulation: complex operations like - Aggregation - Prediction - Analysis
  • 10. Current approaches 0. Relational approach: table Timestamp Value 2014:11:21 14:35:00 1321 2014:11:21 14:35:01 2444 2014:11:21 14:35:02 2135 2014:11:21 14:35:03 1833
  • 11. Current approaches 0. Relational approach: table HH MM SS Value 14 35 0 1321 14 35 1 2444 14 35 2 2135 14 35 3 1833
  • 12. Current approaches 0. Relational – Advantages • Simple • It can be used together with your application data (operational)
  • 13. Current approaches 0. Relational – Disadvantages • Slow read (relies on an index) • Slow insert (update the index…)
  • 14. Current approaches 1. Document Database • Collections of Documents instead of tables • Schemaless • Complex data structures
  • 15. Current approaches 1. Document approach: Minute Based { timestamp: “2014-11-21 12.05“ load: [10, 15, 3, … 30] //array of 60, one per second }
  • 16. Current approaches 1. Document approach: Hour Based { timestamp: “2014-11-21 12.00“ load: { 0: [10, 15, 3, … 30], //array of 60, one per second 1: [0, 12, 31, … 24], … 59: [10, 10, 1, … 16] } }
  • 17. Current approaches 1. Document approach – Advantages • Fast write: One insert x 60 updates • Fast fetch
  • 18. Current approaches 1. Document approach – Disadvantages • Fixed time windows • Single point per unit • How to pre-aggregate? • Relationships with the rest of the world? • Relationships between events?
  • 19. Current approaches 2. Graph Database • Nodes/Edges instead of tables • Index free adjacency • Fast traversal • Dynamic structure
  • 20. Current approaches 2. Graph approach: linked sequence e 1 next e e 2 next e next e 3 4 5 next (timestamp on vertex)
  • 21. Current approaches 2. Graph approach: linked sequence (tag based) e 1 e 2 nextTag1 e 3 nextTag2 e 4 nextTag1 e 5 nextTag1 nextTag2 [Tag1, Tag2] [Tag1] [Tag1, Tag2] [Tag1] [Tag2]
  • 22. Current approaches 2. Graph approach: Hierarchy e 1 e 2 e6 0 1 1 8 24 2 60 … … Days Hours Minutes Seconds … e 3
  • 23. Current approaches 2. Graph approach: mixed e 1 e 2 e6 0 1 1 8 24 2 60 … … Days Hours Minutes Seconds … e 3
  • 24. Current approaches 1. Graph approach – Advantages • Flexible • Events can be connected together in different ways • You can connect events to other entities • Fast traversal of dynamic time windows • Fast aggregation (based on hierarchy)
  • 25. Current approaches 1. Graph approach – Disadvantages • Slow writes (vertex + edge + maintenance) • Not so fast reads
  • 26. Can we mix different models and get all the advantages?
  • 27. Can we mix all this with the rest of application logic?
  • 29. • Document database (schema-free, complex properties) • Graph database (index-free adjacency, fast traversal) • SQL (extended) • Operational (schema - ACID) • OO concepts (Classes, inheritance, polymorphism) • REST/JSON interface • Native Javascript (extend query language, expose services, event hooks) • Distributed (Multi-master replica/sharding) architecture
  • 30. OrientDB First step: put them together 1 1 8 24 2 60 … Days Hours Minutes … { 0: 1000, 1: 1500. … 59: 96 }
  • 31. OrientDB First step: put them together 1 1 8 24 2 60 … Days Hours Minutes … { 0: 1000, 1: 1500. … 59: 96 } Graph Document <- IT’S A VERTEX TOO!!!
  • 32. OrientDB First step: put them together 1 8 24 Days … Hours { 0: { 0: 1000, 1: 1500, … 59: 210 } 1: { … } … 59: { … } } Graph Document
  • 33. Where should I stop? It depends on my domain and requirements.
  • 34. OrientDB Result: • Same insert speed of Document approach • But with flexibility of a Graph • (as a side effect of mixing models, documents can also contain “pointers” to other elements of app domain)
  • 35. OrientDB Second step: Pre-aggregate 1 1 8 24 2 60 … Days Hours Minutes … { 0: 1000, 1: 1500. … 59: 96 } Graph Document <- IT’S A VERTEX TOO!!!
  • 36. OrientDB Second step: Pre-aggregate 1 1 8 24 2 60 … Days Hours Minutes … { 0: 1000, 1: 1500. … 59: 96 } Graph sum() Document <- IT’S A VERTEX TOO!!!
  • 37. OrientDB Second step: Pre-aggregate 1 sum() 1 8 24 2 60 … Days Hours Minutes … { 0: 1000, 1: 1500. … 59: 96 } Graph sum() Document <- IT’S A VERTEX TOO!!!
  • 38. OrientDB How to aggregate Hooks: Server side triggers (Java or Javascript), executed when DB operations happen (eg. Insert or update) Java interface: Public RESULT onBeforeInsert(…); public void onAfterInsert(…); public RESULT onBeforeUpdate(…); public void onAfterUpdate(…);
  • 39. OrientDB Aggregation logic • Second 0 -> insert • Second 1 -> update • … • Second 57 -> update • Second 58 -> update • Second 59 -> update + aggregate – Write aggregate value on minute vertex • Minute == 59? Calculate aggregate on hour vertex
  • 40. OrientDB 1 1 8 24 2 60 … Days Hours Minutes … { 0: 1, 1: 12. … 59: 3 } sum = 1000 sum = 15000 sum = 300 1 2 incomplete complete sum = null sum = null
  • 41. OrientDB Query logic: • Traverse from root node to specified level (filtering based on vertex data) • Is there aggregate value? – Yes: return it – No: go one level down and do the same Aggregation on a level will be VERY fast if you have horizontal edges!
  • 42. OrientDB How to calculate aggregate values with a query Input params: - Root node (suppose it is #11:11) select sum(aggregateVal) from ( traverse out() from #11:11 while in().aggregateVal is null ) With the same logic you can query based on time windows
  • 43. OrientDB Third step: Complex domains 1 1 2 60 … Hours Minutes { 0: {val: 1000}, 1: {val: 1500}. … 59: { val: 96, eventTags: [tag1, tag2] … } } Graph Document <- Enrich the domain
  • 44. OrientDB Another use case: Event Categories and OO e 1 e 2 nextTag1 e 3 nextTag2 e 4 nextTag1 e 5 nextTag1 nextTag2 [Tag1, Tag2, Tag3] [Tag1] [Tag1, Tag2] [Tag1] [Tag2] nextTag3 e 3 [Tag3]
  • 45. OrientDB Another use case: Event Categories and OO Suppose tags are hierarchical categories (Classes for vertices and/or edges) nextTAG nextTagX nextTag3 nextTag1 nextTag2
  • 46. OrientDB Subset of events TRAVERSE out(‘nextTag1’) FROM <e1> e 1 e 2 nextTag1 e 4 nextTag1 e 5 nextTag1 [Tag1, Tag2, Tag3] [Tag1] [Tag1, Tag2] [Tag1]
  • 47. OrientDB Subset of events TRAVERSE out(‘nextTag2’) FROM <e1> e 1 nextTag1 nextTag2 e e 3 5 nextTag2 [Tag1, Tag2, Tag3] [Tag1, Tag2] [Tag2]
  • 48. OrientDB Subset of events (Polymorphic!!!) TRAVERSE out(‘nextTagX’) FROM <e1> e 1 e 2 nextTag1 e 3 nextTag2 e 4 nextTag1 e 5 nextTag1 nextTag2 [Tag1, Tag2, Tag3] [Tag1] [Tag1, Tag2] [Tag1] [Tag2]
  • 49. Connect all this with the rest of your application domain
  • 50. You’ll see, everything will get more complex: you will discover new time-related dimensions (speed, position…) and new needs (complex forecasting)
  • 52. Chase • Your target is running away • You have informers that track his moves (coordinates in a point of time) and give you additional (unstructured) information • You have a street map • You want to: – Catch him ASAP – Predict his moves – Be sure that he is inside an area
  • 53. Chase
  • 54. Chase
  • 55. Chase • Map is made of points and distances • You also have speed limits for streets point1 pointN Distance: 1Km Max speed: 70Km/h Distance: 2Km Max speed: 120Km/h Distance: 8Km Max speed: 90Km/h Map point Street
  • 56. Chase • Map is made of points and distances • You also have speed limits for streets • Distance / Speed = TIME!!!
  • 57. Chase You have a time series of your target’s moves { { Timestamp: 29/11/2014 17:15:00 LAT: 19,12223 LON: 42,134 } Timestamp: 29/11/2014 17:55:00 LAT: 19,12223 LON: 42,134 } Event Event seqence { Timestamp: 29/11/2014 17:55:00 LAT: 19,12223 LON: 42,134 }
  • 58. Chase You have a time series of your target’s moves 21/11/2014 2:35:00 PM 20/11/2014 1:20:00 PM Map point Street
  • 59. Chase You have a time series of your target’s moves 21/11/2014 14:35:00 20/11/2014 13:20:00 Event Map point Where Event seqence Street 29/11/2014 17:55:00
  • 60. Chase Vertices and edges are also documents So you can store complex information inside them { timestamp: 22213989487987, lat: xxxx, lon: yyy, informer: 15, additional: { speed: 120, description: “the target was in a car” car: { model: “Fiat 500”, licensePlate: “AA 123 BB” } } }
  • 61. Chase Now you can: • Predict his moves (eg. statistical methods, interpolation on lat/lon + time) • Calculate how far he can be (based on last position, avg speed and street data) • Reach him quickly (shortest path, Dijkstra) • … intelligence?
  • 62. Chase But to have all this you need: • An easy way for your informers to send time series events Hint: REST interface With OrientDB you can expose Javascript functions as REST services!
  • 63. Chase And you need: • An extended query language Eg. TRAVERSE out(“street”) FROM ( SELECT out(“point”) FROM #11:11 // my last event ) WHILE canBeReached($current, #11:11) (where he could be)
  • 64. Chase With OrientDB you can write function canBeReached(node, event) In Javascript and use it in your queries
  • 65. Chase It’s just a game, but think about: • Fraud detection • Traffic routing • Multi-dimensional analytics • Forecasting • …
  • 67. One model is not enough One of most common issues of my customers is: “I have a zoo of technologies in my application stack, and it’s getting worse every day” My answer is: Multi-Model DB
  • 68. One model is not enough One of most common issues of my customers is: “I have a zoo of technologies in my application stack, and it’s getting worse every day” My answer is: Multi-Model DB of course ;-)
  • 69. From: “choose the right data model for your use case” To: “Your application has multiple data models, you need all of them!”
  • 70. This is NoSQL 2.0!!!
  • 71. Thank you! @ldellaquila l.dellaquila@orientechnologies.com