SlideShare a Scribd company logo
© 2015 IBM Corporation
Informix on ARM and Informix
TimeSeries: Producing an Internet of
Things Solution – DMX-2350
Mike Walker/ 28th October 2015
Mike Walker
1
Mike Walker has been using Informix databases
for over 20 years, as a developer and as a
database administrator.
Recently Mike has primary responsibility for
Advanced DataTools Remote Monitoring
Systems.
Contact Info:
mike@advancedatatools.com
www.advancedatatools.com
Office: 303-838-0869
Cell: 303-909-4265
Internet of Things (IoT)
• Connecting together the Physical and Digital World
• Built around sensors and smart gateways
• Consumer Examples of “smart”
devices:
 Thermostats
 Door Locks
 Lightbulbs,
 Etc.
2
All connected…and all
accessible with a
smartphone
Demonstration
3
How the Pieces Fit Together
4
Smart Gateway Cloud
Sensors
Microcontroller
Microcontroller
Actuators
Lights, etc
Data Collection
Some local
processing
Control of remote
devices
Data Storage
Web access
Database
Analytics
Decision Making
Data Storage
Web access from
anywhere
Apps
Microcontroller Boards
• Electronics board with a microcontroller
• Can bridge the gap between the physical world around you and
computers
• Input and Output pins
 Read values from the environment
 Turn things on and off
• Programmable
• Generally cheap
 Intel Edison
 Pickaxe
 Arduino
 ESP8266
 Many, many others…
5
Arduino
• Electronics board & microcontroller
• Cheap ($2-75 depending on version)
• Programming language (based on Wiring)
• Arduino is Open Source/Open Hardware
• Many different varieties and clones
6
void setup(){
// declare the LED pins
as outputs
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
// declare the switch
pin as an input
pinMode(2,INPUT);
}
Sparkfun RedBoard
programmed with
Arduino
Arduino
• Use as a platform for sensors
• Add “shields” for additional functions and sensors
7
Arduino with WiFi shield
and Weather Shield:
• Temperature
• Humidity
• Light
• GPS
• Pressure/Altimeter
What is ARM?
• RISC based chipset
• Small, Low Power, low heat
• Non x86 architecture
• Runs Linux, BSD and Android
• Most phones, tablets are built on ARM processors
• The designs are owned by ARM Holdings out of Cambridge England
• Licensed to third party manufacturers to generate a variety of chip
types based on ARM
• Number of low-cost, ARM based, linux computers available
 Raspberry Pi
 Beaglebone Black
 CubieTruck
 Others…
8
Raspberry Pi
• Several models, A and B, B2 for $25 - $40
• Raspberry Pi 2 Model B has 1 GB RAM
• 700-900mhz
• SD Card Slot (MicroSD on the + models)
• 10/100 Ethernet on B models
• Onboard GPU with HDMI out
and H.264 support
 Plug it into a monitor/TV
9
Raspberry Pi is a trademark of the Raspberry Pi Foundation
Beaglebone Black
• Price: $55
• 1Ghz A8 (v7 of ARM)
• 512 RAM
• 4 GB Onboard Storage, microSD card slot
• 10/100 Ethernet
• MicroHDMI out with GPU support
• Built in private networking via USB
10
BeagleBone is a trademark of BeagleBoard.org
ARM Powered Linux Computers
– Why Should you Care?
• Small, low power, low cost, low heat.
• Easily scalable horizontally
• Useful to manage sensors or more complex tasks interacting
with the real world
• Run services off of a dedicated device without needing your
laptop
• Most ARM boards are specifically set up to easily integrate with
breadboards or with sensors
• Lots of community support and information
• They are just going to get smaller, faster and better supported
• Run a full database - can take an Informix instance in your
pocket
Ideal for the “Smart Gateway” in an
Internet of Things Solution!
11
Smart Gateway
• Somewhere to:
 Collect data
 Store data
 Make decisions
 Filter data
 Trigger other actions
 Publish data
• Receive data from
different devices
• Run analytics locally
12
Why Install a Gateway Database?
• Maintain a history
• Advanced local reporting
• Make more informed decisions locally
• Don’t need to wait to get information from the cloud
• Don’t need to rely on an Internet connection
13
Local Reporting on the Gateway
14
Why Informix?
• Over a 20 year history
• Full support from IBM
• Enterprise class database software
• Reliable & Robust
• Scalable
• Performance
• Ease of administration
• Features
 High Availability/DR
 Structured/Unstructured/Hybrid Data - Full NoSQL support – built
in JSON data types, MongoDB APIs
 REST API
 Many, many more…
15
Why Informix for IoT?
For all the same reasons, and…
• Informix TimeSeries
 Store large volumes of sensor data very efficiently
• Easily Embeddable
 No administration – DBA free
 Remote management through SQL
• Runs on low-cost hardware
 Runs on ARM (Raspberry Pi, Beaglebone Black, etc)
 Full version – no loss of features
 Small footprint – disk and memory
 OEM licensing options
16
Informix is Embeddable
• Informix includes many features that make it ideal to be the
database server embedded on an IoT gateway
 Low memory manager
 Automatically expandable/extendable disk space
 Rolling windows
 Automatic Update Statistics
 Auto Tuning
 Auto Log Rotation
 Built in scheduler
 Administration API
 Custom Deployment Installs
 …and many other features
17
Informix for ARM
• Download fully functional “Developer Edition” for free from the
IBM website
18
Sensor Data on a Gateway
• What are we going to do with this data?
• Store it in the database…using TimeSeries
19
IoT…the Problem with Data
• The Internet of Things – tens of billions of devices, each
generating many data points over time
• Storing the data efficiently is important
 Store it quickly because of high volumes
 Retrieve it quickly for useful analytics
 Maximize storage efficiency
20
Lots of Data!
• By mid-2014, 50 million Smart Meters had been installed in the
US (IEI Report, September 2014)
A single utility company with 5 million meters will still generate
over 175 billion readings each year if read every 15 minutes
21
Number of Data Points in 1 Year
Number of
Meters
Read
1 x day
Read
1 x hour
Read
1 x 15 mins
50,000,000 18,250,000,000 438,000,000,000 1,752,000,000,000
Informix TimeSeries
• TimeSeries is an efficient and fast way to store and access
datapoints that have a time component
• Stores the data elements in columnar form
• TimeSeries is included with ALL editions of Informix – it is not
an add-on
• Consider our sensor data:
 Simple data elements (temperature, humidity, light, etc)
 Readings arrive at regular intervals with timestamps
