statim, time series interface for perl

35
Statim time series interface for Perl Thiago Rondon YAPC::Brasil 2011

Upload: thiago-rondon

Post on 28-Nov-2014

899 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Statim, time series interface for Perl

Statimtime series interface for Perl

Thiago RondonYAPC::Brasil 2011

Page 2: Statim, time series interface for Perl

“Science progresses throught observation”-- Isaac Newton

Page 3: Statim, time series interface for Perl

“The greatest value of a picture is that is forces us to notice what we never expected to see”-- John Tukey

Page 4: Statim, time series interface for Perl

Where ?• Astronomy

• Medicine

• Stock Market

• Meteorology

• Biometrics

• Geology

• Apps

• Operating System

• Networks

• Robotics

• Events

• ....

Page 5: Statim, time series interface for Perl

Wait! let’s see Chart::Cliker examples.

Page 6: Statim, time series interface for Perl

Line

Page 7: Statim, time series interface for Perl

StackedLine

Page 8: Statim, time series interface for Perl

Bar

Page 9: Statim, time series interface for Perl

StackedBar

Page 10: Statim, time series interface for Perl

Area

Page 11: Statim, time series interface for Perl

StackedArea

Page 12: Statim, time series interface for Perl

Bubble

Page 13: Statim, time series interface for Perl

CandleStick

Page 14: Statim, time series interface for Perl

Pie

Page 15: Statim, time series interface for Perl

PolarArea

Page 16: Statim, time series interface for Perl

What ?

• time series is a sequence of data points, measured typically at successive times spaced at uniform time intervals.

• interface define a set of methods and conventions that provides a consistent time series interface.

Page 17: Statim, time series interface for Perl

Why ?

• real time statistics.

• simple way to deploy.

• support openstandards

• distributed input

• provides default methods, functions, tools and etc.

Page 18: Statim, time series interface for Perl

Motivation

• independent

• many writers

• abstract layer on top of other databases to map and reduce.

• Portability

• easy integration

Page 19: Statim, time series interface for Perl

But, we need more.

• 3D, Visualizing data.

• Euclidean distance

• Find similar patterns

• Anomaly detection

• Rule discovery

• Frequent pattern discovery

Page 20: Statim, time series interface for Perl

Architecture

TCPServer

Perl Client

TCP Client

REST Client

engineschemastorage

RESTServer

Page 21: Statim, time series interface for Perl

Conventions

• data collection

• period (time units)

• step and timestamp.

• type of aggregation

• fields

Page 22: Statim, time series interface for Perl

Engine

• AnyEvent

• TCP

• REST

Page 23: Statim, time series interface for Perl

Storage• Key Interface

• Redis

• Memcached

• Table Interface

• DBI

• File

• RRD Interface

• RRD

Page 24: Statim, time series interface for Perl

Schema{ "collection" : {

"period" : "84600","aggregate" : "sum","fields" : {

"foo" : "count","bar" : "enum","jaz" : "enum"

} }}

Page 25: Statim, time series interface for Perl

Command

• add, get and set

• period, step

• version, quit

Page 26: Statim, time series interface for Perl

Commands• add collection foo:jaz bar:1

• OK 1

• add collection foo:jaz bar:1

• OK 2

• add collection foo:wow bar:10

• OK 10

• get collection foo:jaz bar

• OK 2

• get collection bar

• OK 12

• set collection foo:jaz bar:2

• OK 2

Page 27: Statim, time series interface for Perl

Commands with “ts”

• You can pass timestamp with “ts”.

• add collection foo:bar ts:123467890 bar:1

• You can get a new series with “ts”

• get collection foo:bar ts:1234567880-1234567890 bar

Page 28: Statim, time series interface for Perl

Commands with step

• You can pass step with “step”.

• add collection foo:bar step:-10 bar:1

• You can get a new series with “step”

• get collection foo:bar step:-10..-20 bar

Page 29: Statim, time series interface for Perl

step vs timestamp

• You can get the step in server by:

• step 1234567890

• Or make the calc in the client.

Page 30: Statim, time series interface for Perl

timestamp vs step

• Timestamp make easy life to insert data

• Step make easy life to get data

Page 31: Statim, time series interface for Perl

New time series by periods.

• get collection bar:jaz ts:$ts1-$ts2 foo:max

• get collection bar:* ts:$ts1-$ts2 foo:max

• get collection bar:jaz ts:$ts1-$ts3 foo:min

• get collection ts:$ts1-$ts3 foo:sum

• get collection ts:$ts1-$ts3 foo:avg

• get collection ts:$ts1-$ts3 foo:distinct

Page 32: Statim, time series interface for Perl

New time series by periods.

• get collection ts:$ts1-$ts2 foo:trend(5)

• get collection ts:$ts1-$ts2 foo:anomaly(100)

• get collection ts:$ts1-$ts3 foo:frequency(200)

Page 33: Statim, time series interface for Perl

Chart !

• You can use any lib to do that.

• Server-side, eg. Chart::Cliker.

• Client-site, eg. html5 and javascript libs.

Page 34: Statim, time series interface for Perl

REST

• You can extend to any protocol.

• statim-rest : /method/[args]