22
Sensor Data
Traditional Relational Model
23
Sensor Id 40b0a36b
Sensor Name R01
Sensor
Location
Living
Room
Sensor Id 40b0a36b
Timestamp 2014-04-14
11:30
Temperature 69.50
Sensor Id 40b0a36b
Timestamp 2014-04-14
11:31
Temperature 69.75
Sensor Id 40b0a36b
Timestamp 2014-04-14
11:32
Temperature 70.00
Parent key value
is repeated for
each reading
Do we need the
timestamp?
Overhead for
each record
saved
The value is all we
want!
Sensor Data
TimeSeries Model
• Store all of the readings in the SAME record
• Append them to the TimeSeries column
With a regular timestamp, if we know the start time of readings, we can
work out the timestamp of any reading by its offset.
Irregular TimeSeries stores the timestamp with the data
24
Sensor Id 40b0a36b
Sensor Name R01
Sensor Location Living Room
Temperature 69.50, 69.75, 70.00, …
TimeSeries
Column
What does a TimeSeries look like?
The values are stored in a single column
sensor_id 40b79f8e
xbee_name R03
sensor_location Arduino Sensor 2
sensor_data origin(2015-01-18 18:30:00.00000), calendar(ts_1min), containe
r(sensor_container), threshold(0), regular, [NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, (66.6 ,38.7 ,67 ), (
65.3 ,40.2 ,67 ), (63.9 ,42.2 ,67 ), (63.3 ,42.7 ,
66 ), (62.6 ,43.7 ,67 ), (62.1 ,45.0 ,66 ), (61.5
,45.6 ,66 ), (61.2 ,46.6 ,67 ), (60.8 ,47.1 ,67
), (60.3 ,48.1 ,67 ), (60.1 ,48.1 ,67 ), (59.7 ,4
8.2 ,67 ), (59.5 ,49.2 ,67 ), (59.4 ,48.7 ,67 ),
25
Consider our utility company with 5 million smart meters…
They will only have 5 million records in their “meter” table, regardless of
how many “readings” they store
Creating a TimeSeries
1. Create a Calendar Pattern
 Defines valid time intervals for TimeSeries data
2. Create a Calendar Table, referencing the Pattern
 Defines a calendar based on start date/time & pattern
3. Create a Row Type to store the TimeSeries
4. Create a Container for the TimeSeries data, referencing the
Row Type
 Specifies where the TimeSeries data is stored
5. Create a Table with a TimeSeries column, using the Row
Type
26
Creating a TimeSeries – Sensor Example
• Create the structures to store the sensor information and
TimeSeries
• Not creating a Calendar in this example – instead use a
predefined one when create the TimeSeries
27
Creating a TimeSeries – Row Type
create row type sensor_reading(
timestamp datetime year to fraction(5),
temperature decimal(4,1),
humidity decimal(4,1),
lightlevel smallint
);
• Define a custom row type – a structure
• Allows us to store three data values (temperature, humidity
light level) with a timestamp
28
Creating a TimeSeries - Table
create table sensor(
sensor_id char(8),
xbee_name char(3),
sensor_location char(20),
sensor_data TimeSeries(sensor_reading)
);
• Define a table to store the sensor information
• Referencing our custom row type for the sensor data
29
Creating a TimeSeries - Container
execute procedure TSContainerCreate
('sensor_container',
'sensordbs',
'sensor_reading',
256,
256);
• Defines where the TimeSeries data will be stored
• “sensordbs” is an existing DBSpace (assigned disk space)
• References our custom row type (sensor_reading)
30
Creating a TimeSeries – Create Sensor Record
insert into sensor values (
"40b79f8e",
"R03",
"Arduino Sensor 2",
TSCreate(
'ts_1min',
'2015-01-18 18:30:00.00000',
0, 0, 0,
'sensor_container'));
• Create one record for each sensor
31
Predefined calendar –
new value each minute
Creating a TimeSeries – Store Sensor Data
update sensor
set sensor_data =
PutElem(sensor_data,
row("2015-01-18 18:30:00.00000",
78.1, 45.5, 70)::sensor_reading)
where xbee_name = "R03";
• Update the appropriate sensor record with new values
32
TimeSeries – Querying the Sensor Data
• Query the table
select *
from sensor
where xbee_name matches "R03";
• The values are stored in a single column
sensor_id 40b79f8e
xbee_name R03
sensor_location Arduino Sensor 2
sensor_data origin(2015-01-18 18:30:00.00000), calendar(ts_1min), containe
r(sensor_container), threshold(0), regular, [NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, (66.6 ,38.7 ,67 ), (
65.3 ,40.2 ,67 ), (63.9 ,42.2 ,67 ), (63.3 ,42.7 ,
66 ), (62.6 ,43.7 ,67 ), (62.1 ,45.0 ,66 ), (61.5
,45.6 ,66 ), (61.2 ,46.6 ,67 ), (60.8 ,47.1 ,67
), (60.3 ,48.1 ,67 ), (60.1 ,48.1 ,67 ), (59.7 ,4
8.2 ,67 ), (59.5 ,49.2 ,67 ), (59.4 ,48.7 ,67 ),
...
33
TimeSeries – Querying the Sensor Data
• Query values for a timestamp
select
sensor_id,
xbee_name,
GetElem(sensor_data, '2015-01-18 18:40:00') as readings
from sensor
where xbee_name matches "R03";
• The values are returned as the custom row type
sensor_id 40b79f8e
xbee_name R03
readings ROW('2015-01-18 18:40:00.00000',65.3 ,40.2
,67 )
34
TimeSeries – Virtual Table Interface
• Using a Virtual Table Interface (VTI) simplifies the use of
TimeSeries data by displaying the data in a relational format
 Each TimeSeries element can be treated as a “row” of data
through the VTI
execute procedure tscreatevirtualtab(
'sensor_vti',
'sensor');
35
TimeSeries – Query the VTI
select *
from sensor_vti
where sensor_location = "Arduino Sensor 2"
sensor_id 40b79f8e
xbee_name R03
sensor_location Arduino Sensor 2
timestamp 2015-01-18 18:39:00.00000
temperature 66.6
humidity 38.7
lightlevel 67
sensor_id 40b79f8e
xbee_name R03
sensor_location Arduino Sensor 2
timestamp 2015-01-18 18:40:00.00000
temperature 65.3
humidity 40.2
lightlevel 67
36
Timestamps
and data
values broken
into individual
records
Looks Relational!
TimeSeries – Row Type
• The Row Type in the example allows us to store three values:
 Temperature
 Humidity
 Light Level
• Some sensors may not send all of the values – for example, may
just send the temperature
 Lots of NULL values in the TimeSeries
... (69.6 ,NULL,NULL), (69.1 ,NULL,NULL), (69.8 ,N
ULL,NULL), (69.6 ,NULL,NULL), (69.6 ,NULL,NULL), (69.6 ,NUL
L,NULL), (69.6 ,NULL,NULL), (69.6 ,NULL,NULL), (69.6 ,NULL,
NULL), (69.6 ,NULL,NULL), (69.8 ,NULL,NULL),
• What if I want to add a new sensor type – for example, “Volume
Level”?
37
Need to be able to store
Unstructured Data
Unstructured Data
• Schema is not rigidly defined
• JSON & NoSQL Documents
• Uses key value pairs, for example:
{"data": {"temperature": 70.2, "humidity": 45.0}}
Informix includes a native JSON data type
38
MongoDB
• MongoDB is a popular document-orientated, NoSQL database
• Informix supports connections from Mongo based applications
• Uses a wire listener to allow connectivity
• Example: Connect from the mongo shell to an Informix
database
39
REST API
• Can use a REST API to work with an Informix database
• Driverless access
• Uses a wire listener
• Example: Connect from a browser to an Informix database
http://10.10.10.20:27018/sysmaster/systables?query={tabid:{$lte:5}
}&fields={tabname:1}&sort={tabname:-1}
40
TimeSeries and JSON
• As of Informix 12.10.xC4, TimeSeries supports unstructured
data
create row type sensor_info
(
timestamp datetime year to fraction(5),
values bson
);
create table sensor2 (
sensor_id char(20),
sensor_type char(15),
sensor_data timeseries(sensor_info),
primary key (sensor_id)
);
41
TimeSeries and JSON
• Store different types of readings in the same record structure within
TimeSeries, using key-value pairs:
sensor_id 1
sensor_type Temp+Humidity
sensor_data origin(2015-09-18 14:30:00.00000), calendar(ts_1min), container(se
nsor2_data_container), threshold(0), regular, [('{"temperature":70
,"humidity":45}'), ('{"temperature":71,"humidity":43}'), ('{"tempe
rature":72,"humidity":40}')]
sensor_id 2
sensor_type Temp
sensor_data origin(2015-09-18 14:30:00.00000), calendar(ts_1min), container(se
nsor2_data_container), threshold(0), regular, [('{"temperature":82
}'), ('{"temperature":78}'), ('{"temperature":80}')]
sensor_id 3
sensor_type Sound
sensor_data origin(2015-09-18 14:30:00.00000), calendar(ts_1min), container(se
nsor2_data_container), threshold(0), regular, [('{"volume":5}'), (
'{"volume":15}'), ('{"volume":12}')]
42
IBM Internet of Things Foundation
• IBM have created their own, cloud-hosted service for IoT
• Part of the IBM Bluemix platform
43
Bluemix
Cloud based services
Pick and choose what you want
IBM Internet of Things Foundation
IoTF on Bluemix
44
Add the Internet of
Things Service
IBM Internet of Things Foundation
• Register a Device
• Publish events using MQTT protocol
45
Putting it all Together!
• We have covered:
 Sensors/Microcontrollers
 ARM
 Smart Gateway
 Local Informix Database
 TimeSeries
 Unstructured Data
 Mongo and REST API Database Connectivity
 Internet of Things Foundation on Bluemix
Now to put it all together for our IoT Solution!
46
Node-RED
• Graphical tool – run in a browser
• Use to put together data flows and apply operations
• Additional “nodes” can be added to increase the functionality
• Custom “nodes” can be written
47
Node-RED
IoT Solution with (almost) no programming!
48
Subscribe to
MQTT topic
Insert into
local Informix
TimeSeries
Push to IoTF
in Bluemix
Incoming Sensor Data
• The sensors are connected wirelessly (WiFi)
• They are publishing data to a message broker using MQTT
• The broker is running on a Raspberry Pi 2
49
Broker
Subscriber
SubscriberPublisher
Publisher
MQTT
MQTT Topic – Incoming Data
50
topic/sensor {"id":"78c40e02b7c5","v":{"t":85.7,"h":
25,"l": 3.1,"p":74631,"b": 8.33}}
topic/sensor {"id":"78c40e02b7c5","v":{"t":85.8,"h":
25,"l": 3.1,"p":74634,"b": 8.31}}
topic/sensor {"id":"78c40e02b7c5","v":{"t":85.8,"h":
25,"l": 3.1,"p":74635,"b": 8.34}}
topic/sensor {"id":"78c40e02b7c5","v":{"t":85.9,"h":
25,"l": 3.1,"p":74637,"b": 8.31}}
topic/sensor {"id":"78c40e02b7c5","v":{"t":85.9,"h":
25,"l": 3.1,"p":74637,"b": 8.34}}
Node-RED subscribes to this
same topic with the MQTT node
to receive the sensor data
Write to a Local Database
51
Node-RED uses the
timeseries-out node to write
reformatted data to a local
Informix database
• The TimeSeries node uses the REST API to write to the local
database
• The database and table must already exist
• A virtual table will be created automatically against the
underlying table
Query the Sensor Data in the Database
• Example using the Mongo syntax:
db.sensor_v.find({sensor_id:"78c40e02b7c5",
timestamp: {$gt:"2015-09-18
17:50:42.00000"}}).sort({timestamp:-1}).limit(1)
{
"sensor_id" : "78c40e02b7c5",
"timestamp" : ISODate("2015-09-
18T23:56:21.000Z"),
"values" : {
"temp" : 81.9000000000000060,
"humidity" : 27,
"light" : 0.8000000000000000,
"pressure" : 74740,
"battery" : 8.3399999999999999
}
}
52
Query the Sensor Data in the Database
• Example using dbaccess:
select
clip(
sensor_data,
CURRENT - 15 units second,
CURRENT,
0) data
from sensor
where sensor_id = "78c40e02b7c5";
data origin(2015-09-18 21:24:28.00000), calendar(ts_1sec), container(sensor_da
ta_container), threshold(0), irregular, [('{"temp":75.5,"humidity":32,"li
ght":0.2,"pressure":74878,"battery":8.34}')@2015-09-18 21:24:28.00000, ('
{"temp":75.5,"humidity":32,"light":0.2,"pressure":74877,"battery":8.34}')
@2015-09-18 21:24:31.00000, ('{"temp":75.40000000000001,"humidity":32,"li
ght":0.2,"pressure":74876,"battery":8.34}')@2015-09-18 21:24:35.00000, ('
{"temp":75.40000000000001,"humidity":32,"light":0.2,"pressure":74875,"bat
tery":8.34}')@2015-09-18 21:24:41.00000]
53
Note the irregular TimeSeries –
each reading has a timestamp
Push Data to the IoT Foundation in Bluemix
• Must have a Bluemix account (free)
• Must have added the “Internet of
Things” Service
54
Node-RED uses the ibmiot
out node to push to the IoT
Foundation in Bluemix
Push Data to the IoT Foundation in Bluemix
55
View the recent
events using the
Bluemix Console
Query Data in the IoT Foundation in Bluemix
• Use the REST API to:
 Register/Unregister a device
 Update/View a device
 Retrieve historical data
• Example:
https://<orgid>.internetofthings.ibmcloud.com/api/v0002/historian/ty
pes/Arduino/devices/78c40e02b7c5
56
Query Data in the IoT Foundation in Bluemix
{
"events": [
{
"device_type": "Arduino",
"device_id": "78c40e02b7c5",
"evt_type": "sensor-event",
"timestamp": {
"$date": 1442629738722
},
"evt": {
"temp": 77,
"humidity": 29,
"light": 0.1,
"pressure": 74874,
"battery": 8.34
}
},
...
57
Bluemix Apps
• Can create an app and “push” it to Bluemix
• Example Visualization app uses node.js
• Download from github:
https://github.com/ibm-messaging/iot-visualization
• Create a “SDK for node.js” app on
Bluemix
• Push the downloaded app to
Bluemix
• Link the App to the
Internet of Things Service
58
Shows node.js
app linked to
IoTF
Bluemix Apps
http://vizualize.mybluemix.net/dashboard
59
Use Node-RED to Pull from Bluemix IoTF
• Use the ibmiot in node to pull from Bluemix
• Use the iot-datasource node to graph the data
60
Use Node-RED Graphing Node
http://10.10.10.20:1880/dash/
61
More Resources
• Webcasts covering Informix, ARM, Internet of Things:
http://advancedatatools.com/Informix/Webcasts.html
• Compare Informix versions:
http://www.ibm.com/developerworks/data/library/techarticle/dm-
0801doe/
• Docker Site:
https://hub.docker.com/r/ibmcom/informix-innovator-c/
• Advanced DataToolsTraining:
http://advancedatatools.com/Training/InformixTraining.html
62
63
Informix Support and Training from the Informix Champions!
Advanced DataTools is an Advanced Level IBM Informix Data Management Partner, and has been an authorized
Informix partner since 1993. We have a long-term relationship with IBM, we have priority access to high-level support
staff, technical information, and Beta programs. Our team has been working with Informix since its inception, and
includes 8 Senior Informix Database Consultants, 4 IBM Champions, 2 IIUG Director’s Award winners, and an IBM
Gold Consultant.
• Informix Training
• Informix Consulting
• Informix Development
• Informix Remote DBA Support Monitoring
• Informix Performance Tuning
Free Informix Performance Tuning Webcast replays at:
http://advancedatatools.com/Informix/Webcasts.html
Call: (800) 807-6732 x101 or Email: info@advancedatatools.com
Web: http://www.advancedatatools.com
We Value Your Feedback!
Don’t forget to submit your Insight session and speaker
feedback! Your feedback is very important to us – we use it
to continually improve the conference.
Access your surveys at insight2015survey.com to quickly
submit your surveys from your smartphone, laptop or
conference kiosk.
64
65
Notices and Disclaimers
Copyright © 2015 by International Business Machines Corporation (IBM). No part of this document may be reproduced or transmitted in any form
without written permission from IBM.
U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM.
Information in these presentations (including information relating to products that have not yet been announced by IBM) has been reviewed for
accuracy as of the date of initial publication and could include unintentional technical or typographical errors. IBM shall have no responsibility to
update this information. THIS DOCUMENT IS DISTRIBUTED "AS IS" WITHOUT ANY WARRANTY, EITHER EXPRESS OR IMPLIED. IN NO
EVENT SHALL IBM BE LIABLE FOR ANY DAMAGE ARISING FROM THE USE OF THIS INFORMATION, INCLUDING BUT NOT LIMITED TO,
LOSS OF DATA, BUSINESS INTERRUPTION, LOSS OF PROFIT OR LOSS OF OPPORTUNITY. IBM products and services are warranted
according to the terms and conditions of the agreements under which they are provided.
Any statements regarding IBM's future direction, intent or product plans are subject to change or withdrawal without notice.
Performance data contained herein was generally obtained in a controlled, isolated environments. Customer examples are presented as
illustrations of how those customers have used IBM products and the results they may have achieved. Actual performance, cost, savings or other
results in other operating environments may vary.
References in this document to IBM products, programs, or services does not imply that IBM intends to make such products, programs or services
available in all countries in which IBM operates or does business.
Workshops, sessions and associated materials may have been prepared by independent session speakers, and do not necessarily reflect the
views of IBM. All materials and discussions are provided for informational purposes only, and are neither intended to, nor shall constitute legal or
other guidance or advice to any individual participant or their specific situation.
It is the customer’s responsibility to insure its own compliance with legal requirements and to obtain advice of competent legal counsel as to the
identification and interpretation of any relevant laws and regulatory requirements that may affect the customer’s business and any actions the
customer may need to take to comply with such laws. IBM does not provide legal advice or represent or warrant that its services or products will
ensure that the customer is in compliance with any law.
66
Notices and Disclaimers (con’t)
Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly
available sources. IBM has not tested those products in connection with this publication and cannot confirm the accuracy of performance,
compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the
suppliers of those products. IBM does not warrant the quality of any third-party products, or the ability of any such third-party products to
interoperate with IBM’s products. IBM EXPRESSLY DISCLAIMS ALL WARRANTIES, EXPRESSED OR IMPLIED, INCLUDING BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
The provision of the information contained herein is not intended to, and does not, grant any right or license under any IBM patents, copyrights,
trademarks or other intellectual property right.
• IBM, the IBM logo, ibm.com, Aspera®, Bluemix, Blueworks Live, CICS, Clearcase, Cognos®, DOORS®, Emptoris®, Enterprise Document
Management System™, FASP®, FileNet®, Global Business Services ®, Global Technology Services ®, IBM ExperienceOne™, IBM
SmartCloud®, IBM Social Business®, Information on Demand, ILOG, Maximo®, MQIntegrator®, MQSeries®, Netcool®, OMEGAMON,
OpenPower, PureAnalytics™, PureApplication®, pureCluster™, PureCoverage®, PureData®, PureExperience®, PureFlex®, pureQuery®,
pureScale®, PureSystems®, QRadar®, Rational®, Rhapsody®, Smarter Commerce®, SoDA, SPSS, Sterling Commerce®, StoredIQ,
Tealeaf®, Tivoli®, Trusteer®, Unica®, urban{code}®, Watson, WebSphere®, Worklight®, X-Force® and System z® Z/OS, are trademarks of
International Business Machines Corporation, registered in many jurisdictions worldwide. Other product and service names might be
trademarks of IBM or other companies. A current list of IBM trademarks is available on the Web at "Copyright and trademark information" at:
www.ibm.com/legal/copytrade.shtml.
© 2015 IBM Corporation
Thank You

More Related Content

What's hot (20)

PPTX
IBM Informix - What's new in 12.10.xc7
Pradeep Natarajan
 
PPTX
12 Ways to Use PLCs & SQL Databases Together
Inductive Automation
 
PDF
inmation Presentation_2017
inmation Software GmbH
 
PPTX
Edge comp
mahendra665237
 
PDF
Omc AMIS evenement 26012017 Dennis van Soest
Getting value from IoT, Integration and Data Analytics
 
PPTX
Processing IoT Data with Apache Kafka
Matthew Howlett
 
PDF
Data Centric Transformation in Telecom
DataWorks Summit
 
PDF
Q radar architecture deep dive
Kamal Mouline
 
PPTX
5 Paths to HPC - SUSE
Jeff Reser
 
PPTX
Data Acquisition and Control
ICP DAS USA, Inc.
 
PDF
Historian & Live Dashboard
Avanceon-Lahore
 
PDF
Chapter 10
pavan penugonda
 
PPTX
Pushing the Boundaries of Data Visualization
Inductive Automation
 
PPTX
Real-time analysis using an in-memory data grid - Cloud Expo 2013
ScaleOut Software
 
PPTX
ZigBee Wireless Data Acquisition Technology
ICP DAS USA, Inc.
 
PDF
IBM SoftLayer - overview of Cloud Infrastructure
Avinaba Basu
 
PDF
Data Acquisition Automation for NiFi in a Hybrid Cloud environment – the Path...
DataWorks Summit
 
PPTX
Cloud Architecture in the Data Center
InterVision Systems
 
PPTX
Building Blocks for Hybrid IT
RightScale
 
PPTX
Analytics with unified file and object
Sandeep Patil
 
IBM Informix - What's new in 12.10.xc7
Pradeep Natarajan
 
12 Ways to Use PLCs & SQL Databases Together
Inductive Automation
 
inmation Presentation_2017
inmation Software GmbH
 
Edge comp
mahendra665237
 
Omc AMIS evenement 26012017 Dennis van Soest
Getting value from IoT, Integration and Data Analytics
 
Processing IoT Data with Apache Kafka
Matthew Howlett
 
Data Centric Transformation in Telecom
DataWorks Summit
 
Q radar architecture deep dive
Kamal Mouline
 
5 Paths to HPC - SUSE
Jeff Reser
 
Data Acquisition and Control
ICP DAS USA, Inc.
 
Historian & Live Dashboard
Avanceon-Lahore
 
Chapter 10
pavan penugonda
 
Pushing the Boundaries of Data Visualization
Inductive Automation
 
Real-time analysis using an in-memory data grid - Cloud Expo 2013
ScaleOut Software
 
ZigBee Wireless Data Acquisition Technology
ICP DAS USA, Inc.
 
IBM SoftLayer - overview of Cloud Infrastructure
Avinaba Basu
 
Data Acquisition Automation for NiFi in a Hybrid Cloud environment – the Path...
DataWorks Summit
 
Cloud Architecture in the Data Center
InterVision Systems
 
Building Blocks for Hybrid IT
RightScale
 
Analytics with unified file and object
Sandeep Patil
 

Viewers also liked (20)

PPT
What's new in IBM Informix 12.1?
Keshav Murthy
 
PDF
Tokyo Cassandra Summit 2014: Tunable Consistency by Al Tobey
DataStax Academy
 
PPTX
Introduction To Raspberry Pi with Simple GPIO pin Control
Pradip Bhandari
 
PPTX
Time Series Data in a Time Series World
MapR Technologies
 
PPTX
Introduction to ibm internet of things foundation
Bernard Kufluk
 
PDF
20161227 Taipei Smart IOT Innovation Lab workshop
Hu-Cheng Lee
 
PPT
Internet of Things and IBM
Arrow ECS UK
 
PDF
IoT SMART BUS WITH LoRa
Josh Lrt
 
PPTX
Apache kafka
Daan Gerits
 
ODP
Introduction to Raspberry Pi and GPIO
Kris Findlay
 
PDF
Cc internet of things LoRa and IoT - Innovation Enablers
JWORKS powered by Ordina
 
PDF
02 Raspberry Pi GPIO Interface on Node-RED (Some correction)
Mr.Nukoon Phimsen
 
PDF
Intro Lora - Makers.ID Meetup
Mif Masterz
 
PDF
Comarch BLE & LoRa devices
Comarch
 
PDF
Something about Kafka - Why Kafka is so fast
ViSenze - Artificial Intelligence for the Visual Web
 
PPTX
ML on Big Data: Real-Time Analysis on Time Series
Sigmoid
 
PDF
Android Push Server & MQTT
광운 이
 
PPTX
SORACOM LoRaWAN Conference 2017 | LoRaゲートウェイとデバイス 〜デバイス開発と、無線連携〜
SORACOM,INC
 
What's new in IBM Informix 12.1?
Keshav Murthy
 
Tokyo Cassandra Summit 2014: Tunable Consistency by Al Tobey
DataStax Academy
 
Introduction To Raspberry Pi with Simple GPIO pin Control
Pradip Bhandari
 
Time Series Data in a Time Series World
MapR Technologies
 
Introduction to ibm internet of things foundation
Bernard Kufluk
 
20161227 Taipei Smart IOT Innovation Lab workshop
Hu-Cheng Lee
 
Internet of Things and IBM
Arrow ECS UK
 
IoT SMART BUS WITH LoRa
Josh Lrt
 
Apache kafka
Daan Gerits
 
Introduction to Raspberry Pi and GPIO
Kris Findlay
 
Cc internet of things LoRa and IoT - Innovation Enablers
JWORKS powered by Ordina
 
02 Raspberry Pi GPIO Interface on Node-RED (Some correction)
Mr.Nukoon Phimsen
 
Intro Lora - Makers.ID Meetup
Mif Masterz
 
Comarch BLE & LoRa devices
Comarch
 
Something about Kafka - Why Kafka is so fast
ViSenze - Artificial Intelligence for the Visual Web
 
ML on Big Data: Real-Time Analysis on Time Series
Sigmoid
 
Android Push Server & MQTT
광운 이
 
SORACOM LoRaWAN Conference 2017 | LoRaゲートウェイとデバイス 〜デバイス開発と、無線連携〜
SORACOM,INC
 
Ad

Similar to Informix on ARM and informix Timeseries - producing an Internet-of-Things solution (20)

PDF
Why Gateways are Important in Your IoT Architecture
IBM Analytics
 
PDF
Ibm_IoT_Architecture_and_Capabilities
IBM_Info_Management
 
PPTX
IBM IoT Architecture and Capabilities at the Edge and Cloud
Pradeep Natarajan
 
PPTX
High-Volume Data Collection and Real Time Analytics Using Redis
cacois
 
PPTX
Apache IOTDB: a Time Series Database for Industrial IoT
jixuan1989
 
PDF
IoT databases - review and challenges - IoT, Hardware & Robotics meetup - onl...
Marcin Bielak
 
PDF
Informix internet of things
IBM Sverige
 
PPTX
Accelerating analytics on the Sensor and IoT Data.
Keshav Murthy
 
PPTX
IoT underthe hood
Dave Callaghan
 
PPTX
Development and Applications of Distributed IoT Sensors for Intermittent Conn...
InfluxData
 
PDF
Ugif 04 2011 france ug04042011-jroy_ts
UGIF
 
PDF
From a student to an apache committer practice of apache io tdb
jixuan1989
 
PPTX
Why we need internet of things on Node.js
Indeema Software Inc.
 
PPT
Semantics in Sensor Networks
Oscar Corcho
 
PDF
Data Visualization and Communication by Big Data
IRJET Journal
 
PDF
Structuring Data from Unstructured Things. Sean Lorenz
Future Insights
 
PPTX
Cheatz
'aaRoyston Lhj
 
PDF
From Sensors to Servers
Robin van Emden
 
PPTX
Summer 2017 undergraduate research powerpoint
Christopher Dubois
 
PPTX
Iot Workshop Columbus
Mike Branstein
 
Why Gateways are Important in Your IoT Architecture
IBM Analytics
 
Ibm_IoT_Architecture_and_Capabilities
IBM_Info_Management
 
IBM IoT Architecture and Capabilities at the Edge and Cloud
Pradeep Natarajan
 
High-Volume Data Collection and Real Time Analytics Using Redis
cacois
 
Apache IOTDB: a Time Series Database for Industrial IoT
jixuan1989
 
IoT databases - review and challenges - IoT, Hardware & Robotics meetup - onl...
Marcin Bielak
 
Informix internet of things
IBM Sverige
 
Accelerating analytics on the Sensor and IoT Data.
Keshav Murthy
 
IoT underthe hood
Dave Callaghan
 
Development and Applications of Distributed IoT Sensors for Intermittent Conn...
InfluxData
 
Ugif 04 2011 france ug04042011-jroy_ts
UGIF
 
From a student to an apache committer practice of apache io tdb
jixuan1989
 
Why we need internet of things on Node.js
Indeema Software Inc.
 
Semantics in Sensor Networks
Oscar Corcho
 
Data Visualization and Communication by Big Data
IRJET Journal
 
Structuring Data from Unstructured Things. Sean Lorenz
Future Insights
 
From Sensors to Servers
Robin van Emden
 
Summer 2017 undergraduate research powerpoint
Christopher Dubois
 
Iot Workshop Columbus
Mike Branstein
 
Ad

More from IBM_Info_Management (6)

PDF
World of Watson - DB2 for Linux, UNIX and Windows Roadmap
IBM_Info_Management
 
PDF
Security best practices for informix
IBM_Info_Management
 
PDF
Leveraging compute power at the edge - M2M solutions with Informix in the IoT...
IBM_Info_Management
 
PDF
Always on high availability best practices for informix
IBM_Info_Management
 
PDF
End-to-end solution demonstration: From concept to delivery-Intel/IBM
IBM_Info_Management
 
PDF
Business value Drivers for IoT Solutions
IBM_Info_Management
 
World of Watson - DB2 for Linux, UNIX and Windows Roadmap
IBM_Info_Management
 
Security best practices for informix
IBM_Info_Management
 
Leveraging compute power at the edge - M2M solutions with Informix in the IoT...
IBM_Info_Management
 
Always on high availability best practices for informix
IBM_Info_Management
 
End-to-end solution demonstration: From concept to delivery-Intel/IBM
IBM_Info_Management
 
Business value Drivers for IoT Solutions
IBM_Info_Management
 

Recently uploaded (20)

PDF
AI Agents in the Cloud: The Rise of Agentic Cloud Architecture
Lilly Gracia
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
DOCX
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
PPTX
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
DOCX
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
PDF
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
PPTX
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
PDF
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
PPTX
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
PDF
SIZING YOUR AIR CONDITIONER---A PRACTICAL GUIDE.pdf
Muhammad Rizwan Akram
 
PDF
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
PPTX
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
PDF
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
PDF
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
PPTX
Designing_the_Future_AI_Driven_Product_Experiences_Across_Devices.pptx
presentifyai
 
PDF
Staying Human in a Machine- Accelerated World
Catalin Jora
 
AI Agents in the Cloud: The Rise of Agentic Cloud Architecture
Lilly Gracia
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
SIZING YOUR AIR CONDITIONER---A PRACTICAL GUIDE.pdf
Muhammad Rizwan Akram
 
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
Designing_the_Future_AI_Driven_Product_Experiences_Across_Devices.pptx
presentifyai
 
Staying Human in a Machine- Accelerated World
Catalin Jora
 

Informix on ARM and informix Timeseries - producing an Internet-of-Things solution

  • 1. © 2015 IBM Corporation Informix on ARM and Informix TimeSeries: Producing an Internet of Things Solution – DMX-2350 Mike Walker/ 28th October 2015
  • 2. Mike Walker 1 Mike Walker has been using Informix databases for over 20 years, as a developer and as a database administrator. Recently Mike has primary responsibility for Advanced DataTools Remote Monitoring Systems. Contact Info: [email protected] www.advancedatatools.com Office: 303-838-0869 Cell: 303-909-4265
  • 3. Internet of Things (IoT) • Connecting together the Physical and Digital World • Built around sensors and smart gateways • Consumer Examples of “smart” devices:  Thermostats  Door Locks  Lightbulbs,  Etc. 2 All connected…and all accessible with a smartphone
  • 5. How the Pieces Fit Together 4 Smart Gateway Cloud Sensors Microcontroller Microcontroller Actuators Lights, etc Data Collection Some local processing Control of remote devices Data Storage Web access Database Analytics Decision Making Data Storage Web access from anywhere Apps
  • 6. Microcontroller Boards • Electronics board with a microcontroller • Can bridge the gap between the physical world around you and computers • Input and Output pins  Read values from the environment  Turn things on and off • Programmable • Generally cheap  Intel Edison  Pickaxe  Arduino  ESP8266  Many, many others… 5
  • 7. Arduino • Electronics board & microcontroller • Cheap ($2-75 depending on version) • Programming language (based on Wiring) • Arduino is Open Source/Open Hardware • Many different varieties and clones 6 void setup(){ // declare the LED pins as outputs pinMode(3,OUTPUT); pinMode(4,OUTPUT); pinMode(5,OUTPUT); pinMode(6,OUTPUT); // declare the switch pin as an input pinMode(2,INPUT); } Sparkfun RedBoard programmed with Arduino
  • 8. Arduino • Use as a platform for sensors • Add “shields” for additional functions and sensors 7 Arduino with WiFi shield and Weather Shield: • Temperature • Humidity • Light • GPS • Pressure/Altimeter
  • 9. What is ARM? • RISC based chipset • Small, Low Power, low heat • Non x86 architecture • Runs Linux, BSD and Android • Most phones, tablets are built on ARM processors • The designs are owned by ARM Holdings out of Cambridge England • Licensed to third party manufacturers to generate a variety of chip types based on ARM • Number of low-cost, ARM based, linux computers available  Raspberry Pi  Beaglebone Black  CubieTruck  Others… 8
  • 10. Raspberry Pi • Several models, A and B, B2 for $25 - $40 • Raspberry Pi 2 Model B has 1 GB RAM • 700-900mhz • SD Card Slot (MicroSD on the + models) • 10/100 Ethernet on B models • Onboard GPU with HDMI out and H.264 support  Plug it into a monitor/TV 9 Raspberry Pi is a trademark of the Raspberry Pi Foundation
  • 11. Beaglebone Black • Price: $55 • 1Ghz A8 (v7 of ARM) • 512 RAM • 4 GB Onboard Storage, microSD card slot • 10/100 Ethernet • MicroHDMI out with GPU support • Built in private networking via USB 10 BeagleBone is a trademark of BeagleBoard.org
  • 12. ARM Powered Linux Computers – Why Should you Care? • Small, low power, low cost, low heat. • Easily scalable horizontally • Useful to manage sensors or more complex tasks interacting with the real world • Run services off of a dedicated device without needing your laptop • Most ARM boards are specifically set up to easily integrate with breadboards or with sensors • Lots of community support and information • They are just going to get smaller, faster and better supported • Run a full database - can take an Informix instance in your pocket Ideal for the “Smart Gateway” in an Internet of Things Solution! 11
  • 13. Smart Gateway • Somewhere to:  Collect data  Store data  Make decisions  Filter data  Trigger other actions  Publish data • Receive data from different devices • Run analytics locally 12
  • 14. Why Install a Gateway Database? • Maintain a history • Advanced local reporting • Make more informed decisions locally • Don’t need to wait to get information from the cloud • Don’t need to rely on an Internet connection 13
  • 15. Local Reporting on the Gateway 14
  • 16. Why Informix? • Over a 20 year history • Full support from IBM • Enterprise class database software • Reliable & Robust • Scalable • Performance • Ease of administration • Features  High Availability/DR  Structured/Unstructured/Hybrid Data - Full NoSQL support – built in JSON data types, MongoDB APIs  REST API  Many, many more… 15
  • 17. Why Informix for IoT? For all the same reasons, and… • Informix TimeSeries  Store large volumes of sensor data very efficiently • Easily Embeddable  No administration – DBA free  Remote management through SQL • Runs on low-cost hardware  Runs on ARM (Raspberry Pi, Beaglebone Black, etc)  Full version – no loss of features  Small footprint – disk and memory  OEM licensing options 16
  • 18. Informix is Embeddable • Informix includes many features that make it ideal to be the database server embedded on an IoT gateway  Low memory manager  Automatically expandable/extendable disk space  Rolling windows  Automatic Update Statistics  Auto Tuning  Auto Log Rotation  Built in scheduler  Administration API  Custom Deployment Installs  …and many other features 17
  • 19. Informix for ARM • Download fully functional “Developer Edition” for free from the IBM website 18
  • 20. Sensor Data on a Gateway • What are we going to do with this data? • Store it in the database…using TimeSeries 19
  • 21. IoT…the Problem with Data • The Internet of Things – tens of billions of devices, each generating many data points over time • Storing the data efficiently is important  Store it quickly because of high volumes  Retrieve it quickly for useful analytics  Maximize storage efficiency 20
  • 22. Lots of Data! • By mid-2014, 50 million Smart Meters had been installed in the US (IEI Report, September 2014) A single utility company with 5 million meters will still generate over 175 billion readings each year if read every 15 minutes 21 Number of Data Points in 1 Year Number of Meters Read 1 x day Read 1 x hour Read 1 x 15 mins 50,000,000 18,250,000,000 438,000,000,000 1,752,000,000,000
  • 23. Informix TimeSeries • TimeSeries is an efficient and fast way to store and access datapoints that have a time component • Stores the data elements in columnar form • TimeSeries is included with ALL editions of Informix – it is not an add-on • Consider our sensor data:  Simple data elements (temperature, humidity, light, etc)  Readings arrive at regular intervals with timestamps 22
  • 24. Sensor Data Traditional Relational Model 23 Sensor Id 40b0a36b Sensor Name R01 Sensor Location Living Room Sensor Id 40b0a36b Timestamp 2014-04-14 11:30 Temperature 69.50 Sensor Id 40b0a36b Timestamp 2014-04-14 11:31 Temperature 69.75 Sensor Id 40b0a36b Timestamp 2014-04-14 11:32 Temperature 70.00 Parent key value is repeated for each reading Do we need the timestamp? Overhead for each record saved The value is all we want!
  • 25. Sensor Data TimeSeries Model • Store all of the readings in the SAME record • Append them to the TimeSeries column With a regular timestamp, if we know the start time of readings, we can work out the timestamp of any reading by its offset. Irregular TimeSeries stores the timestamp with the data 24 Sensor Id 40b0a36b Sensor Name R01 Sensor Location Living Room Temperature 69.50, 69.75, 70.00, … TimeSeries Column
  • 26. What does a TimeSeries look like? The values are stored in a single column sensor_id 40b79f8e xbee_name R03 sensor_location Arduino Sensor 2 sensor_data origin(2015-01-18 18:30:00.00000), calendar(ts_1min), containe r(sensor_container), threshold(0), regular, [NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, (66.6 ,38.7 ,67 ), ( 65.3 ,40.2 ,67 ), (63.9 ,42.2 ,67 ), (63.3 ,42.7 , 66 ), (62.6 ,43.7 ,67 ), (62.1 ,45.0 ,66 ), (61.5 ,45.6 ,66 ), (61.2 ,46.6 ,67 ), (60.8 ,47.1 ,67 ), (60.3 ,48.1 ,67 ), (60.1 ,48.1 ,67 ), (59.7 ,4 8.2 ,67 ), (59.5 ,49.2 ,67 ), (59.4 ,48.7 ,67 ), 25 Consider our utility company with 5 million smart meters… They will only have 5 million records in their “meter” table, regardless of how many “readings” they store
  • 27. Creating a TimeSeries 1. Create a Calendar Pattern  Defines valid time intervals for TimeSeries data 2. Create a Calendar Table, referencing the Pattern  Defines a calendar based on start date/time & pattern 3. Create a Row Type to store the TimeSeries 4. Create a Container for the TimeSeries data, referencing the Row Type  Specifies where the TimeSeries data is stored 5. Create a Table with a TimeSeries column, using the Row Type 26
  • 28. Creating a TimeSeries – Sensor Example • Create the structures to store the sensor information and TimeSeries • Not creating a Calendar in this example – instead use a predefined one when create the TimeSeries 27
  • 29. Creating a TimeSeries – Row Type create row type sensor_reading( timestamp datetime year to fraction(5), temperature decimal(4,1), humidity decimal(4,1), lightlevel smallint ); • Define a custom row type – a structure • Allows us to store three data values (temperature, humidity light level) with a timestamp 28
  • 30. Creating a TimeSeries - Table create table sensor( sensor_id char(8), xbee_name char(3), sensor_location char(20), sensor_data TimeSeries(sensor_reading) ); • Define a table to store the sensor information • Referencing our custom row type for the sensor data 29
  • 31. Creating a TimeSeries - Container execute procedure TSContainerCreate ('sensor_container', 'sensordbs', 'sensor_reading', 256, 256); • Defines where the TimeSeries data will be stored • “sensordbs” is an existing DBSpace (assigned disk space) • References our custom row type (sensor_reading) 30
  • 32. Creating a TimeSeries – Create Sensor Record insert into sensor values ( "40b79f8e", "R03", "Arduino Sensor 2", TSCreate( 'ts_1min', '2015-01-18 18:30:00.00000', 0, 0, 0, 'sensor_container')); • Create one record for each sensor 31 Predefined calendar – new value each minute
  • 33. Creating a TimeSeries – Store Sensor Data update sensor set sensor_data = PutElem(sensor_data, row("2015-01-18 18:30:00.00000", 78.1, 45.5, 70)::sensor_reading) where xbee_name = "R03"; • Update the appropriate sensor record with new values 32
  • 34. TimeSeries – Querying the Sensor Data • Query the table select * from sensor where xbee_name matches "R03"; • The values are stored in a single column sensor_id 40b79f8e xbee_name R03 sensor_location Arduino Sensor 2 sensor_data origin(2015-01-18 18:30:00.00000), calendar(ts_1min), containe r(sensor_container), threshold(0), regular, [NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, (66.6 ,38.7 ,67 ), ( 65.3 ,40.2 ,67 ), (63.9 ,42.2 ,67 ), (63.3 ,42.7 , 66 ), (62.6 ,43.7 ,67 ), (62.1 ,45.0 ,66 ), (61.5 ,45.6 ,66 ), (61.2 ,46.6 ,67 ), (60.8 ,47.1 ,67 ), (60.3 ,48.1 ,67 ), (60.1 ,48.1 ,67 ), (59.7 ,4 8.2 ,67 ), (59.5 ,49.2 ,67 ), (59.4 ,48.7 ,67 ), ... 33
  • 35. TimeSeries – Querying the Sensor Data • Query values for a timestamp select sensor_id, xbee_name, GetElem(sensor_data, '2015-01-18 18:40:00') as readings from sensor where xbee_name matches "R03"; • The values are returned as the custom row type sensor_id 40b79f8e xbee_name R03 readings ROW('2015-01-18 18:40:00.00000',65.3 ,40.2 ,67 ) 34
  • 36. TimeSeries – Virtual Table Interface • Using a Virtual Table Interface (VTI) simplifies the use of TimeSeries data by displaying the data in a relational format  Each TimeSeries element can be treated as a “row” of data through the VTI execute procedure tscreatevirtualtab( 'sensor_vti', 'sensor'); 35
  • 37. TimeSeries – Query the VTI select * from sensor_vti where sensor_location = "Arduino Sensor 2" sensor_id 40b79f8e xbee_name R03 sensor_location Arduino Sensor 2 timestamp 2015-01-18 18:39:00.00000 temperature 66.6 humidity 38.7 lightlevel 67 sensor_id 40b79f8e xbee_name R03 sensor_location Arduino Sensor 2 timestamp 2015-01-18 18:40:00.00000 temperature 65.3 humidity 40.2 lightlevel 67 36 Timestamps and data values broken into individual records Looks Relational!
  • 38. TimeSeries – Row Type • The Row Type in the example allows us to store three values:  Temperature  Humidity  Light Level • Some sensors may not send all of the values – for example, may just send the temperature  Lots of NULL values in the TimeSeries ... (69.6 ,NULL,NULL), (69.1 ,NULL,NULL), (69.8 ,N ULL,NULL), (69.6 ,NULL,NULL), (69.6 ,NULL,NULL), (69.6 ,NUL L,NULL), (69.6 ,NULL,NULL), (69.6 ,NULL,NULL), (69.6 ,NULL, NULL), (69.6 ,NULL,NULL), (69.8 ,NULL,NULL), • What if I want to add a new sensor type – for example, “Volume Level”? 37 Need to be able to store Unstructured Data
  • 39. Unstructured Data • Schema is not rigidly defined • JSON & NoSQL Documents • Uses key value pairs, for example: {"data": {"temperature": 70.2, "humidity": 45.0}} Informix includes a native JSON data type 38
  • 40. MongoDB • MongoDB is a popular document-orientated, NoSQL database • Informix supports connections from Mongo based applications • Uses a wire listener to allow connectivity • Example: Connect from the mongo shell to an Informix database 39
  • 41. REST API • Can use a REST API to work with an Informix database • Driverless access • Uses a wire listener • Example: Connect from a browser to an Informix database http://10.10.10.20:27018/sysmaster/systables?query={tabid:{$lte:5} }&fields={tabname:1}&sort={tabname:-1} 40
  • 42. TimeSeries and JSON • As of Informix 12.10.xC4, TimeSeries supports unstructured data create row type sensor_info ( timestamp datetime year to fraction(5), values bson ); create table sensor2 ( sensor_id char(20), sensor_type char(15), sensor_data timeseries(sensor_info), primary key (sensor_id) ); 41
  • 43. TimeSeries and JSON • Store different types of readings in the same record structure within TimeSeries, using key-value pairs: sensor_id 1 sensor_type Temp+Humidity sensor_data origin(2015-09-18 14:30:00.00000), calendar(ts_1min), container(se nsor2_data_container), threshold(0), regular, [('{"temperature":70 ,"humidity":45}'), ('{"temperature":71,"humidity":43}'), ('{"tempe rature":72,"humidity":40}')] sensor_id 2 sensor_type Temp sensor_data origin(2015-09-18 14:30:00.00000), calendar(ts_1min), container(se nsor2_data_container), threshold(0), regular, [('{"temperature":82 }'), ('{"temperature":78}'), ('{"temperature":80}')] sensor_id 3 sensor_type Sound sensor_data origin(2015-09-18 14:30:00.00000), calendar(ts_1min), container(se nsor2_data_container), threshold(0), regular, [('{"volume":5}'), ( '{"volume":15}'), ('{"volume":12}')] 42
  • 44. IBM Internet of Things Foundation • IBM have created their own, cloud-hosted service for IoT • Part of the IBM Bluemix platform 43 Bluemix Cloud based services Pick and choose what you want
  • 45. IBM Internet of Things Foundation IoTF on Bluemix 44 Add the Internet of Things Service
  • 46. IBM Internet of Things Foundation • Register a Device • Publish events using MQTT protocol 45
  • 47. Putting it all Together! • We have covered:  Sensors/Microcontrollers  ARM  Smart Gateway  Local Informix Database  TimeSeries  Unstructured Data  Mongo and REST API Database Connectivity  Internet of Things Foundation on Bluemix Now to put it all together for our IoT Solution! 46
  • 48. Node-RED • Graphical tool – run in a browser • Use to put together data flows and apply operations • Additional “nodes” can be added to increase the functionality • Custom “nodes” can be written 47
  • 49. Node-RED IoT Solution with (almost) no programming! 48 Subscribe to MQTT topic Insert into local Informix TimeSeries Push to IoTF in Bluemix
  • 50. Incoming Sensor Data • The sensors are connected wirelessly (WiFi) • They are publishing data to a message broker using MQTT • The broker is running on a Raspberry Pi 2 49 Broker Subscriber SubscriberPublisher Publisher MQTT
  • 51. MQTT Topic – Incoming Data 50 topic/sensor {"id":"78c40e02b7c5","v":{"t":85.7,"h": 25,"l": 3.1,"p":74631,"b": 8.33}} topic/sensor {"id":"78c40e02b7c5","v":{"t":85.8,"h": 25,"l": 3.1,"p":74634,"b": 8.31}} topic/sensor {"id":"78c40e02b7c5","v":{"t":85.8,"h": 25,"l": 3.1,"p":74635,"b": 8.34}} topic/sensor {"id":"78c40e02b7c5","v":{"t":85.9,"h": 25,"l": 3.1,"p":74637,"b": 8.31}} topic/sensor {"id":"78c40e02b7c5","v":{"t":85.9,"h": 25,"l": 3.1,"p":74637,"b": 8.34}} Node-RED subscribes to this same topic with the MQTT node to receive the sensor data
  • 52. Write to a Local Database 51 Node-RED uses the timeseries-out node to write reformatted data to a local Informix database • The TimeSeries node uses the REST API to write to the local database • The database and table must already exist • A virtual table will be created automatically against the underlying table
  • 53. Query the Sensor Data in the Database • Example using the Mongo syntax: db.sensor_v.find({sensor_id:"78c40e02b7c5", timestamp: {$gt:"2015-09-18 17:50:42.00000"}}).sort({timestamp:-1}).limit(1) { "sensor_id" : "78c40e02b7c5", "timestamp" : ISODate("2015-09- 18T23:56:21.000Z"), "values" : { "temp" : 81.9000000000000060, "humidity" : 27, "light" : 0.8000000000000000, "pressure" : 74740, "battery" : 8.3399999999999999 } } 52
  • 54. Query the Sensor Data in the Database • Example using dbaccess: select clip( sensor_data, CURRENT - 15 units second, CURRENT, 0) data from sensor where sensor_id = "78c40e02b7c5"; data origin(2015-09-18 21:24:28.00000), calendar(ts_1sec), container(sensor_da ta_container), threshold(0), irregular, [('{"temp":75.5,"humidity":32,"li ght":0.2,"pressure":74878,"battery":8.34}')@2015-09-18 21:24:28.00000, (' {"temp":75.5,"humidity":32,"light":0.2,"pressure":74877,"battery":8.34}') @2015-09-18 21:24:31.00000, ('{"temp":75.40000000000001,"humidity":32,"li ght":0.2,"pressure":74876,"battery":8.34}')@2015-09-18 21:24:35.00000, (' {"temp":75.40000000000001,"humidity":32,"light":0.2,"pressure":74875,"bat tery":8.34}')@2015-09-18 21:24:41.00000] 53 Note the irregular TimeSeries – each reading has a timestamp
  • 55. Push Data to the IoT Foundation in Bluemix • Must have a Bluemix account (free) • Must have added the “Internet of Things” Service 54 Node-RED uses the ibmiot out node to push to the IoT Foundation in Bluemix
  • 56. Push Data to the IoT Foundation in Bluemix 55 View the recent events using the Bluemix Console
  • 57. Query Data in the IoT Foundation in Bluemix • Use the REST API to:  Register/Unregister a device  Update/View a device  Retrieve historical data • Example: https://<orgid>.internetofthings.ibmcloud.com/api/v0002/historian/ty pes/Arduino/devices/78c40e02b7c5 56
  • 58. Query Data in the IoT Foundation in Bluemix { "events": [ { "device_type": "Arduino", "device_id": "78c40e02b7c5", "evt_type": "sensor-event", "timestamp": { "$date": 1442629738722 }, "evt": { "temp": 77, "humidity": 29, "light": 0.1, "pressure": 74874, "battery": 8.34 } }, ... 57
  • 59. Bluemix Apps • Can create an app and “push” it to Bluemix • Example Visualization app uses node.js • Download from github: https://github.com/ibm-messaging/iot-visualization • Create a “SDK for node.js” app on Bluemix • Push the downloaded app to Bluemix • Link the App to the Internet of Things Service 58 Shows node.js app linked to IoTF
  • 61. Use Node-RED to Pull from Bluemix IoTF • Use the ibmiot in node to pull from Bluemix • Use the iot-datasource node to graph the data 60
  • 62. Use Node-RED Graphing Node http://10.10.10.20:1880/dash/ 61
  • 63. More Resources • Webcasts covering Informix, ARM, Internet of Things: http://advancedatatools.com/Informix/Webcasts.html • Compare Informix versions: http://www.ibm.com/developerworks/data/library/techarticle/dm- 0801doe/ • Docker Site: https://hub.docker.com/r/ibmcom/informix-innovator-c/ • Advanced DataToolsTraining: http://advancedatatools.com/Training/InformixTraining.html 62
  • 64. 63 Informix Support and Training from the Informix Champions! Advanced DataTools is an Advanced Level IBM Informix Data Management Partner, and has been an authorized Informix partner since 1993. We have a long-term relationship with IBM, we have priority access to high-level support staff, technical information, and Beta programs. Our team has been working with Informix since its inception, and includes 8 Senior Informix Database Consultants, 4 IBM Champions, 2 IIUG Director’s Award winners, and an IBM Gold Consultant. • Informix Training • Informix Consulting • Informix Development • Informix Remote DBA Support Monitoring • Informix Performance Tuning Free Informix Performance Tuning Webcast replays at: http://advancedatatools.com/Informix/Webcasts.html Call: (800) 807-6732 x101 or Email: [email protected] Web: http://www.advancedatatools.com
  • 65. We Value Your Feedback! Don’t forget to submit your Insight session and speaker feedback! Your feedback is very important to us – we use it to continually improve the conference. Access your surveys at insight2015survey.com to quickly submit your surveys from your smartphone, laptop or conference kiosk. 64
  • 66. 65 Notices and Disclaimers Copyright © 2015 by International Business Machines Corporation (IBM). No part of this document may be reproduced or transmitted in any form without written permission from IBM. U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM. Information in these presentations (including information relating to products that have not yet been announced by IBM) has been reviewed for accuracy as of the date of initial publication and could include unintentional technical or typographical errors. IBM shall have no responsibility to update this information. THIS DOCUMENT IS DISTRIBUTED "AS IS" WITHOUT ANY WARRANTY, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL IBM BE LIABLE FOR ANY DAMAGE ARISING FROM THE USE OF THIS INFORMATION, INCLUDING BUT NOT LIMITED TO, LOSS OF DATA, BUSINESS INTERRUPTION, LOSS OF PROFIT OR LOSS OF OPPORTUNITY. IBM products and services are warranted according to the terms and conditions of the agreements under which they are provided. Any statements regarding IBM's future direction, intent or product plans are subject to change or withdrawal without notice. Performance data contained herein was generally obtained in a controlled, isolated environments. Customer examples are presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual performance, cost, savings or other results in other operating environments may vary. References in this document to IBM products, programs, or services does not imply that IBM intends to make such products, programs or services available in all countries in which IBM operates or does business. Workshops, sessions and associated materials may have been prepared by independent session speakers, and do not necessarily reflect the views of IBM. All materials and discussions are provided for informational purposes only, and are neither intended to, nor shall constitute legal or other guidance or advice to any individual participant or their specific situation. It is the customer’s responsibility to insure its own compliance with legal requirements and to obtain advice of competent legal counsel as to the identification and interpretation of any relevant laws and regulatory requirements that may affect the customer’s business and any actions the customer may need to take to comply with such laws. IBM does not provide legal advice or represent or warrant that its services or products will ensure that the customer is in compliance with any law.
  • 67. 66 Notices and Disclaimers (con’t) Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products in connection with this publication and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products. IBM does not warrant the quality of any third-party products, or the ability of any such third-party products to interoperate with IBM’s products. IBM EXPRESSLY DISCLAIMS ALL WARRANTIES, EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. The provision of the information contained herein is not intended to, and does not, grant any right or license under any IBM patents, copyrights, trademarks or other intellectual property right. • IBM, the IBM logo, ibm.com, Aspera®, Bluemix, Blueworks Live, CICS, Clearcase, Cognos®, DOORS®, Emptoris®, Enterprise Document Management System™, FASP®, FileNet®, Global Business Services ®, Global Technology Services ®, IBM ExperienceOne™, IBM SmartCloud®, IBM Social Business®, Information on Demand, ILOG, Maximo®, MQIntegrator®, MQSeries®, Netcool®, OMEGAMON, OpenPower, PureAnalytics™, PureApplication®, pureCluster™, PureCoverage®, PureData®, PureExperience®, PureFlex®, pureQuery®, pureScale®, PureSystems®, QRadar®, Rational®, Rhapsody®, Smarter Commerce®, SoDA, SPSS, Sterling Commerce®, StoredIQ, Tealeaf®, Tivoli®, Trusteer®, Unica®, urban{code}®, Watson, WebSphere®, Worklight®, X-Force® and System z® Z/OS, are trademarks of International Business Machines Corporation, registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the Web at "Copyright and trademark information" at: www.ibm.com/legal/copytrade.shtml.
  • 68. © 2015 IBM Corporation Thank You